MySQL总结第三天

W复习MySQL数据库第三天啦

为了更好的巩固MySQL

一起和W来总结吧~

MySQL 主键 超键 候选键 外键

主键:数据库表中对存储对象予以唯一非空和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能为空值(Null)

超键: 在关系中能唯一标识元祖的属性集称为关系模式的超键

候选键: 是最小超键,没有冗余元素的超键

外键: 在一个表中存在的另一个表的主键

数据库事务的四个特性

数据库事务正确执行的四个基本要素:ACID

原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。

事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像事务从来没有执行过一样

一致性:在事务开始之前和事务结束之后,数据库的完整性约束没有被破坏,状态保持一致。

隔离性:隔离状态执行事务,防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别:包括

读未提交(Read uncommitted)

读已提交(Read committed)

可重复读(Repeatable read)

串行化(Serializable)

持久性:事务处理结束后,对数据的修改就是永久的,即使系统故障也不会丢失

事务控制语句

START TRANSACTION;显式地开启一个事务;

COMMIT;也可以使用COMMIT WORK,不过二者是等价的。COMMIT会提交事务,并使已对数据库进行的所有修改成为永久性的;

ROLLBACK;回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;

SAVEPOINT identifier;SAVEPOINT允许在事务中创建一个保存点,一个事务中可以有多个SAVEPOINT;

RELEASE SAVEPOINT identifier;删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常;

ROLLBACK TO identifier;把事务回滚到标记点;

SET TRANSACTION;用来设置事务的隔离级别。

InnoDB存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。

1、用 BEGIN, ROLLBACK, COMMIT来实现

BEGIN 开始一个事务

ROLLBACK 事务回滚

COMMIT 事务确认

2、直接用 SET 来改变 MySQL 的自动提交模式:

SET AUTOCOMMIT=0 禁止自动提交

SET AUTOCOMMIT=1 开启自动提交

MySQL索引

MySQL索引的建立对于MySQL的高效运行是很重要的       索引可以大大提高MySQL的检索速度

打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。

索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。

创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。

实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

这是最基本的索引,它没有任何限制。它有以下几种创建方式:

如果是CHAR,VARCHAR类型,len可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 len。

它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:

有四种方式来添加数据表的索引:

ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。

ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): 这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)

ALTER TABLE tbl_name ADD INDEX index_name (column_list): 添加普通索引,索引值可出现多次。

ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):该语句指定了索引为 FULLTEXT ,用于全文索引。

以下实例为在表中添加索引。

你还可以在 ALTER 命令中使用 DROP 子句来删除索引。尝试以下实例删除索引:

主键只能作用于一个列上,添加主键索引时,你需要确保该主键默认不为空(NOT NULL)。实例如下:

你也可以使用 ALTER 命令删除主键:

删除主键时只需指定PRIMARY KEY,但在删除索引时,你必须知道索引名。

你可以使用 SHOW INDEX 命令来列出表中的相关的索引信息。可以通过添加 \G 来格式化输出信息。

尝试以下实例:

MySQL下期继续总结

路漫漫其修远兮

吾将上下而求索

明日继续

分享是一种美德

By 程序员W