ALTER TABLE的做用數據庫
ALTER TABLE命令用於添加、刪除或者更改現有數據表中的列。ide
還能夠用 ALTER TABLE 命令來添加或者刪除現有數據表上的約束。3d
示例數據庫表code
將"Customers"表用做示例blog
添加列語法
使用 ALTER TABLE 在現有的數據表中添加新列的基本語法以下:it
ALTER TABLE table_name table
ADD COLUMN column_name datatype;class
給"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要極爲當心,應該在進行改動前作一個完整的備份(模式和數據的備份)。數據庫表的更改不能撤銷,若是增長了不須要的列,可能不能刪除它們。相似地,若是刪除了不該該刪除的列,可能會丟失該列中的全部數據