zoukankan      html  css  js  c++  java
  • SQL——SQL约束

    SQL约束 - 用于限制加入表的数据的类型
        可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句)。
        NOT NULL -- 约束强制列不接受 NULL 值。
        UNIQUE -- 约束唯一标识数据库表中的每条记录。每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
            MySQL:
                CREATE TABLE tableName
                (
                    Id int NOT NULL,
                    UNIQUE (Id)
                )
            SQLServer/Oracle:
                CREATE TABLE tableName
                (
                    Id int NOT NULL UNIQUE
                )
            需命名的UNIQUE约束:MySql/SQLServer/Oracle:
                CREATE TABLE tableName
                (
                    Id int NOT NULL,
                    pwd varchar(255) NOT NULL,
                    CONSTRAINT uniqueName UNIQUE (Id,pwd)
                )
            表已创建:ALTER TABLE tableName ADD UNIQUE (Id)
            需命名:ALTER TABLE tableName ADD CONSTRAINT uniqueName UNIQUE (Id,pwd)
            撤销 UNIQUE 约束
                MySQL:
                    ALTER TABLE tableName DROP INDEX uniqueName
                SQLServer/Oracle:
                    ALTER TABLE tableName DROP CONSTRAINT uniqueName
        PRIMARY KEY -- 主键约束,约束唯一标识数据库表中的每条记录。主键必须包含唯一的值。主键列不能包含 NULL 值。每个表都应该有一个主键,并且每个表只能有一个主键。
            MySQL:
                CREATE TABLE tableName
                (
                    Id int NOT NULL,
                    PRIMARY KEY (Id)
                )
            SQLServer/Oracle:
                CREATE TABLE tableName
                (
                    Id int NOT NULL PRIMARY KEY
                )
            命名PRIMARY KEY 约束,以及为多个列定义 PRIMARY KEY 约束:
            MySQL/SQLServer:
                CREATE TABLE tableName
                (
                    Id int NOT NULL,
                    pwd varchar(255) NOT NULL,
                    CONSTRAINT pkName PRIMARY KEY (Id,pwd)
                )
           
            表已创建:ALTER TABLE tableName ADD PRIMARY KEY (Id)
            命名 PRIMARY KEY 约束,以及为多个列定义 PRIMARY KEY 约束:
                ALTER TABLE tableName ADD CONSTRAINT pkName PRIMARY KEY (Id,pwd)
                注释:如果使用 ALTER TABLE 语句添加主键,必须把主键列声明为不包含 NULL 值(在表首次创建时)。
            撤销 PRIMARY KEY 约束
            如需撤销 PRIMARY KEY 约束,请使用下面的 SQL:
            MySQL:
                ALTER TABLE tableName DROP PRIMARY KEY
            SQL Server / Oracle:
                ALTER TABLE tableName DROP CONSTRAINT pkName
        FOREIGN KEY -- 一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。用于预防破坏表之间连接的动作。必须是指向的那个表中的值之一。
            MySQL:
                CREATE TABLE tableName1
                (
                    Id1 int NOT NULL,
                    Id2 int,
                    PRIMARY KEY (Id1),
                    FOREIGN KEY (Id2) REFERENCES tableName2(Id2)
                )
            SQL Server/Oracle:
                CREATE TABLE tableName1
                (
                Id1 int NOT NULL PRIMARY KEY,
                Id2 int FOREIGN KEY REFERENCES tableName2(Id2)
                )
            命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束:
                CREATE TABLE tableName1
                (
                    Id1 int NOT NULL,
                    Id2 int,
                    PRIMARY KEY (Id1),
                    CONSTRAINT fkName FOREIGN KEY (Id2) REFERENCES tableName2(Id2)
                )
            表已创建:
                ALTER TABLE tableName1 ADD FOREIGN KEY (Id2) REFERENCES tableName2(Id2)
            命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束:
                ALTER TABLE tableName1 ADD CONSTRAINT fkName FOREIGN KEY (Id2) REFERENCES tableName2(Id2)
            撤销 FOREIGN KEY 约束
                MySQL: ALTER TABLE tableName1 DROP FOREIGN KEY fkName
                SQLServer/Oracle: ALTER TABLE tableName1 DROP CONSTRAINT fkName
        CHECK -- 约束用于限制列中的值的范围。对单个列定义 CHECK 约束,该列只允许特定的值。对一个表定义 CHECK 约束,此约束会在特定的列中对值进行限制。
            以下CHECK 约束规定 "col1" 列必须只包含大于 0 的整数。
            My SQL:
                CREATE TABLE tableName
                (
                    col1 int NOT NULL,
                    CHECK (col1>0)
                )
            SQL Server/Oracle:
                CREATE TABLE tableName
                (
                    col1 int NOT NULL CHECK (col1>0)
                )
            命名 CHECK 约束,以及为多个列定义 CHECK 约束:
                CREATE TABLE tableName
                (
                    col1 int NOT NULL,
                    col2 varchar(255),
                    CONSTRAINT chkName CHECK (col1>0 AND col2='Sandnes')
                )
            表已存在:ALTER TABLE tableName ADD CHECK (col1>0)
            命名 CHECK 约束,以及为多个列定义 CHECK 约束:
                ALTER TABLE tableName ADD CONSTRAINT chkName CHECK (col1>0 AND col2='Sandnes')
            撤销 CHECK 约束
            SQLServer/Oracle: ALTER TABLE tableName DROP CONSTRAINT chkName
            MySQL: ALTER TABLE tableName DROP CHECK chkName
        DEFAULT -- 用于向列中插入默认值。如果没有规定其他的值,那么会将默认值添加到所有的新记录。
            CREATE TABLE tableName
            (
                col varchar(255) DEFAULT 'Sandnes'
            )
            通过使用类似 GETDATE() 这样的函数,DEFAULT 约束也可以用于插入系统值:
            CREATE TABLE Orders
            (
            OrderDate date DEFAULT GETDATE()
            )
            表已存在:
            MySQL: ALTER TABLE tableName ALTER col SET DEFAULT 'SANDNES'
            SQL Server/Oracle:ALTER TABLE tableName ALTER COLUMN col SET DEFAULT 'SANDNES'
            撤销 DEFAULT 约束:
            MySQL: ALTER TABLE tableName ALTER col DROP DEFAULT
            SQL Server/Oracle:ALTER TABLE tableName ALTER COLUMN col DROP DEFAULT

  • 相关阅读:
    eclipse 工程没有build path
    Redis中RedisTemplate和Redisson管道的使用
    Spring多开发环境配置
    Commons Configuration之三Properties文件
    Commons Configuration之二基本特性和AbstractConfiguration
    Commons Configuration之一简介
    Commons DbUtils
    这可能是最容易入门的socket教程了
    图解leetcode —— 124. 二叉树中的最大路径和
    图解leetcode —— 395. 至少有K个重复字符的最长子串
  • 原文地址:https://www.cnblogs.com/it-mh/p/12034623.html
Copyright © 2011-2022 走看看