MySQL中使用的键是什么?

时间:2011-08-26 14:04:07

标签: mysql sql key constraints

  

可能重复:
  mySQL's KEY keyword?

PRIMARY KEY (ID),
KEY name (name),
KEY desc (desc),

它们对什么有用?

6 个答案:

答案 0 :(得分:3)

密钥用于在数据库中强制实施参照完整性。

顾名思义,主键是表中给定行的主要标识。也就是说,每行的主键将唯一标识该行。

唯一键是在该组列上强制唯一性的键。它类似于主键,因为它还将唯一地标识表中的行。但是,在某些组合中允许NULL还有一个额外的好处。只能有一个主键,但您可以拥有许多唯一键。

外键用于强制实现2个表之间的关系(想想父/子表)。这样,子表在其父列中不能具有值X,除非X实际出现在父表中。这可以防止孤立的记录出现。

答案 1 :(得分:3)

主键约束确保列为:

  • not null
  • 唯一(如果有多列,则为唯一集合)

KEY是MySQL在索引的CREATE TABLE语句中的术语。索引目前不是ANSI,但所有数据库都使用索引来加速数据检索(以插入/更新/删除为代价,因为维护以保持索引相关)。

还有其他主要限制因素:

  • 独特
  • 外键(用于参照完整性)

...但你的问题不包括它们的例子。

答案 2 :(得分:2)

  1. Primary KEY用于为表中的每一行创建唯一/非空约束。用这个键搜索也是最快的。您只能在表格中创建一个PK。
  2. 普通键/索引是加快本栏搜索,通过此键对其他表进行排序,分组和加入的关键。
  3. 索引缺点:

    向表添加新索引将影响速度或运行插入/更新/删除语句。因此,您应该非常仔细地选择要在表格中建立索引的列。

答案 3 :(得分:1)

键也称为索引。它们用于加速查询。另外,键可以是约束(唯一键和外键)。主键也是唯一键,它标识记录。该记录也可以具有其他唯一键,不允许复制给定列中的值。外键强制引用完整性(@Derek Kromm已经写好了描述)。普通密钥仅用于加速查询。您需要索引查询的WHERE子句中使用的列。如果列上没有索引,MySQL将需要读取整个表以查找所需的记录。当使用索引时,MySQL只读取索引(通常是B +树),然后只读取索引中找到的表中的那些记录。

答案 4 :(得分:0)

什么,你没有对wikipedia entry全面解决? ; - )

因此,关系数据库(如MySQL,PostgreSQL,Oracle等)中的密钥是对列或列集的数据约束。最常见的密钥是Primary keyforeign 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)

密钥用于表之间的关系,您可以创建联接以从多个表中选择数据