文档章节

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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

day60-20180818-流利阅读笔记-待学习

钉钉:工作的归工作,生活的…也归工作? 毛西 2018-08-18 1.今日导读 你用过“钉钉”么?被公司要求使用钉钉的感受是如何的呢?这款阿里巴巴旗下的移动办公社交平台在弯道超车微信、为许多企...

aibinxiao
46分钟前
6
0
Kubernetes的HTTPS和证书问题,汇总

通过Kubernetes建立服务网站,需要干的事情和HTTPS和证书问题,汇总如下: 建立Nginx服务器 搞服务器第一步,Ubuntu 18.04设置静态IP 安装Nginx服务。 Kubernetes的deployment使用 创建服务,...

openthings
今天
2
0
php 使用redis锁限制并发访问类

1.并发访问限制问题 对于一些需要限制同一个用户并发访问的场景,如果用户并发请求多次,而服务器处理没有加锁限制,用户则可以多次请求成功。 例如换领优惠券,如果用户同一时间并发提交换领...

豆花饭烧土豆
今天
0
0
Linux环境搭建 | 手把手教你配置Linux虚拟机

在上一节 「手把你教你安装Linux虚拟机」 里,我们已经安装好了Linux虚拟机,在这一节里,我们将配置安装好的Linux虚拟机,使其达到可以开发的程度。 Ubuntu刚安装完毕之后,还无法进行开发,...

良许Linux
今天
0
0
(三)Nginx配置·续

概述 前文写了关于Nginx环境配置,但是还没有完,接下来将会继续讲三个相关的配置 主要是以下三个 1.Nginx访问日志 2.Nginx日志切割 3.静态文件不记录日志和过期时间 Nginx访问日志 1.先看看...

杉下
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部