文档章节

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
ORA-02270: 此列列表的唯一关键字或主键不匹配一些思路

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

长路慢
01/03
0
0
sql 高级 (四)(SQL 约束 (Constraints))

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

萧小蚁
2015/08/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jquery通过id显示隐藏

var $div3 = $('#div3'); 显示 $div3.show(); 隐藏 $div3.hide();

yan_liu
51分钟前
1
0
《乱世佳人》读书笔记及相关感悟3900字

《乱世佳人》读书笔记及相关感悟3900字: 之前一直听「荔枝」,后来不知怎的转向了「喜马拉雅」,一听就是三年。上班的时候听房产,买房了以后听装修,兴之所至时听旅行,分手后听亲密关系,...

原创小博客
54分钟前
1
0
大数据教程(9.6)map端join实现

上一篇文章讲了mapreduce配合实现join,本节博主将讲述在map端的join实现; 一、需求 实现两个“表”的join操作,其中一个表数据量小,一个表很大,这种场景在实际中非常常见,比如“订单日志...

em_aaron
今天
1
0
cookie与session详解

session与cookie是什么? session与cookie属于一种会话控制技术.常用在身份识别,登录验证,数据传输等.举个例子,就像我们去超市买东西结账的时候,我们要拿出我们的会员卡才会获取优惠.这时...

士兵7
今天
1
0
十万个为什么之为什么大家都说dubbo

Dubbo是什么? 使用背景 dubbo为什么这么流行, 为什么大家都这么喜欢用dubbo; 通过了解分布式开发了解到, 为适应访问量暴增,业务拆分后, 子应用部署在多台服务器上,而多台服务器通过可以通过d...

尾生
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部