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)检查约束的定义 检查约束可以和一个列关联,也可以和一个表关联,因为它们可以检查一个列的值相对于另一个列的值, ...
随机推荐
- 【Leetcode】104. 二叉树的最大深度
题目 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例:给定二叉树 [3,9,20,null,null,15,7 ...
- Jenkins+Jmeter+Ant 生成测试报告
<?xml version="1.0" encoding="UTF-8"?> <project name="wms_test&quo ...
- DNS 处理模块 dnspython
简介: dnspython (http://www.dnspython.org/)是Python实现一个DNS的工具包,支持所有的记录类型,可以用于查询.传输并动态更新ZONE信息. 安装 wget ...
- java权限设计思考
1.粗粒度权限设计与细粒度权限设计 粗粒度(Coarse-graind) 表示类别级,即仅考虑对象的类别(the type of object),不考 ...
- Uncaught DOMException: Failed to set the 'value' property on 'HTMLInputElement': This input element accepts a filename, which may only be programmatically set to the empty string.
今天上传图片遇到这个报错 百度了下,网上说是input标签type=file所以导致的问题,可是我的type=hidden 解决办法: 把上面的代码改成如下问题就解决了
- Python+Typora博客图片上传
简介 用Typora 写Markdown 1年多了,这个编辑器的确很好用,但就是写完博客复制到博客园时要一个个手动插替换图片非常麻烦.后来发现最新版的Typora 已经支持图片上传功能,在 设置-图像 ...
- SpringBoot:静态资源映射、定制404、配置icon
目录 静态资源映射规则 定制首页 定制错误页面 配置 icon 静态资源映射规则.定制首页.定制404页面.配置网站的图标 静态资源映射规则 SpringBoot中对于静态资源(css,js,img. ...
- Zabbix 添加vmware esxi监控
1) Import the provided template. - TEMPLATE.VMWARE_ESXi_6.0_CIM.xml 2) Install Dependencies: # yum - ...
- IO 模型知多少 | 代码篇
引言 之前的一篇介绍IO 模型的文章IO 模型知多少 | 理论篇 比较偏理论,很多同学反应不是很好理解.这一篇咱们换一个角度,从代码角度来分析一下. socket 编程基础 开始之前,我们先来梳理一下 ...
- html之常用input type
单选框,用name区分是否为一组,value表示提交时的值,checked表示被勾选 <input type="radio" name="sex" val ...