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月 ● 版權所有,歡迎分享本文,轉載請保留出處 ........................................................................................................................ ● 小麥苗的微店: https://weidian.com/s/793741433?wfr=c&ifr=shopdetail ● 小麥苗出版的資料庫類叢書: 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 TABLE命令學習[20180503]MySql
- MySQL ALTER命令MySql
- MySQL中的alter table命令的基本使用方法及提速最佳化MySql
- 開心檔之MySQL ALTER命令MySql
- alter table set unused column
- MySQL 資料庫 ALTER命令講解MySql資料庫
- create table,show tables,describe table,DROP TABLE,ALTER TABLE ,怎麼使用?
- ALTER TABLE修改列的不同方法
- alter table move與shrink space
- alter table nologging /*+APPEND PARALLEL(n)*/APPParallel
- alter table drop unused columns checkpoint
- MySQL alter table時執行innobackupex全備再看Seconds_Behind_MasterMySqlAST
- mysql加快alter操作MySql
- [20191129]ALTER TABLE MINIMIZE RECORDS_PER_BLOCK.txtBloC
- mysql alter modify 和 change的區別MySql
- mysql表操作(alter)/mysql欄位型別MySql型別
- MySQL alter 新增列對dml影響MySql
- 透過alter table 來實現重建表,同事大呼開眼界了
- MySQL:Analyze table導致'waiting for table flush'MySqlAI
- MySQL 給使用者新增 ALTER VIEW 的許可權MySqlView
- MySQL table into a golang strucMySqlGolang
- 【MySQL】七、再說MySQL中的 table_idMySql
- 關於 mysql 中的 select * from table_a,table_b 的問題MySql
- 【mysql】table中新增列MySql
- MySQL rename table方法大全MySql
- MySQL的create table as 與 like區別MySql
- Oracle 12.2之後ALTER TABLE .. MODIFY轉換非分割槽表為分割槽表Oracle
- Redisearch的基本命令2:--FT.ADD FT.ADDHASH FT.ALTERRedis
- MySQL報錯Table 'plugin' is read only [ERROR] Can't open the mysql.plugin table.MySqlPluginError
- 線上改表工具oak-online-alter-table和pt-online-schema-change的使用限制總結
- mysql之 OPTIMIZE TABLE整理碎片MySql
- MySQL5.7 Waiting FOR TABLE FLUSHMySqlAI
- MySQL:Table_open_cache_hits/Table_open_cache_misses/Table_open_cache_overflowsMySql
- MySQL 的 help 命令MySql
- MySQL-17-mysql alter 語句如何實現?如何合併為一個MySql
- SQL__ALTERSQL
- MySQL5.6 create table原理分析MySql
- MySQL 關於Table cache設定MySql