mysql的ALTER TABLE命令
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL ALTER命令MySql
- MySQL-ALTER TABLE命令學習[20180503]MySql
- MySQL中的alter table命令的基本使用方法及提速最佳化MySql
- alter table move 和 alter table shrink space的區別
- Alter table for ORACLEOracle
- mysql裡alter table 重定義主鍵的步驟:MySql
- 開心檔之MySQL ALTER命令MySql
- MySQL oak-online-alter-table工具使用初探MySql
- MySQL 資料庫 ALTER命令講解MySql資料庫
- oracle alter table詳解Oracle
- alter table using indexIndex
- mysql操作命令梳理(2)-alter(update、insert)MySql
- v$lock之alter table drop column與alter table set unused column區別系列五
- alter table move 與shrink space的區別
- alter table move跟shrink space的區別
- alter table語法增補(一)
- ALTER TABLE MOVE | SHRINK SPACE區別
- Oracle模擬MySQL的show index from table命令OracleMySqlIndex
- alter table move跟shrink space的區別(轉)
- alter table列管理的一些區別
- oracle 中 ALTER TABLE ADD default 的明確Oracle
- MySQL alter table時執行innobackupex全備再看Seconds_Behind_MasterMySqlAST
- ALTER TABLE MOVE和SHRINK SPACE區別
- alter table table_name move ; 在自身表空間move是如何操作的?
- mysql 命令重新命名錶RENAME TABLE 句法MySql
- mysql加快alter操作MySql
- alter system check datafiles 命令
- alter table engine=memory ERROR 1114Error
- MysqL中的Show Index From Table_Name命令說明MySqlIndex
- oracle中Alter system 命令的總結Oracle
- alter table nologging /*+APPEND PARALLEL(n)*/APPParallel
- Oracle 11g alter table move與shrink spaceOracle
- ALTER TABLE causes auto_increment resulting key 'PRIMARY'REM
- 表、索引遷移表空間alter table move索引
- oracle 10g__alter table shrink space compactOracle 10g
- oracle10g_alter table_測試3Oracle
- DATA GUARD 中alter database 命令Database
- 【MySQL】mysql optimize tableMySql