mysql數(shù)據(jù)庫(kù)表增添字段,刪除字段,修改字段的排列等操作
修改表指的是修改數(shù)據(jù)庫(kù)之后中已經(jīng)存在的數(shù)據(jù)表的結(jié)構(gòu)。?
?mysql???使用??alter table??語(yǔ)句修改表。常用的修改表的操作有修改表名、修改字段數(shù)據(jù)類型或者字段名、增加和刪除字段、修改字段的排列位置、更改表的存儲(chǔ)引擎、刪除表的外鍵約束等。
一、mysql修改表名
語(yǔ)法:
ALTER TABLE <舊表名> RENAME [to] <新表名>
上面語(yǔ)句中的??to??為可選,存在與否不影響運(yùn)行結(jié)果。
舉個(gè)栗子:
將??test_user_2???這個(gè)數(shù)據(jù)表,改名為??test_user_two??;
首先我們查看下原來的內(nèi)容;
mysql> show tables; +-------------------+ | Tables_in_test_db | +-------------------+ | test_dept | | test_user | | test_user_2 | | test_user_3 | | test_user_4 | | test_user_5 | | test_user_6 | | test_user_7 | | test_user_8 | | test_user_9 | +-------------------+ 10 rows in set (0.00 sec) mysql>
然后我們執(zhí)行語(yǔ)句:
mysql> alter table test_user_2 rename test_user_two; Query OK, 0 rows affected (0.03 sec) mysql>
然后再看下是否修改完畢了;
mysql> show tables; +-------------------+ | Tables_in_test_db | +-------------------+ | test_dept | | test_user | | test_user_3 | | test_user_4 | | test_user_5 | | test_user_6 | | test_user_7 | | test_user_8 | | test_user_9 | | test_user_two | +-------------------+ 10 rows in set (0.00 sec) mysql>
注意:修改的只是數(shù)據(jù)表名,實(shí)際上字段和數(shù)據(jù)內(nèi)容都沒有發(fā)生變化。
二、mysql修改數(shù)據(jù)的字段類型
修改字段的數(shù)據(jù)類型,就是把字段的數(shù)據(jù)類型轉(zhuǎn)換成另一種數(shù)據(jù)類型。
語(yǔ)法:
alter table <表名> modify <字段名> <數(shù)據(jù)類型>
舉個(gè)栗子:
修改??test_user_two???這個(gè)表中的??money???字段的數(shù)據(jù)類型,由??float???改為??int??類型。
首先看下這個(gè)表中的數(shù)據(jù)結(jié)構(gòu);
mysql> desc test_user_two; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id | int | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | deptid | int | YES | | NULL | | | money | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 4 rows in set (0.01 sec) mysql>
然后執(zhí)行如下語(yǔ)句進(jìn)行修改;
mysql> alter table test_user_two modify money int; Query OK, 0 rows affected (0.09 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql>
修改完畢之后我們?cè)倏聪??test_user_db??這個(gè)表中的數(shù)據(jù)結(jié)構(gòu)是否發(fā)生變化了。
mysql> desc test_user_two; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id | int | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | deptid | int | YES | | NULL | | | money | int | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec) mysql>
三、mysql修改字段名
語(yǔ)法:
alter table <表名> change <舊字段名> <新字段名> <新數(shù)據(jù)類型>;
舉個(gè)栗子:
將??test_user_two???表中的??money???字段改成??howmoney???,數(shù)據(jù)類型為??int??;
執(zhí)行語(yǔ)句:
mysql> alter table test_user_two change money howmoney int; Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql>
然后我們?cè)倏聪麓藭r(shí)這個(gè)??test_user_two??數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu)是什么;
mysql> desc test_user_two; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | deptid | int | YES | | NULL | | | howmoney | int | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec) mysql>
可以看到,已經(jīng)將字段修改完畢了。
四、mysql添加字段
語(yǔ)法:
alter table <表名> add <新字段名> <數(shù)據(jù)類型> [約束條件] [first | after 已存在字段名]
新字段名為需要添加的字段的名稱;??first???為可選參數(shù),其作用是將新添加的字段設(shè)置為表的第一個(gè)字段;??after??為可選參數(shù),其作用是將新添加的字段添加到指定的“已存在字段名” 的后面。
??first???或??after 已存在字段名???用于指定新增字段在表中的位置,如果??SQL??語(yǔ)句中沒有這兩個(gè)參數(shù),則默認(rèn)將新添加的字段設(shè)置為數(shù)據(jù)表的最后一列。
舉幾個(gè)栗子:
1、添加沒有約束性的字段
在數(shù)據(jù)表??test_user_two???中添加一個(gè)沒有完整性約束的??int???類型的字段??year??(入職幾年);
執(zhí)行??sql??如下:
mysql> alter table test_user_two add year int; Query OK, 0 rows affected (0.04 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql>
然后我們查看下修改之后的表結(jié)構(gòu);
mysql> desc test_user_two; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | deptid | int | YES | | NULL | | | howmoney | int | YES | | NULL | | | year | int | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 5 rows in set (0.00 sec) mysql>
2、添加一個(gè)有約束性的字段
在??test_user_two???表中添加一個(gè)名為??year1???,數(shù)據(jù)類型是??int??,且不可為空的字段;
執(zhí)行相關(guān)??sql??語(yǔ)句;
mysql> alter table test_user_two add year1 int not null; Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql>
看下表結(jié)構(gòu);
mysql> desc test_user_two; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | deptid | int | YES | | NULL | | | howmoney | int | YES | | NULL | | | year | int | YES | | NULL | | | year1 | int | NO | | NULL | | +----------+-------------+------+-----+---------+-------+ 6 rows in set (0.00 sec) mysql>
3、在表的第一列添加一個(gè)字段
在??test_user_two???數(shù)據(jù)表第一列添加一個(gè)名字??year2???,數(shù)據(jù)類型是??int??的字段。
執(zhí)行相關(guān)??sql??語(yǔ)句;
mysql> alter table test_user_two add year2 int first; Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql>
看下修改之后的表結(jié)構(gòu)是什么;
mysql> desc test_user_two; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | year2 | int | YES | | NULL | | | id | int | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | deptid | int | YES | | NULL | | | howmoney | int | YES | | NULL | | | year | int | YES | | NULL | | | year1 | int | NO | | NULL | | +----------+-------------+------+-----+---------+-------+ 7 rows in set (0.00 sec) mysql>
4、在數(shù)據(jù)表中指定列之后添加一個(gè)字段
在??test_user_two???這個(gè)數(shù)據(jù)庫(kù)中??name???字段之后,添加一個(gè)名為??name2???,數(shù)據(jù)類型是??varchar(50)??的字段;
執(zhí)行??sql??語(yǔ)句;
mysql> alter table test_user_two add name2 varchar(50) after name; Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql>
可以再次看下表結(jié)構(gòu);
mysql> desc test_user_two; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | year2 | int | YES | | NULL | | | id | int | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | name2 | varchar(50) | YES | | NULL | | | deptid | int | YES | | NULL | | | howmoney | int | YES | | NULL | | | year | int | YES | | NULL | | | year1 | int | NO | | NULL | | +----------+-------------+------+-----+---------+-------+ 8 rows in set (0.00 sec) mysql>
可以看到,每次我們都會(huì)對(duì)這個(gè)表結(jié)構(gòu)進(jìn)行相關(guān)的修改。
五、mysql刪除字段
語(yǔ)法:
alter table <表名> drop <字段名>;
舉個(gè)栗子;
比如我們想將??test_user_two???數(shù)據(jù)庫(kù)中剛添加的??year2??字段刪除;
執(zhí)行??sql??語(yǔ)句為:
看下表結(jié)構(gòu);
mysql> desc test_user_two; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | name2 | varchar(50) | YES | | NULL | | | deptid | int | YES | | NULL | | | howmoney | int | YES | | NULL | | | year | int | YES | | NULL | | | year1 | int | NO | | NULL | | +----------+-------------+------+-----+---------+-------+ 7 rows in set (0.00 sec) mysql>
可以看到已經(jīng)將名為??year2??的字段進(jìn)行刪除了。
六、mysql修改字段的排列位置
有時(shí)候我們會(huì)面臨修改數(shù)據(jù)表中某些字段的排列位置,比如說將某一個(gè)字段排到第一個(gè),或者是將某個(gè)字段后移,看下如何操作。
語(yǔ)法:
alter table <表名> modify <字段1> <數(shù)據(jù)類型> first | after <字段2>;
“字段1” 指要修改位置的字段;“數(shù)據(jù)類型” 指 “字段1” 的數(shù)據(jù)類型;“??First???” 為可選參數(shù),指將 “字段1” 修改為表的第一個(gè)字段;“??after?? 字段2” 指將 “字段1” 插入到 “字段2” 后面。
舉兩個(gè)栗子;
1、修改字段為表的第一個(gè)字段
比如我們將??test_user_two???這個(gè)數(shù)據(jù)表中名為??name2??的字段,修改成這個(gè)對(duì)應(yīng)數(shù)據(jù)表中第一個(gè)字段;
執(zhí)行??sql??語(yǔ)句;
mysql> alter table test_user_two modify name2 varchar(50) first; Query OK, 0 rows affected (0.08 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql>
查看下表結(jié)構(gòu);
mysql> desc test_user_two; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | name2 | varchar(50) | YES | | NULL | | | id | int | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | deptid | int | YES | | NULL | | | howmoney | int | YES | | NULL | | | year | int | YES | | NULL | | | year1 | int | NO | | NULL | | +----------+-------------+------+-----+---------+-------+ 7 rows in set (0.00 sec) mysql>
可以看到我們已經(jīng)成功將??name2??這個(gè)字段修改成第一個(gè)字段了;
2、修改字段為指定列后面
比如我們將??test_user_two???這個(gè)表中的??name2???字段,讓他移動(dòng)到??year??這個(gè)字段后面;
執(zhí)行??sql??語(yǔ)句;
mysql> alter table test_user_two modify name2 varchar(50) after year; Query OK, 0 rows affected (0.06 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql>
看下表結(jié)構(gòu);
mysql> desc test_user_two; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | deptid | int | YES | | NULL | | | howmoney | int | YES | | NULL | | | year | int | YES | | NULL | | | name2 | varchar(50) | YES | | NULL | | | year1 | int | NO | | NULL | | +----------+-------------+------+-----+---------+-------+ 7 rows in set (0.00 sec) mysql>
可以發(fā)現(xiàn),已經(jīng)將??test_user_two???這個(gè)數(shù)據(jù)庫(kù)中的??name2???字段,移動(dòng)到了??year??字段之后。
七、mysql更改表的存儲(chǔ)引擎
存儲(chǔ)引擎是?
?mysql???中的數(shù)據(jù)存儲(chǔ)在文件或者內(nèi)存中時(shí)采用的不用技術(shù)實(shí)現(xiàn)??梢愿鶕?jù)自己所需,選擇不同的引擎,也可以為每一張表選擇不用的存儲(chǔ)引擎。可以使用??show engines;??語(yǔ)句來查看系統(tǒng)支持的存儲(chǔ)引擎。
mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ 9 rows in set (0.00 sec) mysql>
更改表的存儲(chǔ)引擎的語(yǔ)法:
alter table <表名> engine=<更改后的存儲(chǔ)引擎名>
到此這篇關(guān)于mysql數(shù)據(jù)庫(kù)表增添字段,刪除字段,修改字段的排列等操作的文章就介紹到這了,更多相關(guān)mysql字段操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Windows環(huán)境下安裝 mysql-8.0.11-winx64 遇到的問題
這篇文章主要介紹了Windows環(huán)境下安裝 mysql-8.0.11-winx64 遇到的問題及解決辦法 ,需要的朋友可以參考下2018-10-10
mysql 常用數(shù)據(jù)庫(kù)語(yǔ)句 小練習(xí)
一個(gè)mysql小練習(xí) 建表 查詢 修改表 增加字段 刪除字段2009-07-07
mysql 數(shù)據(jù)庫(kù)備份和還原方法集錦 推薦
本文討論 MySQL 的備份和恢復(fù)機(jī)制,以及如何維護(hù)數(shù)據(jù)表,包括最主要的兩種表類型:MyISAM 和 Innodb,文中設(shè)計(jì)的 MySQL 版本為 5.0.22。2010-03-03
Mysql調(diào)優(yōu)Explain工具詳解及實(shí)戰(zhàn)演練(推薦)
這篇文章主要介紹了Mysql調(diào)優(yōu)Explain工具詳解及實(shí)戰(zhàn)演練,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
mysql給字段添加默認(rèn)值的實(shí)現(xiàn)
在MySQL中可以使用語(yǔ)句來為現(xiàn)有字段添加默認(rèn)值,或者在創(chuàng)建表時(shí)直接指定默認(rèn)值,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-07-07
MySQL數(shù)據(jù)庫(kù)卸載以及刪除所有有關(guān)信息詳細(xì)步驟
在MySQL中數(shù)據(jù)刪除操作不僅僅是簡(jiǎn)單地將某一個(gè)或多個(gè)行刪除,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)卸載以及刪除所有有關(guān)信息的詳細(xì)步驟,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06

