7.1复制表的列结构和记录
1.使用select的结果复制
使用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 表名
