JavaWeb学习_Mysql_事务和索引

事务

介绍

  • 概念: 事务是一组操作的集合,它是一个不可分割的工作单位, 事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求, 即这些操作要么同时成功, 要么同时失败.
  • 注意事项: 默认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)是帮助数据库高效获取数据的数据结构.
  • 优点:
    1. 提高数据查询的效率, 降低数据库的IO成本.
    2. 通过索引列对数据进行排序, 降低数据排序的成本, 降低CPU消耗.
  • 缺点:
    1. 索引会占用存储空间.
    2. 索引大大提高了查询效率, 同时却也降低了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开发教程

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Y_cen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值