1. 视图 View
场景: 当 sql 查询语句比较复杂,但是要使用的地方地较多时, 可以使用视图
原理: 使用 Sql语句查询出数据,将查询结果当做一张类似于虚拟的表,此表并不在数据库中存在,但数据库中的表变化时此表也会变化
创建视图 : create view 虚拟表名 as 要查询的语句;
使用:select * from 虚拟表名;(使用时可以当做普通数据表进行 sql 语句查询)
删除视图:drop view 视图名称;
优势:
1. 提高了重用性
2. 对数据库重构, 不影响程序运行
3. 提高安全性
4. 让数据更加清晰
2. 索引 Index
场景: 查询大量数据时比较慢,想要加快查询速度
原理: 在 sql 数据库中创建一个特殊的文件,用来存放要查询信息所在位置(引用 / 指针)。一般是为一个经常要查询的字段创建索引,但是该字段的更新频率必须要低,否则可能降低查询速度,原因是每次插入数据的事都都要去更新索引。索引相当于一个目录,会占用磁盘空间。
创建索引 : create index 索引名称 on 表名(字段名称(数据长度));
删除索引:drop index 字段名称 on 表名;
例如:
# 创建一个数据表,只有一个字段名为 title
create table book(title varchar(10));
# 给 title 创建索引, 10 是因为title是包含是个字符的 varchar 类型数据,如果是 int 则不需要写
create index book_title_index on book(title(10));
优势:
1. 提高查询效率
3. 事务
场景: 保证数据的 ACID (原子性 、一致性、隔离性、持久性),增删改的时候需要用到。可以让多条 sql 在commit之前不生效,当commit之后全部生效。
原理: 使一条或者多条 sql 语句要么 全部 执行成功要么 全部 执行失败,当 一系列 的 sql 语句在未提交之前,其他人是看不见任何结果的。Mysql 等数据库客户端中默认开启事务,即不需要手动创建事务,执行 sql 语句时自动创建并提交
开启事务第一种方法:
start transaction;
一系列要执行的sql语句;
commit;
开启事务第二种方法:
begin;
一条或者多条sql语句;
commit;