文档章节

SQL约束 CONSTRAINT

e
 enosh
发布于 2015/06/02 16:36
字数 813
阅读 10
收藏 0

       约束用于限制插入或则跟新数据表的数据的类型。也就是在表的数据跟新的时候数据库会验证更改或则插入的数据类型是否符合约束条件。可以在创建表的时候增加约束,也可以在创建表之后增加约束。

1.创建表的时候加入约束

第一种方式:
如加入not null约束,即id不能为空,如果为空数据库会拒绝执行插入或则更新。

CREATE TABLE hr.employee
(
  id character varying(40) NOT NULL,
  active character(1)
)

第二种方式:

CREATE TABLE hr.employee
(
  id character varying(40),
  active character(1),
  CONSTRAINT id Not Null 
)

2.创建表之后加入约束

CREATE TABLE hr.employee
(
  id character varying(40),
  active character(1),
)
ADD CONSTRAINT id_active_unique UNIQUE (id,active)

这样employee表中,id和active联合起来必须是唯一的。

3.删除约束

CREATE TABLE hr.employee
(
  id character varying(40),
  active character(1),
  role character varying(40)
  CONSTRAINT role_foreign_key FOREIGN KEY (role)
      REFERENCES hr.role(id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)  

alter table hr.employee
drop CONSTRAINT role_foreign_key:

4.重要的几个约束

Not Null : 列不能为空的约束
UNIQUE : 确保一个表中唯一性的约束,可以是一列,也可以是多列联合起来是唯一的。

CREATE TABLE hr.employee
(
  id character varying(40),
  active character(1),
  CONSTRAINT id_unique UNIQUE(id)
)
或者
CREATE TABLE hr.employee
(
  id character varying(40),
  active character(1),
  user character varying(40),
  CONSTRAINT id_unique UNIQUE (id, user)
)

PRIMARY KEY : 唯一标示约束,可以用在单个列上,也可以多个列联合成为主键.

CREATE TABLE hr.employee
(
  id character varying(40) PRIMARY KEY,
  active character(1),
  user character varying(40)
)


CREATE TABLE hr.employee
(
  id character varying(40),
  active character(1),
  user character varying(40),
  CONSTRAINT id_user_primary_key PRIMARY KEY (id, user)
)

UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。PRIMARY KEY 拥有自动定义的 UNIQUE 约束。每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。

FOREIGN KEY : 用来约束列必须指向另一个表的PRIMARY KEY, FOREIGN KEY 约束用于预防破坏表之间连接的动作。FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

CREATE TABLE hr.employee
(
  id character varying(40),
  active character(1),
  user character varying(40),
  CONSTRAINT id_user_primary_key PRIMARY KEY (id, user),
  CONSTRAINT user_foreign_key FOREIGN KEY (user)
      REFERENCES hr.user(id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)
CHECK : 约束用于限制列中的值的范围, 可以用来限制一个列中值的范围,也可以联合几个列限制范围。
CREATE TABLE hr.employee
(
  id character varying(40) PRIMARY KEY,
  active character(1),
  user character varying(40),
  age integer,
  year integer,
  CONSTRAINT age_check CHECK(age > 18)
)
CREATE TABLE hr.employee
(
  id character varying(40) PRIMARY KEY,
  active character(1),
  user character varying(40),
  age integer,
  year integer,
  CONSTRAINT age_check CHECK(age > 18 and year > 2015)
)
DEFAULT : 用于向列中插入默认值
CREATE TABLE hr.employee
(
  id character varying(40) PRIMARY KEY,
  active character(1),
  user character varying(40),
  age integer DEFAULT 18,
  year integer DEFAULT 2015
)

添加默认约束

ALTER TABLE hr.employee
ALTER COLUMN age SET DEFAULT '18';


删除默认约束

ALTER TABLE hr.emoloyee
ALTER COLUMN age DROP DEFAULT;

© 著作权归作者所有

共有 人打赏支持
e
粉丝 7
博文 75
码字总数 19035
作品 0
大连
Oracle 约束详解

一 约束的定义 约束是强加在表上的规则或条件。确保数据库满足业务规则。保证数据的完整性。当对表进行DML或DDL操作时,如果此操作会造成表中的数据违反约束条件或规则的话,系统就会拒绝执行...

whshurk
01/03
0
0
1Z0-051-DDL-表的约束

表的约束 表约束是数据库能够实施业务规则以及保证数据遵循实体-关系模型的一种手段。如果 DML违法了约束,则将自动回滚整个语句。 1.1 约束类型 (1)UNIQUE 约束 注:对于具有UNIQUE约束的...

pcghans
2016/06/29
0
0
维护数据完整性

1、数据完整性规则:域完整性(Domain 栏位列)、实体完整性(Entity 实体行)、参照完整性(Reference) 数据完整性三种方式:a.使用应用代码;b.触发器trigger通过一段代码(过程)满足某个...

spider1983
2014/04/17
0
0
sql 高级 (四)(SQL 约束 (Constraints))

SQL 约束 NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK DEFAULT UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。 区别:每个表可以有多个 UNIQUE 约束,但是每个表只能有一...

萧小蚁
2015/08/04
0
0
ORA-02270: 此列列表的唯一关键字或主键不匹配一些思路

查看两个表的结构 SQL> describe student; Name Type Nullable Default Comments ------------ ------------ -------- ------- -------- ID NUMBER(10) TEACHER_ID NUMBER(10) Y STUDENT_NAM......

长路慢
01/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

申请Let's Encrypt永久免费SSL证书

环境安装 1、安装git yum install git-core 2、安装python 系统自带 不用安装 只要版本大于2.7即可。 获取Let's Encrypt免费SSL证书 先停止nginx 在阿里云安全组里加入 443端口的入规则 git ...

HGMrWang
30分钟前
1
0
如何使用playframework进行更好的开发

1: 自定义基类Controller 相信刚开始使用Play的人写的Controller 都继承于 play.mvc.Controller , 但这并不是一个很好的选择,自建基类Controller可以扩展更多的功能。 1.1 验证功能。 后台...

tuerqidi
35分钟前
4
0
解决ubuntu下root用户 不能ftp登陆的问题

解决ubuntu下root用户 不能ftp登陆的问题 一般情况下,由于种种原因ftp是不让root用户远程登陆,但只要你修改以个文件就可以登陆了. 注释掉 /etc/ftpusers 中的root即可 (最后重启vsftpd serv...

15834278076
46分钟前
0
0
《JavaScript高级程序设计(第3版)》阅读笔记

第6章 面向对象的程序设计 6.2 创建对象 6.2.1 工厂模式 JavaScript创建对象(一)—— 工厂模式 6.2.2 构造函数模式 JavaScript创建对象(二)——构造函数模式 6.2.3 原型模式 JavaScript...

Bob2100
51分钟前
1
0
Windows小技巧 – Win+R提高Windows使用效率

追求效率的朋友都需要一款顺手的快速启动工具,Win 平台上有键盘流的RunZ、Listary、ALTRun、Launchy、Wox 和图标流的 Fences、Rolan、 WinLaunch 等,而 Mac 上也有 Alfred、Spotlight。 而...

QQZZFT
54分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部