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
SQL——SQL约束的更多相关文章
- SQL PRIMARY KEY 约束\SQL FOREIGN KEY 约束\SQL CHECK 约束
SQL PRIMARY KEY 约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录. 主键必须包含唯一的值. 主键列不能包含 NULL 值. 每个表都应该有一个主键,并且每个表只能有一个主 ...
- SQL CREATE TABLE 语句\SQL 约束 (Constraints)\SQL NOT NULL 约束\SQL UNIQUE 约束
CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表. SQL CREATE TABLE 语法 CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据 ...
- 扩展Exception,增加判断Exception是否为SQL引用约束异常方法!
在设计数据表时,如果将某些列设置为关联其它表的外键,那么如果对其进行增加.修改操作时,其关联表若没有相匹配的记录则报错,或者在对其关联表进行删除时,也会报错,这就是外键约束的作用,当然除了外键还有许多 ...
- 基础篇 - SQL 的约束
基础篇 - SQL 的约束 约束 一.实验简介 约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性.唯一性.本节实验将在实践操作中熟悉 MySQL 中的几种约束. 二 ...
- SQL CHECK 约束
SQL CHECK 约束 CHECK 约束用于限制列中的值的范围. 如果对单个列定义 CHECK 约束,那么该列只允许特定的值. 如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限 ...
- SQL UNIQUE 约束
SQL UNIQUE 约束 UNIQUE 约束唯一标识数据库表中的每条记录. UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证. PRIMARY KEY 拥有自动定义的 ...
- SQL数据库约束、默认和规则
数据的完整性 实体完整性 又称为行完整性,即数据库中的所有行都具有一个非空且没有重复的主键值 MSSQL中通过唯一索引.PRIMARY KEY约束.UNIQUE约束.INDENTITY属性等来强制主键 ...
- SQL Server - 约束 CONSTRAINT
总结 约束放置在表中,以下五种约束: NOT NULL 非空约束C 指定的列不允许为空值 UNIQUE 唯一约束U 指定的列中没有重复值,或该表中每一个值或者每一组值都将是唯一的 PRIMARY KE ...
- MySQL笔记(五)MySQL 角色与SQL CHECK约束
MySQL ROLE MySQL 8.0 Reference Manual / Security / MySQL User Account Management / Using Roles ...
- Sql Server约束的学习二(检查约束、默认约束、禁用约束)
接上一篇的Sql Server约束学习一(主键约束.外键约束.唯一约束) 4.检查约束 1)检查约束的定义 检查约束可以和一个列关联,也可以和一个表关联,因为它们可以检查一个列的值相对于另一个列的值, ...
随机推荐
- Boostrap Table学习笔记
最近要对项目上的table进行调整,让表格能够支持更多的操作,于是接触到了boostrapTable这个插件.研究了一天,记录下学习的内容. Boostrap Table可以支持表的分页及动态显示表的 ...
- 自定义Bootstrap样式弹出框
最近做的一些功能需要用到Bootstrap,然而原来的系统并没有引入Bootstrap,为了新写的控件能够应用于老的页面,又不需要在老的页面上引入全套的Bootstrap文件决定写一个模仿Bootst ...
- 字符串后面空字符的问题(char*与string的转换)
今天AC了不少题,困扰已久的Time limit error 也解决了,记住下次用STL容器的时候一定要清空容器. 其次是字符数组与字符串的浅谈. 字符数组是以'\0'结尾的,所以在字符数组赋值给字符 ...
- FTP服务器项目的一些整理
几个月前按照网上的教程写了一个FTP的服务器,现在回头整理一下里面的一些知识. FTP简介 FTP是文件传输协议(File Transfer Protocol),工作在TCP/IP协议族的应用层,其传 ...
- HBase Filter 过滤器之RowFilter详解
前言:本文详细介绍了HBase RowFilter过滤器Java&Shell API的使用,并贴出了相关示例代码以供参考.RowFilter 基于行键进行过滤,在工作中涉及到需要通过HBase ...
- MySQL 8.0.20 源码安装数据库软件
官方支持的平台: https://www.mysql.com/support/supportedplatforms/database.html
- JS 究竟是先有鸡还是有蛋,Object与Function究竟谁出现的更早,Function算不算Function的实例等问题杂谈
壹 ❀ 引 我在JS 疫情宅在家,学习不能停,七千字长文助你彻底弄懂原型与原型链一文中介绍了JavaScript原型与原型链,以及衍生的__proto__.constructor等一系列属性.在解答了 ...
- STL下<algorithm>下的sort函数
定义: sort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序.sort函数进行排序的时间复杂度为nlog2n,比冒泡之类的排序算法效率要高,sort函数包含在头文件为#i ...
- Android自定义顶部栏及侧滑菜单和fragment+viewpag滑动切换的实现
嘿嘿嘿,关于android滑动的操作,是不是经常都会用到呢. 我肯定也要学习一下啦. https://blog.csdn.net/u013184970/article/details/82882107 ...
- HMM-前向后向算法(附python实现)
基本要素 状态 \(N\)个 状态序列 \(S = s_1,s_2,...\) 观测序列 \(O=O_1,O_2,...\) \(\lambda(A,B,\pi)\) 状态转移概率 \(A = \{a ...