答案 0 :(得分:3)
密钥用于在数据库中强制实施参照完整性。
顾名思义,主键是表中给定行的主要标识。也就是说,每行的主键将唯一标识该行。
唯一键是在该组列上强制唯一性的键。它类似于主键,因为它还将唯一地标识表中的行。但是,在某些组合中允许NULL还有一个额外的好处。只能有一个主键,但您可以拥有许多唯一键。
外键用于强制实现2个表之间的关系(想想父/子表)。这样,子表在其父列中不能具有值X,除非X实际出现在父表中。这可以防止孤立的记录出现。
答案 1 :(得分:3)
主键约束确保列为:
KEY
是MySQL在索引的CREATE TABLE语句中的术语。索引目前不是ANSI,但所有数据库都使用索引来加速数据检索(以插入/更新/删除为代价,因为维护以保持索引相关)。
还有其他主要限制因素:
...但你的问题不包括它们的例子。
答案 2 :(得分:2)
索引缺点:
向表添加新索引将影响速度或运行插入/更新/删除语句。因此,您应该非常仔细地选择要在表格中建立索引的列。
答案 3 :(得分:1)
键也称为索引。它们用于加速查询。另外,键可以是约束(唯一键和外键)。主键也是唯一键,它标识记录。该记录也可以具有其他唯一键,不允许复制给定列中的值。外键强制引用完整性(@Derek Kromm已经写好了描述)。普通密钥仅用于加速查询。您需要索引查询的WHERE子句中使用的列。如果列上没有索引,MySQL将需要读取整个表以查找所需的记录。当使用索引时,MySQL只读取索引(通常是B +树),然后只读取索引中找到的表中的那些记录。
答案 4 :(得分:0)
什么,你没有对wikipedia entry全面解决? ; - )
因此,关系数据库(如MySQL,PostgreSQL,Oracle等)中的密钥是对列或列集的数据约束。最常见的密钥是Primary key
和foreign key
以及unique key
。
foreign key
专门将一个表的数据与另一个表中的数据相关联。您可能会看到表格blog_posts
根据users
列有user_id
的外键。这意味着user_id
中的每个blog_posts
都会在users
列中包含相应的条目(这是一对多的关系 - 另一个时间的主题)。
如果列(或列组)具有unique key
,则表示该表中只能存在一个此类键。通常,您会看到电子邮件地址等内容是唯一的密钥 - 您只需要为每个用户分配一个电子邮件地址。我还看到列匹配到唯一键的组合 - 五列,first_name,last_name,地址,城市和州,通常是一个独特的键 - 实际上,在1835年只能有一个威廉盖茨华盛顿州麦地那73rd Ave NE。 (我确实认识到小威廉·盖茨有可能出生,但该数据库的设计者并不真正关心。)
primary key
是给定表的主要唯一标识符。根据定义,它是一个独特的密钥。它不能为空,必须是唯一的。它在给定表的索引中占有突出地位。
答案 5 :(得分:-1)
密钥用于表之间的关系,您可以创建联接以从多个表中选择数据