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. 记一次Pinpoint监控工具部署过程

    环境:Centos 7.4 X64IP:192.168.1.11 1.配置环境,先安装jdk 到Oracle官网下载安装JDK https://www.oracle.com/technetwork/j ...

  2. java中文乱码解决之道(七)—–JSP页面编码过程

    我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的.在JSP转换为servlet过程中下面一段代码起到至关重要的作用. <%@ page language=" ...

  3. 监控之--Nagios如何监控本地主机及本地服务

    上一节内容介绍了Nagios监控服务在linux环境下的安装过程,本节内容将详细介绍如何使用已经安装的Nagios服务的一些配置文件的使用以及如何监控本地相关服务,如要完成对一台主机的监控Nagios ...

  4. 题目分享E 二代目

    题意:一棵点数为n的树,每个节点有点权,要求在树中中找到一个最小的x,使得存在一个点满足max(该点点权,该点相邻的点的点权+1,其他点的点权+2)=x 分析:首先要能把题目转化为上述题意 首先题目让 ...

  5. 【网络基础】ARP地址解析协议

    ARP(Address Rssolution Protocol) 地址解析协议 用于将IP地址解析为MAC地址. MAC地址是设备的物理地址,是被分配给每一个网络接口卡的全球唯一序号. 全球唯一:理论 ...

  6. RocketMQ-架构篇

    RocketMQ-架构篇 1.Broker Broker是RocketMQ的服务端组件之一,所有消息存储在Broker上,所有的投递.消费请求也都由Broker进行处理.Broker是有状态的应用,本 ...

  7. redis关闭报没有权限No auth

    Redis安装之后,如果设置了密码,需要在关闭服务的时候也提供密码,否则无法关闭服务,可以直接通过修改/etc/init.d/redis启动脚本解决. Redis服务的启动和关闭脚本,只需要在关闭的脚 ...

  8. ASP.NET Core MVC 如何获取请求的参数

    一次HTTP请求,就是一次标准IO操作.请求是I,是输入:响应式O,是输出.任何web开发框架,其实都是在干这两件事: 接受请求并进行解析获取参数 根据参数进行渲染并输出响应内容 所以我们学习一个框架 ...

  9. A. Powered Addition(二进制性质-思维)

    \(拿样例来看1 7 6 5\) \(6成长到7是最合理的,因为1s就可以实现而且对于后面来说最优\) \(5成长到7是最合理的,因为2s就可以实现而且对于后面最优\) \(发现了什么?二进制是可以组 ...

  10. Spring官网阅读(七)容器的扩展点(二)FactoryBean

    在上篇文章中我们已经对容器的第一个扩展点(BeanFactoryPostProcessor)做了一系列的介绍.其中主要介绍了Spring容器中BeanFactoryPostProcessor的执行流程 ...