首先这只是一个用法:
下面是演示。
首先我们准备2张表:

mysql> use z1;
Database changed
mysql> show tables;
+--------------+
| Tables_in_z1 |
+--------------+
| class        |
| customer     |
| exam         |
| gender       |
| goods        |
| purchase     |
| student      |
+--------------+
7 rows in set (0.01 sec)mysql> drop table student;
Query OK, 0 rows affected (0.03 sec)mysql> create table student(id int primary key auto_increment,name varchar(20));
Query OK, 0 rows affected (0.02 sec)mysql> insert into student values(null,'张三');
Query OK, 1 row affected (0.01 sec)mysql> update student set name ='z1' where name ='张三';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> insert into student values(null,'z2');
Query OK, 1 row affected (0.00 sec)mysql> insert into student values(null,'z3');
Query OK, 1 row affected (0.00 sec)mysql> create table student_copy(id int primary key auto_increment,name varchar(20));
Query OK, 0 rows affected (0.13 sec)mysql> select * from student;
+----+------+
| id | name |
+----+------+
|  1 | z1   |
|  2 | z2   |
|  3 | z3   |
+----+------+
3 rows in set (0.00 sec)mysql> select * from student_copy;
Empty set (0.00 sec)

然后insert into搭配select使用:

mysql> insert into student_copy select * from student;
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0mysql> select * from student_copy;
+----+------+
| id | name |
+----+------+
|  1 | z1   |
|  2 | z2   |
|  3 | z3   |
+----+------+
3 rows in set (0.00 sec)

可以看到,现在student_copy和student表一样了。
但是我们需要注意这个边界的复制操作是有限制的,必须是数据类型相同的两张表,而且插入的顺序要类型匹配。

mysql> insert into student_copy select name from student;
ERROR 1136 (21S01): Column count doesn't match value count at row 1
mysql> insert into student_copy select name,id from student;
ERROR 1366 (HY000): Incorrect integer value: 'z1' for column 'id' at row 1
mysql> insert into student_copy select id from student;
ERROR 1136 (21S01): Column count doesn't match value count at row 1
mysql> drop table student_copy;
Query OK, 0 rows affected (0.02 sec)

然后我们还要注意,匹配最好还是一模一样的,不然可能会导致错误,像下面的示例,虽然插入成功了,但是是因为我们的实际数据并没有那么大,所以仍旧插入成功,但凡name>19,那就不能插入了。

mysql> drop table student_copy;
Query OK, 0 rows affected (0.02 sec)mysql> create table student2(id int primary key auto_increment,name varchar(99));
Query OK, 0 rows affected (0.02 sec)mysql> insert into student2 select * from student;
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0mysql> create table student3(id int primary key auto_increment,name varchar(19));
Query OK, 0 rows affected (0.02 sec)mysql> insert into student3 select * from student;
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

【MySQL】insert into 和select 搭配使用进行表间复制相关推荐

  1. mysql中表结构语句_mysql中表数据与表结构复制语句

    本文章来给各位朋友介绍一下关于在mysql中进行表数据与表结构复制语句,方法会有很多种下面我来介绍介绍,有需要了解的朋友可参考. 先来总结复制表与结的方法 一.CREATE TABLE 方法 整表复制 ...

  2. mysql insert into values select from_mysql中复制表数据(select into from和insert into select)...

    一.简介 Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应 用程序开发中必 ...

  3. mysql中selectform_带有select标签的form表单,怎么提交到数据库啊 ?具体情况如下...

    如图所示,MySQL中已经建立一张名为biaodan的table,有id,month,revenue三个字段,请问怎么提交到MySQL中去.我想单纯用PHP和和HTML实现,可以吗? 如图所示,MyS ...

  4. insert into bak select * from test会锁表吗

    答案是跟隔离级别有关系, RR级别下会将test表所有记录上行锁,以及所有记录间隔上gap锁:对bak插入的记录加行锁: RC级别下test表不加任何锁:对bak插入的记录加行锁: 即区别在于test ...

  5. mysql insert语句大全_MySQL中insert into语句的6种写法

    insert into是mysql中最常用的插入语句,它有6种写法. 1向原表中某些字段中插入一条记录. 语法:insert into +表名(表中的字段,,)value(字段所对应的记录,,); m ...

  6. mysql行级锁unique_MySQL行级锁,表级锁,页级锁详解

    页级:引擎 BDB. 表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行 行级:引擎 INNODB , 单独的一行记录加锁 表级,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写 ...

  7. MySQL 数据库常用命令—insert delete update select

    引言 MySQL 数据库和其它的数据库一样,也支持增(insert)删(delete)改(update)查(select)操作. insert 基本语法规则 insert into table_nam ...

  8. mysql insert into select大量数据插入比较慢_史上最全MySQL锁机制

    本文主要记录学习MyISAM 和 InnoDB 这两个存储引擎. 为什么要学习锁机制 锁是计算机协调多个进程或线程并发访问某一资源的机制. 因为数据也是一种供许多用户共享的资源,如何保证数据并发访问的 ...

  9. 【MySQL】MySQL Insert into select 大量锁表导致无法插入

    1.概述 原文:因用了Insert into select语句,同事被开除了! Insert into select 请慎用,同事因为使用了 Insert into select 语句引发了重大生产事 ...

最新文章

  1. nginx反向代理tomcat时遇到一个问题
  2. 我的WCF之旅(13):创建基于MSMQ的Responsive Service
  3. Eclipse关联JavaDoc
  4. 纳税人基本信息与服务器端基本信息不符,网上报税对浏览器有什么要求吗
  5. 【钢铁缺陷检测算法】数据探索
  6. Formtec.NCspeed.v5.1.0.4
  7. 【NLP】一文了解词性标注CRF模型
  8. xlsx xlsx-style 设置导出的exce表格样式
  9. [BZOJ]1228: [SDOI2009]ED 博弈SG
  10. 7款家用智能摄像头横评:小米、乐橙、TP-LINK、海康威视、360、智汀、华为
  11. ACT托管的CRM软件开发您的业务
  12. java打印菱形图案_java打印出菱形图案实例详解
  13. 人工智能,你欠我们一个解释
  14. Java Web Start(Jnlp)教程
  15. matlab atem(),ATEM-Ⅱ瞬变电磁仪数据处理软件的研制与应用
  16. 王者荣耀中皮肤和英雄技能java实现
  17. 内网穿透-使用https访问局域网里的web
  18. P5734 【深基6.例6】文字处理软件[c++版]
  19. 微搭人员招聘管理系统官方模板解析(一)
  20. Phalcon框架安装

热门文章

  1. 【沉痛悼念】首届国医大师唐由之逝世 | 曾为毛主席治疗白内障
  2. 学习计算机在化学中的应用的心得,学习计算机多媒体技术心得体会
  3. Android超方便 集成 Zxing实现扫一扫,闪光灯,生成二维码图片,解析二维码(条码)等功能
  4. Ext_多行文本输入框_Ext.form.TextArea
  5. 论文写作---word单独设置页眉页脚
  6. 2023北京叶黄素展/北京视力矫正设备展/北京眼睛医学康复展
  7. 在小程序内嵌的webview中唤醒手机地图app
  8. coward的个人简介
  9. 好的plm软件有哪些?plm软件排行榜
  10. 初入Linux——软件安装