萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> sql rename table表重命名分析實例

sql rename table表重命名分析實例

rename table語法
rename table tbl_name to new_tbl_name    [, tbl_name2 to new_tbl_name2] ...本語句用於對一個或多個表進行重命名。

重命名操作自動進行,這意味著當重命名正在運行時,其它線程不能讀取任何表。例如,如果您有一個原有的表old_table,您可以創建另一個具有相同結構的空表new_table,然後用此空表替換原有的表:

create table new_table (...);rename table old_table to backup_table, new_table to old_table;如果此語句用於對多個表進行重命名,則重命名操作從左至右進行。如果您想要交換兩個表的名稱,您可以這樣做(假設不存在名稱為tmp_table的表):

rename table old_table to tmp_table,             new_table to old_table,             tmp_table to new_table;只要兩個數據庫教程位於同一文件系統中,您還可以對表進行重命名,把表從一個數據庫中移動到另一個數據庫中:

rename table current_db.tbl_name to other_db.tbl_name;當您執行rename時,您不能有被鎖定的表,也不能有處於活性狀態的事務。您還必須擁有原表的alter和drop權限,以及新表的create和insert權限。

如果mysql教程對多個表進行重命名時遇到了錯誤,mysql會對所有已被重命名的表進行反向重命名,返回到原來的狀態。

只要您不嘗試通過重命名把視圖加入另一個數據庫中,則rename table也可以用於視圖


陸上到mysql後,use test改變當前數據庫,具體步驟如下所示:

mysql> use test

reading table information for completion of table and column names

you can turn off this feature to get a quicker startup with -a

database changed

mysql> show tables; //查看表,有關show命令的用法本人博客有,請另外參考

+----------------+

| tables_in_test |

+----------------+

| articles       |

| me             |

| mytime         |

+----------------+

3 rows in set (0.01 sec)

mysql> desc mytime;

+-------+-----------+------+-----+-------------------+-------+

| field | type      | null | key | default           | extra |

+-------+-----------+------+-----+-------------------+-------+

| f1    | datetime  | yes  |     | null              |       |

| f2    | timestamp | no   |     | current_timestamp |       |

+-------+-----------+------+-----+-------------------+-------+

2 rows in set (0.02 sec)

mysql>   select * from mytime;

+---------------------+---------------------+

| f1                  | f2                  |

+---------------------+---------------------+

| 2008-12-18 17:32:48 | 2008-12-18 17:32:48 |

| 1234-12-12 11:23:45 | 0000-00-00 00:00:00 |

| 2034-12-12 11:23:45 | 2008-12-18 17:39:37 |

+---------------------+---------------------+

3 rows in set (0.03 sec)

mysql> create table  my  select * from mytime;

query ok, 3 rows affected (0.01 sec)

records: 3  duplicates: 0  warnings: 0

此操作相當於復制表,但也可以說重命名。我們得到了和原來一樣的表。如下:

mysql>   select * from my;

+---------------------+---------------------+

| f1                  | f2                  |

+---------------------+---------------------+

| 2008-12-18 17:32:48 | 2008-12-18 17:32:48 |

| 1234-12-12 11:23:45 | 0000-00-00 00:00:00 |

| 2034-12-12 11:23:45 | 2008-12-18 17:39:37 |

+---------------------+---------------------+

3 rows in set (0.00 sec)

此時我們可以刪除原來的mytime表

mysql> drop table mytime;

query ok, 0 rows affected (0.00 sec)

我們也可以用專門的sql語句實現。那就是rename命令,如下:

mysql> rename table mytime to my;

query ok, 0 rows affected (0.00 sec)

mysql>   select * from  mytime ;

error 1146 (42s02): table 'test.mytime' doesn't exist

mysql>   select * from  my ;

+---------------------+---------------------+

| f1                  | f2                  |

+---------------------+---------------------+

| 2008-12-18 17:32:48 | 2008-12-18 17:32:48 |

| 1234-12-12 11:23:45 | 0000-00-00 00:00:00 |

| 2034-12-12 11:23:45 | 2008-12-18 17:39:37 |

+---------------------+---------------------+

3 rows in set (0.00 sec)

還有就是alter table 表名1 rename to 表名2 ,如下所示:

mysql> alter table my rename to mytime;

query ok, 0 rows affected (0.01 sec)


一些其實實例語名

##mysql重命名表,建立外鍵,增、刪、改列名實例

##增加到某個字段之後
alter table tb_nippon_mms_info add province varchar(50) default null after retcode;
alter table tb_nippon_mms_info add city varchar(50) default null after province;

##增加到某個字段之前
alter table tb_nippon_mms_info add province varchar(50) default null before retcode;
alter table tb_nippon_mms_info add city varchar(50) default null before province;


##刪除名字為states的列
alter table tb_nine_integral_mo_info drop  column states ;

##改變手機號碼字段為約束鍵
alter table business.tb_nine_ticket_popedom change phone  phone  varchar(50)  not null unique;

##改變列名flag為states
alter table tb_nine_integral_mo_info change flag  states tinyint(1);


–重命名表
rename table t_softwareport to software_port;

–建立外鍵
alter table software_port add constraint fk_software_port_softwareprocessid foreign key (softwareprocessid)
references software_process (id) on delete restrict on update restrict;

 

copyright © 萬盛學電腦網 all rights reserved