MySQL必知必会
Mysql
Mysql事务
原则
- 只有使用了INNODB引擎的数据库或表才支持事务
- 原子性:具备回滚机制,只有全部完成和全部不完成两种状态。
- 一致性:事务开启前和结束后数据库完整性没有被破坏。
- 隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力。防止事务同时执行期间交叉导致数据不一致。
- 事务隔离级别:读未提交、读提交、可重复读和串行化
- 持久性:事务处理结束后对数据的修改是永久的,即便系统故障也不会丢失。
事务控制语句
| 语法 | 说明 |
|---|---|
| BEGIN或START TRANSACTION | 显式地开启一个事务。 |
| COMMIT或COMMIT WORK | 可以提交事务,并对数据库的修改成为永久性。 |
| ROLLBACK或ROLLBACK WORK | 回滚会结束用户的事务,并撤回正在进行的所有未提交的修改。 |
| SAVEPOINT identifier,SAVEPOINT | 允许在事务中创建一个保存点,一个事务中可以有多个SAVEPOINT。 |
| RELEASE SAVEPOINT identifier | 删除一个事务的保存点,当没有指定的保存点时,执行语句会抛出异常。 |
| SET TRANSACTION | 用来设置事务的隔离级别(READ UNCOMMITTED/READUNCOMMITTED/READ COMMITTED/REPEATABLE READ/SERIALIZABLE)。 |
事务处理方法:
用BEGIN.ROLLBACK,COMMIT来实现。
| 语法 | 说明 |
|---|---|
| BEGIN或START TRANSACTION | 用于开始一个事务。 |
| ROLLBACK | 事务回滚,取消之前的更改。 |
| COMMIT | 事务确认,提交事务,使更改永久生效。 |
主键
对于关系型数据库,有很重要得约束,就是两条数据不能完全重复,用于区别这两条数据的字段成为主键。
主键的选取原则就是:不使用和任何业务相关的字段作为主键。
主键分为自增整数类型和全局唯一GUID类型。
大多应用用自增整型即可满足,INT上限为21亿,BIGINT为922亿亿。
联合主键:可以多个字段设为主键,只要确保不是所有主键都重复即可。但是没有必要的情况尽量不使用联合主键,会使复杂度上升。
外键
ALTER TABLE *本表名*
ADD CONSTRAINI *外键名*
FOREIGN KEY *本表字段*
REFERENCES *外表(外表字段)*
MYSQL索引
索引使一种数据结构,用于加快数据库查询的速度和性能。
索引分单列索引和组合索引,即一个索引只包含一个列或多个列。
创建索引时,需要确保索引应用在SQL查询语句的条件。
实际上索引也是一张表。
索引的使用:
CREATE INDEX *索引名称* ON *表名称*(*列名1* ASC/DESC,*列名2* ASC/DESC,...);
修改表结构
ALTER TABLE *已有的表名*
ADD INDEX *索引名称*(*列名1* ASC/DESC,*列名2* ASC/DESC,...);
创建表的时候直接指定
CREATE TABLE *表名* (*column1* data_type,*column2* data_type,...,
INDEX *索引名称* (*column1* [ASC|DESC], *column2* [ASC|DESC], ...));
删除索引
DROP INDEX 索引名称 ON *表名*;
唯一索引
CREATE UNIQUE INDEX *索引名称*
ON *表名*(*column1* [ASC|DESC], *column2* [ASC|DESC], ...);
修改表结构添加索引
ALTER table *表名*
ADD CONSTRAINT *索引名称* UNIQUE (*column1*, *column2*, ...);
创建表的时候直接指定
CREATE TABLE *表名* (
*column1* data_type,
*column2* data_type,
...,
CONSTRAINT *索引名称* UNIQUE (*column1* [ASC|DESC], *column2* [ASC|DESC], ...)
);

浙公网安备 33010602011771号