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:/所在磁盘地址/备份名;

猜你喜欢

转载自www.cnblogs.com/793564949liu/p/11787733.html