数据库 的outfile 备份与还原 视图 事物 触发器 mysql函数和自定义函数
Posted 0101无限的空间
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库 的outfile 备份与还原 视图 事物 触发器 mysql函数和自定义函数相关的知识,希望对你有一定的参考价值。
outfile 将数据库的数据导出
select * into outfile ‘e://mysqloutfile//1.txt‘ from 表格名;
备份与还原
不再mysql目录下进行备份,mysqldump -uroot -p 数据库名 +表格名 > 具体的路径名(你要导入到哪里)
如果你想得到多张表的那么就在表格后面加一个表格
还原:
先删除数据库的所有东西
如果删除不了,那么就是还有没有删除干净
新建一个数据库 ,用数据库
找到文件 source +具体的文件;将数据导入
视图:
什么是视图呢?
视图其实是不存在的是虚拟的 是一句sql语句当查询时,这条语句执行,得出一个结果,然后利用一个结果进行查询
创建视图
create view 视图名 as select * from 表的名字;
select * from 视图名;
改变视图结构
alter view 视图名 (你想改变的什么s1,s2) select * from 表格名;
s1,s2将替代字段
事物:
什么是事物呢?
事物是sql的集合,如果其中一个sql集合的一个语句失败,就意味着整个过程都是没有意义的,应该是数据库回到初始的状态。
先查看 show variables like ‘%autocommit%‘
查看autocommit的值 如果autocommit是打开的,那么就关闭。
set autocommit=0;关闭事物。
创建两张表格
create table stu_mon(
id int primary key auto_increment,
stu_money decimal(10,2)
)engine innodb character set utf8;
create table cla_mon(
id int primary key auto_increment,
cla_money deciaml(10,2),
stu_count int
)engine innodb character set utf8;
改变数据库中的数据
update stu_mon set stu_money =stu_money-50 where id=1;
update cla_mon set cla_money=cla_money+50 where id=1;
打开另一个窗口,如果改变数据将在这个窗口的值不会改变,因为改变autocommit的值为0,就不会立刻改变数据库的值。
你过你想改变窗口的值那么你就要 提交,那么就改变了数据库中的值。
commit;
如果你改变了值,却改错了,所以就需要回滚了;
rollback;
start transaction
这个指令 就是为了不设置autocommit的值
首先设置autocommit的值为1;
当一开始时是打开的,开就是开,在操作事物时关闭,当你执行完事物时,执行完食物就打开回到初始的状态
触发器:
在当前的表上,对表的每行进行设置一个监听事件,每当事件发生时,会执行一段sql语句
创建触发器
create trigger 触发器的名称+ 事件(比如after update)on 你想操作的表格stu_mon
for each row
update 另一个表cla_mon set cla_money=cla_money+10 where id=1;
如果你进行改变stu_mon的值,那没cla_mon的值也会改变
触发器的使用细节:
不能同名;
一类事件设置一个触发器;
触发器程序内的new old
具体的例子
删除之前的触发器
drop trigger 触发器的名称
create trigger 触发器的名称 +事件+on+ 你想操作的表格
for each row
update 另一个表 set cla_money=cla_money+(new.stu_money-old.stu_money) where id=1;
多条sql语句
删除之前的触发器
drop trigger 用过的触发器名称
decimal $$//结束符
create trigger chufaqi after update on stu_mon
for each row
begin
update cla_mon set cla_money=cla_money+(new.stu_money-old.stu_money) where id=1;
update cla_mon set stu_count=stu_count+1 where id=1;
end
$$//结束符避免分号的冲突
你插进了一个数据,那么就改变了cla表中的值
如果你想对插入事件进行操作
但是insert 不能使用old数据
delete 不能使用new数据
decimal //
create trigger chufaqi after insert on stu_mon
for each row
begin
update cla_mon set stu_count=stu_count+new.id;
update cla_mon set cla_money=cla_money+50;
end
//
insert into stu_mon values(3,5000);
那么触发器中的new.id=3
mysql函数
注释:# --[空格]
select * from stu_mon #where id=1;
;//结束符
查出来
decimal 来修改语句的结束符。
变量:设置变量
1.select @who:=‘aa‘;
2.select * from stu_mon into where @who=‘aa‘;
变量一定要加@
查看变量
select @who;
内置函数
rand()0-1之间的随机数
format(x,d)
x为你要格式化的数据 d你想精确到几位数
unix_timestamp();得到秒的数字
substring(具体的数据,2,2)顺时针得到两个
数据库是从1开始的
加密方式:
md5(你想要加密的)
sha1()
password()
自定义函数
decliniter //
以上是关于数据库 的outfile 备份与还原 视图 事物 触发器 mysql函数和自定义函数的主要内容,如果未能解决你的问题,请参考以下文章
mysql的视图,触发器,存储过程,函数,事物,数据库锁,数据库的备份还原