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)检查约束的定义 检查约束可以和一个列关联,也可以和一个表关联,因为它们可以检查一个列的值相对于另一个列的值, ...
随机推荐
- 命令替换、权限、chmod、特殊权限
命令替换 把字符串里面的命令先执行再把该字符串输出,与PHP的""里面的变量被执行一样. $(COMMAND) `COMMAND` [root@jiakang ~]# echo & ...
- 如何在mysql中实现自然排序
背景 熟悉mysql的同学应该清楚,mysql在对字符串做order by排序时是按照字典序进行排序的,但是如果字符串中包含数字的话(我们称这种类型的字符串为alphanumeric),仅按照字典序的 ...
- CultureInfo 类中需要的【区域性名称】查询
2019独角兽企业重金招聘Python工程师标准>>> 提供有关特定区域性的信息(对于非托管代码开发,则称为"区域设置"). 这些信息包括区域性的名称.书写系统. ...
- Oliver Twist
对于济贫院那些绅士们而言,贫民好吃懒做.贪得无厌.他们消耗的食物即是对教区最大的威胁. 绅士们的利益得不到满足时,孤儿们只能被驱之而后快,甚至被"加价出售". 然而,眼泪这种东西根 ...
- python selenium(用例断言)
1.if ...else ...判断进行断言 from time import * from selenium import webdriver "): driver = webdriver ...
- predixy源码学习--开篇
最近开始研究predixy.predixy是一款高性能全功能redis代理 ,网上有的文章大部分都是功能上的介绍,很少有源码相关的分享. predixy的相关介绍在github: https://gi ...
- python基础入门教程(一条龙服务)
一.语言基础 01-1 计算机系统 解释器下载 变量 小整数池 01-2 垃圾回收机制 02 数据类型 运算符(解压赋值等) 03 流程控制 if while for 04 整形 字符串 列表 0 ...
- 洛谷P5018 对称二叉树
不多扯题目 直接题解= = 1.递归 由题目可以得知,子树既可以是根节点和叶节点组成,也可以是一个节点,题意中的对称二叉子树是必须由一个根节点一直到树的最底部所组成的树. 这样一来就简单了,我们很容易 ...
- POJ3734(矩阵快速幂)
\(假设现在到第i个积木\) \(红绿恰都是偶数a种方案,恰都是奇数为b种方案,一奇一偶为c种方案\) \(由此考虑i+1个积木的情况\) Ⅰ.一奇一偶的方案 \(如果第i层恰是奇数的情况,那么本次只 ...
- H - Food HDU - 4292 网络流
题目 You, a part-time dining service worker in your college’s dining hall, are now confused with a n ...