基础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的更多相关文章

  1. MySQL复制表结构表数据

    MySQL复制表结构 表数据 1.复制表结构及数据到新表CREATE TABLE 新表 SELECT * FROM 旧表这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete ...

  2. mysql复制表数据或表结构到新表中

    MySQL复制表数据到新表的几个步骤. 1.MySQL复制表结构及数据到新表 CREATE TABLE new_table SELECT * FROM old_table; 2.只复制表结构到新表 C ...

  3. Mysql 复制表结构 及其表的内容

    顺便转一下Mysql复制表结构.表数据的方法: 1.复制表结构及数据到新表CREATE TABLE 新表 SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们 ...

  4. mysql复制表以及复制数据库

    (一)将旧表复制到新表 1.CREATE TABLE新表 SELECT* FROM旧表; 该语句只是复制表结构以及数据,它不会复制与表关联的其他数据库对象,如索引,主键约束,外键约束,触发器等. CR ...

  5. mysql复制表数据,多表数据复制到一张表

    对于mysql 复制表数据可以使用 insert into select 方式 示例: $sql="insert into icarzoo.provider(providerId,provi ...

  6. Mysql 复制表数据(表结构相同)

    [1]Mysql 复制表数据(表结构相同) -- 方式一: create table table_name_dest as select * from table_name_src; -- 方式二: ...

  7. mysql复制表的两种方式

    mysql复制表的两种方式. 第一.只复制表结构到新表 create table 新表 select * from 旧表 where 1=2 或者 create table 新表 like 旧表 第二 ...

  8. 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 ...

  9. MySQL 复制表结构

    200 ? "200px" : this.width)!important;} --> 介绍 有时候我们需要原封不动的复制一张表的表结构来生成一张新表,MYSQL提供了两种便 ...

  10. mysql 复制表结构、表数据的方法

    From: http://blog.163.com/yaoyingying681@126/blog/static/109463675201191173221759/ MySQL 添加列,修改列,删除列 ...

随机推荐

  1. 5、faker.js数据模拟

    转载于:https://segmentfault.com/a/1190000008574028 今天发现了一个神器--json-server!在他的帮助下可以在很短的时间内搭建一个Rest API, ...

  2. git开发过程中的使用流程

    001.创建仓库 002.新建项目 003.初始化仓库  这一步不需要做 git init : 文件夹中会多出一个隐藏的.git文件 004.克隆项目 git clone <项目地址> 0 ...

  3. linux用户添加组

    usermod -G groupname username (这种会把用户从其他组中去掉,只属于该组)如:usermod -G git git (git只属于git组) usermod -a -G g ...

  4. ST表 || RMQ问题 || BZOJ 1699: [Usaco2007 Jan]Balanced Lineup排队 || Luogu P2880 [USACO07JAN]平衡的阵容Balanced Lineup

    题面:P2880 [USACO07JAN]平衡的阵容Balanced Lineup 题解: ST表板子 代码: #include<cstdio> #include<cstring&g ...

  5. pe文件头详解

  6. JAVA RPC (五) 之thrift序列化RPC消息体

    让大家久等了.继续更新thrift序列化的消息体,下面我们一步一步的看一看thrift的rpc是怎么实例化消息体的. 首先我们先准备一个request文件 namespace java bky str ...

  7. C++编程剖析 问题 方案 和设计准则

    1.Set的每个对象为什么会有三个指针? STL中的set使用方法详细!!!! 因为其底层是红黑树实现的,每个节点有两个子节点和一个父节点,所以需要三个指针. Set 与 map的区别是什么? 总的来 ...

  8. Android使用https与服务器交互的正确姿势

    HTTPS 使用 SSL 在客户端和服务器之间进行加密通信,错误地使用 SSL ,将会导致其它人能够拦截网络上的应用数据. 使用一个包含公钥及与其匹配的私钥的证书配置服务器,作为 SSL 客户端与服务 ...

  9. subprocess.CalledProcessError: Command ‘(‘lsb_release’, ‘-a’)’ returned non-zero exit status 1.

    解决方法find / -name lsb_releaserm -rf /usr/bin/lsb_release

  10. Keras RetinaNet github项目

    https://github.com/fizyr/keras-retinanet 根据此网站的方法,利用Pascal VOC 2007数据集开始训练,出现error: D:\JupyterWorkSp ...