mysql数据库表的主键、外键、唯一键、主键索引、唯一索引、普通索引:
一:什么是主键?
主键,(也叫主关键字primary key),由表中的一个或多个列组成,用于唯一性标识数据表中的某一条记录。
一个表最多只有一个主键。 主键可以由一个字段(列),也可以由多个字段(列)组成,分别称为单列主键(我们经常用到的)或联合主键(复合主键/多列主键)。
单列主键,它的那一个字段不可以为空;联合主键,它的多个字段都不可以为空。
总结:一个表最多只有一个主键。主键不可以重复,不可以为空。
二:什么是外键?**
外键,也叫外关键字(foreign key)。
如果一个A表中的主键,在另一个B表中存在,那么这个A表的主键称为B表的外键。由此可见,外键表示了两个表之间的联系。以另一个表的外键作主键的表被称为主表,具有此外键的表被称为主表的从表。
三:什么是唯一键?**
唯一键,(unique key),由表中的一个或多个列组成。
一个表可以有多个唯一键。(unique key)。 每个唯一键:可以由一个字段(列),也可以由多个字段(列)组成。
总结:一个表可以有多个唯一键。唯一键不可以重复,可以为空(最多只有一个为null,因为唯一不重复的原因)。
四:什么是主键索引?**
五:什么是唯一索引?**
唯一索引,(unique index)。
唯一索引,一种索引类型,不允许具有索引值相同的行,从而禁止重复的索引或键值。系统在创建该索引时检查是否有重复的键值,并在每次使用 INSERT 或 UPDATE 语句添加数据时进行检查。
要对一个表建立唯一索引,可以使用关键字UNIQUE。
唯一索引创建的时候,例如,create unique index 索引名 on 表名 (列名);
六:什么是普通索引?**
普通索引,(normal index)。
普通索引创建的时候,直接例如,create index 索引名 on 表名 (列名);
备注:
一
mysql数据库,建表的时候,建立主键,系统不会默认为主键创建唯一索引。
(可以后期手动对主键的列创建唯一索引)
(你说系统没有默认对主键创建唯一索引吧,但是,为什么用explain查询sql执行计划的时候,还看到用到了索引了呢???求回复!!!!!!!!!!!!!!!!)
oracle数据库,建表的时候,建立主键,系统同时会默认为主键创建唯一索引。
(后期手动对主键的列创建唯一索引会报错!)
二
mysql在建立表的外键的时候有一个要求:建立外键的列必须有索引。否则报错。
但是Oracle不需要建立index,直接可以建立外键,不会报错,执行通过;
本文深入解析数据库中的主键、外键、唯一键及各类索引的概念与作用,包括主键索引、唯一索引和普通索引,探讨它们在MySQL与Oracle数据库中的实现差异。

1538

被折叠的 条评论
为什么被折叠?



