龙空技术网

MySQL的索引和外键的使用

随便发发不喜勿喷 155

前言:

现时我们对“查看mysql外键”大体比较着重,姐妹们都想要知道一些“查看mysql外键”的相关内容。那么小编同时在网络上收集了一些有关“查看mysql外键””的相关文章,希望姐妹们能喜欢,姐妹们快快来学习一下吧!

一、mysql 索引

mysql索引描述:mysql 中的索引就像一本书的目录,能够提高检索效率,快速定位要找的内容。

(一)索引的四种类型:

1. NORMAL(普通索引类型)(常用)

适用范围广,最基本的索引,它没有任何限制,用于加速查询

2. UNIQUE(唯一索引)

不能重复,主键自动拥有该索引,但允许有空值。如果是组合索引,则列值的组合必须唯一

3. FULLTEXT(全文索引)

检索较长的文本文件效果较好,主要用来查找文本中的关键字,而不是直接与索引中的值相比较。fulltext索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的where语句的参数匹配

4. SPATIAL(空间索引)

空间索引是对空间数据类型的字段建立的索引,MYSQL中的空间数据类型有4种,分别是GEOMETRY、POINT、LINESTRING、POLYGON。MYSQL使用SPATIAL关键字进行扩展,使得能够用于创建正规索引类型的语法创建空间索引。创建空间索引的列,必须将其声明为NOT NULL,空间索引只能在存储引擎为MYISAM的表中创建

5. 主键索引

是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。一般是在建表的时候同时创建主键索引。

(二)索引的两种方式:

1. BTREE (B-Tree索引)(常用)

BTREE索引,使用大于,小于,BETWEEN,不等于,LIKE等操作符的时候都可以用。对索引字段进行范围查询的时候,只有BTREE索引可以通过索引访问。HASH索引实际上是全表扫描的。

如果对多列进行索引,列的顺序非常重要,MySQL仅能对索引最左边的前缀进行有效查找。

2. Hash 索引

HASH索引适合等式比较的操作,不能用来加速order by操作,也不能确定在两个值之间大约有多少行,会影响一些查询的执行效率。而且只能使用整个关键字来搜索一行。

二、mysql 外键

建立两个表之间的连接的一列或多列联系,表示一个表中的字段被另一个表的字段引用。

在MySQL中,外键应该建在从属表(子表)中。也就是说,在多个表中存在关联关系时,主表(父表)中的主键被作为从属表(子表)中外键的参照对象,从而与其他表实现关联。因此,从属表中的外键列必须与主表中相应的主键列保持一致,以便通过外键约束来实现数据完整性的验证。

外键约束使用最多的两种情况无外乎:

1)父表更新时子表也更新,父表删除时如果子表有匹配的项,删除失败;

2)父表更新时子表也更新,父表删除时子表匹配的项也删除。

前一种情况,在外键定义中,我们使用ON UPDATE CASCADE ON DELETE RESTRICT;

后一种情况,可以使用ON UPDATE CASCADE ON DELETE CASCADE。

设置外键更新和删除时的四种外键约束类型:

CASCADE 在父表中 update/delete 记录时,同步 update/delete 子表对应的记录。(更新时常用)NO ACTION 在父表中 update/delete 记录时,不会 update/delete 子表对应的记录。(删除时常用)RESTICT 同 NO ACTION,有优先级时有区别。SET NULL 在父表中 update/delete 记录时,将字表匹配的列设为 NULL,字表外键列不能为 NOT NULL

示例

标签: #查看mysql外键