day37 学习小结

一、事物

通俗的说,事物指一组操作,要么都执行成功,要么都执行失败。

1. 事物的使用方法

start transaction;
    sql语句
commit(提交)/rollback(回滚到事物开始的地方)

2. 事物的特性

  1. 原子性(Atomicity):原子意为最小的粒子,即不能再分的事务,要么全部执行,要么全部取消。
  2. 一致性(Consistency):指事务发生前和发生后,数据的总额依然匹配。
  3. 隔离性(Isolation):简单点说,某个事务的操作对其他事务是不可见的。
  4. 持久性(Durability):当事务完成后,其影响应该保留下来,不能撤销,只能通过“补偿性事务”来抵消之前的错误。

3. 储存引擎

Innodb:支持事务,支持行锁

MyISAM:不支持事务,只支持表锁

二、视图

1. 增加视图

create view 视图名 as SQL语句;

2. 删除视图

drop view 视图名;

三、触发器

当两个操作同时发生时,其中一个操作可以出发另一个操作,如果该操作一致不完成,则另一个被触发操作则永远也不能执行。

1. 增加触发器

# 当向tb1表中添加一条数据的同时, 向tb2表添加一条数据
delimiter //

create trigger tri_before_insert_tb1 before insert on t2 for each row begin
    SQL语句:insert into t3(name) values ('aa');
end //

delimiter;

2. 查看触发器

show triggers\G

3. 删除触发器

drop trigger 触发器名;

四、存储 过程

像一个SQL函数

1. 创建过程

delimiter //

create procedure p1()
begin
    SQL语句:select * from user where id = 2;
end // 
delimiter

2. 使用这个过程

call p1()

3. 删除过程

drop procedure p1;

五、函数

  1. char_length(str):返回值为字符串str 的长度,长度的单位为字符。一个多字节字符算作一个单字符。对于一个包含五个二字节字符集, LENGTH()返回值为 10, 而CHAR_LENGTH()的返回值为5。
  2. concat(str1,str2....):字符串拼接,如有任何一个参数为NULL ,则返回值为 NULL。
  3. format(X,D):将数字X 的格式写为'#,###,###.##',以四舍五入的方式保留小数点后 D 位, 并将结果以字符串的形式返回。若 D 为 0, 则返回结果不带有小数点,或不含小数部分。(例如:SELECT FORMAT(12332.1,4); 结果为: '12,332.1000')
  4. instr(str,substr):返回字符串 str 中子字符串的第一个出现位置。
  5. left(str,len):返回字符串str 从开始的len位置的子序列字符。
  6. lower(str):变小写
  7. upper(str):变大写
  8. ltrim(str):返回字符串 str ,其引导空格字符被删除。
  9. rtrim(str):返回字符串 str ,结尾空格字符被删去。
  10. substring(str,pos,len):获取字符串子序列
  11. locate(substr,str,pos):获取子序列索引位置
  12. repeat(str,count):返回一个由重复的字符串str 组成的字符串,字符串str的数目等于count。若 count <= 0,则返回一个空字符串。若str 或 count 为 NULL,则返回 NULL 。
  13. replace(str,from_str,to_str):返回字符串str 以及所有被字符串to_str替代的字符串from_str。
  14. reverse(str):返回字符串 str ,顺序和字符顺序相反。
  15. right(str,len):从字符串str 开始,返回从后边开始len个字符组成的子序列

六、备份

1. 用法

#语法:
# mysqldump -h 服务器 -u用户名 -p密码 数据库名 表名,  表名,.... > aaa.sql

#示例:
#单库备份
mysqldump -uroot -p123 db1 > db1.sql
mysqldump -uroot -p123 db1 table1 table2 > db1-table1-table2.sql

#多库备份
mysqldump -uroot -p123 --databases db1 db2 mysql db3 > db1_db2_mysql_db3.sql

#备份所有库
mysqldump -uroot -p123 --all-databases > all.sql

2. 重新导入

mysql> source (备份地址)D:/test3.sql;

猜你喜欢

转载自www.cnblogs.com/bowendown/p/11788134.html