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;
相關文章
相關標籤/搜索