mysql數據庫表增添字段,刪除字段,修改字段的排列等操作

修改表指的是修改數據庫之後中已經存在的數據表的結構。​​mysql​​​使用​​alter table​​語句修改表。常用的修改表的操作有修改表名、修改字段數據類型或者字段名、增加和刪除字段、修改字段的排列位置、更改表的存儲引擎、刪除表的外鍵約束等。

一、mysql修改表名

語法:

ALTER TABLE <舊表名> RENAME [to] <新表名>

上面語句中的​​to​​為可選,存在與否不影響運行結果。

舉個栗子:

將​​test_user_2​​​這個數據表,改名為​​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>

然後我們執行語句:

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>

註意:修改的隻是數據表名,實際上字段和數據內容都沒有發生變化。

二、mysql修改數據的字段類型

修改字段的數據類型,就是把字段的數據類型轉換成另一種數據類型。

語法:

alter table <表名> modify <字段名> <數據類型>

舉個栗子:

修改​​test_user_two​​​這個表中的​​money​​​字段的數據類型,由​​float​​​改為​​int​​類型。

首先看下這個表中的數據結構;

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>

然後執行如下語句進行修改;

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​​這個表中的數據結構是否發生變化瞭。

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 <舊字段名> <新字段名> <新數據類型>;

舉個栗子:

將​​test_user_two​​​表中的​​money​​​字段改成​​howmoney​​​,數據類型為​​int​​;

執行語句:

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​​數據庫的數據結構是什麼;

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>

可以看到,已經將字段修改完畢瞭。

四、mysql添加字段

語法:

alter table <表名> add <新字段名> <數據類型> [約束條件] [first | after 已存在字段名]

新字段名為需要添加的字段的名稱;​​first​​​為可選參數,其作用是將新添加的字段設置為表的第一個字段;​​after​​為可選參數,其作用是將新添加的字段添加到指定的“已存在字段名” 的後面。

​first​​​或​​after 已存在字段名​​​用於指定新增字段在表中的位置,如果​​SQL​​語句中沒有這兩個參數,則默認將新添加的字段設置為數據表的最後一列。

舉幾個栗子:

1、添加沒有約束性的字段

在數據表​​test_user_two​​​中添加一個沒有完整性約束的​​int​​​類型的字段​​year​​(入職幾年);

執行​​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​​​,數據類型是​​int​​,且不可為空的字段;

執行相關​​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​​​數據表第一列添加一個名字​​year2​​​,數據類型是​​int​​的字段。

執行相關​​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、在數據表中指定列之後添加一個字段

在​​test_user_two​​​這個數據庫中​​name​​​字段之後,添加一個名為​​name2​​​,數據類型是​​varchar(50)​​的字段;

執行​​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​​​數據庫中剛添加的​​year2​​字段刪除;

執行​​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>

可以看到已經將名為​​year2​​的字段進行刪除瞭。

六、mysql修改字段的排列位置

有時候我們會面臨修改數據表中某些字段的排列位置,比如說將某一個字段排到第一個,或者是將某個字段後移,看下如何操作。

語法:

alter table <表名> modify <字段1> <數據類型> first | after <字段2>;

“字段1” 指要修改位置的字段;“數據類型” 指 “字段1” 的數據類型;“​​First​​​” 為可選參數,指將 “字段1” 修改為表的第一個字段;“​​after​​ 字段2” 指將 “字段1” 插入到 “字段2” 後面。

舉兩個栗子;

1、修改字段為表的第一個字段

比如我們將​​test_user_two​​​這個數據表中名為​​name2​​的字段,修改成這個對應數據表中第一個字段;

執行​​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>

可以看到我們已經成功將​​name2​​這個字段修改成第一個字段瞭;

2、修改字段為指定列後面

比如我們將​​test_user_two​​​這個表中的​​name2​​​字段,讓他移動到​​year​​這個字段後面;

執行​​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>

可以發現,已經將​​test_user_two​​​這個數據庫中的​​name2​​​字段,移動到瞭​​year​​字段之後。

七、mysql更改表的存儲引擎

存儲引擎是​​mysql​​​中的數據存儲在文件或者內存中時采用的不用技術實現。可以根據自己所需,選擇不同的引擎,也可以為每一張表選擇不用的存儲引擎。可以使用​​show engines;​​語句來查看系統支持的存儲引擎。

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數據庫表增添字段,刪除字段,修改字段的排列等操作的文章就介紹到這瞭,更多相關mysql字段操作內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: