事务
介绍
- 概念: 事务是一组操作的集合,它是一个不可分割的工作单位, 事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求, 即这些操作要么同时成功, 要么同时失败.
- 注意事项: 默认Mysql的事务是自动提交的, 每执行一条DML语句, Mysql会立即隐式的提交事务.
操作
-- 开启事务
start transaction; # begin也行
-- 删除部门
delete from tb_dept where id = 3;
-- 删除部门下的员工
delete from tb_emp where dept_id = 3;
-- 提交事务
commit;
-- 回滚事务: 没提交事务前, 可以撤销操作.
rollback;
select * from tb_emp;
select * from tb_dept;
四大特性
- 原子性: 事务是不可分割的最小单位, 要么全部成功, 要么全部失败.
- 一致性: 事务完成时, 必须使所有的数据都保持一致状态.
- 隔离性: 数据库系统提供的隔离机制, 保证事务在不受外部并发操作影响的独立环境下运行
- 持久性:事务一旦提交或回滚, 它对数据库中的数据的改变就是永久的.
索引
介绍
- 概念: 索引(index)是帮助数据库高效获取数据的数据结构.
- 优点:
- 提高数据查询的效率, 降低数据库的IO成本.
- 通过索引列对数据进行排序, 降低数据排序的成本, 降低CPU消耗.
- 缺点:
- 索引会占用存储空间.
- 索引大大提高了查询效率, 同时却也降低了insert, update, delete的效率.
结构
MySQL数据库支持的索引结构有很多,如: Hash索引、B+Tree索引、Full-Text索引等。我们平常所说的索引,如果没有特别指明,都是指默认的 B+Tree 结构组织的索引。
B+Tree树:
- 每一个节点, 可以存储多个key(有n个key, 就有n个指针)
- 所有的数据都存储在叶子节点, 非叶子节点仅用于索引数据
- 叶子节点形成了一颗双向链表, 便于数据的排序及区间范围查询
操作语法
-- 创建 : 为tb_emp表的name字段建立一个索引 .
-- create [unique] index 索引名 on 表名(字段名, ...): 字段值唯一
create index idx_emp_name on tb_emp(name);
-- 查询 : 查询 tb_emp 表的索引信息 .
show index from tb_emp;
-- 删除: 删除 tb_emp 表中name字段的索引 .
drop index idx_emp_name on tb_emp;
注意事项:
- 主键字段, 在建表时, 会自动创建主键索引.
- 添加唯一约束时, 数据库实际上会添加唯一索引.
来源
黑马程序员. JavaWeb开发教程