使用INSERT INTO 插入数据是,除了使用INSERT INTO TABLE_NAME FIELD1,FIELD2..VALUES (VALUE1,VALUE2...)这个语句之外,还可以使用另一种写法。

创建一个表,我们用来举例

CREATE TABLE ld (id int(11) NOT NULL,name varchar(20) DEFAULT NULL,PRIMARY KEY (id)
) ENGINE=InnoDB;

首先是SELECT 语句,SELECT语句的传统写法规则我们这里不用介绍,只介绍我们需要的。

SELECT ATTRIBUTE1 ATTRIBUTE2 ... FROM TABLE_NAME;

SELECT id,name FROM ld;1 张三
2   lisi
3   lisiS

FIEDL1,FIELD2为表的字段,当指定的字段不在表中,会报错。

SELECT id,namename FROM ld
> 1054 - Unknown column 'namename' in 'field list'
> Time: 0s

但是当指定的是数字或字符串,则不会报错,而是输出以数字或字符串为字段名,值为数字或字符串的行,行的数量是原来表中已有的行数。如果没有指定相应的表,则会输出以数字或字符串为字段名,值为数字或字符串的一行数据,

SELECT 123,'namemame','456' FROM ld;123  namemame    456
123 namemame    456
123 namemame    456

结合:

INSERT INTO TABLE_NAME SELECT VALUE1 VALUE2;

INSERT INTO ld SELECT 99,'LD'
> Affected rows: 1
> Time: 0.121s

注意VALUE1 ,VALUE2值为TABLE_NAME的属性类型的值,才可以执行成功,

INSERT INTO ld SELECT 'DD','LD'
> 1366 - Incorrect integer value: 'DD' for column 'id' at row 1
> Time: 0.001s

但是以纯数字组成的字符串,可以看做是INT 类型。

INSERT INTO ld SELECT '66','LD'
> Affected rows: 1
> Time: 0.109s

最终表的数据为:

SELECT * FROM ld;1   张三
2   lisi
3   lisiS
66  LD
99  LD

注意:有一种从多个表中组合字段到另一个表中的写法,即表的复制,语法格式为:

INSERT INTO TABLE1_NAME ( FIELD1,FIELD2...) SELECT FIELD1,FIELD2... FROM TABLE2_NAME;使用两个表,多个表不适用,

当两个表的结构相同时,直接插入数据即可,可以写成这样:

INSERT INTO TABLE1_NAME SELECT * FROM TABLE2_NAME;

当连个表的结构不同时,需要指定插入的列,同时表1表2必须包含相同类型和字段大小的字段:

INSERT INTO TABLE1_NAME (FIELD1,FIELD2) SELECT FIELD1,FIELD2 FROM TABLE1_NAME;

注意:TABLE_NAME1 必须存在,FIELD1,FIELD2也必须存在,若TABLE_NAME1有主键且不具备自动增长,则FIELD1,FIELD2…中必须包括主键。

思考:

INSERT INTO LD(id,name) SELECT id,name FROM LD;

这个语句能够将LD的数据复制,然后再插入到LD表中?

答:不能,因为它复制了表中的数据,但是LD表中的id是主键,不能重复,所以不会成功,如果想实现复制自身,则修改id,使其不为主键即可。

INSERT INTO 小技巧相关推荐

  1. mysql insert 语句优化_分享insert into语句优化的小技巧

    MYSQL批量插入数据库实现语句性能分析 假定我们的表结构如下 代码如下CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( 50 ...

  2. mysql insert 运算_MySql insert插入操作的3个小技巧分享

    1.插入的数据来源自其他表 表A有id, cola 字段 表B有id, cola, colb...等字段,其中id都为主键,cola为相同名字的列 现想将表B中colb>1000的记录都插入表A ...

  3. 收藏喜+1!值得使用的100个Python小技巧

    目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习.Web开发.脚本编写.自动化等 ...

  4. 快收藏!整理了 100 个 Python 小技巧

    作者:小F 来源: 法纳斯特 目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习. ...

  5. 6行代码,带你学会Python最有用的小技巧【收藏不后悔】

    这篇博文主要介绍了Python有关的代码片段,通过简洁易懂的代码,给一些基础不是特别好的朋友提供便利,有利于学习,仅提供了几种小技巧的方法,希望对你们有帮助. 一.将 Python 3 和 pip 3 ...

  6. php 小技巧总结,PHP学习的技巧是什么 PHP学习的技巧和学习的要素总结

    PHP学习的技巧是什么?在本篇文章里小编给大家整理的是一篇关于PHP学习的技巧和学习的要素总结内容,感兴趣的用户就来一聚教程网参考一下吧! 1.适合PHP学习者的学习道路: (1) 了解HTML/CS ...

  7. mysql datetime 对于hbm_MySQL库表设计小技巧

    前言: 在我们项目开发中,数据库及表的设计可以说是非常重要,我遇到过很多库表设计比较杂乱的项目,像表名.字段名命名混乱.字段类型设计混乱等等,此类数据库后续极难维护与拓展.我一直相信只有优秀的库表设计 ...

  8. 工作中MySql的了解到的小技巧

    工作中MySql的小技巧 1. 跑脚本时,经常遇到有则更新无插入的 逻辑操作:通常情况下,来一波if()判断然后选择 更新还是插入,前两天逛论坛时发现有人在比较REPLACE INTO 和 INSET ...

  9. php get 传循环出来的参数_PHP性能优化小技巧

    PHP性能优化小技巧: 1. foreach效率更高,尽量用foreach代替while和for循环. 2. 循环内部不要声明变量,尤其是对象这样的变量. 3. 在多重嵌套循环中,如有可能,应当将最长 ...

最新文章

  1. 实现线程哪种方法更好_实施数据以实现更好的用户体验设计的4种方法
  2. mysql切换系统盘命令_mysql常用命令
  3. 【数理知识】《积分变换与场论》王振老师-第2章-拉普拉斯变换
  4. 基于zookeeper的高可用集群
  5. vim去掉windows文本的多余的回车符(^M)
  6. 第四范式恭祝大家新年快乐!
  7. LeetCode : Power of Two
  8. React 折腾记 - (4) 侧边栏联动Tabs菜单-增强版(结合Mobx)
  9. 【计算机网络笔记】计算机网络定义分类
  10. QQ 5.0的一些特效学习 一
  11. linux 常用命令
  12. 多位专家解读工业3D打印“叫好不叫座”
  13. python二维插值_SciPy二元样条插值
  14. Vmware安装MacOS提示请选择您要安装的macOS的磁盘
  15. 基于Python实现可以进制转换和计算阶乘的科学计算器
  16. 陕西省计算机大赛,陕西省青少年信息学(计算机)奥林匹克竞赛委员会文件.doc
  17. [日常笔记] 2: 本地视频播放器 MPV
  18. ICP波长及分析校正
  19. 程序员:一个女生不主动联系你还有机会吗?
  20. 【Spark NLP】第 9 章:信息提取

热门文章

  1. PPT——————酷炫文字、人物海报
  2. python随机森林变量重要性_python机器学习之随机森林(七)
  3. URL末尾是否应该加斜杠?
  4. 计算机复试题总结(九)
  5. RGB-D论文复习速读
  6. windows 查找目录下文件中包含某个字符的文件
  7. Linux下如何安装Firefox
  8. Elasticsearch 8.X 集群无响应,怎么办?
  9. 北航计算机组成实验课,北航计算机组成实验Project5
  10. 北航计算机考博经验,最新的北航考博经验