首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

INSERT...SELECT语句对查询的表加锁吗

前言: insert into t2 select * from t1; 这条语句会对查询表 t1 加锁吗?不要轻易下结论。...select的表t1上每条记录及最大伪记录supremum pseudo-record都加了S锁,这个S锁是nextkey lock锁,当connection2试图向t1表中插入一条表中不存在的数据时也会被阻塞...SELECT 时不加锁,那么可能会出现以下情况: 不可重复读:如果在 INSERT ... SELECT 执行期间,另一个事务修改了被查询的数据,那么 INSERT ......SELECT 可能会读取到不同的数据,导致插入的数据不一致。 幻读:在某些情况下,另一个事务可能会在 INSERT ... SELECT 执行期间插入新的行,导致插入操作插入到不应该插入的行。...结论: INSERT...SELECT语句是否对查询表加锁跟事务隔离级别有关,REPEATABLE-READ隔离级别下加共享读锁,此共享读锁属于Nextkey lock,会影响其他事务对查询表的DML操作

8410

MySQL(九)之数据表的查询详解(SELECT语法)二

上一篇讲了比较简单的单表查询以及MySQL的组函数,这一篇给大家分享一点比较难得知识了,关于多表查询,子查询,左连接,外连接等等。希望大家能都得到帮助!...1)ANY关键字接在一个比较操作符的后面,表示若与子查询返回的任何值比较为TRUE,则返回TRUE,通俗点讲,只要满足任意一个条件,就返回TRUE。...实例:select num1 from tb1 where num1> any(select num2 from tb2);  //这里就是将在tb2表中查询的结果放在前一个查询语句中充当条件参数。...2.3、带比较运算符的子查询     除了使用关键字ALL、ANY、SOME等之外,还可以使用普通的比较运算符。来进行比较。...比如我们上面讲解内连接查询的时候,就用过子查询语句,并且还是用的=这个比较运算符。 三、合并查询   3.1、UNION关键字    合并结果集,将多个结果集拼接在一起。

1.9K100
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL(九)之数据表的查询详解(SELECT语法)一

    这一篇是MySQL中的重点也是相对于MySQL中比较难得地方,个人觉得要好好的去归类,并多去练一下题目。MySQL的查询也是在笔试中必有的题目。希望我的这篇博客能帮助到大家! 重感冒下的我,很难受!...(小编高中最喜欢用的句子,因为只记得这一句) 对数据表数据进行查询操作,其中可能大家不熟悉的就对于INNER JOIN(内连接)、LEFT JOIN(左连接)、RIGHT JOIN(右连接)等一些复杂查询...一、SELECT查询概述 1.1、select查询语法的作用     1)提取数据(搜索)     2)提取的数据进行排序(排序)     3)执行计算汇总   注意:select语句永远不会改变数据库中原始记录...二、单表查询   单表查询的主要操作有:查询所有字段、查询指定字段、查询指定记录、带IN关键字的查询、带BETWEEN AND 的范围查询、带LIKE的字符匹配查询、查询空值                 ...SELECT * FROM 表名 WHERE 字段名 IS NULL;  //查询字段名是NULL的记录         SELECT * FROM 表名 WHERE 字段名 IS NOT NULL;

    3.4K110

    学数据库还不会Select,SQL Select详解,单表查询完全解析?

    BY [ ASC|DESC ] ];--按什么条件排序 SELECT子句:指定要显示的属性列 FROM子句:指定查询对象(基本表或视图) WHERE子句:指定查询条件 GROUP BY子句:...二、单表查询 刚才在介绍那几个保留字的时候,我们简单的举了几个查询的例子,现在我们详细系统的介绍一下,有点重复,但是比较基础,加深印象。...1.选择表中的若干列查询 选择某几列查询: SELECT ,.........FROM 表>; 选择全部列查询: 当然我们可以,把所有的列一一列举,我们也可以使用SELECT * SELECT * FROM 表>; 举例: 还是BILL表 Customer Quantity...这个比较简单我们举一个例子: 查询18岁的学生且属于计算机科学专业的姓名,年龄,专业 Sname Sage Sdept Sgrade Ssex Spho 张三 18 C.S 80 1 12345678

    97030

    mysql中select子查(select中的select子查询)询探索

    这个子查询使用了dept表,通过员工表和部门表的deptno字段关联,查询出员工所在部门的名称。由于是子查询,所以需要在执行每一个子查询的时候都扫描一遍dept表,效率相对较低。 3....实际上,第一条SQL语句的执行顺序是这样的: 执行子查询,查询出员工所在的部门名称。这个子查询使用了dept表,通过员工表和部门表的deptno字段关联,查询出员工所在部门的名称。...在执行子查询的时候,子查询中的e.deptno是来自于主查询中的emp表,是通过where条件过滤出来的,所以子查询中的e.deptno是一个固定的值。...子查询的结果会作为一个临时表,与主查询中的emp表进行连接查询,最终得到员工姓名和部门名称的查询结果。...到这里对于select子查询的执行顺序更迷惑了,不知道DEPENDENT SUBQUERY到底时怎么执行的,到底有没有生产临时表,但是可以明确这种子查询的效率不如join好 注意事项 在select子查询中

    11100

    3.4 《数据库系统概论》之数据查询—SELECT(单表查询、连接查询、嵌套查询、集合查询、多表查询)

    文章目录 0.前言 1.思维导图 2.Student/SC/Course表数据及结构 3.SELECT语句的一般格式 4.单表查询 (1)选择表中的 ① 查询指定列 ② 查询全部列 ③ 查询经过计算的值...❶ 算术表达式 ❷ 字符串常量及函数 ❸ 使用列别名改变查询结果的列标题 (2)选择表中的若干元组(行) ① 关键词DISTINCT去掉表中重复的行 ② 查询满足条件的元组(行) ❶ 比较大小 ❷ 确定范围...指定DISTINCT关键词,去掉表中重复的行 SELECT DISTINCT Sno FROM SC; ② 查询满足条件的元组(行) 常用的查询条件 查询条件 谓词 比较 =,>,=,<=,!...AND Course.Cname='信息系统'; (5)带有比较运算符的子查询 带有比较运算符的子查询是指父查询与子查询之间用比较运算符进行连接。...当用户能确切知道内层查询返回的是单个值时,可以用>、=、等比较运算符。

    6K20

    如何批量查询单个基因的功能通路?

    我们的马拉松授课最后一周给大家讲解了KEGG和GO数据库的网页版本的单个基因与多个基因的功能注释,还讲解了功能注释与功能富集的区别。富集其实就是显著注释到的功能通路。...然后上课有个学员跟着实际操作演练,发现他的基因在KEGG数据库网页中没有找到通路: KEGG 网页对某个基因的注释操作为: 学员的查询结果: 然后我验证了一下他的操作,真的没有找到!...下面来看看其他的方法! 批量代码版本注释一个基因 学员的基因我们就不放了,我们随便找一个基因比如 EPCAM,一个上皮细胞的经典基因。...我们上面讲了,基因的注释与富集含义是一样的,只不过富集是显著注释的通路,通过卡一个pvalue或者其他的阈值挑选得到,那我们第一种方法就用功能富集的方式拿到这个基因注释到的通路: 这里需要注意参数的设置...(ggplot2) library(tidyverse) # 单个基因查询 # GO通路 ego_ALL <- enrichGO(gene="EPCAM", OrgDb= 'org.Hs.eg.db'

    8510

    MySQL的insert into select 引发锁表

    CREATE TABLE AS SELECT create table as select 会创建一个不存在的表,也可以用来复制一个表。...select * from t ; -- 创建一个表结构与t一模一样的表,复制结构同时也复制数据;(索引不会创建) 3.create table t3(`id`,`a`) as select `id...`,`c` from t; -- 创建一个表结构与t一模一样的表,复制结构同时也复制数据,但是指定新表的列名; 后面两种格式,如果后面跟上合适的查询条件,可以只复制符合条件的数据到新的表中。...,CREATE TABLE AS SELECT 是DDL语句(数据定义语言,用于定义和管理 SQL 数据库中的所有对象的语言 ),执行完直接生效,不提供回滚,效率比较高。...定时任务,任务的逻辑是查询100条记录,然后多个线程分到几个任务执行,比如是个线程,每个线程10条记录,插入后,在查询新的100条记录处理。

    2.1K10

    MySQL的insert into select 引发锁表

    CREATE TABLE AS SELECT create table as select 会创建一个不存在的表,也可以用来复制一个表。...select * from t ; -- 创建一个表结构与t一模一样的表,复制结构同时也复制数据;(索引不会创建) 3.create table t3(`id`,`a`) as select `id...`,`c` from t; -- 创建一个表结构与t一模一样的表,复制结构同时也复制数据,但是指定新表的列名; 后面两种格式,如果后面跟上合适的查询条件,可以只复制符合条件的数据到新的表中。...,CREATE TABLE AS SELECT 是DDL语句(数据定义语言,用于定义和管理 SQL 数据库中的所有对象的语言 ),执行完直接生效,不提供回滚,效率比较高。...定时任务,任务的逻辑是查询100条记录,然后多个线程分到几个任务执行,比如是个线程,每个线程10条记录,插入后,在查询新的100条记录处理。

    6.7K31

    SELECT 语句中的 子查询(Sub Query)

    SELECT 语句中的子查询 子查询(Sub Query)或者说内查询(Inner Query),也可以称作嵌套查询(Nested Query),是一种嵌套在其他 SQL 查询的 WHERE 子句中的查询...使用子查询必须遵循以下几个规则: 子查询必须括在圆括号中。 子查询的 SELECT 子句中只能有一个列,除非主查询中有多个列,用于与子查询选中的列相比较。...INSERT 语句可以将子查询返回的数据插入到其他表中。子查询中选取的数据可以被任何字符、日期或者数值函数所修饰。...WHERE ID IN (SELECT ID FROM CUSTOMERS) ; UPDATE 语句中的子查询: 子查询可以用在 UPDATE 语句中。...当子查询同 UPDATE 一起使用的时候,既可以更新单个列,也可更新多个列。

    3.2K20

    连表查询的介绍_连接表

    大家好,又见面了,我是你们的朋友全栈君。 1、连表查询的原因 (1)如果查询结果不在一个表中,在多个表中,那就需要将表关联,进行连表查询。 (2)连表查询大多数都作用在外键得基础上。...1.查询每一个员工的姓名,及关联的部门的名称〔隐式内连接实现) 2.查询每一个员工的姓名,及关联的部门的名称〔显式内连接实现) -- 隐式查询 select 列名.... from 表1,表2 where...) –2.查询dept表的所有数据,和对应的员工信息(右外连接) -- 语法: select 查询列集 from A表 left join B表 on 连表条件 -- 1.查询emp表的所有数据, 和对应的部门信息...select * from A表 join A表 on 连表条件。 自连接 (1)查询员工及其所属领导的名字。...(2)查询所有员工 emp及其领导的名字emp ,如果员工没有领导,也需要查询出来 -- 1.查询员工及其所属领导的名字。你要查询的结果再一张表中,但是还不能使用单表查询得到结果。

    3K20

    基本的SELECT语句与显示表结构

    FROM 列的别名 去除重复行 空值参与运算 着重号 查询常数(查询同时添加常数字段) 显示表结构 过滤数据 练习题 基本的SELECT语句 SELECT… SELECT 1+1, 2+2;# 直接这样写相当于下面这句...* FROM `ORDER`; 查询常数(查询同时添加常数字段) SELECT 查询还可以对常数进行查询。...对的,就是在 SELECT 查询结果中增加一列固定的常数列。这列的取值是我们指定的,而不是从数据表中动态取出的。...比如说,我们想对 employees 数据表中的员工姓名进行查询,同时增加一列字段corporation ,这个字段固定值为 “timerring”,可以这样写: SELECT 'timering' as...employees表中去除重复的job_id以后的数据 SELECT DISTINCT job_id FROM employees; 3.查询工资大于12000的员工姓名和工资 SELECT first_name

    1.5K50

    SQL 查询是从 Select 开始的吗?

    好吧,显然很多SQL查询都是从SELECT开始的(实际上本文只是关注SELECT查询,而不是INSERT或其它别的什么)。 但是!...你的数据库引擎肯定还会在开始运行查询之前执行一系列检查,确保你在SELECT和GROUP BY中放置的内容合在一起是有意义的,因此在开始制定执行计划之前,它必须将查询作为一个整体来查看。...一个简单的例子说明了为什么需要以不同的顺序运行查询以使其快速运行,在这个查询中: SELECT * FROM owners LEFT JOIN cats ON owners.id = cats.owner...WHERE cats.name = 'mr darcy' 如果你只需要查找3个名为“mr darcy”的猫,那么执行整个左连接并匹配这两个表中的所有行是非常愚蠢的 —— 首先对名为“mr darcy...6、LINQ以FROM开始查询 LINQ(一种C#和VB.NET中的查询语法)使用的顺序为FROM … WHERE … SELECT。

    1.7K20

    顺序表与链表的比较

    链式存储结构的优点: 结点空间可以动态申请和释放。 数据元素的逻辑次序靠结点的指针来指示,插入和删除时不需要移动数据元素。 链式存储结构的缺点: 存储密度小,每个结点的指针域需额外占用存储空间。...当每个结点的数据域所占字节不多时,指针域所占存储空间的比重显得很大。 链式存储结构是非随机存取结构。对任一结点的操作都要从头指针依指针链查找到该结点,这增加了算法的复杂度。...存储密度 存储密度是指结点数据本身所占的存储量和整个结点结构中所占的存储量之比,即: 存储密度 = 结点数据本身占用的空间 / 结点占用的空间总量 ?...结点的数据域a1占8个字节,地址域占4个字节,所以存储密度 = 8 / 12 = 67% 一般地,存储密度越大,存储空间的利用率就越高。...显然,顺序表的存储密度为1 (100%) ,而链表的存储密度小于1。 ?

    87040

    Mysql数据库学习(三):表的crud操作、完整性约束、select各种查询

    一、表的crud操作 指增加(Create)、查询(Retrieve)(重新得到数据)、更新(Update)和删除(Delete) // select 查询后面再讲 create table tb_test2...返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。...内连接(等值连接):在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。...内连接(不等连接):在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、、!...自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。

    3.7K00
    领券