码迷,mamicode.com
首页 > 数据库 > 详细

数据库 的outfile 备份与还原 视图 事物 触发器 mysql函数和自定义函数

时间:2017-04-03 18:54:02      阅读:310      评论:0      收藏:0      [点我收藏+]

标签:variable   结束   注释   faq   窗口   mit   time   begin   tran   

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函数和自定义函数

标签:variable   结束   注释   faq   窗口   mit   time   begin   tran   

原文地址:http://www.cnblogs.com/fupengpeng/p/6662886.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!