什么时候我应该使用键,主键,唯一键和索引?
当前回答
主键用于处理不同的表。这是关系数据库的基础。如果你有一个图书数据库,最好创建2个表- 1)图书和2)作者,INT主键“id”。然后在books中使用id而不是作者的名字。
如果不希望有重复的条目,则使用唯一键。例如,您可能在图书表中有标题,并希望确保每个标题只有一个条目。
其他回答
主键不允许空值,但唯一键允许空值。
在一个表中只能声明一个主键,但是一个表可以有多个唯一键(列赋值)。
主键和唯一键很相似,只是功能不同。主键使表行唯一(即不能有两个具有完全相同键的行)。一个数据库表中只能有一个主键。
唯一键使表行中的表列是唯一的(即,没有两个表行可能具有完全相同的值)。您可以有多个唯一键表列(不像主键,这意味着表中只有一个表列是唯一的)。
INDEX还创建唯一性。MySQL(示例)将为被索引的列创建索引表。这样,在对索引表列查询查询时,更容易检索表行值。缺点是,如果你做很多更新/删除/创建,MySQL必须管理索引表(这可能是一个性能瓶颈)。
希望这能有所帮助。
KEY和INDEX是MySQL中的同义词。它们是同一个意思。在数据库中,您可以使用索引来提高数据检索的速度。索引通常创建在JOIN、WHERE和ORDER BY子句中使用的列上。
Imagine you have a table called users and you want to search for all the users which have the last name 'Smith'. Without an index, the database would have to go through all the records of the table: this is slow, because the more records you have in your database, the more work it has to do to find the result. On the other hand, an index will help the database skip quickly to the relevant pages where the 'Smith' records are held. This is very similar to how we, humans, go through a phone book directory to find someone by the last name: We don't start searching through the directory from cover to cover, as long we inserted the information in some order that we can use to skip quickly to the 'S' pages.
主键和唯一键类似。主键是可以唯一标识一行的列或列的组合。它是唯一键的特殊情况。一个表最多可以有一个主键,但可以有多个唯一键。在列上指定唯一键时,表中任何两个不同的行都不能具有相同的值。
还要注意,定义为主键或唯一键的列在MySQL中会自动建立索引。
主键——我们只能在一个表中放入一个主键,当我们向表中输入值时,我们不能让该列为空。
唯一键——我们可以在一个表中放置多个唯一键,当我们向表中输入值时,我们可以将该列留空。 当我们应用主键和唯一键时,列取唯一值(不相同)。
唯一密钥:
可以有多个值为空。 任何两个元组在唯一键中都不能有相同的值。 一个或多个唯一键可以组合成一个主键,反之则不行。
主键
可以包含多个唯一键。 唯一表示一个元组。
推荐文章
- 我如何得到“id”后插入到MySQL数据库与Python?
- MySQL工作台:如何保持连接活动
- 'create_date'时间戳字段的默认值无效
- 在表变量上创建索引
- 我可以从一个完整的mysql mysqldump文件恢复一个表吗?
- 计数在VARCHAR字段中字符串的出现次数?
- 修改一个MySQL列为AUTO_INCREMENT
- 如何删除数组元素,然后重新索引数组?
- 在ROR迁移期间,将列类型从Date更改为DateTime
- 如何删除所有MySQL表从命令行没有DROP数据库权限?
- 从主机连接到docker容器中的mysql
- 如果任何字段包含NULL, MySQL CONCAT将返回NULL
- MySQL中的字符串连接
- Laravel未知列'updated_at'
- MySQL更新内部连接表查询