mysql的ALTER TABLE命令

lhrbest發表於2020-11-20

ALTER TABLE的作用

ALTER TABLE命令用於新增、刪除或者更改現有資料表中的列。

還可以用 ALTER TABLE 命令來新增或者刪除現有資料表上的約束。

示例資料庫表

將"Customers"表用作示例

新增列語法

使用 ALTER TABLE 在現有的資料表中新增新列的基本語法如下:

ALTER TABLE table_name

ADD COLUMN column_name datatype;

給"Customers"表增加一列"年齡",可以這樣寫:

ALTER TABLE Customers

ADD COLUMN 年齡 INT;

我們再檢視Customers表就在末尾增加一列"年齡"

由於我們沒有設定值,"年齡"列預設都是NULL值(空值)

刪除列語法

使用 ALTER TABLE 在現有的資料表中刪除列的基本語法如下:

ALTER TABLE table_name

DROP COLUMN column_name;

我們再將上面"Customers"剛增加的"年齡"列給刪除

ALTER TABLE Customers

DROP COLUMN 年齡;

執行完後就將"年齡"列給刪除了。

修改列型別語法

使用 ALTER TABLE 更改現有的資料表中列的資料型別的基本語法如下:

ALTER TABLE table_name

MODIFY column_name datatype;

我們將"Customers"表的"郵編"由CHAR型別改成INT型別

ALTER TABLE customers

MODIFY 郵編 INT;

新增NOT NULL約束語法

使用 ALTER TABLE 給某列新增 NOT NULL 約束 的基本語法如下:

ALTER TABLE table_name

MODIFY column_name datatype NOT NULL;

我們可以將"Customers"表中的"省份"由NULL約束改成NOT NULL約束

ALTER TABLE Customers

MODIFY 省份 VARCHAR(20) NOT NULL;

結果如下:

新增唯一約束語法

使用 ALTER TABLE 給資料表新增 唯一約束 的基本語法如下:

ALTER TABLE table_name

ADD CONSTRAINT MyUniqueConstraint

UNIQUE(column1, column2...);

我們可以給"Customers"表中的"姓名"新增唯一約束

ALTER TABLE Customers

ADD CONSTRAINT idx_姓名

UNIQUE(姓名);

結果如下:

新增CHECK約束語法

使用 ALTER TABLE 給資料表新增 CHECK 約束 的基本語法如下:

ALTER TABLE table_name

ADD CONSTRAINT MyUniqueConstraint

CHECK (CONDITION);

我們可以給"Customers"表中的"郵編"新增CHECK約束,長度必須等於6

ALTER TABLE Customers

ADD CONSTRAINT con_客戶ID

CHECK (length(郵編)=6);

當我們插入一條資料進去時,郵編的長度不等於6時,就會提示報錯,如下圖:

INSERT INTO customers

VALUES('張三','中山大道101號','廣州','510','廣東省');

結果如下:

當我們把郵編的長度改成6位的長度時,就可以正常插入了。

INSERT INTO customers

VALUES('張三','中山大道101號','廣州','510000','廣東省');

結果如下:

新增主鍵約束語法

使用 ALTER TABLE 給資料表新增 主鍵約束 的基本語法如下:

ALTER TABLE table_name

ADD CONSTRAINT MyPrimaryKey

PRIMARY KEY (column1, column2...);

我們先在Navicat中去掉客戶ID的自增長主鍵,然後"客戶ID"再新增不具備自增長屬性的主鍵約束

ALTER TABLE Customers

ADD CONSTRAINT pri_客戶ID

PRIMARY KEY(客戶ID);

結果如下:

刪除約束語法

使用 ALTER TABLE 從資料表中 刪除約束 的基本語法如下:

ALTER TABLE table_name

DROP CONSTRAINT MyUniqueConstraint;

我們將剛才建的CHECK約束刪除掉

ALTER TABLE Customers

DROP CONSTRAINT con_客戶ID ;

我們可以看到直接的約束被刪除了。

其他型別的約束同樣可以用此語法進行刪除。

注意:使用ALTER TABLE要極為小心,應該在進行改動前做一個完整的備份(模式和資料的備份)。資料庫表的更改不能撤銷,如果增加了不需要的列,可能不能刪除它們。類似地,如果刪除了不應該刪除的列,可能會丟失該列中的所有資料



About Me

........................................................................................................................

● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除

● 本文在個人微 信公眾號( DB寶)上有同步更新

● QQ群號: 230161599 、618766405,微信群私聊

● 個人QQ號(646634621),微 訊號(db_bao),註明新增緣由

● 於 2020年11月完成

● 最新修改時間:2020年11月

● 版權所有,歡迎分享本文,轉載請保留出處

........................................................................................................................

小麥苗的微店

● 小麥苗出版的資料庫類叢書: http://blog.itpub.net/26736162/viewspace-2142121/

小麥苗OCP、OCM、高可用、MySQL、DBA學習班http://blog.itpub.net/26736162/viewspace-2148098/

● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/

........................................................................................................................

請掃描下面的二維碼來關注小麥苗的微 信公眾號( DB寶)及QQ群(230161599、618766405)、新增小麥苗微 信(db_bao), 學習最實用的資料庫技術。

........................................................................................................................

 

 



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2735631/,如需轉載,請註明出處,否則將追究法律責任。

相關文章