SQL_约束

一、主要包括:

  • SQL NOT NULL 约束
  • SQL UNIQUE 约束
  • SQL PRIMARY KEY 约束
  • SQL FOREIGN KEY 约束
  • SQL CHECK 约束
  • SQL DEFAULT 约束

二、具体内容:

  • SQL NOT NULL 约束

    默认情况下,表的列接受NULL值。

    NOT NULL 约束强制列不接受 NULL值。

    NOT NULL 约束强制字段始终包含值。即如果不向字段添加值,就无法插入新纪录或者更新记录。

    • 添加 NOT NULL 约束

      #在一个已创建的表的'Age'字段中添加 NOT NULL约束
      ALTER TABLE Persons MODIFY Age int NOT NULL;
      
    • 删除 NOT NULL 约束

      # 在一个已创建的表'Age'字段中删除 NOT NULL 约束
      ALTER TABLE Persons MODIFY Age int NULL;
      
  • SQL UNIQUE 约束

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

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

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

    注:每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。

    • 创建(CREATE TABLE)表时的 SQL UNIQUE 约束

      # 在“”表创建时在“”列上创建 UNIQUE 约束
      CREATE TABLE Persons
      (
      P_Id int NOT NULL,
      LastName varchar(255) NOT NULL,
      FirstName varchar(255),
      Address varchar(255),
      City varchar(255),
      UNIQUE (P_Id)
      )
      
    • 修改(ALTER TABLE)表时的 SQL UNIQUE 约束

      # 当表已被创建时,如需在“P_Id”列创建UNIQUE约束
      ALTER TABLE Persons ADD UNIQUE (P_Id)
      
      # 如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束
      ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
      
    • 删除 UNIQUE 约束

      # 如需撤销 UNIQUE 约束
      ALTER TABLE Persons DROP INDEX uc_PersonID
      
  • SQL PRIMARY KEY 约束

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

    主键必须包含唯一的值。

    主键列不能包含NULL值。

    每个表都应该有一个主键,并且每个表只能有一个主键。

    • 创建(CREATE TABLE)表时的SQL PRIMARY KEY 约束

      # 在“Persons”表创建时,在“P_Id”列上创建 PRIMARY KEY 约束:
      CREATE TABLE Persons
      (
      P_Id int NOT NULL,
      LastName varchar(255) NOT NULL,
      FirstName varchar(255),
      Address varchar(255),
      City varchar(255),
      PRIMARY KEY (P_Id)
      )
      
      # 命名PRIMARY KEY 约束,并定义多个列的PRIMARY KEY 约束:
      CREATE TABLE Persons
      (
      P_Id int NOT NULL,
      LastName varchar(255) NOT NULL,
      FirstName varchar(255),
      Address varchar(255),
      City varchar(255),
      CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
      )
      
    • 修改(ALTER TABLE)表时的SQL PRIMARY KEY 约束

      # 表已被创建时,在“P_Id”列创建 PRIMARY KEY 约束:
      ALTER TABLE Persons ADD PRIMARY KEY (P_Id)
      
      # 命名PRIMARY KEY 约束,并定义多个列的PRIMARY KEY 约束:
      ALTER TABLE Persons ADD CONSTRAINT pk_PersonsID PRIMARY KEY (P_Id,LastName)
      
    • 撤销 PRIMARY KEY 约束

      # 撤销 PRIMARY KEY 约束
      ALTER TABLE Persons DROP PRIMARY KEY
      
  • SQL FOREIGN KEY 约束

    一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键)

    FOREIGN KEY 约束用于预防破坏表之间链接的行为。

    FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须时它指向昂达那个表中的值之一。

    • 创建(CREATE TABLE)表时的 SQL FOREIGN KEY 约束

      # 在 "Orders" 表创建时在 "P_Id" 列上创建 FOREIGN KEY 约束:
      CREATE TABLE Orders
      (
      O_Id int NOT NULL,
      OrderNo int NOT NULL,
      P_Id int,
      PRIMARY KEY (O_Id),
      FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
      )
      
      # 命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束:
      CREATE TABLE Orders
      (
      O_Id int NOT NULL,
      OrderNo int NOT NULL,
      P_Id int,
      PRIMARY KEY (O_Id),
      CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
      REFERENCES Persons(P_Id)
      )
      
    • 修改(ALTER TABLE)表时的 SQL FOREIGN KEY 约束

      # 当 "Orders" 表已被创建时,如需在 "P_Id" 列创建 FOREIGN KEY 约束:
      ALTER TABLE Orders
      ADD FOREIGN KEY (P_Id)
      REFERENCES Persons(P_Id)
      
      # 命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束:
      ALTER TABLE Orders
      ADD CONSTRAINT fk_PerOrders
      FOREIGN KEY (P_Id)
      REFERENCES Persons(P_Id)
      
    • 撤销 SQL FOREIGN KEY 约束

      # 撤销 SQL FOREIGN KEY 约束:
      ALTER TABLE Orders DROP FOREIGN KEY fk_PerOrders
      
  • SQL CHECK 约束

    CHECK 约束用于限制列中的值的范围。

    如果对单个列定义 CHECK 约束,那么该列只允许特定的值。

    如果对一个表定义 CHECK 约束,那么此约束会基于行中其他列的值在特定的列中对值进行限制。

    • 创建表时的 SQL CHECK 约束

      # 在 "Persons" 表创建时在 "P_Id" 列上创建 CHECK 约束。CHECK 约束规定 "P_Id" 列必须只包含大于 0 的整数
      CREATE TABLE Persons
      (
      P_Id int NOT NULL,
      LastName varchar(255) NOT NULL,
      FirstName varchar(255),
      Address varchar(255),
      City varchar(255),
      CHECK (P_Id>0)
      )
      
      # 命名 CHECK 约束,并定义多个列的 CHECK 约束:
      CREATE TABLE Persons
      (
      P_Id int NOT NULL,
      LastName varchar(255) NOT NULL,
      FirstName varchar(255),
      Address varchar(255),
      City varchar(255),
      CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')
      )
      
    • 修改表时的 SQL CHECK 约束

      # 当表已被创建时,如需在 "P_Id" 列创建 CHECK 约束:
      ALTER TABLE Persons ADD CHECK (P_Id>0)
      
      # 命名 CHECK 约束,并定义多个列的 CHECK 约束:
      ALTER TABLE Persons
      ADD CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')
      
    • 撤销 CHECK 约束

      ALTER TABLE Persons
      DROP CONSTRAINT chk_Person
      
  • SQL DEFQULT 约束

    DEFQULT 约束用于向列中插入默认值。

    如果没有规定其他的值,那么会将默认值添加到所有的新记录。

    • 创建(CREATE TABLE)表时的 SQL DEFQULT 约束

      # 在 "Persons" 表创建时在 "City" 列上创建 DEFAULT 约束:
      CREATE TABLE Persons
      (
          P_Id int NOT NULL,
          LastName varchar(255) NOT NULL,
          FirstName varchar(255),
          Address varchar(255),
          City varchar(255) DEFAULT 'Sandnes'
      )
      
      # 使用类似 GETDATE() 这样的函数,DEFAULT 约束也可以用于插入系统值:
      CREATE TABLE Orders
      (
          O_Id int NOT NULL,
          OrderNo int NOT NULL,
          P_Id int,
          OrderDate date DEFAULT GETDATE()
      )
      
    • 修改(ALTER TABLE)表时的 SQL DEFQULT 约束

      # 当表已被创建时,如需在 "City" 列创建 DEFAULT 约束:
      ALTER TABLE Persons
      ALTER City SET DEFAULT 'SANDNES'
      
    • 撤销 DEFQULT 约束

      # 撤销 DEFAULT 约束
      ALTER TABLE Persons
      ALTER City DROP DEFAULT
      
原文地址:https://www.cnblogs.com/wsq-1/p/13073505.html