MYSQL資料庫(九)- 修改資料表名稱、列名稱
目錄
一、修改列定義(modify col_name)
二、修改列型別(modify col_name)
三、修改列名稱(change col_name)
三、修改表名稱(rename table a to b)
用到的語句
a、修改列定義和名稱:
語法一:Alter table tbl_name modify[column] col_name [first|after col_name]
講解:更改 資料表 某某表 修改 【列】 列名稱 列定義 【位置|位置】
語法二:alter table tab_name change[column] old_name new_name [first|after col_name]
講解:更改 資料表 某某表 修改 【列】 列名稱 列定義 【位置|位置】
注意:語法二的功能要比語法一大很多,因為語法二既可以更改列定義,由可以更改列名稱
b、修改表名稱:
語法一: alter table tbl_name rename[to|as] new_tbl_name
講解:可以更改一張資料表名稱
語法二:rename table tbl_name to new_tbl_name [,tbl_name2 TO new_tbl_namew]……
講解:可以多表更改名稱
一、修改列定義(改變age列的位置,使用modify)
- 先確定我們資料庫存在我們操作的資料表city2
mysql> show columns from city2;//查詢資料表
+----------+----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------------------+------+-----+---------+-------+
| id | smallint(5) unsigned | NO | | 0 | |
| username | varchar(20) | NO | | NULL | |
| pid | smallint(5) unsigned | YES | | NULL | |
| age | tinyint(3) unsigned | NO | | NULL | |
+----------+----------------------+------+-----+---------+-------+
- 案例
//具體操作語句:更改資料表city2,修改age列 位於username之後
mysql> alter table city2 modify age tinyint unsigned NOT NULL after username;
Query OK, 0 rows affected (0.21 sec)//修改成功
//修改前age列位於pid之下
mysql> show columns from city2;
+----------+----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------------------+------+-----+---------+-------+
| id | smallint(5) unsigned | NO | | 0 | |
| username | varchar(20) | NO | | NULL | |
| pid | smallint(5) unsigned | YES | | NULL | |
| age | tinyint(3) unsigned | NO | | NULL | |
+----------+----------------------+------+-----+---------+-------+
//修改後,age位於username之下,pid之上
+----------+----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------------------+------+-----+---------+-------+
| id | smallint(5) unsigned | NO | | 0 | |
| username | varchar(20) | NO | | NULL | |
| age | tinyint(3) unsigned | NO | | NULL | |
| pid | smallint(5) unsigned | YES | | NULL | |
+----------+----------------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
二、修改列型別(修改age列的儲存型別,使用modify)
注意:由大型別改變成小型別的時候有可能造成資料的丟失
語句: alter table city2 modify age smallint unsigned NOT NULL;
解析:更改資料表city2 修改age列,型別:smallint,無符號,非空
//具體操作
mysql> alter table city2 modify age smallint unsigned NOT NULL;
Query OK, 0 rows affected (0.18 sec)//修改成功
//查詢資料表
mysql> show columns from city2;
//修改前,age的型別為tinyint
+----------+----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------------------+------+-----+---------+-------+
| id | smallint(5) unsigned | NO | | 0 | |
| username | varchar(20) | NO | | NULL | |
| age | tinyint(3) unsigned | NO | | NULL | |
| pid | smallint(5) unsigned | YES | | NULL | |
+----------+----------------------+------+-----+---------+-------+
//修改後,age的型別改變為smallint
+----------+----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------------------+------+-----+---------+-------+
| id | smallint(5) unsigned | NO | | 0 | |
| username | varchar(20) | NO | | NULL | |
| age | smallint(5) unsigned | NO | | NULL | |
| pid | smallint(5) unsigned | YES | | NULL | |
+----------+----------------------+------+-----+---------+-------+
三、修改列名稱(使用change改變列的名稱和型別,使用change)
注意:change col_name 不僅僅可以修改列定義,還可以修改列的名稱。
語法:alter table tab_name change[column] old_name new_name [first|after col_name]
解析:更改資料表某某,改變列 老列名 新列明 列定於【位置first|某列之後】
語法:alter table city2 change pid p_id tinyint unsigned not null
解析:更改資料表city2 改變pid列 老名稱:pid,新名稱:p_id,型別:tinyint ,無符號,非空。
mysql> alter table city2 change pid p_id tinyint unsigned not null;
Query OK, 0 rows affected (0.20 sec)//修改成功過
mysql> show columns from city2;
//修改前,資料表的名稱pid 型別為smallint
+----------+----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------------------+------+-----+---------+-------+
| id | smallint(5) unsigned | NO | | 0 | |
| username | varchar(20) | NO | | NULL | |
| age | smallint(5) unsigned | NO | | NULL | |
| pid | smallint(5) unsigned | YES | | NULL | |
+----------+----------------------+------+-----+---------+-------+
//修改後,pid列名稱改變為p_id,型別由smallint改變為tinyint
+----------+----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------------------+------+-----+---------+-------+
| id | smallint(5) unsigned | NO | | 0 | |
| username | varchar(20) | NO | | NULL | |
| age | smallint(5) unsigned | NO | | NULL | |
| p_id | tinyint(3) unsigned | NO | | NULL | |
+----------+----------------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
三、修改表名稱
- 注意:修改資料表的名稱有兩種方式。
//可以更改一張資料表
1、alter table tbl_name rename[to|as] new_tbl_name//可以為多張資料表修改名稱
2、rename table tbl_name to new_tbl_name [,tbl_name2 TO new_tbl_namew]……
- 一、方法一 單列改名
語句:show tables;
解析:檢視資料庫裡有那些資料表
語句:alter table city2 rename city222;
解析:更改資料表名稱tity2 更改為名稱city222
mysql> show tables;
+--------------+
| Tables_in_t1 |
+--------------+
| city |
| city1 |
| city2 |
| mm1 |
| mm2 |
| mm3 |
| sheng |
+--------------+
//我們修改city2的表名稱為city222
mysql> alter table city2 rename city222;
Query OK, 0 rows affected (0.07 sec)//修改成功
mysql> show tables;
//修改前,資料表city2存在
+--------------+
| Tables_in_t1 |
+--------------+
| city |
| city1 |
| city2 |
| mm1 |
| mm2 |
| mm3 |
| sheng |
+--------------+
//修改後,city2資料表變成了city222
+--------------+
| Tables_in_t1 |
+--------------+
| city |
| city1 |
| city222 |
| mm1 |
| mm2 |
| mm3 |
| sheng |
+--------------+
方法二,多列改名
mysql> rename table city to city_1,city222 to city2;
Query OK, 0 rows affected (0.17 sec)//修改成功
mysql> show tables;
//修改前,city和city111資料表存在
+--------------+
| Tables_in_t1 |
+--------------+
| city |
| city1 |
| city222 |
| mm1 |
| mm2 |
| mm3 |
| sheng |
+--------------+
//city和city111資料表的名稱 改變為了 city_1 和city2。
+--------------+
| Tables_in_t1 |
+--------------+
| city1 |
| city2 |
| city_1 |
| mm1 |
| mm2 |
| mm3 |
| sheng |
+--------------+