mysql數(shù)據(jù)庫(kù)表增添字段,刪除字段,修改字段的排列等操作
修改表指的是修改數(shù)據(jù)庫(kù)之后中已經(jīng)存在的數(shù)據(jù)表的結(jié)構(gòu)。?
?mysql?
??使用??alter table?
?語(yǔ)句修改表。常用的修改表的操作有修改表名、修改字段數(shù)據(jù)類(lèi)型或者字段名、增加和刪除字段、修改字段的排列位置、更改表的存儲(chǔ)引擎、刪除表的外鍵約束等。
一、mysql修改表名
語(yǔ)法:
ALTER TABLE <舊表名> RENAME [to] <新表名>
上面語(yǔ)句中的??to?
?為可選,存在與否不影響運(yùn)行結(jié)果。
舉個(gè)栗子:
將??test_user_2?
??這個(gè)數(shù)據(jù)表,改名為??test_user_two?
?;
首先我們查看下原來(lái)的內(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)容都沒(méi)有發(fā)生變化。
二、mysql修改數(shù)據(jù)的字段類(lèi)型
修改字段的數(shù)據(jù)類(lèi)型,就是把字段的數(shù)據(jù)類(lèi)型轉(zhuǎn)換成另一種數(shù)據(jù)類(lèi)型。
語(yǔ)法:
alter table <表名> modify <字段名> <數(shù)據(jù)類(lèi)型>
舉個(gè)栗子:
修改??test_user_two?
??這個(gè)表中的??money?
??字段的數(shù)據(jù)類(lèi)型,由??float?
??改為??int?
?類(lèi)型。
首先看下這個(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ù)類(lèi)型>;
舉個(gè)栗子:
將??test_user_two?
??表中的??money?
??字段改成??howmoney?
??,數(shù)據(jù)類(lèi)型為??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ù)類(lèi)型> [約束條件] [first | after 已存在字段名]
新字段名為需要添加的字段的名稱(chēng);??first?
??為可選參數(shù),其作用是將新添加的字段設(shè)置為表的第一個(gè)字段;??after?
?為可選參數(shù),其作用是將新添加的字段添加到指定的“已存在字段名” 的后面。
??first?
??或??after 已存在字段名?
??用于指定新增字段在表中的位置,如果??SQL?
?語(yǔ)句中沒(méi)有這兩個(gè)參數(shù),則默認(rèn)將新添加的字段設(shè)置為數(shù)據(jù)表的最后一列。
舉幾個(gè)栗子:
1、添加沒(méi)有約束性的字段
在數(shù)據(jù)表??test_user_two?
??中添加一個(gè)沒(méi)有完整性約束的??int?
??類(lèi)型的字段??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ù)類(lèi)型是??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ù)類(lèi)型是??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ù)類(lèi)型是??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ù)表中某些字段的排列位置,比如說(shuō)將某一個(gè)字段排到第一個(gè),或者是將某個(gè)字段后移,看下如何操作。
語(yǔ)法:
alter table <表名> modify <字段1> <數(shù)據(jù)類(lèi)型> first | after <字段2>;
“字段1” 指要修改位置的字段;“數(shù)據(jù)類(lèi)型” 指 “字段1” 的數(shù)據(jù)類(lèi)型;“??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ǔ)句來(lái)查看系統(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)文章
MySQL 千萬(wàn)級(jí)數(shù)據(jù)量如何快速分頁(yè)
這篇文章主要介紹了MySQL 千萬(wàn)級(jí)數(shù)據(jù)量如何快速分頁(yè),幫助大家提高M(jìn)ySQL數(shù)據(jù)庫(kù)的性能,感興趣的朋友可以了解下2020-09-09在win10系統(tǒng)下安裝Mysql 5.7.17圖文教程
因?yàn)橄胍诠倦娔X上安裝Mysql,于是到官網(wǎng)上下載了最新版本的Mysql-5.7.17,其實(shí)安裝方法也很簡(jiǎn)單,下面小編把安裝過(guò)程分享到腳本之家平臺(tái)供大家參考2017-03-03mysql中l(wèi)eft join設(shè)置條件在on與where時(shí)的用法區(qū)別分析
這篇文章主要介紹了mysql中l(wèi)eft join設(shè)置條件在on與where時(shí)的用法區(qū)別,結(jié)合實(shí)例形式分析了mysql中l(wèi)eft join設(shè)置條件在on與where時(shí)的相關(guān)用法區(qū)別與操作注意事項(xiàng),需要的朋友可以參考下2020-02-02MySQL 字符串拆分實(shí)例(無(wú)分隔符的字符串截取)
這篇文章主要介紹了MySQL 字符串拆分實(shí)例(無(wú)分隔符的字符串截取),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02淺談MySQL數(shù)據(jù)同步到 Redis 緩存的幾種方法
本文主要介紹了淺談MySQL數(shù)據(jù)同步到 Redis 緩存的幾種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03Mysql:The user specified as a definer (''xxx@''%'') does not
今天小編就為大家分享一篇關(guān)于Mysql:The user specified as a definer ('xxx@'%') does not exist的解決方案,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12