mysql數(shù)據(jù)庫表增添字段,刪除字段,修改字段的排列等操作
修改表指的是修改數(shù)據(jù)庫之后中已經(jīng)存在的數(shù)據(jù)表的結構。?
?mysql?
??使用??alter table?
?語句修改表。常用的修改表的操作有修改表名、修改字段數(shù)據(jù)類型或者字段名、增加和刪除字段、修改字段的排列位置、更改表的存儲引擎、刪除表的外鍵約束等。
一、mysql修改表名
語法:
ALTER TABLE <舊表名> RENAME [to] <新表名>
上面語句中的??to?
?為可選,存在與否不影響運行結果。
舉個栗子:
將??test_user_2?
??這個數(shù)據(jù)表,改名為??test_user_two?
?;
首先我們查看下原來的內容;
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í)行語句:
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ù)據(jù)內容都沒有發(fā)生變化。
二、mysql修改數(shù)據(jù)的字段類型
修改字段的數(shù)據(jù)類型,就是把字段的數(shù)據(jù)類型轉換成另一種數(shù)據(jù)類型。
語法:
alter table <表名> modify <字段名> <數(shù)據(jù)類型>
舉個栗子:
修改??test_user_two?
??這個表中的??money?
??字段的數(shù)據(jù)類型,由??float?
??改為??int?
?類型。
首先看下這個表中的數(shù)據(jù)結構;
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í)行如下語句進行修改;
mysql> alter table test_user_two modify money int; Query OK, 0 rows affected (0.09 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql>
修改完畢之后我們再看下??test_user_db?
?這個表中的數(shù)據(jù)結構是否發(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修改字段名
語法:
alter table <表名> change <舊字段名> <新字段名> <新數(shù)據(jù)類型>;
舉個栗子:
將??test_user_two?
??表中的??money?
??字段改成??howmoney?
??,數(shù)據(jù)類型為??int?
?;
執(zhí)行語句:
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>
然后我們再看下此時這個??test_user_two?
?數(shù)據(jù)庫的數(shù)據(jù)結構是什么;
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添加字段
語法:
alter table <表名> add <新字段名> <數(shù)據(jù)類型> [約束條件] [first | after 已存在字段名]
新字段名為需要添加的字段的名稱;??first?
??為可選參數(shù),其作用是將新添加的字段設置為表的第一個字段;??after?
?為可選參數(shù),其作用是將新添加的字段添加到指定的“已存在字段名” 的后面。
??first?
??或??after 已存在字段名?
??用于指定新增字段在表中的位置,如果??SQL?
?語句中沒有這兩個參數(shù),則默認將新添加的字段設置為數(shù)據(jù)表的最后一列。
舉幾個栗子:
1、添加沒有約束性的字段
在數(shù)據(jù)表??test_user_two?
??中添加一個沒有完整性約束的??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>
然后我們查看下修改之后的表結構;
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、添加一個有約束性的字段
在??test_user_two?
??表中添加一個名為??year1?
??,數(shù)據(jù)類型是??int?
?,且不可為空的字段;
執(zhí)行相關??sql?
?語句;
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>
看下表結構;
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、在表的第一列添加一個字段
在??test_user_two?
??數(shù)據(jù)表第一列添加一個名字??year2?
??,數(shù)據(jù)類型是??int?
?的字段。
執(zhí)行相關??sql?
?語句;
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>
看下修改之后的表結構是什么;
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ù)表中指定列之后添加一個字段
在??test_user_two?
??這個數(shù)據(jù)庫中??name?
??字段之后,添加一個名為??name2?
??,數(shù)據(jù)類型是??varchar(50)?
?的字段;
執(zhí)行??sql?
?語句;
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>
可以再次看下表結構;
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>
可以看到,每次我們都會對這個表結構進行相關的修改。
五、mysql刪除字段
語法:
alter table <表名> drop <字段名>;
舉個栗子;
比如我們想將??test_user_two?
??數(shù)據(jù)庫中剛添加的??year2?
?字段刪除;
執(zhí)行??sql?
?語句為:
看下表結構;
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?
?的字段進行刪除了。
六、mysql修改字段的排列位置
有時候我們會面臨修改數(shù)據(jù)表中某些字段的排列位置,比如說將某一個字段排到第一個,或者是將某個字段后移,看下如何操作。
語法:
alter table <表名> modify <字段1> <數(shù)據(jù)類型> first | after <字段2>;
“字段1” 指要修改位置的字段;“數(shù)據(jù)類型” 指 “字段1” 的數(shù)據(jù)類型;“??First?
??” 為可選參數(shù),指將 “字段1” 修改為表的第一個字段;“??after?
? 字段2” 指將 “字段1” 插入到 “字段2” 后面。
舉兩個栗子;
1、修改字段為表的第一個字段
比如我們將??test_user_two?
??這個數(shù)據(jù)表中名為??name2?
?的字段,修改成這個對應數(shù)據(jù)表中第一個字段;
執(zhí)行??sql?
?語句;
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>
查看下表結構;
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?
?這個字段修改成第一個字段了;
2、修改字段為指定列后面
比如我們將??test_user_two?
??這個表中的??name2?
??字段,讓他移動到??year?
?這個字段后面;
執(zhí)行??sql?
?語句;
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>
看下表結構;
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?
??這個數(shù)據(jù)庫中的??name2?
??字段,移動到了??year?
?字段之后。
七、mysql更改表的存儲引擎
存儲引擎是?
?mysql?
??中的數(shù)據(jù)存儲在文件或者內存中時采用的不用技術實現(xiàn)??梢愿鶕?jù)自己所需,選擇不同的引擎,也可以為每一張表選擇不用的存儲引擎??梢允褂??show engines;?
?語句來查看系統(tǒng)支持的存儲引擎。
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>
更改表的存儲引擎的語法:
alter table <表名> engine=<更改后的存儲引擎名>
到此這篇關于mysql數(shù)據(jù)庫表增添字段,刪除字段,修改字段的排列等操作的文章就介紹到這了,更多相關mysql字段操作內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
在win10系統(tǒng)下安裝Mysql 5.7.17圖文教程
因為想要在公司電腦上安裝Mysql,于是到官網(wǎng)上下載了最新版本的Mysql-5.7.17,其實安裝方法也很簡單,下面小編把安裝過程分享到腳本之家平臺供大家參考2017-03-03mysql中l(wèi)eft join設置條件在on與where時的用法區(qū)別分析
這篇文章主要介紹了mysql中l(wèi)eft join設置條件在on與where時的用法區(qū)別,結合實例形式分析了mysql中l(wèi)eft join設置條件在on與where時的相關用法區(qū)別與操作注意事項,需要的朋友可以參考下2020-02-02淺談MySQL數(shù)據(jù)同步到 Redis 緩存的幾種方法
本文主要介紹了淺談MySQL數(shù)據(jù)同步到 Redis 緩存的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-03-03Mysql:The user specified as a definer (''xxx@''%'') does not
今天小編就為大家分享一篇關于Mysql:The user specified as a definer ('xxx@'%') does not exist的解決方案,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12