zoukankan      html  css  js  c++  java
  • 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
        
  • 相关阅读:
    冲刺二6
    冲刺二5
    6月1日团队开发日志
    5月31日团队开发日志
    5月30日团队开发日志
    5月29日团队开发日志
    5月28日团队开发日志
    5月27日团队开发日志
    5月26日团队开发日志
    5月25日团队开发日志
  • 原文地址:https://www.cnblogs.com/wsq-1/p/13073505.html
Copyright © 2011-2022 走看看