博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL约束 CONSTRAINT
阅读量:6240 次
发布时间:2019-06-22

本文共 2799 字,大约阅读时间需要 9 分钟。

hot3.png

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

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.employeedrop 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.employeeALTER COLUMN age SET DEFAULT '18';

删除默认约束

ALTER TABLE hr.emoloyeeALTER COLUMN age DROP DEFAULT;

转载于:https://my.oschina.net/u/1583086/blog/423916

你可能感兴趣的文章
剑指offer——面试题26:判断二叉树B是否为二叉树A的子结构
查看>>
scrapy主动退出爬虫的代码片段
查看>>
ny12 喷水装置(二)
查看>>
C\C++语言细节(2)
查看>>
Jenkins持续部署-自动生成版本号
查看>>
设计模式--代理模式
查看>>
javascript基础知识--最基础的
查看>>
[转] vue自定义组件(通过Vue.use()来使用)即install的使用
查看>>
[转] 函数声明和函数表达式——函数声明的声明提前
查看>>
敢死队2影评
查看>>
浅析 JavaScript 中的 apply 和 call 用法的差异
查看>>
html5-css综合练习
查看>>
嵌入式开发之cgic库---cgi库的使用
查看>>
clickhouse安装 Requires: libstdc++.so.6(GLIBCXX_3.4.19)(64bit)
查看>>
FFT快速傅立叶变换
查看>>
<刘未鹏 MIND HACKS>读书笔记
查看>>
locate
查看>>
AceyOffice教程--如何判断单元格的内容
查看>>
前端 -- 超链接导航栏案例
查看>>
软工网络15个人作业
查看>>