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

SQL Create 2

1. 前言

上一節(jié)中,我們一起學(xué)習(xí)了 SQL Create 和數(shù)據(jù)類型,本小節(jié)將站在SQL約束的角度上進一步的探討 Create 。

2. SQL 約束(Constraints)

SQL 約束用于在新建或修改數(shù)據(jù)表時,給數(shù)據(jù)表或數(shù)據(jù)表中的字段加上約束條件。

當(dāng)然,你也可以把約束理解為修飾,如 PRIMARY KEY 可以修飾字段為主鍵,也可以約束該字段非空。

常見的約束有如下幾種:

約束 作用
NOT NULL 字段非空
DEFAULT 字段默認值
UNIQUE 字段唯一
PRIMARY KEY 主鍵
FOREIGN KEY 外鍵
CHECK 校驗字段

在本小節(jié)中,我們將主要介紹 NOT NULL,DEFAULT,UNIQUE,PRIMARY KEY 這些約束的用法,F(xiàn)OREIGN KEY 會在 SQL Primary Key & Foreign Key 小節(jié)詳細介紹,而 CHECK 將在 SQL Check 一節(jié)中詳細探討。

3. 語法

SQL 約束的使用語法如下:

CREATE TABLE [table_name]
(
  [col1] [datatype1] [constraints1],
  [col2] [datatype2] [constraints2],
  [col3] [datatype3] [constraints3],
  ....,
  [constraints4]
);

其中table_name是數(shù)據(jù)表名稱,col表示字段名,datatype表示字段類型,constraints代表約束,它們的數(shù)字后綴 1,2 表示多個字段以及多個約束。

提示: 約束既可以在字段上,也可以在表上。一個字段,或者一張表可以有多個約束。

4. NOT NULL,DEFAULT

NOT NULL,DEFAULT 是兩個頗為簡單的約束。

DEFAULT 會給字段添加上默認值,若字段在添加的時候沒有指定值,則使用默認值。

NOT NULL 表示一個字段是非空的,當(dāng)在插入或者修改時,如果字段為空(NULL)則會報錯。

4.1 例1 新建 imooc_user 表1

請書寫 SQL 語句,創(chuàng)建imooc_user表,表共有四個字段,分別是usernameage,score,其中username為非空字段,score字段默認為0分。

分析:

imooc_user 表共有四個字段,其中 username 為用戶名,使用字符串表示,且每個人的用戶名長短不一,為可變短文本,即 varchar,該字段非空,用 NOT NULL 約束;age 代表年齡,是典型的整數(shù)類型,即 int;score 代表分數(shù),是典型的浮點數(shù)類型,即 float,默認為 0 分,用 DEFAULT 約束。

語句:

整理可得語句如下:

CREATE TABLE imooc_user
(
  username varchar(20) NOT NULL,
  age int,
  score float DEFAULT 0
);

執(zhí)行成功后,得到 imooc_user 表的信息如下:

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| username | varchar(20) | NO   |     | <null>  |       |
| age      | int(11)     | YES  |     | <null>  |       |
| score    | float       | YES  |     | 0       |       |
+----------+-------------+------+-----+---------+-------+

5. PRIMARY KEY

PRIMARY KEY,中文稱主鍵,用于唯一標(biāo)識數(shù)據(jù)表中的每一條記錄。

主鍵必須是唯一的,即每條記錄的主鍵必須各不相同;主鍵不能為空。

每張數(shù)據(jù)表都應(yīng)該有一個主鍵,且每個表只能有一個主鍵。

5.1 例2 新建 imooc_user 表2

請書寫 SQL 語句,新建imooc_user表,表共有2字段,分別是idusername,其中username為非空字段,id字段為主鍵。

分析

username 代表用戶名,使用字符串表示,且每個人的用戶名長短不一,為可變短文本,即 varchar,該字段非空,用 NOT NULL 約束; id 字段作為主鍵,使用整型,且用 PRIMARY KEY 約束。

語句

整理可得語句如下:

CREATE TABLE imooc_user
(
  id int PRIMARY KEY,
  username varchar(20) NOT NULL
);

執(zhí)行成功后,表的信息如下:

+----------+------------------+------+-----+---------+-------+
| Field    | Type             | Null | Key | Default | Extra |
+----------+------------------+------+-----+---------+-------+
| id       | int(11)          | NO   | PRI | <null>  |       |
| username | varchar(20)      | NO   |     | <null>  |       |
+----------+------------------+------+-----+---------+-------+

PRIMARY KEY 也可用于約束多個字段,即聯(lián)合主鍵。

修改上面的例子,若 imooc_user 表中的idusername為聯(lián)合主鍵,則其新建語句如下:

CREATE TABLE imooc_user
(
  id int,
  username varchar(20) NOT NULL,
  CONSTRAINT user_pk PRIMARY KEY(id,username)
);

操作成功后,imooc_user 表信息如下:

+----------+------------------+------+-----+---------+-------+
| Field    | Type             | Null | Key | Default | Extra |
+----------+------------------+------+-----+---------+-------+
| id       | int              | NO   | PRI | <null>  |       |
| username | varchar(20)      | NO   | PRI | <null>  |       |
+----------+------------------+------+-----+---------+-------+

注意: 當(dāng)使用聯(lián)合主鍵約束的時候,必須顯示地用 CONSTRAINT 指定 user_pk 是聯(lián)合主鍵。

6. UNIQUE

UNIQUE,用于唯一標(biāo)識數(shù)據(jù)表中的每一條記錄。

UNIQUE 約束的字段必須是唯一的,即該字段在每條記錄中必須各不相同。PRIMARY KEY 約束默認擁有 UNIQUE 約束。

每個表可以有多個UNIQUE約束,但是只能有一個PRIMARY KEY。

6.1 例3 新建imooc_user表3

請書寫 SQL 語句,新建imooc_user表,表共有2字段,分別是username,age,其中username為非空字段,且唯一。

分析

username 代表用戶名,使用字符串表示,且每個人的用戶名長短不一,為可變短文本,即 varchar,該字段非空,用 NOT NULL 約束,且該字段唯一,使用 UNIQUE 約束。

語句

整理可得語句如下:

CREATE TABLE imooc_user
(
  username varchar(20) UNIQUE NOT NULL,
  age int
);

執(zhí)行成功后,表的信息如下:

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| username | varchar(20) | NO   | PRI | <null>  |       |
| age      | int(11)     | YES  |     | <null>  |       |
+----------+-------------+------+-----+---------+-------+

UNIQUE 也可用于約束多個字段,即聯(lián)合唯一鍵。

修改上面的例子,若 imooc_user 表中的usernameage為聯(lián)合唯一字段,語句如下:

CREATE TABLE imooc_user
(
  username varchar(20) NOT NULL,
  age int,
  CONSTRAINT username_age UNIQUE(username,age)
);

創(chuàng)建成功后,imooc_user 表信息如下:

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| username | varchar(20) | NO   | MUL | <null>  |       |
| age      | int(11)     | YES  |     | <null>  |       |
+----------+-------------+------+-----+---------+-------+

7. 小結(jié)

  • PRIMARY KEY 、UNIQUE 和 NOT NULL 這些約束的使用都十分普遍,請務(wù)必熟練掌握。
  • SQL Create 的知識點還是較多的,兩節(jié)的內(nèi)容無法是不夠的,你可以在實踐中進一步加強對它的理解。