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

SQL——SQL约束的更多相关文章

  1. SQL PRIMARY KEY 约束\SQL FOREIGN KEY 约束\SQL CHECK 约束

    SQL PRIMARY KEY 约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录. 主键必须包含唯一的值. 主键列不能包含 NULL 值. 每个表都应该有一个主键,并且每个表只能有一个主 ...

  2. SQL CREATE TABLE 语句\SQL 约束 (Constraints)\SQL NOT NULL 约束\SQL UNIQUE 约束

    CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表. SQL CREATE TABLE 语法 CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据 ...

  3. 扩展Exception,增加判断Exception是否为SQL引用约束异常方法!

    在设计数据表时,如果将某些列设置为关联其它表的外键,那么如果对其进行增加.修改操作时,其关联表若没有相匹配的记录则报错,或者在对其关联表进行删除时,也会报错,这就是外键约束的作用,当然除了外键还有许多 ...

  4. 基础篇 - SQL 的约束

    基础篇 - SQL 的约束       约束 一.实验简介 约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性.唯一性.本节实验将在实践操作中熟悉 MySQL 中的几种约束. 二 ...

  5. SQL CHECK 约束

    SQL CHECK 约束 CHECK 约束用于限制列中的值的范围. 如果对单个列定义 CHECK 约束,那么该列只允许特定的值. 如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限 ...

  6. SQL UNIQUE 约束

    SQL UNIQUE 约束 UNIQUE 约束唯一标识数据库表中的每条记录. UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证. PRIMARY KEY 拥有自动定义的 ...

  7. SQL数据库约束、默认和规则

    数据的完整性 实体完整性 又称为行完整性,即数据库中的所有行都具有一个非空且没有重复的主键值 MSSQL中通过唯一索引.PRIMARY KEY约束.UNIQUE约束.INDENTITY属性等来强制主键 ...

  8. SQL Server - 约束 CONSTRAINT

    总结 约束放置在表中,以下五种约束: NOT NULL 非空约束C 指定的列不允许为空值 UNIQUE 唯一约束U 指定的列中没有重复值,或该表中每一个值或者每一组值都将是唯一的 PRIMARY KE ...

  9. MySQL笔记(五)MySQL 角色与SQL CHECK约束

    MySQL ROLE MySQL 8.0 Reference Manual  /  Security  /  MySQL User Account Management  /  Using Roles ...

  10. Sql Server约束的学习二(检查约束、默认约束、禁用约束)

    接上一篇的Sql Server约束学习一(主键约束.外键约束.唯一约束) 4.检查约束 1)检查约束的定义 检查约束可以和一个列关联,也可以和一个表关联,因为它们可以检查一个列的值相对于另一个列的值, ...

随机推荐

  1. element-ui中cascader同时获取label和value值

    关于elementUI中cascader选中值后,能获取value或者label,但不能同时获value和label,这一问题,琢磨出了这么个办法.以新增和编辑城市为例,type: 1 编辑,type ...

  2. 求x>0时,y=x^3-6x^2+15的极值

    解: 当x→∞时,y也→∞,所以y没有最大值. y=x3-6x2+15=-4*(x/2)*(x/2)*(6-x)+15 而根据几何平均数小于等于算术平均数的定理,(x/2)*(x/2)*(6-x)在x ...

  3. nmcli的基本使用

    介绍NetworkManager.centos8.nmcli CentOS 7中同时支持network.service和NetworkManager.service(简称NM)2种方式配置网络,而在C ...

  4. Codeforces Round #460 (Div. 2)-A Supermaket(贪心)

    A. Supermarket time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  5. oracle如何实现去重和分页

    一:oracle实现去重: user数据表: 分两步:1.查询重复数据  2.删除重复数据 1.查询重复数据:在oracle中实现查询重复数据,可以借助于rowid这个伪列.oracle中每个表物理上 ...

  6. 不需要爬虫也能轻松获取 unsplash 上的图片

    我经常会使用 unsplash, 这里面的图片非常清爽,我的大多数文章的图片都是在这个网上找的,虽然也有同类型网站,但是用过一段时间以后基本都放弃了,图片质量参差不齐,筛选过程太费劲. 但是 unsp ...

  7. train loss与test loss结果分析/loss不下降

    train loss与test loss结果分析 train loss 不断下降,test loss不断下降,说明网络仍在学习; train loss 不断下降,test loss趋于不变,说明网络过 ...

  8. 如何构建一个arm64 AArch64的Ubuntu rootfs

    文章目录 1 下载文件创建rootfs文件夹 2 安装qemu-user-static搭建arm64模拟环境 3 chroot 到 模拟arm64的文件系统下 4 安装基础的软件包 5 系统基础的修改 ...

  9. flink源码阅读

    Flink面试--源码篇 1.Flink Job的提交流程? 2.Flink所谓"三层图"结构是哪几个"图"? 3.JobManger在集群中扮演了什么角色? ...

  10. Docker容器映射到宿主机只有tcp6没有tcp问题

    问题描述: Docker容器映射到宿主机后,查询端口连接只有tcp6没有tcp,通过ipv4地址连接时无法连接成功. 处理方法: 1.检查是否开启ipv4端口转发 sysctl net.ipv4.ip ...