当前位置: 首页 > 面试题库 >

唯一键和主键之间的区别

翁鸿远
2023-03-14
问题内容

我在一本书中遇到了以下SQL:

CREATE TABLE 'categories'(
id SMALLINT NOT NULL AUTO INCREMENT,
category VARCHAR(30) NOT NULL,
PRIMARY KEY('id'),
UNIQUE KEY 'category'('category')
)ENGINE=MyISAM DEFAULT CHARSET = utf8;

我想知道为什么在同一张表中需要一个PRIMARY和UNIQUE KEY?我想,这个问题的根源在于,PRIMARY和UNIQUE键之间有什么区别?


问题答案:

关系模型说,一个键和另一个键之间没有本质区别。也就是说,当一个关系具有多个候选键时,没有理论上的理由声明 键比
键更重要。从本质上讲,这意味着没有理论上的理由将一个键标识 为主键 ,而将所有其他 标识为辅助键。(不过,可能有实际原因。)

许多关系具有多个候选密钥。例如,美国各州之间的关系可能具有这样的数据。

State      Abbr      Postal Code
--
Alabama    Ala.      AL
Alaska     Alaska    AK
Arizona    Ariz.     AZ
...
Wyoming    Wyo.      WY

显然,这三列中的每一个值都是唯一的-有三个候选键。

如果要在SQL中建立一个表来存储这些值,则可以这样做。

CREATE TABLE states (
  state varchar(15) primary key,
  abbr varchar(10) not null unique,
  postal_code char(2) not null unique
);

而且您会做类似的事情,因为SQL没有其他方法可以说“我的表有三个单独的候选键”。

我没有选择“ state”作为主键的任何特殊原因。我可以轻松选择“ abbr”或“ postal_code”。这三列中的任何一列也可以用作外键引用的目标。

到目前为止,我也可以建立这样的表。

CREATE TABLE states (
  state varchar(15) not null unique,
  abbr varchar(10) not null unique,
  postal_code char(2) not null unique
);


 类似资料:
  • 本文向大家介绍主键和唯一键之间的区别,包括了主键和唯一键之间的区别的使用技巧和注意事项,需要的朋友参考一下 主键和唯一键都用于从表中获取记录。这些键还用于创建表之间的关系。主键和唯一键都用于唯一标识表中的记录。一个表只能有一个主键,而唯一键在一个表或关系中可以是多个。 以下是主键和唯一键之间的重要区别。 序号 键 首要的关键 唯一键 1 定义 主键用于唯一标识关系中的所有记录。 唯一键还用于唯一标

  • 本文向大家介绍主键和候选键之间的区别,包括了主键和候选键之间的区别的使用技巧和注意事项,需要的朋友参考一下 主键和候选键都用于从表中获取记录。这些键还用于创建表之间的关系。主键和候选键都用于唯一标识表中的记录。 以下是主键和候选键之间的重要区别。 序号 键 首要的关键 候选键 1 定义 主键是唯一且非空的键,可唯一标识表中的记录。一个表只能有一个主键。 候选键也是唯一标识表中记录的唯一键,但是一个

  • 本文向大家介绍主键与唯一键,包括了主键与唯一键的使用技巧和注意事项,需要的朋友参考一下 首要的关键 主键是一列,用于唯一地标识表的每个元组。 它用于向表添加完整性约束。一个表中只能使用一个主键。在主键的情况下,重复和NULL(空)值无效。主键也可以用作其他表的外键。 让我们举个例子 我们有一个表名employee,用于存储公司员工的数据。下表显示了该表的内容。 Emp_id 名称 号码 位置 薪水

  • 本文向大家介绍数据库中主键和外键之间的区别,包括了数据库中主键和外键之间的区别的使用技巧和注意事项,需要的朋友参考一下 在关系数据库中,键是维护两个表之间的关系或从表中唯一标识数据的最重要元素。主键用于唯一地标识数据,因此两行不能具有相同的主键。不能为空。 另一方面,外键用于维护两个表之间的关系。一个表的主表充当另一个表中的伪造键。表中的外键强制引用完整性。该表中可以有多个。 序号 键 首要的关键

  • 问题内容: 嗨,我正在尝试为我的签名证书获取签名密钥MD5指纹。任何人都可以告诉我签名密钥和调试密钥之间的区别。我可以为调试键指定指纹,但是为了获得标志键指纹,我很困惑keytool -list -alias alias_name -keystore my-release- key.keystore中my_release_key.keystore的含义。我正在使用以下链接获取签名钥匙指纹。 htt

  • 所以我有一个表,它用一个昵称作为外键,用一个id作为主键: 到目前为止,一切都很好。然而,每当我试图从发布中获取主键时,它告诉我:“没有唯一的约束来匹配引用表“信息”的给定键。 但是,如果我将表中的信息信息ID更改为唯一,错误就会消失。这是正确的做事方式吗? 提前感谢大家!