MySQL复制表-INSERT INTO SELECT
基础table为:
mysql> select * from staff;
+----+----------+-------+
| id | name | slary |
+----+----------+-------+
| | haofugui | |
| | guoming | |
| | haotian | |
+----+----------+-------+
rows in set (0.00 sec) mysql> describe staff;
+-------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+----------------+
| id | int() | NO | PRI | NULL | auto_increment |
| name | char() | YES | | NULL | |
| slary | int() | YES | | NULL | |
+-------+----------+------+-----+---------+----------------+
rows in set (0.00 sec)
INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表(目标表)中,目标表中任何已存在的行都不会受影响。
语句1:Insert into Table2(field1,field2,…) select value1,value2,… from Table1 where condition;
语句2:Insert into Table2 select * from Table1;
说明:1)目标表Table2必须存在,MySQL不会自动创建;
2)语句1一般用于两个表结构一致的情况,而语句2用于表结构不一致的情况;
3)语句1中涉及的field1,field2也必须存在;
4)若Table2有主键且不具备自动增长,则 field1, field2…中必须包括主键。
示例:
mysql> create table staff_bak_1 like staff;
Query OK, rows affected (0.05 sec) mysql> describe staff_bak_1; //创建了一个与staff数据结构一致的空数据库,包括主键和自动增长等
+-------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+----------------+
| id | int() | NO | PRI | NULL | auto_increment |
| name | char() | YES | | NULL | |
| slary | int() | YES | | NULL | |
+-------+----------+------+-----+---------+----------------+
rows in set (0.01 sec) mysql> select * from staff_bak_1;
Empty set (0.00 sec) mysql> insert into staff_bak_1 select * from staff;//将staff内的数据全部复制到刚才创建的空数据库
Query OK, rows affected (0.00 sec)
Records: Duplicates: Warnings: mysql> select * from staff_bak_1; //结果
+----+----------+-------+
| id | name | slary |
+----+----------+-------+
| | haofugui | |
| | guoming | |
| | haotian | |
+----+----------+-------+
rows in set (0.00 sec)
mysql> create table staff_bak_2 //创建一个空数据库
-> (id int auto_increment primary key,
-> name char());
Query OK, rows affected (0.05 sec) mysql> describe staff_bak_2;
+-------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+----------------+
| id | int() | NO | PRI | NULL | auto_increment |
| name | char() | YES | | NULL | |
+-------+----------+------+-----+---------+----------------+
rows in set (0.01 sec) mysql> insert into staff_bak_2(name) select name from staff where id!=5; //带where子句,将指定的记录复制到新表中。
Query OK, rows affected (0.00 sec)
Records: Duplicates: Warnings: mysql> select * from staff_bak_2; //结果
+----+----------+
| id | name |
+----+----------+
| | haofugui |
| | guoming |
+----+----------+
rows in set (0.00 sec)
MySQL复制表-INSERT INTO SELECT的更多相关文章
- MySQL复制表结构表数据
MySQL复制表结构 表数据 1.复制表结构及数据到新表CREATE TABLE 新表 SELECT * FROM 旧表这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete ...
- mysql复制表数据或表结构到新表中
MySQL复制表数据到新表的几个步骤. 1.MySQL复制表结构及数据到新表 CREATE TABLE new_table SELECT * FROM old_table; 2.只复制表结构到新表 C ...
- Mysql 复制表结构 及其表的内容
顺便转一下Mysql复制表结构.表数据的方法: 1.复制表结构及数据到新表CREATE TABLE 新表 SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们 ...
- mysql复制表以及复制数据库
(一)将旧表复制到新表 1.CREATE TABLE新表 SELECT* FROM旧表; 该语句只是复制表结构以及数据,它不会复制与表关联的其他数据库对象,如索引,主键约束,外键约束,触发器等. CR ...
- mysql复制表数据,多表数据复制到一张表
对于mysql 复制表数据可以使用 insert into select 方式 示例: $sql="insert into icarzoo.provider(providerId,provi ...
- Mysql 复制表数据(表结构相同)
[1]Mysql 复制表数据(表结构相同) -- 方式一: create table table_name_dest as select * from table_name_src; -- 方式二: ...
- mysql复制表的两种方式
mysql复制表的两种方式. 第一.只复制表结构到新表 create table 新表 select * from 旧表 where 1=2 或者 create table 新表 like 旧表 第二 ...
- oracle数据库【表复制】insert into select from跟create table as select * from 两种表复制语句区别
create table as select * from和insert into select from两种表复制语句区别 create table targer_table as select ...
- MySQL 复制表结构
200 ? "200px" : this.width)!important;} --> 介绍 有时候我们需要原封不动的复制一张表的表结构来生成一张新表,MYSQL提供了两种便 ...
- mysql 复制表结构、表数据的方法
From: http://blog.163.com/yaoyingying681@126/blog/static/109463675201191173221759/ MySQL 添加列,修改列,删除列 ...
随机推荐
- C#基础概念总结
C#基础概念总结 1..NET Framework概念 2. C#的含义: 3.什么是面向对象编程: 4.Visual Studio开发工具: 5..NET程序运行的机制: 1..Net Framew ...
- hadoop三个配置文件的参数含义说明
1 获取默认配置 配置hadoop,主要是配置core-site.xml,hdfs-site.xml,mapred-site.xml三个配置文件,默认下来,这些配置文件都是空的,所以很难知 ...
- A计划 HDU - 2102
A计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- Python基础听课笔记
需求:为8位老师随机分配办公室 #先定义一个列表用来存储8位老师的姓名 teachers = ['xiaowang', 'xiaoli', 'xiangming', 'xiaohua', 'xiaog ...
- ionic3 添加多个自定义组件
往往我们创建自定义组件一般都不止只会创建一个自定义组件,创建多个方式如下. 1.创建自定义组件 ionic g component select-car-no ionic g component ae ...
- Elasticsearch学习笔记(十一)Mapping原理
一.Mapping的功能作用 Mapping是定义如何存储和索引一个document及其所包含字段的过程. Mapping是index和type的元数据,每个type都有自己的一个mapping,决定 ...
- numpy(一)
np.zeros(10,dtype=int) #创建全为0的一位数组 np.ones((3,5),dtype=float) #创建3*5的二维全为1的数组 np.full((3,5),3.14) #创 ...
- 44-0-STM32的CAN外设
1.RS-485 协议主要是把 RS-232 的信号改进成差分信号,从而大大提高了抗干扰特性: 在 RS-485 通讯网络中,节点中的串口控制器使用 RX 与 TX信号线连接到收发器上,而收发器通过差 ...
- 读高性能MySql笔记
1.1 MySQL逻辑架构 MySql服务器逻辑架构图 1.连接管理与安全性 每个客户端连接都会在服务器进程中拥有一个线程,这个连接的查询只会在这个单独的线程中执行,该线程只能轮流在某个CPU核心或者 ...
- what's the 黑盒测试
what's the 黑盒测试 黑盒测试是把测试对象看做一个黑盒子,利用黑盒测试法进行动态测试时,需要测试软件产品已经实现的功能是否符合功能设计要求,不需测试软件产品的内部结构和处理过程. 黑盒测试注 ...