7.1复制表的列结构和记录

1.使用select的结果复制

  1. 使用select的结果复制列结构和记录,然后创建新的表,虽然该方法会将包括记录在内的整个表复制过来,但是该方法不能复制auto_increment等属性。这些属性在需要在赋值后再次进行设置<br />** 语法:使用select执行create**

create table 新表名 select*from 源表名

示列:复制表bt1创建表tb_bk

mysql> create table tb_bk select*from tb1;
Query OK, 6 rows affected (0.02 sec)
Records: 6  Duplicates: 0  Warnings: 0
mysql> desc tb_bk;
+-------+-------------+------+-----+------------+-------+
| Field | Type        | Null | Key | Default    | Extra |
+-------+-------------+------+-----+------------+-------+
| empid | varchar(10) | YES  |     | NULL       |       |
| name  | varchar(10) | YES  |     | 未输入名字 |       |
| age   | int(11)     | YES  |     | NULL       |       |
+-------+-------------+------+-----+------------+-------+
3 rows in set (0.00 sec)
mysql> select*from tb_bk;
+-------+------------+------+
| empid | name       | age  |
+-------+------------+------+
| A101  | 佐藤       |   40 |
| A102  | 高桥       |   28 |
| A103  | 中川       |   20 |
| A104  | 渡边       |   23 |
| A105  | 西泽       |   35 |
| N110  | 未输入名字 |   25 |
+-------+------------+------+
6 rows in set (0.00 sec)

mysql>

2.like复制

在create table 命名的表名后面加上like指定要复制的表,这样虽不会复制表中的记录,但会赋值auto_increment和primary key等列的属性 <br />  **语法:**

create table 新表名 like 源表名

列:复制tb1创建新表tb_bkc;

mysql> create table tb_bkc like tb1;
Query OK, 0 rows affected (0.01 sec)

mysql> desc tb_bkc;
+-------+-------------+------+-----+------------+-------+
| Field | Type        | Null | Key | Default    | Extra |
+-------+-------------+------+-----+------------+-------+
| empid | varchar(10) | YES  |     | NULL       |       |
| name  | varchar(10) | YES  |     | 未输入名字 |       |
| age   | int(11)     | YES  |     | NULL       |       |
+-------+-------------+------+-----+------------+-------+
3 rows in set (0.00 sec)

mysql> select* from tb_bkc;
Empty set (0.00 sec)

mysql>

7.2复制表的记录

7.2.1复制其他表记录

我们可以使用下面的方法复制具有相同列结构的表的记录
语法:

insert into 表名 select*from 源表名

示列:将tb1中的记录复制到tb_bkc中(注意tb_bkc是有tb1复制过来的,两者具有相同的列结构)


mysql> insert into tb_bkc select*from tb1;
Query OK, 6 rows affected (0.00 sec)
Records: 6  Duplicates: 0  Warnings: 0
mysql> select*from tb_bkc;
+-------+------------+------+
| empid | name       | age  |
+-------+------------+------+
| A101  | 佐藤       |   40 |
| A102  | 高桥       |   28 |
| A103  | 中川       |   20 |
| A104  | 渡边       |   23 |
| A105  | 西泽       |   35 |
| N110  | 未输入名字 |   25 |
+-------+------------+------+
6 rows in set (0.00 sec)

mysql>

7.2.2选择某一列进行复制

我们可以从源表中选择某一列进行复制<br />**  示列:**<br />   想tb_bkc中的name列插入tb1表中的empid记录
mysql> insert into tb_bkc (name) select empid from tb1;
Query OK, 6 rows affected (0.00 sec)
Records: 6  Duplicates: 0  Warnings: 0

mysql> select * from tb_bkc;
+-------+------------+------+
| empid | name       | age  |
+-------+------------+------+
| A101  | 佐藤       |   40 |
| A102  | 高桥       |   28 |
| A103  | 中川       |   20 |
| A104  | 渡边       |   23 |
| A105  | 西泽       |   35 |
| N110  | 未输入名字 |   25 |
| NULL  | A101       | NULL |
| NULL  | A102       | NULL |
| NULL  | A103       | NULL |
| NULL  | A104       | NULL |
| NULL  | A105       | NULL |
| NULL  | N110       | NULL |
+-------+------------+------+
12 rows in set (0.00 sec)

mysql>
注意,如果数据类型不一致,复制操作可能会失败 

7.3删除表、数据库、和记录

7.3.1删除表:

     **语法:**

drop table 表名

示列:删除表tbA1;

mysql> drop table tba1;
Query OK, 0 rows affected (0.01 sec)
扩展在table后面加上if exists,就表示如果表存在就删除。这样就能避免表不存在,发生错误啦。
mysql> drop table if exists tba1;
Query OK, 0 rows affected, 1 warning (0.00 sec)

7.3.2删除数据库

语法

drop databse 数据库名

7.3.3删除所有记录

删除表中的所有记录 <br /> 语法

delete from 表名