MySQL rename table语句


• Rename table语句用来重命名一个或多个表名

mysql> show tables;
+------------------+
| Tables_in_course |
+------------------+
| course           |
| dept             |
| dept_bak         |
| scores           |
| students         |
| students2        |
| students3        |
| students_tmp     |
| teacher          |
| teacher_backup   |
| v_1              |
+------------------+
11 rows in set (0.01 sec)

mysql> rename table students2 to students_bak;
Query OK, 0 rows affected (0.11 sec)

mysql> show tables;
+------------------+
| Tables_in_course |
+------------------+
| course           |
| dept             |
| dept_bak         |
| scores           |
| students         |
| students3        |
| students_bak     |
| students_tmp     |
| teacher          |
| teacher_backup   |
| v_1              |
+------------------+
11 rows in set (0.00 sec)

mysql> show create table students_bak;
+--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table        | Create Table                                                                                                                                                                                                                                 |
+--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| students_bak | CREATE TABLE `students_bak` (
  `sid` int(11) NOT NULL DEFAULT '0',
  `sname` varchar(64) DEFAULT NULL,
  `gender` varchar(12) DEFAULT NULL,
  `dept_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)

mysql> show create table students;
+----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table    | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
+----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| students | CREATE TABLE `students` (
  `sid` int(11) NOT NULL AUTO_INCREMENT,
  `sname` varchar(64) DEFAULT NULL,
  `gender` varchar(12) DEFAULT NULL,
  `dept_id` int(11) NOT NULL,
  PRIMARY KEY (`sid`),
  UNIQUE KEY `idx_1` (`sname`),
  KEY `for_1` (`dept_id`),
  KEY `idx_123` (`sid`,`sname`),
  KEY `idx_124` (`sid`),
  KEY `idx_126` (`sname`),
  CONSTRAINT `for_1` FOREIGN KEY (`dept_id`) REFERENCES `dept` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=102 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> rename table dept to dept_2;
Query OK, 0 rows affected (0.14 sec)

mysql> show create table students;
+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table    | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| students | CREATE TABLE `students` (
  `sid` int(11) NOT NULL AUTO_INCREMENT,
  `sname` varchar(64) DEFAULT NULL,
  `gender` varchar(12) DEFAULT NULL,
  `dept_id` int(11) NOT NULL,
  PRIMARY KEY (`sid`),
  UNIQUE KEY `idx_1` (`sname`),
  KEY `for_1` (`dept_id`),
  KEY `idx_123` (`sid`,`sname`),
  KEY `idx_124` (`sid`),
  KEY `idx_126` (`sname`),
  CONSTRAINT `for_1` FOREIGN KEY (`dept_id`) REFERENCES `dept_2` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=102 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

• Rename table能将表中的数据,索引,主键定义都自动转换到新表下,但视图和对原表分配的权限不能自动转换到新表,需要手动执行

mysql> desc students;
+---------+-------------+------+-----+---------+----------------+
| Field   | Type        | Null | Key | Default | Extra          |
+---------+-------------+------+-----+---------+----------------+
| sid     | int(11)     | NO   | PRI | NULL    | auto_increment |
| sname   | varchar(64) | YES  | UNI | NULL    |                |
| gender  | varchar(12) | YES  |     | NULL    |                |
| dept_id | int(11)     | NO   | MUL | NULL    |                |
+---------+-------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)

mysql>  CREATE TABLE `students_new` (
    ->   `sid` int(11) NOT NULL AUTO_INCREMENT,
    ->   `sname` varchar(64) DEFAULT NULL,
    ->   `gender` varchar(12) DEFAULT NULL,
    ->   `dept_id` int(11) NOT NULL,
    ->   sname2 varchar(12)
    -> );
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
mysql> CREATE TABLE `students_new` (
    ->   `sid` int(11) NOT NULL,
    ->   `sname` varchar(64) DEFAULT NULL,
    ->   `gender` varchar(12) DEFAULT NULL,
    ->   `dept_id` int(11) NOT NULL,
    ->   sname2 varchar(12)
    -> );
Query OK, 0 rows affected (0.10 sec)

mysql> insert into students_new(sid,sname,gender,dept_id) select * from students;
Query OK, 5 rows affected (0.02 sec)
Records: 5  Duplicates: 0  Warnings: 0

 



 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM