五、事务、视图、触发器、存储过程、函数和备份,触发器和存储过程的联系
目录
- 一、事务transaction
- (一)什么是事务
- (二)事务的ACID特性
- (1)原子性Atomicity
- (2)一致性consistency
- (3)隔离性Isolation
- (4)持久性Durability
- (二)存储引擎engine
- (1)InnoDB
- (2)MyIsam
- 二、视图view
- (一)增加视图
- (二)删除视图
- 三、触发器trigger
- (一)创建触发器
- (二)查看和删除触发器
- 四、存储过程procedure
- (一)创建存储过程
- (二)删除存储过程
- 五、函数
- 六、数据库备份
一、事务transaction
(一)什么是事务
事务是指一组操作,要么都执行成功,要么都执行失败
# 语法
start transaction;
sql语句
commit/roll back;
# 1. 事务下的代码在commit之后才会生效
# 2. 事务下的代码rollback之后会失效
(二)事务的ACID特性
(1)原子性Atomicity
指不能再分的事务,要么全部成功,要么全部失败
(2)一致性consistency
事务发生前和发生后,数据的总额依然匹配
(3)隔离性Isolation
某个事务的操作对其他事物不可见
(4)持久性Durability
当事务完成后,其影响应该保留下来,不能撤销,不能通过“补偿性事务”来抵消之前的影响
(二)存储引擎engine
create table user(
id int auto_increment primary key,
name varchar(10))
)engine = InnoDB charset utf8;
(1)InnoDB
相当于保时捷引擎,MySQL5.5以上默认使用InnoDB引擎
(2)MyIsam
相当于奔奔引擎,淘汰的引擎
二、视图view
视图是一个虚拟表,用来存储查询语句的结果,相当于把子查询中的嵌套语句用一个变量存储
(一)增加视图
create view 视图名 as SQL语句;
create view v1 as select * from user where name = 'wick';
# 使用
select * from v1;
当改变视图中数据时,原始表中的数据也会跟着修改
(二)删除视图
drop view 视图名;
三、触发器trigger
使用触发器可以定制用户对表进行增、删、改操作时前后的行为,使其自动触发
(一)创建触发器
# 每次向表1新增数据前/后,也向表2张红插入值
delimiter // # 更改分解符为//
create trigger 触发器名
before/after
insert on 表名1 for each row
begin
insert into 表名2 (字段) values (值);
end //
delimiter ; # 更改分解符为;
(二)查看和删除触发器
# 查看触发器
show triggers\G
# 删除触发器
drop trigger 触发器名
四、存储过程procedure
存储过程包含了一系列可执行的SQL语句,直接调用名字使用SQL语句,就像一个函数
(一)创建存储过程
# 示例
delimiter //
create procedure p1()
begin
select * from user where id = 2;
end //
delimiter ;
# 调用
call p1();
(二)删除存储过程
drop proedure p1;
五、函数
MySQL内置函数
更多函数见http://doc.mysql.cn/mysql5/refman-5.1-zh.html-chapter/functions.html#encryption-functions
六、数据库备份
# 语法
mysqldump -h 主机名 -u用户名 -p密码 数据库名 [表名 表名];
# 1. 单库备份
mysqldump -uroot -p123 db1 > db1.sql # 备份库
mysqldump -uroot -p123 db1 table1 table2 > db1-table1-table2.sql
# 2. 多库备份
mysqldump -uroot -p123 --databases db1 db2 mysql db3 > db1_db2_mysql_db3.sql
# 3. 备份所有库
mysqldump -uroot -p123 --all-databases > all.sql
# 4. 重新导入
source D:/test3.sql
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。
# 语法
mysqldump -h 主机名 -u用户名 -p密码 数据库名 [表名 表名];
# 1. 单库备份
mysqldump -uroot -p123 db1 > db1.sql # 备份库
mysqldump -uroot -p123 db1 table1 table2 > db1-table1-table2.sql
# 2. 多库备份
mysqldump -uroot -p123 --databases db1 db2 mysql db3 > db1_db2_mysql_db3.sql
# 3. 备份所有库
mysqldump -uroot -p123 --all-databases > all.sql
# 4. 重新导入
source D:/test3.sql