sql里面插入语句insert后面的values关键字可省略
插入到表名(列值)后跟一个查询语句的话就代表值,简单的说就是后面select select出来的值就是要插入的值,即
insert into tb(字段名一,字段名二)select 字段名一,字段名二 from tb
等于
insert into tb(字段名一,字段名二)values(查出的字段值一,查出来的字段值一);
- 插入到表名(列值)后跟一个查询语句的话就代表值,简单的说就是后面select select出来的值就是要插入的值,即
- insert into tb(字段名一,字段名二)select 字段名一,字段名二 from tb
- 等于
- insert into tb(字段名一,字段名二)values(查出的字段值一,查出来的字段值一);
或
- 插入到表名(列值)后跟一个查询语句的话就代表值,简单的说就是后面select select出来的值就是要插入的值,即
- insert into tb(字段名一,字段名二)select 字段名一,字段名二 from tb
- 等于
- insert into tb(字段名一,字段名二)values(查出的字段值一,查出来的字段值一);
- 在上面的SQL语句中:执行的原理解析:
- 若teacher表中不存在id=3的那条记录,则生成要插入表中的数据并插入表;
- 若teacher表中存在id=3的那条记录,则不生成要插入表中的数据。
- 其实程序可以分开看:
- ① select * from teacher where id=3 若查询有值,则表示真,即存在id=3这条记录,若查询没有值则表示假,即不存在id=3这条记录,
- ②若果不存在id=3这条记录,那么又因为 not exists 本身表示假,即不存在的意思;假假为真,所以此时程序可以形象的理解为
- select 3,'丁老师',5000 from teacher where not exists (false) limit 1;
- 等价于
- select 3,'丁老师',5000 from teacher where true limit 1;
- ③所以程序就会生成一行为 3,'丁老师',5000的记录
- ④最后生成的数据就会插入表中
- CREATE TABLE tb ( a int, b int );
- -- 一次插入一行数据的写法: 必须要有 VALUES
- INSERT INTO tb VALUES(1, 2);
- INSERT INTO tb VALUES(1, 3);
- GO
- -- 一次插入一行或者多行数据的写法: 必须要有 SELECT
- INSERT INTO tb SELECT 2, 1;
- INSERT INTO tb
- SELECT 3, 1 UNION ALL
- SELECT 3, 2 UNION ALL
- SELECT 3, 3;
- GO
- -- 核对数据
- SELECT * FROM tb
- GO
- a b
- ----------- -----------
- 1 2
- 1 3
- 2 1
- 3 1
- 3 2
- 3 3
- (6 行受影响)
批量判重插入
- <sql id="Base_Column_List1" >
- uuid, systemName, enviromentType, jobOrderNum, jobName, executeTime, jobLogAddress, status
- </sql>
- <insert id="insertDatas" parameterType="cn.lz.devops.model.DataCollectionJobInfo" >
- insert into data_collection_job_info
- <trim prefix="(" suffix=")" suffixOverrides="," >
- <include refid="Base_Column_List1" />
- </trim>
- <foreach collection="list" item="item" separator="UNION ALL" close=";">
- <trim prefix="(" suffix=")" suffixOverrides="UNION ALL" >
- select
- <trim suffixOverrides="," >
- #{item.uuid,jdbcType=VARCHAR},
- #{item.systemName,jdbcType=VARCHAR},
- #{item.enviromentType,jdbcType=VARCHAR},
- #{item.jobOrderNum,jdbcType=INTEGER},
- #{item.jobName,jdbcType=VARCHAR},
- #{item.executeTime,jdbcType=VARCHAR},
- #{item.jobLogAddress,jdbcType=VARCHAR},
- #{item.status,jdbcType=INTEGER}
- </trim>
- from data_collection_job_info
- where not exists(select * from data_collection_job_info where uuid=#{item.uuid, jdbcType=VARCHAR}) limit 1
- </trim>
- </foreach>
- </insert>
sql里面插入语句insert后面的values关键字可省略的更多相关文章
- Sqlite—插入语句(Insert)
SQLite 的 INSERT INTO 语句用于向数据库的某个表中添加新的数据行. 基本语法:INSERT INTO TABLE_NAME VALUES (value1,value2,value3, ...
- mysql语句insert后取到返回的主键id
Q: 有时候做类似接口里的数据订正,需要取到insert语句返回的id主键,在程序里通过对象返回好取,但是写sql怎么取到呢? A: 用select @@identity得到上一次插入记录时自动 ...
- Java学习-057-Jsoup爬虫获取中国所有的三级行政区划数据(二),并生成数据库 SQL 脚本插入语句
多不废话,直接上马,小主您稳着... package com.fanfengping.zeus.uitl; import com.alibaba.fastjson.JSONObject; import ...
- SQL Server插入中文数据后出现乱码
今天在做项目的过程中遇到如标题的问题,情况如下图: 数据库使用的是SQL Server2012版本,创建表的脚本如下: CREATE TABLE [dbo].[Type]( [TypeId] INT ...
- mysql 插入语句
mysql 插入语句 什么时候用单引号,什么时候不用? 1.先创建一个表 create table user(username varchar(255),age int,marry boolean,b ...
- Sql server中用现有表中的数据创建Sql的Insert插入语句
之前,在Codeproject发表过一篇关于用现有表中数据创建Insert的Sql语句的存储过程,今天将其搬到这里来,注意本存储过程仅适用于SQL SERVER. 介绍 一些时候,你想导出一些现有表中 ...
- 小程序实现sql插入语句转换成Laravel迁移语句
sql的插入语句长这样: INSERT INTO `media` (`MediaID`, `type`, `filename`, `title`) VALUES (1, 'word', 'word1. ...
- 比较两个文件不同以及生成SQL插入语句
Tips 做一个终身学习的人! 日拱一卒,功不唐捐. 今天有个小小的需求,具体需求是这样的: 有两个文本文件,每个文件都有一些字符串文本: 比较第一个文件中,在第二个文件中,不存在的字符串文本: 把这 ...
- SQL语句-INSERT语句
Insert语句 Insert语句三种写法: mysql> desc students; +-------+-------------+------+-----+---------+------ ...
随机推荐
- JavaConfig
Java Config是Spring的一个子项目,它旨在通过Java类的方式提供Bean的定义信息,是Spring4.0的核心功能 普通的POJO只要标注@Configuration注解,就可以为 ...
- HashMap(常用)方法个人理解
Hashmap的存值: public static void main(String[] args) { ///*Integer*/map.put("1", 1);//向map ...
- Windbg 调试CPU占用过高
1.!runaway !runaway命令显示每个线程消费的时间 Bit 0 (0x1) 让调试器显示每个线程消耗的用户模式时间(user time),默认不加就是0x1 Bit 1 (0x2) 显示 ...
- System.Drawing.Imaging.ImageFormat.cs
ylbtech-System.Drawing.Imaging.ImageFormat.cs 1.程序集 System.Drawing, Version=4.0.0.0, Culture=neutral ...
- spss进行判别分析步骤_spss判别分析结果解释_spss判别分析案例详解
spss进行判别分析步骤_spss判别分析结果解释_spss判别分析案例详解 1.Discriminant Analysis判别分析主对话框 如图 1-1 所示 图 1-1 Discriminant ...
- F - GCD - Extreme (II) UVA - 11426
Given the value of N, you will have to find the value of G. The definition of G is given below:
- YARN 原理简介
YARN 组件 参考:Spark on Yarn | Spark,从入门到精通 YARN 采用 Master/Slave结构 ,包含ResourceManager 和 NodeManager Reso ...
- Quartz 定时任务配置(spring中)
<!-- Quartz --> <bean name="task" class="com.geostar.geosmarter.nodemanag ...
- 2_2.springboot2.x配置之自动配置原理
前言 SpringBoot 自动配置原理: 本文主要分为三大部分: SpringBoot 源码常用注解 SpringBoot 启动过程 SpringBoot 自动配置原理 1. SpringBoot ...
- 「APIO 2019」桥梁
题目 三天终于把\(APIO\)做完了 这题还是比较厉害的,如果不知道这是个分块应该就自闭了 考虑一个非常妙的操作,按照操作分块 我们设一个闸值\(S\),把\(S\)个边权修改操作分成一块,把所有的 ...