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

SQL约束之CHECK 约束详解(检查约束)

SQL数据库运维 2021-07-07
7018

SQL CHECK 约束简介

检查约束用来保证一列(或一组列)中的数据满足一组指定的条件。检查约束的常见用途有如下几点:

  • 检查最小或最大值。例如,防止0个物品的订单(即使0是合法的数)。

  • 指定范围。例如,保证发货日期大于等于今天的日期,但不超过今天起一年后的日期。

  • 只允许特定的值。例如,在性别字典中只允许M或F。

换句话说,数据类型限制了列中可保存的数据的类型。检查约束在数据类型内又做了进一步的限制,这些限制及其重要,可以确保插入数据库的数据正是你想要的数据。不需要依赖客户端应用程序或用户来保证正确获取它,DBMS本身将会拒绝任何无效的数据。



CREATE TABLE 时的 SQL CHECK 约束

下面的 SQL 在 "Persons" 表创建时为 "Id_P" 列创建 CHECK 约束。CHECK 约束规定 "Id_P" 列必须只包含大于 0 的整数。

My SQL:

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

    SQL Server Oracle MS Access:

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

      如果需要命名 CHECK 约束,以及为多个列定义 CHECK 约束,请使用下面的 SQL 语法(注意:要为约束指定名称,请使用CONSTRAINT关键字,后跟约束的名称):

      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 chk_Person CHECK (Id_P>0 AND City='Sandnes')
        )


        ALTER TABLE 时的 SQL CHECK 约束

        如果在表已存在的情况下为 "Id_P" 列创建 CHECK 约束,请使用下面的 SQL:

        MySQL / SQL Server / Oracle / MS Access:

          ALTER TABLE Persons
          ADD CHECK (Id_P>0)

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

          MySQL / SQL Server / Oracle / MS Access:

            ALTER TABLE Persons
            ADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')


            撤销CHECK约束

            如需撤销 PRIMARY KEY 约束,请使用下面的 SQL:

            SQL Server / Oracle / MS Access:

              ALTER TABLE Persons
              DROP CONSTRAINT chk_Person

              My SQL:

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

                评论