暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

什么是SQL UNIQUE约束(唯一约束)?

SQL数据库运维 2021-07-15
4322

SQL UNIQUE 约束

唯一约束用来保证一列(或一组列)中的数据是唯一的。他们类似于主键,但存在以下重要区别:

  • 表可包含多个唯一约束,但每个表只允许一个主键。

  • 唯一约束列可包含NULL值。

  • 唯一约束列可修改或更新。

  • 唯一约束列的值可重复使用。

  • 与主键不一样,唯一约束不能用来定义外键(FOREIGN KEY)。

比较项

PRIMARY KEY约束

UNIQUE约束

约束的数量

一个

多个

NULL值

不允许

允许

是否可定义外键

可定义外键

不可定义外键

是否可修改/更新

修改/更新

可修改/更新

UNIQUE 约束唯一标识数据库表中的每条记录。

UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。

PRIMARY KEY 约束拥有自动定义的 UNIQUE 约束。

请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个主键 (PRIMARY KEY )约束。



使用CREATE TABLE 语句创建 SQL UNIQUE 约束

下面的 SQL 在 "Persons" 表创建时在 "Id_P" 列创建 UNIQUE 约束:

MySQL:

    CREATE TABLE Persons
    (
    Id_P int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    UNIQUE (Id_P)
    )

    SQL Server Oracle MS Access:

      CREATE TABLE Persons
      (
      Id_P int NOT NULL UNIQUE,
      LastName varchar(255) NOT NULL,
      FirstName varchar(255),
      Address varchar(255),
      City varchar(255)
      )

      如果需要命名 UNIQUE 约束,以及为多个列定义 UNIQUE 约束,请使用下面的 SQL 语法:

      MySQL SQL Server / Oracle / MS Access:

        CREATE TABLE Persons
        (
        Id_P int NOT NULL,
        LastName varchar(255) NOT NULL,
        FirstName varchar(255),
        Address varchar(255),
        City varchar(255),
        CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
        )


        使用ALTER TABLE 语句添加 SQL UNIQUE 约束

        当表已被创建时,如需要在 "Id_P" 列创建 UNIQUE 约束,前提条件是参与UNIQUE约束的列或列组合必须包含唯一值。

        请使用下列 SQL:

        MySQL / SQL Server / Oracle / MS Access:

          ALTER TABLE Persons
          ADD UNIQUE (Id_P)

          如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束,请使用下面的 SQL 语法:

          MySQL / SQL Server / Oracle / MS Access:

            ALTER TABLE Persons
            ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)


            删除 UNIQUE 约束

            如需删除 UNIQUE 约束,请使用下面的 SQL:

            MySQL:

              ALTER TABLE Persons
              DROP INDEX uc_PersonID

              SQL Server / Oracle / MS Access:

                ALTER TABLE Persons
                DROP CONSTRAINT uc_PersonID
                文章转载自SQL数据库运维,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论