SQL约束 CONSTRAINT

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

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

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

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

第二种方式: spa

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联合起来必须是惟一的。 code

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 : 确保一个表中惟一性的约束,能够是一列,也能够是多列联合起来是惟一的。 table

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 : 惟一标示约束,能够用在单个列上,也能够多个列联合成为主键. class

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 约束也能防止非法数据插入外键列,由于它必须是它指向的那个表中的值之一。 im

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';


删除默认约束 tab

ALTER TABLE hr.emoloyee
ALTER COLUMN age DROP DEFAULT;
相关文章
相关标签/搜索