2020重新出發(fā)荤胁,MySql基礎(chǔ),MySql的約束

@[toc]

MySQL約束概述

MySQL約束是一種限制屎债,它通過限制表中的數(shù)據(jù)仅政,來確保數(shù)據(jù)的完整性和唯一性。使用約束來限定表中的數(shù)據(jù)是很有必要的盆驹。

在 MySQL 中圆丹,約束是指對表中數(shù)據(jù)的一種約束,能夠幫助數(shù)據(jù)庫管理員更好地管理數(shù)據(jù)庫躯喇,并且能夠確保數(shù)據(jù)庫中數(shù)據(jù)的正確性和有效性辫封。

  • 例如,在數(shù)據(jù)表中存放年齡的值時(shí)廉丽,如果存入 200倦微、300 這些無效的值就毫無意義了。因此正压,使用約束來限定表中的數(shù)據(jù)范圍是很有必要的欣福。

在 MySQL 中,主要支持以下 6 種約束:

主鍵約束(PRIMARY KEY)

主鍵(PRIMARY KEY)的完整稱呼是“主鍵約束”蔑匣,是 MySQL 中使用最為頻繁的約束。一般情況下棕诵,為了便于 DBMS 更快的查找到表中的記錄裁良,都會在表中設(shè)置一個(gè)主鍵。主鍵是表的一個(gè)特殊字段校套,該字段能唯一標(biāo)識該表中的每條信息价脾。例如,學(xué)生信息表中的學(xué)號是唯一的笛匙。

主鍵分為單字段主鍵和多字段聯(lián)合主鍵侨把,

使用主鍵應(yīng)注意以下幾點(diǎn):

  • 每個(gè)表只能定義一個(gè)主鍵犀变。
  • 主鍵值必須唯一標(biāo)識表中的每一行,且不能為 NULL秋柄,即表中不可能存在有相同主鍵值的兩行數(shù)據(jù)获枝。這是唯一性原則。
  • 一個(gè)字段名只能在聯(lián)合主鍵字段表中出現(xiàn)一次骇笔。
  • 聯(lián)合主鍵不能包含不必要的多余字段省店。當(dāng)把聯(lián)合主鍵的某一字段刪除后,如果剩下的字段構(gòu)成的主鍵仍然滿足唯一性原則笨触,那么這個(gè)聯(lián)合主鍵是不正確的懦傍。這是最小化原則。

在創(chuàng)建表時(shí)設(shè)置主鍵約束

在創(chuàng)建數(shù)據(jù)表時(shí)設(shè)置主鍵約束芦劣,既可以為表中的一個(gè)字段設(shè)置主鍵粗俱,也可以為表中多個(gè)字段設(shè)置聯(lián)合主鍵。但是不論使用哪種方法虚吟,在一個(gè)表中主鍵只能有一個(gè)寸认。

設(shè)置單字段主鍵

在 CREATE TABLE 語句中,通過 PRIMARY KEY 關(guān)鍵字來指定主鍵稍味。

在定義字段的同時(shí)指定主鍵废麻,語法格式如下:

<字段名> <數(shù)據(jù)類型> PRIMARY KEY [默認(rèn)值]

例子:在 test_db 數(shù)據(jù)庫中創(chuàng)建 tb_emp3 數(shù)據(jù)表,其主鍵為 id模庐,SQL 語句和運(yùn)行結(jié)果如下烛愧。

mysql> CREATE TABLE tb_emp3
    -> (
    -> id INT(11) PRIMARY KEY,
    -> name VARCHAR(25),
    -> deptId INT(11),
    -> salary FLOAT
    -> );
Query OK, 0 rows affected (0.37 sec)
mysql> DESC tb_emp3;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int(11)     | NO   | PRI | NULL    |       |
| name   | varchar(25) | YES  |     | NULL    |       |
| deptId | int(11)     | YES  |     | NULL    |       |
| salary | float       | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.14 sec)

或者是在定義完所有字段之后指定主鍵,語法格式如下:

[CONSTRAINT <約束名>] PRIMARY KEY [字段名]

例子:在 test_db 數(shù)據(jù)庫中創(chuàng)建 tb_emp4 數(shù)據(jù)表掂碱,其主鍵為 id怜姿,SQL 語句和運(yùn)行結(jié)果如下。

mysql> CREATE TABLE tb_emp4
    -> (
    -> id INT(11),
    -> name VARCHAR(25),
    -> deptId INT(11),
    -> salary FLOAT,
    -> PRIMARY KEY(id)
    -> );
Query OK, 0 rows affected (0.37 sec)
mysql> DESC tb_emp4;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int(11)     | NO   | PRI | NULL    |       |
| name   | varchar(25) | YES  |     | NULL    |       |
| deptId | int(11)     | YES  |     | NULL    |       |
| salary | float       | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.14 sec)

設(shè)置聯(lián)合主鍵

所謂的聯(lián)合主鍵疼燥,就是這個(gè)主鍵是由一張表中多個(gè)字段組成的沧卢。

  • 比如,設(shè)置學(xué)生選課數(shù)據(jù)表時(shí)醉者,使用學(xué)生編號做主鍵還是用課程編號做主鍵呢但狭?如果用學(xué)生編號做主鍵,那么一個(gè)學(xué)生就只能選擇一門課程撬即。如果用課程編號做主鍵立磁,那么一門課程只能有一個(gè)學(xué)生來選。顯然剥槐,這兩種情況都是不符合實(shí)際情況的唱歧。
  • 實(shí)際上設(shè)計(jì)學(xué)生選課表,要限定的是一個(gè)學(xué)生只能選擇同一課程一次。因此颅崩,學(xué)生編號和課程編號可以放在一起共同作為主鍵几于,這也就是聯(lián)合主鍵了。

主鍵由多個(gè)字段聯(lián)合組成沿后,語法格式如下:

PRIMARY KEY [字段1沿彭,字段2,…,字段n]

注意:當(dāng)主鍵是由多個(gè)字段組成時(shí)得运,不能直接在字段名后面聲明主鍵約束膝蜈。

例子:創(chuàng)建數(shù)據(jù)表 tb_emp5,假設(shè)表中沒有主鍵 id熔掺,為了唯一確定一個(gè)員工饱搏,可以把 name、deptId 聯(lián)合起來作為主鍵置逻,SQL 語句和運(yùn)行結(jié)果如下推沸。

mysql> CREATE TABLE tb_emp5
    -> (
    -> name VARCHAR(25),
    -> deptId INT(11),
    -> salary FLOAT,
    -> PRIMARY KEY(id,deptId)
    -> );
Query OK, 0 rows affected (0.37 sec)
mysql> DESC tb_emp5;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| name   | varchar(25) | NO   | PRI | NULL    |       |
| deptId | int(11)     | NO   | PRI | NULL    |       |
| salary | float       | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
3 rows in set (0.14 sec)

在修改表時(shí)添加主鍵約束

主鍵約束不僅可以在創(chuàng)建表的同時(shí)創(chuàng)建,也可以在修改表時(shí)添加券坞。但是需要注意的是鬓催,設(shè)置成主鍵約束的字段中不允許有空值。

在修改數(shù)據(jù)表時(shí)添加主鍵約束的語法格式如下:

ALTER TABLE <數(shù)據(jù)表名> ADD PRIMARY KEY(<字段名>);

查看 tb_emp2 數(shù)據(jù)表的表結(jié)構(gòu)恨锚,SQL 語句和運(yùn)行結(jié)果如下所示宇驾。

mysql> DESC tb_emp2;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int(11)     | NO   |     | NULL    |       |
| name   | varchar(30) | YES  |     | NULL    |       |
| deptId | int(11)     | YES  |     | NULL    |       |
| salary | float       | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.14 sec)

例子:修改數(shù)據(jù)表 tb_emp2,將字段 id 設(shè)置為主鍵猴伶,SQL 語句和運(yùn)行結(jié)果如下课舍。

mysql> ALTER TABLE tb_emp2
    -> ADD PRIMARY KEY(id);
Query OK, 0 rows affected (0.94 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> DESC tb_emp2;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int(11)     | NO   | PRI | NULL    |       |
| name   | varchar(30) | YES  |     | NULL    |       |
| deptId | int(11)     | YES  |     | NULL    |       |
| salary | float       | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.12 sec)

通常,當(dāng)在修改表時(shí)要設(shè)置表中某個(gè)字段的主鍵約束時(shí)他挎,要確保設(shè)置成主鍵約束的字段中值不能夠有重復(fù)的筝尾,并且要保證是非空的。否則無法設(shè)置主鍵約束办桨。

刪除主鍵約束

當(dāng)一個(gè)表中不需要主鍵約束時(shí)筹淫,就需要從表中將其刪除。刪除主鍵約束的方法要比創(chuàng)建主鍵約束容易的多呢撞。

刪除主鍵約束的語法格式如下所示:

ALTER TABLE <數(shù)據(jù)表名> DROP PRIMARY KEY;

例子:刪除 tb_emp2 表中的主鍵約束损姜,SQL 語句和運(yùn)行結(jié)果如下。

mysql> ALTER TABLE tb_emp2
    -> DROP PRIMARY KEY;
Query OK, 0 rows affected (0.94 sec)
Records: 0  Duplicates: 0  Warnings: 0

由于主鍵約束在一個(gè)表中只能有一個(gè)殊霞,因此不需要指定主鍵名就可以刪除一個(gè)表中的主鍵約束摧阅。

MySQL 主鍵自增長

在 MySQL 中,當(dāng)主鍵定義為自增長后脓鹃,這個(gè)主鍵的值就不再需要用戶輸入數(shù)據(jù)了逸尖,而由數(shù)據(jù)庫系統(tǒng)根據(jù)定義自動賦值古沥。每增加一條記錄瘸右,主鍵會自動以相同的步長進(jìn)行增長。

通過給字段添加 AUTO_INCREMENT 屬性來實(shí)現(xiàn)主鍵自增長。語法格式如下:

字段名 數(shù)據(jù)類型 AUTO_INCREMENT

  • 默認(rèn)情況下呛哟,AUTO_INCREMENT 的初始值是 1癣诱,每新增一條記錄,字段值自動加 1龄章。
  • 一個(gè)表中只能有一個(gè)字段使用 AUTO_INCREMENT 約束吃谣,且該字段必須有唯一索引,以避免序號重復(fù)(即為主鍵或主鍵的一部分)做裙。
  • AUTO_INCREMENT 約束的字段必須具備 NOT NULL 屬性岗憋。
  • AUTO_INCREMENT 約束的字段只能是整數(shù)類型(TINYINT、SMALLINT锚贱、INT仔戈、BIGINT 等)。
  • AUTO_INCREMENT 約束字段的最大值受該字段的數(shù)據(jù)類型約束拧廊,如果達(dá)到上限监徘,AUTO_INCREMENT 就會失效。

注意:加上 AUTO_INCREMENT 約束條件后吧碾,字段中的每個(gè)值都是自動增加的凰盔。因此,這個(gè)字段不可能出現(xiàn)相同的值倦春。通常情況下户敬,AUTO_INCREMENT 都是作為 id 字段的約束條件,并且將 id 字段作為表的主鍵溅漾。

指定自增字段初始值

如果第一條記錄設(shè)置了該字段的初始值山叮,那么新增加的記錄就從這個(gè)初始值開始自增。

  • 例如添履,如果表中插入的第一條記錄的 id 值設(shè)置為 5屁倔,那么再插入記錄時(shí),id 值就會從 5 開始往上增加暮胧。

外鍵約束

MySQL 外鍵約束(FOREIGN KEY)是表的一個(gè)特殊字段锐借,經(jīng)常與主鍵約束一起使用。對于兩個(gè)具有關(guān)聯(lián)關(guān)系的表而言往衷,相關(guān)聯(lián)字段中主鍵所在的表就是主表(父表)钞翔,外鍵所在的表就是從表(子表)。

外鍵用來建立主表與從表的關(guān)聯(lián)關(guān)系席舍,為兩個(gè)表的數(shù)據(jù)建立連接布轿,約束兩個(gè)表中數(shù)據(jù)的一致性和完整性

  • 比如,一個(gè)水果攤汰扭,只有蘋果稠肘、桃子、李子萝毛、西瓜等 4 種水果项阴,那么,你來到水果攤要買水果就只能選擇蘋果笆包、桃子环揽、李子和西瓜,其它的水果不能購買的庵佣。

主表刪除某條記錄時(shí)歉胶,從表中與之對應(yīng)的記錄也必須有相應(yīng)的改變。一個(gè)表可以有一個(gè)或多個(gè)外鍵巴粪,外鍵可以為空值跨扮,若不為空值,則每一個(gè)外鍵的值必須等于主表中主鍵的某個(gè)值验毡。

定義外鍵時(shí)衡创,需要遵守下列規(guī)則:

  • 主表必須已經(jīng)存在于數(shù)據(jù)庫中,或者是當(dāng)前正在創(chuàng)建的表晶通。如果是后一種情況璃氢,則主表與從表是同一個(gè)表,這樣的表稱為自參照表狮辽,結(jié)構(gòu)稱為自參照完整性一也。
  • 必須為主表定義主鍵。
  • 主鍵不能包含空值喉脖,但允許在外鍵中出現(xiàn)空值椰苟。也就是說,只要外鍵的每個(gè)非空值出現(xiàn)在指定的主鍵中树叽,這個(gè)外鍵的內(nèi)容就是正確的舆蝴。
  • 在主表的表名后面指定列名或列名的組合。這個(gè)列或列的組合必須是主表的主鍵或候選鍵题诵。
  • 外鍵中列的數(shù)目必須和主表的主鍵中列的數(shù)目相同洁仗。
  • 外鍵中列的數(shù)據(jù)類型必須和主表主鍵中對應(yīng)列的數(shù)據(jù)類型相同。

在創(chuàng)建表時(shí)設(shè)置外鍵約束

在 CREATE TABLE 語句中性锭,通過 FOREIGN KEY 關(guān)鍵字來指定外鍵赠潦,具體的語法格式如下:

[CONSTRAINT <外鍵名>] FOREIGN KEY 字段名 [,字段名2草冈,…]
REFERENCES <主表名> 主鍵列1 [她奥,主鍵列2瓮增,…]

注意:從表的外鍵關(guān)聯(lián)的必須是主表的主鍵,且主鍵和外鍵的數(shù)據(jù)類型必須一致哩俭。例如钉赁,兩者都是 INT 類型,或者都是 CHAR 類型携茂。如果不滿足這樣的要求,在創(chuàng)建從表時(shí)诅岩,就會出現(xiàn)“ERROR 1005(HY000): Can't create table”錯(cuò)誤讳苦。

在修改表時(shí)添加外鍵約束

外鍵約束也可以在修改表時(shí)添加,但是添加外鍵約束的前提是:從表中外鍵列中的數(shù)據(jù)必須與主表中主鍵列中的數(shù)據(jù)一致或者是沒有數(shù)據(jù)吩谦。

在修改數(shù)據(jù)表時(shí)添加外鍵約束的語法格式如下:

ALTER TABLE <數(shù)據(jù)表名> ADD CONSTRAINT <外鍵名>
FOREIGN KEY(<列名>) REFERENCES <主表名> (<列名>);

注意:在為已經(jīng)創(chuàng)建好的數(shù)據(jù)表添加外鍵約束時(shí)鸳谜,要確保添加外鍵約束的列的值全部來源于主鍵列,并且外鍵列不能為空式廷。

刪除外鍵約束

當(dāng)一個(gè)表中不需要外鍵約束時(shí)咐扭,就需要從表中將其刪除。外鍵一旦刪除滑废,就會解除主表和從表間的關(guān)聯(lián)關(guān)系蝗肪。

刪除外鍵約束的語法格式如下所示:

ALTER TABLE <表名> DROP FOREIGN KEY <外鍵約束名>;

唯一約束

MySQL 唯一約束(Unique Key)是指所有記錄中字段的值不能重復(fù)出現(xiàn)

  • 例如蠕趁,為 id 字段加上唯一性約束后薛闪,每條記錄的 id 值都是唯一的,不能出現(xiàn)重復(fù)的情況俺陋。如果其中一條記錄的 id 值為‘0001’豁延,那么該表中就不能出現(xiàn)另一條記錄的 id 值也為‘0001’。

唯一約束與主鍵約束相似的是它們都可以確保列的唯一性腊状。不同的是诱咏,唯一約束在一個(gè)表中可有多個(gè),并且設(shè)置唯一約束的列允許有空值缴挖,但是只能有一個(gè)空值袋狞。而主鍵約束在一個(gè)表中只能有一個(gè),且不允許有空值映屋。比如硕并,在用戶信息表中,為了避免表中用戶名重名秧荆,可以把用戶名設(shè)置為唯一約束倔毙。

在創(chuàng)建表時(shí)設(shè)置唯一約束

唯一約束可以在創(chuàng)建表時(shí)直接設(shè)置,通常設(shè)置在除了主鍵以外的其它列上乙濒。

在定義完列之后直接使用 UNIQUE 關(guān)鍵字指定唯一約束陕赃,語法格式如下:

<字段名> <數(shù)據(jù)類型> UNIQUE

在修改表時(shí)添加唯一約束

在修改表時(shí)添加唯一約束的語法格式為:

ALTER TABLE <數(shù)據(jù)表名> ADD CONSTRAINT <唯一約束名> UNIQUE(<列名>);

刪除唯一約束

在 MySQL 中刪除唯一約束的語法格式如下:

ALTER TABLE <表名> DROP INDEX <唯一約束名>;

檢查約束

MySQL 檢查約束(CHECK)是用來檢查數(shù)據(jù)表中字段值有效性的一種手段卵蛉,可以通過 CREATE TABLE 或 ALTER TABLE 語句實(shí)現(xiàn)。設(shè)置檢查約束時(shí)要根據(jù)實(shí)際情況進(jìn)行設(shè)置么库,這樣能夠減少無效數(shù)據(jù)的輸入傻丝。

  • 例如,學(xué)生信息表中的年齡字段是沒有負(fù)數(shù)的诉儒,并且數(shù)值也是有限制的葡缰。如果是大學(xué)生,年齡一般應(yīng)該在 18~30 歲之間忱反。在設(shè)置字段的檢查約束時(shí)要根據(jù)實(shí)際情況進(jìn)行設(shè)置泛释,這樣能夠減少無效數(shù)據(jù)的輸入。

選取設(shè)置檢查約束的字段

檢查約束使用 CHECK 關(guān)鍵字温算,具體的語法格式如下:

CHECK <表達(dá)式>

其中怜校,“表達(dá)式”指的就是 SQL 表達(dá)式,用于指定需要檢查的限定條件注竿。

若將 CHECK 約束子句置于表中某個(gè)列的定義之后茄茁,則這種約束也稱為基于列的 CHECK 約束。

在更新表數(shù)據(jù)的時(shí)候巩割,系統(tǒng)會檢查更新后的數(shù)據(jù)行是否滿足 CHECK 約束中的限定條件裙顽。MySQL 可以使用簡單的表達(dá)式來實(shí)現(xiàn) CHECK 約束,也允許使用復(fù)雜的表達(dá)式作為限定條件宣谈,例如在限定條件中加入子查詢锦庸。

注意:若將 CHECK 約束子句置于所有列的定義以及主鍵約束和外鍵定義之后,則這種約束也稱為基于表的 CHECK 約束蒲祈。該約束可以同時(shí)對表中多個(gè)列設(shè)置限定條件甘萧。

在創(chuàng)建表時(shí)設(shè)置檢查約束

一般情況下,如果系統(tǒng)的表結(jié)構(gòu)已經(jīng)設(shè)計(jì)完成梆掸,那么在創(chuàng)建表時(shí)就可以為字段設(shè)置檢查約束了扬卷。

創(chuàng)建表時(shí)設(shè)置檢查約束的語法格式如下:

CHECK(<檢查約束>)

在修改表時(shí)添加檢查約束

如果一個(gè)表創(chuàng)建完成,可以通過修改表的方式為表添加檢查約束酸钦。

修改表時(shí)設(shè)置檢查約束的語法格式如下:

ALTER TABLE tb_emp7 ADD CONSTRAINT <檢查約束名> CHECK(<檢查約束>)

刪除檢查約束

修改表時(shí)刪除檢查約束的語法格式如下:

ALTER TABLE <數(shù)據(jù)表名> DROP CONSTRAINT <檢查約束名>;

非空約束

MySQL 非空約束(NOT NULL)指字段的值不能為空怪得。對于使用了非空約束的字段,如果用戶在添加數(shù)據(jù)時(shí)沒有指定值卑硫,數(shù)據(jù)庫系統(tǒng)就會報(bào)錯(cuò)徒恋。可以通過 CREATE TABLE 或 ALTER TABLE 語句實(shí)現(xiàn)欢伏。在表中某個(gè)列的定義后加上關(guān)鍵字 NOT NULL 作為限定詞入挣,來約束該列的取值不能為空。

  • 比如硝拧,在用戶信息表中径筏,如果不添加用戶名葛假,那么這條用戶信息就是無效的,這時(shí)就可以為用戶名字段設(shè)置非空約束滋恬。

在創(chuàng)建表時(shí)設(shè)置非空約束

創(chuàng)建表時(shí)可以使用 NOT NULL 關(guān)鍵字設(shè)置非空約束聊训,具體的語法格式如下:

<字段名> <數(shù)據(jù)類型> NOT NULL;

在修改表時(shí)添加非空約束

如果在創(chuàng)建表時(shí)忘記了為字段設(shè)置非空約束,也可以通過修改表進(jìn)行非空約束的添加恢氯。

修改表時(shí)設(shè)置非空約束的語法格式如下:

ALTER TABLE <數(shù)據(jù)表名>
CHANGE COLUMN <字段名>
<字段名> <數(shù)據(jù)類型> NOT NULL;

刪除非空約束

修改表時(shí)刪除非空約束的語法規(guī)則如下:

ALTER TABLE <數(shù)據(jù)表名>
CHANGE COLUMN <字段名> <字段名> <數(shù)據(jù)類型> NULL;

默認(rèn)值約束

默認(rèn)值(Default)的完整稱呼是“默認(rèn)值約束(Default Constraint)”带斑,用來指定某列的默認(rèn)值。在表中插入一條新記錄時(shí)勋拟,如果沒有為某個(gè)字段賦值勋磕,系統(tǒng)就會自動為這個(gè)字段插入默認(rèn)值。

  • 例如指黎,員工信息表中,部門位置在北京的較多州丹,那么部門位置就可以默認(rèn)為“北京”醋安,系統(tǒng)就會自動為這個(gè)字段賦值為“北京”。

默認(rèn)值約束通常用在已經(jīng)設(shè)置了非空約束的列墓毒,這樣能夠防止數(shù)據(jù)表在錄入數(shù)據(jù)時(shí)出現(xiàn)錯(cuò)誤吓揪。

在創(chuàng)建表時(shí)設(shè)置默認(rèn)值約束

創(chuàng)建表時(shí)可以使用 DEFAULT 關(guān)鍵字設(shè)置默認(rèn)值約束,具體的語法格式如下:

<字段名> <數(shù)據(jù)類型> DEFAULT <默認(rèn)值>;

其中所计,“默認(rèn)值”為該字段設(shè)置的默認(rèn)值柠辞,如果是字符類型的,要用單引號括起來主胧。

注意:在創(chuàng)建表時(shí)為列添加默認(rèn)值叭首,可以一次為多個(gè)列添加默認(rèn)值,需要注意不同列的數(shù)據(jù)類型踪栋。

在修改表時(shí)添加默認(rèn)值約束

修改表時(shí)添加默認(rèn)值約束的語法格式如下:

ALTER TABLE <數(shù)據(jù)表名>
CHANGE COLUMN <字段名> <數(shù)據(jù)類型> DEFAULT <默認(rèn)值>;

刪除默認(rèn)值約束

當(dāng)一個(gè)表中的列不需要設(shè)置默認(rèn)值時(shí)焙格,就需要從表中將其刪除。

修改表時(shí)刪除默認(rèn)值約束的語法格式如下:

ALTER TABLE <數(shù)據(jù)表名>
CHANGE COLUMN <字段名> <字段名> <數(shù)據(jù)類型> DEFAULT NULL;

MySQL查看表中的約束

在 MySQL 中可以使用 SHOW CREATE TABLE 語句來查看表中的約束夷都。

查看數(shù)據(jù)表中的約束語法格式如下:

SHOW CREATE TABLE <數(shù)據(jù)表名>;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末眷唉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子囤官,更是在濱河造成了極大的恐慌冬阳,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件党饮,死亡現(xiàn)場離奇詭異肝陪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)刑顺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進(jìn)店門见坑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嚷掠,“玉大人,你說我怎么就攤上這事荞驴〔唤裕” “怎么了?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵熊楼,是天一觀的道長霹娄。 經(jīng)常有香客問我,道長鲫骗,這世上最難降的妖魔是什么犬耻? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮执泰,結(jié)果婚禮上枕磁,老公的妹妹穿的比我還像新娘。我一直安慰自己术吝,他們只是感情好计济,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著排苍,像睡著了一般沦寂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上淘衙,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天传藏,我揣著相機(jī)與錄音,去河邊找鬼彤守。 笑死毯侦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的具垫。 我是一名探鬼主播叫惊,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼做修!你這毒婦竟也來了霍狰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤饰及,失蹤者是張志新(化名)和其女友劉穎蔗坯,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體燎含,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宾濒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了屏箍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绘梦。...
    茶點(diǎn)故事閱讀 40,438評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡橘忱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出卸奉,到底是詐尸還是另有隱情钝诚,我是刑警寧澤,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布榄棵,位于F島的核電站凝颇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏疹鳄。R本人自食惡果不足惜拧略,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瘪弓。 院中可真熱鬧垫蛆,春花似錦、人聲如沸腺怯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瓢喉。三九已至宁赤,卻和暖如春舀透,著一層夾襖步出監(jiān)牢的瞬間栓票,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工愕够, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留走贪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓惑芭,卻偏偏與公主長得像坠狡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子遂跟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評論 2 359