基础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. jsp页面第一句话报这个错Syntax error, insert "}" to complete

    前段时间做了个项目jsp页面出现了Syntax error, insert "}" to complete错误,是说少了个“}”花括号,错误是在第一行,删了第一行还是会有,错误也不 ...

  2. 白盒测试实践-day02

    一.任务进展情况 小组分工完成后,了解findbugs的使用过程,以及junit的测试步骤. 二.存在的问题 由于对单元测试不是太了解,导致无法进行测试. 三.解决方法 看mooc上面的视频,了解测试 ...

  3. 配置NTP网络时间自动校对系统时间和创建备份文件

    1 案例1:配置用户和组账号 1.1 问题 本例要求创建下列用户.组以及组的成员关系: 新建用户 alex,其用户ID为3456,密码是flectrag 创建一个名为 adminuser 的组 创建一 ...

  4. EL表达式JSTL

    EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据. 语法:${隐式对象名称}:获得对象的引用 序号 隐含对象名称 描       ...

  5. zrange 复杂度 O(log(N)+M), N 为有序集的基数,而 M 为结果集的基数

    redis 的 zrange 效率 - 简书 https://www.jianshu.com/p/40a66ff92768 ZRANGE key start stop [WITHSCORES] — R ...

  6. RxSwift + Moya + ObjectMapper

    https://www.jianshu.com/p/173915b943af use_frameworks! target 'RXDemo' do pod 'RxSwift' pod 'RxCocoa ...

  7. 队列->队列的表示和实现

    文字描述 队列是和栈相反,队列是一种先进先出(first in first out,缩写FIFO)的线性表,它只允许在表的一端进行插入,而在另一端进行删除.和生活中的排队相似,最早进入队列的元素最早离 ...

  8. 一对一关联模型,HAS_ONE

    class UserModel extends RelationModel{ protected $_link = array( 'Profile'=> HAS_ONE, //就这一行就行了 ) ...

  9. idea搭建可运行Servlet的Web项目[maven]

    1. new Project File > new > Project… 2. 填写 GroupID\ArtifactID GroupID 是项目组织唯一的标识符,实际对应JAVA的包的结 ...

  10. html5网页录音

    demo https://xiangyuecn.github.io/Recorder/