我们在操作一张表之前,如果怕误删除数据,可以进行事先备份。
一:复制表结构
方法1:
MySQL [test]> create table csvmy like mycsv; //仅仅复制表结构
Query OK, 0 rows affected (0.03 sec)
MySQL [test]> show tables;
+----------------+
| Tables_in_test |
+----------------+
| csvmy |
| mycsv |
+----------------+
方法2:
MySQL [test]> create table csv select * from mycsv limit 0;
Query OK, 0 rows affected (0.03 sec) //仅仅复制表结构
Records: 0 Duplicates: 0 Warnings: 0
MySQL [test]> show tables;
+----------------+
| Tables_in_test |
+----------------+
| csv |
| csvmy |
| mycsv |
+----------------+
3 rows in set (0.01 sec)
方法3:
MySQL [test]> show create table mycsv\G;
*************************** 1. row ***************************
Table: mycsv
Create Table: CREATE TABLE `mycsv` (
`id` int(11) NOT NULL,
`c1` varchar(10) NOT NULL,
`c2` char(20) NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8mb4
1 row in set (0.00 sec)
获得创建表的sql语句,然后复制语句,修改表名。
二,复制表结构,以及表数据
方法1:
MySQL [test]> create table a select * from mycsv;
Query OK, 3 rows affected (0.04 sec)
Records: 3 Duplicates: 0 Warnings: 0
MySQL [test]> select * from a;
+----+-----+-----+
| id | c1 | c2 |
+----+-----+-----+
| 1 | aaa | bbb |
| 2 | ccc | ddd |
| 3 | eee | fff |
+----+-----+-----+
3 rows in set (0.01 sec)
方法2:
mysql> create table d select user_name,user_pass from users where id=1;
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
方法3:
先创建一个空表, INSERT INTO 新表 SELECT * FROM 旧表 ,或者
INSERT INTO 新表(字段1,字段2,…….) SELECT 字段1,字段2,…… FROM 旧表