数据库高级部分
1.视图(view)
视图是有一张表或多张表的查询结果构成的一张虚拟表,使用的好处是:
- 当在使用多表查询时,sql语句可能会非常的复杂,每次都编写一遍会相当麻烦,所以可以通过视图帮我们节省sql的编写重复使用。
- 另一个作用是,我们可以使用不同的视图来开放不同数据的访问,限定展示出想要展示的部分
注意:由于是一张虚拟表,视图中的数据实际上来源于其他其他表,所以在视图中的数据不会出现在硬盘上
创建视图
CREATE [OR REPLACE] VIEW view_name [(column_list)]
AS select_statement
2.触发器(trigger)
触发器是一段与表有关的mysql程序,当这个表在某个时间点发生了某种事件时 将会自动执行相应的触发器程序
时间点表示当在事件发生前使用before | 事件发生后 使用after
事件包括update,delete,insert
触发器包含两个对象
- old :update,delete中可用
- new :update,insert 中可用
可以用于:当表的数据被修改时,自动记录一些数据,执行一些sql语句
3.事务(transaction)
事务就是一系列sql语句的组合,是一个整体。
事务的特点:
扫描二维码关注公众号,回复:
6809331 查看本文章
- 原子性,指的是这个事务中的sql语句是一个整体,不能拆分,要么都执行,要么全都失败
- 一致性, 事务执行结束后,表的关联关系一定是正确的,不会发送数据错乱
- 隔离性,事务之间相互隔离,数据不会互相影响,即使操作了同一个表 , 本质就是加锁,根据锁的粒度不同分为几个隔离级别
- 持久性,事务执行成功后数据将永久保存,无法恢复
使用事务:
- start transaction:开启事物,在这条语句之后的sql将处在同一事务,并不会立即修改数据库
- commit:提交事务,让这个事物中的sql立即执行数据的操作,
- rollback:回滚事务,是用来取消这个事物,这个事物则不会对数据库中的数据产生任何影响,比如当一个事务执行过程中出现了异常这种情况可使用rollback来回滚事务
- savepoint:保存点,可以在rollback指定回滚到某一个固定位置 ,也就是回滚一部分
4.存储过程(procedure)
存储过程是一组任意的sql语句集合,在mysql中,调用存储过程会执行其包含的所有sql语句;与python中函数类似
调用时用set设置变量,call来调用存储过程
5.函数
sql语言中除了内置函数可以自定义函数
通过create 创建函数,包括函数名,函数体,返回值的类型和返回值
6.备份与恢复
使用自带的mysqldump.exe来备份,可以备份具体的表,库,或者所有的库至一个文件里
mysqldump -u用户名 -p密码 要备份的内容(数据库 表名1 表名2) .... > 文件路径....
恢复数据:
- 没有登录mysql :mysql < 文件路径
- 已经登录了MySQL :source 文件路径
7.流程控制
主要包括一些sql语法:
if then/case(选择执行)/declare (定义变量)/while,loop,repeat(循环)
查询语法中正则匹配的用法 是在条件判断通过regexp中加入正则匹配来筛选,注意不能加入类似\w这样的符号