第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

SQL Check

1. 定義

慕課解釋:Check約束用于限制字段值的范圍;Check既可以定義在單個(gè)字段上,也可以在定義在表上對(duì)特定字段進(jìn)行約束。

2. 前言

本小節(jié),我們將一起學(xué)習(xí)SQL Check

前面的小節(jié)中,我們談到了諸多數(shù)據(jù)類型和約束;如果說數(shù)據(jù)類型是對(duì)數(shù)據(jù)的第一層約束,那么Check便是數(shù)據(jù)的第二層約束,Check 可以在數(shù)據(jù)庫層面上篩選掉不符合約束的數(shù)據(jù)。

3. 創(chuàng)建時(shí)約束

Check 可以直接在創(chuàng)建數(shù)據(jù)表時(shí)給字段加上約束。

3.1 例1 字段上約束

請書寫 SQL 語句,新建imooc_user表,共有 id,username,age 三個(gè)字段,且為 age 字段添加上 Check 約束,規(guī)定所有 age 必須大于0。

分析:

使用 Create 指令新建數(shù)據(jù)表,并通過 Check 給 age 加上>0的約束。

語句:

整理可得語句如下:

CREATE TABLE imooc_user
(
  id int PRIMARY KEY,
  username varchar(20),
  age int CHECK(age > 0)
);

創(chuàng)建成功后,若插入的數(shù)據(jù)不滿足條件,插入會(huì)失敗,如下:

insert into imooc_user values(2,'pedro',0);
(3819, "Check constraint 'imooc_user_chk_1' is violated.")

3.2 例2 數(shù)據(jù)表上約束

Check 不僅可以作用在字段上,還可以直接在數(shù)據(jù)表上。

請書寫 SQL 語句,新建imooc_user表,共有 id,username,age 三個(gè)字段,且為 age 字段添加上 Check 約束,規(guī)定所有 age 必須大于0小于1000

分析:

同例1。

語句:

整理可得語句如下:

CREATE TABLE imooc_user
(
  id int PRIMARY KEY,
  username varchar(20),
  age int,
  CHECK(age > 0 AND age < 1000)
);

4. Alter 時(shí)更改約束

數(shù)據(jù)表還可以在修改時(shí)添加Check約束或者刪除約束。

4.1 例3 Alter 添加約束

請書寫SQL語句,為imooc_user表的 username 字段添加上 Check 約束,規(guī)定 username 只能為peter。

分析:

使用 Alter 指令修改 imooc_user 表,并為 username 字段添加上約束。

語句:

整理可得語句如下:

ALTER TABLE imooc_user ADD CONSTRAINT username_constraint CHECK(username='peter');

4.2 例4 Alter 刪除約束

請書寫 SQL 語句,刪除imooc_user表的 username 字段約束。

分析:

使用 Alter 指令修改 imooc_user 表,刪除掉 username 字段上的約束。

語句:

(MySQL下)整理可得語句如下:

ALTER TABLE imooc_user DROP CHECK username_constraint;

如果是 PostgreSQL 會(huì)有些許不同,語句如下:

ALTER TABLE imooc_user DROP CONSTRAINT username_constraint;

5. 小結(jié)

  • Check 雖然可以約束字段,但是會(huì)影響數(shù)據(jù)插入和更新的速度,降低數(shù)據(jù)庫性能,因此一般都不推薦使用 Check。