11.01 事务,视图,触发器,存储过程,函数,数据库备份
事务
事务指的是一组操作,要么执行成功,要么都执行失败
'''
例:
银行汇款,当我給朋友汇款的时候,我的银行存款已经扣除,他的银行存款未增加的时候断电了,怎么办?
可以使用事务解决这个问题
'''
事务使用
start transaction;
sql语句
commit/rollback;
commit:是提交,让事务的语句执行成功,
rollback:是回滚,在语句内的所有任务回到起始位置.
特性*******
原子性(Atomicity):原子意为最小的粒子,即不能在分的事务,要么全部执行,要么全部取消
一致性(Consistency):指事务发生前和发生后,数据的总额依然匹配
隔离性(Isolation):就是,某个事务的操作对其它事务是不可见的
持久性(Durability):当事务完成后,其影响应该2保留下来,不能撤销,只能通过"补偿性事务"来抵消之前的错误
存储引擎*******
InnoDB:相当于→保时捷引擎
MyIsam:相当于→奔奔引擎
建表的时候:
create table user(
id int,
name varchar(32)
)engine=Innodb charset utf8;
mysql5.5以上,默认Innodb引擎
mysql5.5以下,默认Myisam引擎
引擎区别*******
innodb支持事务,myisam不支持事务
innodb支持行锁,myisam支持表锁
视图
增加视图
create view 视图名 as SQL语句;
例:
create view 视图名 as select * from 表名 where 条件;
删除视图
drop view 视图名;
触发器
两张表:订单表,库存表
场景:当下一个订单的时候,订单表需要增加一个记录,同时库存表需要减1,这两个操作是同时进行的.
使用方法
增加
delimiter //
create trigger 触发名 before insert on 表1 for each row begin
insert into 表2 (name) values ('aa');
end //
delimiter ;
删除
drop trigger 触发器名;
存储过程
就像一个sql函数
创建
delimiter //
create procedure 函数名()
begin
select * form 表名 where id = 2;
end //
delimiter ;
使用方法
call 函数名();
删除
drop procedure 函数名;
函数
类似于数据类型的内置方法
char_length(srt):返回值为字符串str的长度,length()返回值为10,char_length()返回值为5
concat(x1,x2,x3,…):字符串拼接,没有参数返回null
等等
数据库备份
为了数据丢失后还能有备份数据,保证数据安全
使用方法
语法
mysqldump -h 服务器 -u用户名 -p密码 数据库名 表名,表名…… #备份为名字是aaa.sql的文件
单库备份
mysqldump -u用户名 -p密码 数据库名 表名,表名…… #备份的名字:数据库名-表1-表2.sql
多库备份
mysqldump -u用户名 -p密码 --databases 数据库名1 数据库名2 mysql 数据库名3 #备份的名字:数据库名1_数据库名2_mysql_数据库名3.sql
备份所有库
mysqldump -u用户名 -p密码 --all-databases #备份名:all.sql
重新导入
source D:/所在磁盘地址/备份名;