📜  唯一与主键 - SQL (1)

📅  最后修改于: 2023-12-03 14:50:44.398000             🧑  作者: Mango

唯一约束与主键 - SQL

在 SQL 中,唯一约束(UNIQUE)和主键(PRIMARY KEY)都可以用来保证数据表中某一列的值是唯一的。但是它们之间还是有一些区别的。

唯一约束

唯一约束可以用来限制表中某一列的值是唯一的。这意味着,在一张数据表中,每个值都必须是独一无二的。如果尝试向这个数据表中插入重复的值,将会导致插入失败。

在创建数据表时,可以在列的定义后面加上 UNIQUE 关键字来创建唯一约束。例如:

CREATE TABLE my_table (
    id INT NOT NULL,
    name VARCHAR(50) NOT NULL,
    age INT,
    PRIMARY KEY (id),
    UNIQUE (name)
);

在这个表中,name 列必须是唯一的。如果尝试插入两个相同的 name 值,就会得到一个错误。

主键

主键是一种特殊的唯一约束,它可以用来保证数据表中某一列的值是唯一的,并且这个值也不能为 NULL。每个数据表都只能有一个主键。

在创建数据表时,可以在列的定义后面加上 PRIMARY KEY 关键字来创建主键。例如:

CREATE TABLE my_table (
    id INT NOT NULL,
    name VARCHAR(50) NOT NULL,
    age INT,
    PRIMARY KEY (id)
);

在这个表中,id 列被指定为主键。这意味着,id 列必须是唯一的,并且这个值也不能为 NULL。如果尝试插入两个相同的 id 值,或者尝试插入一个 NULL 值,就会得到一个错误。

唯一约束 vs 主键

虽然唯一约束和主键都可以用来保证某一列的值是唯一的,但是它们之间还是有一些区别的。

  • 主键是唯一的,并且不允许为 NULL,而唯一约束只需要保证唯一性,允许为 NULL。
  • 每个数据表只能有一个主键,但可以有多个唯一约束。

综上所述,如果想要在数据表中为某一列赋予唯一性约束,应当优先考虑使用主键。如果需要对多个列进行唯一性约束,可以使用多个唯一约束。