事务、视图、触发器、存储引擎、备份

1|0一、事务

1|11. 什么事务

  • 事务是并发控制单位,指一组操作,要么都执行成功,要么都执行失败。

1|22. 事务有什么用

  • 保证数据库数据的完整。

1|33. 使用方法

  • 语法:

    start transaction; sql语句 commit/rollback; # commit 的意思是上面的处理都正确,现在提交,修改本地数据 # rollback 的意思是上面的处理有错误或者问题,取消上面所有的操作,回到start transaction 之前的状态

1|44. 事务的特性(ACID)

1|0(1)原子性( Atomicity )

  • 事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做

1|0(2)一致性(Consistency)

  • 指事务发生前和发生后,数据的总额依然匹配

1|0(3)隔离性( Isolation)

  • 一个事务的执行不能干扰其它事务。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰

1|0(4)持久性(Durability)

  • 指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的

2|0二、MySQL存储引擎

2|11. InnoDB

  • 高性能,支持事务,支持行锁,也支持表锁
  • 是MySQL5.0版本及以上的默认存储引擎

2|22. MyIsam

  • 低性能,不支持事务,支持表锁
  • 现在亦逐渐被淘汰

2|33. 更多InnoDB和MyIsam的区别

3|0三、视图

3|11. 什么是视图

  • 视图是一个虚拟表(非真实存在),是根据SQL语句获取动态的数据集,并为其命名。之后使用名称就可以获取结果集,并可以把结果集当做表来使用

  • 但是,视图会加大数据库系统的负担,现在已基本没人使用。

3|22. 视图的使用

  • #增加视图: create view 视图名 as SQL语句; #删除: drop view v1; #查看视图: select * from 视图名;

4|0四、触发器

4|11. 什么是触发器

  • 触发器是一种语法。它的功能是把多条SQL语句关联起来,当我们执行指定的SQL语句时,就会同时执行其他SQL语句。

4|22. 触发器的使用

  • 两张表: 订单表 库存表 场景: 当我下一个订单的时候, 订单表中需要增加一个记录, 同时库存表中需要减1 这两个操作是同时发生的, 并且前一个操作出发后一个操作 # 使用方法: # 例子:当向tb1表中添加一条数据的同时, 向tb2表添加一条数据 增加: delimiter // CREATE TRIGGER 触发器名 BEFORE INSERT ON t2 FOR EACH ROW #触发条件 BEGIN INSERT INTO t3 (NAME) VALUES ('aa'); # 触发后执行的sql语句 END // delimiter ; #删除: drop trigger 触发器名; # 查看 show triggers\G

5|0五、存储过程

5|11. 什么是存储过程

  • 就是类似python里的函数,存储过程就是数据库系统的函数,把一堆SQL语句丢进一个存储过程里,再通过这个存储过程名来调用,执行器内部的SQL语句。

5|22. 存储过程的使用

  • #创建: delimiter // create procedure 存储过程名() BEGIN select * from user where id=2; # SQL语句 END // delimiter ; # 调用存储过程: call 存储过程名(); # 删除: drop procedure 存储过程名;

6|0六、内置函数(常用)

CHAR_LENGTH(str) 返回值为字符串str 的长度,长度的单位为字符。一个多字节字符算作一个单字符。 对于一个包含五个二字节字符集, LENGTH()返回值为 10, 而CHAR_LENGTH()的返回值为5 CONCAT(str1,str2,...) 字符串拼接 如有任何一个参数为NULL ,则返回值为 NULL。 FORMAT(X,D) 将数字X 的格式写为'#,###,###.##',以四舍五入的方式保留小数点后 D 位, 并将结果以字符串的形式返回。若 D 为 0, 则返回结果不带有小数点,或不含小数部分。 例如: SELECT FORMAT(12332.1,4); 结果为: '12,332.1000' INSTR(str,substr) 返回字符串 str 中子字符串的第一个出现位置。 LEFT(str,len) 返回字符串str 从开始的len位置的子序列字符。 LOWER(str) 变小写 UPPER(str) 变大写 LTRIM(str) 返回字符串 str ,其引导空格字符被删除。 RTRIM(str) 返回字符串 str ,结尾空格字符被删去。 SUBSTRING(str,pos,len) 获取字符串子序列 LOCATE(substr,str,pos) 获取子序列索引位置 REPEAT(str,count) 返回一个由重复的字符串str 组成的字符串,字符串str的数目等于count 。 若 count <= 0,则返回一个空字符串。 str 或 count 为 NULL,则返回 NULL 。 REPLACE(str,from_str,to_str) 返回字符串str 以及所有被字符串to_str替代的字符串from_str 。 REVERSE(str) 返回字符串 str ,顺序和字符顺序相反。 RIGHT(str,len) 从字符串str 开始,返回从后边开始len个字符组成的子序列

7|0七、数据库的备份

7|11. 为什么要对数据进行备份

  • 一些数据的价值很大,为了意外的事故导致这些数据的丢失,所以要对其进行备份

7|22. 如何备份

用法: #语法: # mysqldump -h 服务器 -u用户名 -p密码 数据库名 表名, 表名,.... > 备份文件的路径(如:aaa.sql , 这个是相对路径,也可以填绝对路径,都要以 .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 重新导入: mysql> source D:/test3.sql;

__EOF__

本文作者BigSun丶
本文链接https://www.cnblogs.com/Mcoming/p/11788384.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   BigSun丶  阅读(113)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示