MySQL
- 1,MySQL的事务处理
- 2,事务的ACID原则
- 3,MySQL的事务实现方法
- 事务处理步骤
- 4,数据库索引
- 1,作用
- 2,分类
- 3,主键索引
- 主键:
- 特点:
- 4,唯一索引(UNIQUE)
- 作用:
- 与主键索引的区别
- 5,常规索引(INDEX)
- 作用:
- 注意:
- 6,全文索引(FULL TEXT)
- 作用:
- 注意:
- 5,索引准则
1,MySQL的事务处理
事务就是一组SQL语句放在同一个批次内去执行
如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行
注意:
MySQL事务处理只支持InnoDB和BDB数据引擎
2,事务的ACID原则
- 原子性(Atomic):事务中的一组SQL语句不能单独执行某一条SQL语句,要么全部成功,要么全部失败
- 一致性(Consist):确保数据库能正确的改变状态后,才提交事务
- 隔离性(Isolated):每个事务之间是互不影响的
- 持久性(Durable):事务一旦提交成功对数据的影响是持久的
3,MySQL的事务实现方法
MySQL默认是自动提交事务的,使用事务事先关闭自动提交
使用SET 语句来改变自动提交模式
SET AUTOCOMMIT=0; #关闭自动提交模式
SET AUTOCOMMIT=1; #开启自动提交模式
事务处理步骤
首先使用 SETAUTOCOMMIT=0;关闭MysQL的自动提交,然后使用START TRANSACTION;开始一个事务,标记事务的起始点,如果事务成功使用COMMIT;提交一个事务给数据库,如果有一条语句执行不成功就是用ROLLBACK;将事务回滚,所有COMMit中的操作将被取消,无论事务成功还是失败都要使用SET AUTOCOMMIT=1;来还原MySQL数据库的自动提交
4,数据库索引
1,作用
- 提高查询速度
- 确保数据的唯一性
- 可以加速表和表之间的连接,实现表与表之间的参照完整性
- 使用分组和排序子句进行数据检索时,可以显著减少分组和排序的时间
- 全文检索字段进行搜索优化
2,分类
- 主键索引(PRIMARY KEY)
- 唯一索引(UNIQUE)
- 常规索引(INDEX)
- 全文索引(FULLTEXT)
3,主键索引
主键:
某一个属性组能唯一标识一条记录
特点:
- 最常见的索引类型
- 确保数据记录的唯一性
- 确定特定数据记录在数据库中的位置
示例:
CREATE TABLE `表名`(
`GradelID` INT(11) AUTO_INCREMENT PRIMARY KEY,
#或 PRIMARY KEY(`GradelID`)
)
注意:添加主键的时候自带主键索引
4,唯一索引(UNIQUE)
作用:
避免同一个表中某数据列中的值重复
与主键索引的区别
- 主键索引只能有一个
- 唯一索引可有多个
示例:
CREATE TABLE `Grade`(
`GradeId` INT(11) AUTO_INCREMENT PRIMARY KEY,
`GradeName` varchar(32) NOT NULL UNIQUE
#或 UNIQUE KEY `GradeId` (`GradeId`)
)
5,常规索引(INDEX)
作用:
快速定位特定数据
注意:
- index和key关键字都可设置常规索引
- 应加在经常被当做查找条件的字段
- 不宜添加太多常规索引,影响数据的插入,删除和修改操作
创建表时添加常规索引:
CREATE TABLE `result`(
//省略一些代码
INDEX/KEY `ind` (`studentNo`,`subjectNo`)
)
创建后追加
ALTER TABLE `result` ADD INDEX `ind`(`studentNo`,`subjectNo`)
6,全文索引(FULL TEXT)
作用:
快速定位特定数据
注意:
- 只能用于MyISAM类型的数据表
- 只能用于CHAR VARCHAR TEXT数据列类型
- 适合大型数据集
示例:
CREATE TABLE `student`(
FULLTEXT(`StudentName`)
)ENGINE=MYISAM;
5,索引准则
- 索引不是越多越好
- 不要对经常变动的数据加索引
- 小数据量的表建议不要加索引
- 索引一般应加在查询条件的字段