,,SQL语句中EXISTS的详细用法大全

,,SQL语句中EXISTS的详细用法大全

最近重新用到了存在关键字,对于其基本用法记录一下,下面这篇文章主要给大家介绍了关于结构化查询语言语句中存在的详细用法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

目录

前言一、建表二、在挑选语句中使用存在1。在结构化查询语言中使用存在2。在结构化查询语言中使用不存在3。在结构化查询语言中使用多个不存在4。在结构化查询语言中使用多个存在5。在结构化查询语言中使用不存在和存在三、在删除语句中使用存在1。在关系型数据库中使用2.在神谕中使用四、在更新语句中使用存在1。在关系型数据库中使用2.在神谕中使用总结

前言

在业务开展中,会遇到类似需求。

需求1:更新表测试_TB01中的记录;满足条件:这些记录不在测试_TB02中。

需求2:更新表测试_TB01中的记录;满足条件:这些记录在测试_TB02中。

在结构化查询语言语句中存在的用法,能够比较简洁的去解决这类需求。

一、建表

1.在MySQL数据库建表语句

创建表测试_TB01

传感器id BIGINT,

part_id BIGINT,

标志VARCHAR(64)

)

'评论'数据表一;

创建表测试_TB02

传感器id BIGINT,

part_id BIGINT,

标志VARCHAR(64)

)

'评论'数据表二;

创建表测试_TB03

传感器id BIGINT,

part_id BIGINT,

标志VARCHAR(64)

)

'评论'数据表三;

2.在ORACLE数据库建表语句

创建表测试_TB01

传感器标识号(16位),

零件标识号(16位),

标志VARCHAR(64)

);

创建表测试_TB02

传感器标识号(16位),

零件标识号(16位),

标志VARCHAR(64)

);

二、在SELECT语句中使用EXISTS

在挑选的结构化查询语言语句中使用存在。

在测试_TB01插入数据:

插入测试_TB01(传感器_id,零件_id,标志)值(2101,8811,'厦门');

插入测试_TB01(传感器_id,零件_id,标志)值(2102,8812,'泉州');

插入测试_TB01(传感器_id,零件_id,标志)值(2103,8813,'福州');

插入测试_TB01(传感器_id,零件_id,标志)值(2104,8814,'漳州');

插入测试_TB01(传感器_id,零件_id,标志)值(2105,8815,'杭州');

插入测试_TB01(传感器_id,零件_id,标志)值(2106,8816,'上海');

插入测试_TB01(传感器_id,零件_id,标志)值(2107,8817,'北京');

插入测试_TB01(传感器_id,零件_id,标志)值(2108,8818,'深圳');

插入测试_TB01(传感器_id,零件_id,标志)值(2109,8819,'中国');

在测试_TB02插入数据:

插入测试_TB02(传感器_id,零件_id,标志)值(2101,8811,'厦门');

插入测试_TB02(传感器_id,零件_id,标志)值(2102,8812,'泉州');

插入测试_TB02(传感器_id,零件_id,标志)值(2103,8813,'福州');

插入测试_TB02(传感器_id,零件_id,标志)值(2104,8814,'漳州');

插入测试_TB02(传感器_id,零件_id,标志)值(2109,8819,'中国');

在测试_TB03插入数据:

插入测试_TB03(传感器_id,零件_id,标志)值(2106,8816,'上海');

插入测试_TB03(传感器_id,零件_id,标志)值(2107,8817,'北京');

插入测试_TB03(传感器_id,零件_id,标志)值(2109,8819,'中国');

查看测试_TB01数据:

查看测试_TB02数据:

查看测试_TB03数据:

1.在SQL中使用EXISTS

需求:从测试_TB01中查询出在测试_TB02中存在的记录,关联条件是两个表的传感器身份证明(identification)相等。

结构化查询语言语句:

挑选

aa。传感器标识,aa。零件标识,aa。标志

测试_TB01 aa

存在于何处

(从以下选项中选择一项

测试_TB02 bb

其中aa。传感器id=bb。传感器_ id);

执行结果:

2.在SQL中使用NOT EXISTS

需求:从测试_TB01中查询出在测试_TB02中不存在的记录,关联条件是两个表的传感器身份证明(identification)相等。

结构化查询语言语句:

挑选

aa。传感器标识,aa。零件标识,aa。标志

测试_TB01 aa

不存在的地方

(从以下选项中选择一项

测试_TB02 bb

其中aa。传感器id=bb。传感器_ id);

执行结果:

3.在SQL中使用多个NOT EXISTS

需求:从测试_TB01中查询出在测试_TB02和测试_TB03中都不存在的记录,关联条件是表的传感器身份证明(identification)相等。

结构化查询语言语句:

挑选

aa。传感器标识,aa。零件标识,aa。标志

测试_TB01 aa

不存在的地方

(从以下选项中选择一项

测试_TB02 bb

其中aa。传感器标识=bb。传感器标识)

什么都不存在

(从以下选项中选择一项

测试_TB03立方厘米

其中aa。传感器标识=cc。传感器标识);

执行结果:

4.在SQL中使用多个EXISTS

需求:从测试_TB01中查询出在测试_TB02和测试_TB03中都存在的记录,关联条件是表的传感器身份证明(identification)相等。

结构化查询语言语句:

挑选

aa。传感器标识,aa。零件标识,aa。标志

测试_TB01 aa

存在于何处

(从以下选项中选择一项

测试_TB02 bb

其中aa。传感器标识=bb。传感器标识)

并且存在

(从以下选项中选择一项

测试_TB03立方厘米

其中aa。传感器标识=cc。传感器标识);

执行结果:

5.在SQL中使用NOT EXISTS和EXISTS

需求:从测试_TB01中查询出在测试_TB02存在但是测试_TB03中不存在的记录,关联条件是表的传感器身份证明(identification)相等。

结构化查询语言语句:

挑选

aa。传感器标识,aa。零件标识,aa。标志

测试_TB01 aa

存在于何处

(从以下选项中选择一项

测试_TB02 bb

其中aa。传感器标识=bb。传感器标识)

什么都不存在

(从以下选项中选择一项

测试_TB03立方厘米

其中aa。传感器标识=cc。传感器标识);

执行结果:

三、在DELETE语句中使用EXISTS

在删除的结构化查询语言语句中使用存在和不存在。

在测试_TB01插入数据:

插入测试_TB01(传感器_id,零件_id,标志)值(2101,8811,'厦门');

插入测试_TB01(传感器_id,零件_id,标志)值(2102,8812,'泉州');

插入测试_TB01(传感器_id,零件_id,标志)值(2103,8813,'福州');

插入测试_TB01(传感器_id,零件_id,标志)值(2104,8814,'漳州');

插入测试_TB01(传感器_id,零件_id,标志)值(2105,8815,'杭州');

插入测试_TB01(传感器_id,零件_id,标志)值(2106,8816,'上海');

插入测试_TB01(传感器_id,零件_id,标志)值(2107,8817,'北京');

插入测试_TB01(传感器_id,零件_id,标志)值(2108,8818,'深圳');

插入测试_TB01(传感器_id,零件_id,标志)值(2109,8819,'中国');

在测试_TB02插入数据:

插入测试_TB02(传感器_id,零件_id,标志)值(2101,8811,'厦门');

插入测试_TB02(传感器_id,零件_id,标志)值(2102,8812,'泉州');

插入测试_TB02(传感器_id,零件_id,标志)值(2103,8813,'福州');

插入测试_TB02(传感器_id,零件_id,标志)值(2104,8814,'漳州');

插入测试_TB02(传感器_id,零件_id,标志)值(2109,8819,'中国');

1.在MySQL中使用

需求:从测试_TB01中删除在测试_TB02中存在的记录,关联条件是两个表的传感器身份证明(identification)相等。

注意:本例使用MySQL版本:MySQL 5.7.33。

结构化查询语言语句:

从中删除

测试_TB01 aa

存在于何处

(从以下选项中选择一项

测试_TB02 bb

其中aa。传感器id=bb。传感器_ id);

执行结果:

结论:在关系型数据库中是不支持在删除的结构化查询语言语句中使用存在和不存在这种句法。(本例版本:MySQL 5.7.33)。

解决此需求:

结构化查询语言语句:

删除

嗜酒者互诫协会

测试_TB01 aa

内部连接测试_TB02 bb

在aa。传感器id=bb。传感器_ id

注意:在SQL中DELETE后面紧跟着的是需求中需要删除的表名的别名

如果不使用别名会报错:

2.在Oracle中使用

需求:从测试_TB01中删除在测试_TB02中存在的记录,关联条件是两个表的传感器身份证明(identification)相等。

结构化查询语言语句:

从中删除

测试_TB01 aa

存在于何处

(从以下选项中选择一项

测试_TB02 bb

其中aa。传感器id=bb。传感器_ id);

执行结果:

执行前测试_TB01:

执行前测试_TB02:

执行后测试_TB01:

四、在UPDATE语句中使用EXISTS

在更新的结构化查询语言语句中使用存在。

在测试_TB01插入数据:

插入测试_TB01(传感器_id,零件_id,标志)值(2101,8811,'城市');

插入测试_TB01(传感器_id,零件_id,标志)值(2102,8812,'城市');

插入测试_TB01(传感器_id,零件_id,标志)值(2103,8813,'城市');

插入测试_TB01(传感器_id,零件_id,标志)值(2104,8814,'城市');

插入测试_TB01(传感器_id,零件_id,标志)值(2105,8815,'城市');

插入测试_TB01(传感器_id,零件_id,标志)值(2106,8816,'城市');

插入测试_TB01(传感器_id,零件_id,标志)值(2107,8817,'城市');

插入测试_TB01(传感器_id,零件_id,标志)值(2108,8818,'城市');

插入测试_TB01(传感器_id,零件_id,标志)值(2109,8819,'城市');

在测试_TB02插入数据:

插入测试_TB02(传感器_id,零件_id,标志)值(2101,8811,'厦门');

插入测试_TB02(传感器_id,零件_id,标志)值(2102,8812,'泉州');

插入测试_TB02(传感器_id,零件_id,标志)值(2103,8813,'福州');

插入测试_TB02(传感器_id,零件_id,标志)值(2104,8814,'漳州');

插入测试_TB02(传感器_id,零件_id,标志)值(2109,8819,'中国');

1.在MySQL中使用

需求:在测试_TB01中更新,在测试_TB02中存在的记录,关联条件是两个表的传感器身份证明(identification)相等。

注意:本例使用MySQL版本:MySQL 5.7.33。

结构化查询语言语句:

更新测试_TB01 aa

SET (aa.part_id,aa。flag)=1

(选择bb .零件标识,bb .标志

来自测试_TB02 bb

其中aa。传感器标识=bb。传感器标识)

存在于何处

(从测试_TB02 cc中选择一个

其中aa。传感器标识=cc。传感器标识);

执行结果:

结论:在MySQL中是不支持在UPDATE的SQL语句中使用EXISTS和NOT EXISTS这种句法。(本例版本:MySQL 5.7.33)。

解决此需求:

结构化查询语言语句:

更新测试_TB01 aa,测试_TB02 bb

设置

aa .零件标识=bb .零件标识

aa.flag=bb.flag

其中aa。传感器id=bb。传感器_ id

执行结果:

执行前测试_TB01:

执行前测试_TB02:

执行后测试_TB01:

2.在Oracle中使用

需求:在测试_TB01中更新,在测试_TB02中存在的记录,关联条件是两个表的传感器身份证明(identification)相等。

结构化查询语言语句:

更新测试_TB01 aa

SET (aa.part_id,aa。flag)=1

(选择bb .零件标识,bb .标志

来自测试_TB02 bb

其中aa。传感器标识=bb。传感器标识)

存在于何处

(从测试_TB02 cc中选择一个

其中aa。传感器标识=cc。传感器标识);

执行结果:

执行前测试_TB01:

执行前测试_TB02:

执行后测试_TB01:

以上,感谢。

总结

到此这篇关于结构化查询语言语句中存在用法的文章就介绍到这了,更多相关结构化查询语言语句存在用法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 使用sql语句实现查询排序,顺序和倒序的区别,sql按倒序排序
  • 使用sql语句实现查询排序,顺序和倒序的区别,sql按倒序排序,使用SQL语句实现查询排序,顺序和倒序
  • 使用php连接mysql数据库,php连接数据库的方法
  • 使用php连接mysql数据库,php连接数据库的方法,一文详解PHP连接MySQL数据库的三种方式
  • 一篇文章带你入门sql编程语句,一篇文章带你入门sql编程题
  • 一篇文章带你入门sql编程语句,一篇文章带你入门sql编程题,一篇文章带你入门SQL编程
  • window无法启动mysql 1067,windows无法启动mysql57服务,错误1053
  • window无法启动mysql 1067,windows无法启动mysql57服务,错误1053,windows无法启动MySQL服务报错1067的解决方法
  • vb中adodb连接数据库,,VB语言使用ADO连接、操作SQLServer数据库教程
  • sql重复记录查询的几种方法有哪些,查询重复记录sql语句
  • sql重复记录查询的几种方法有哪些,查询重复记录sql语句,SQL重复记录查询的几种方法
  • sql语句的各个关键字的解析过程详细总结怎么写,sql语句的各个关键字的解析过程详细总结图
  • sql语句的各个关键字的解析过程详细总结怎么写,sql语句的各个关键字的解析过程详细总结图,SQL语句的各个关键字的解析过程详细总结
  • sql语句游标,sqlserver游标的使用
  • sql语句游标,sqlserver游标的使用,详解SQL游标的用法
  • 留言与评论(共有 条评论)
       
    验证码:

    Copyright @ 2018-2022 盛行IT 合作邮箱: mdzz19960812@outlook.com

    备案号:湘ICP备2023015575号