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. Boostrap Table学习笔记

    最近要对项目上的table进行调整,让表格能够支持更多的操作,于是接触到了boostrapTable这个插件.研究了一天,记录下学习的内容. Boostrap Table可以支持表的分页及动态显示表的 ...

  2. 自定义Bootstrap样式弹出框

    最近做的一些功能需要用到Bootstrap,然而原来的系统并没有引入Bootstrap,为了新写的控件能够应用于老的页面,又不需要在老的页面上引入全套的Bootstrap文件决定写一个模仿Bootst ...

  3. 字符串后面空字符的问题(char*与string的转换)

    今天AC了不少题,困扰已久的Time limit error 也解决了,记住下次用STL容器的时候一定要清空容器. 其次是字符数组与字符串的浅谈. 字符数组是以'\0'结尾的,所以在字符数组赋值给字符 ...

  4. FTP服务器项目的一些整理

    几个月前按照网上的教程写了一个FTP的服务器,现在回头整理一下里面的一些知识. FTP简介 FTP是文件传输协议(File Transfer Protocol),工作在TCP/IP协议族的应用层,其传 ...

  5. HBase Filter 过滤器之RowFilter详解

    前言:本文详细介绍了HBase RowFilter过滤器Java&Shell API的使用,并贴出了相关示例代码以供参考.RowFilter 基于行键进行过滤,在工作中涉及到需要通过HBase ...

  6. MySQL 8.0.20 源码安装数据库软件

    官方支持的平台: https://www.mysql.com/support/supportedplatforms/database.html

  7. JS 究竟是先有鸡还是有蛋,Object与Function究竟谁出现的更早,Function算不算Function的实例等问题杂谈

    壹 ❀ 引 我在JS 疫情宅在家,学习不能停,七千字长文助你彻底弄懂原型与原型链一文中介绍了JavaScript原型与原型链,以及衍生的__proto__.constructor等一系列属性.在解答了 ...

  8. STL下<algorithm>下的sort函数

    定义: sort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序.sort函数进行排序的时间复杂度为nlog2n,比冒泡之类的排序算法效率要高,sort函数包含在头文件为#i ...

  9. Android自定义顶部栏及侧滑菜单和fragment+viewpag滑动切换的实现

    嘿嘿嘿,关于android滑动的操作,是不是经常都会用到呢. 我肯定也要学习一下啦. https://blog.csdn.net/u013184970/article/details/82882107 ...

  10. HMM-前向后向算法(附python实现)

    基本要素 状态 \(N\)个 状态序列 \(S = s_1,s_2,...\) 观测序列 \(O=O_1,O_2,...\) \(\lambda(A,B,\pi)\) 状态转移概率 \(A = \{a ...