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)检查约束的定义 检查约束可以和一个列关联,也可以和一个表关联,因为它们可以检查一个列的值相对于另一个列的值, ...
随机推荐
- Windows 10 MSDN官方原版ISO镜像(简体中文)下载
http://www.heu8.com/2800.html 硬件要求如下:处理器:1 GHz 或更快的处理器或 SoC RAM:1 GB(32 位)或 2 GB(64 位) 硬盘空间:16 GB(32 ...
- 我想solo自己一个人!
区域赛之后你就该走了,现在你告诉我,没精力不打了,我真谢谢你! 今年就TM的没有一点舒心的地方! 父母分居, 队友出走, 队伍解散, 白天家里两个外甥很吵, 鼻窦炎复发, 喜欢的妹子也追不到, 整夜失 ...
- RF(用例执行方法)
一.执行 RF 脚本方法 1.执行整个项目下的所有用例 dos 窗口下输入 robot + 项目绝对路径 2.执行单个 Suite 中的所有用例 dos 窗口下输入 robot + 用例套件绝对路径 ...
- 使用C++STL的map容器实现一种命令映射
因为最近在练习写一个ftp的服务器,其中的命令有很多种,每个命令对应一个执行函数,能够想到的最简单的实现方式便是使用if--else匹配命令和执行对应的函数,如下所示: if(strcmp(" ...
- VUE生命周期中的钩子函数及父子组件的执行顺序
先附一张官网上的vue实例的生命周期图,每个Vue实例在被创建的时候都需要经过一系列的初始化过程,例如需要设置数据监听,编译模板,将实例挂载到DOM并在数据变化时更新DOM等.同时在这个过程中也会运行 ...
- 时间日期相关类:Date类,DateFormat类&SimpleDateFormat类,Calendar类
日期相关类 1.Date类:日期时间类 A.构造方法 Date(): 根据当前系统时间创建日期对象 Date(Long time):根据传入的毫秒值时间创建日期对象 B.成员方法 Long get ...
- 剑指offer--(根据前序遍历和中序遍历)重建二叉树
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...
- jQuery中val() text()和html()的区别
2020年4月21日 16:48:11 jQuery 学习 html() 它可以设置和获取起始标签和结束标签中的内容. 跟 dom 属性 innerHTML 一样.text() 它可以设置和获取起始标 ...
- 图形学_Bezier曲线
Bezier曲线由n个控制点生成,举个例子:当n=2时,点$P_0$.$P_1$之间遵从计算: $P_0=(1-t)P_0+tP_1$ 而推广为n维时,有: $P^n_0=(1-t)P^{n-1}_0 ...
- 基于胜率矩阵的PageRank排序
在做博弈模型评估的时候,遇到一个问题是如何评价多个模型的优劣.例如我有训练好的三个围棋模型A,B,C,两两之间对打之后有一个胜负关系,如何对这三个模型进行排序呢?通常对于人类选手这种水平有波动的情 ...