日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL中的Exist操作

發布時間:2025/4/9 数据库 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL中的Exist操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

exists用于檢查一個子查詢是否至少會返回一行數據(即檢測行的存在),返回值為true或false。
語法: exists subquery
參數: subquery是一個受限的select語句(不允許有compute子句和into關鍵字),該語句返回一個結果集。
結果類型: boolean類型——如果子查詢包含行,則返回true,否則返回false,即言:exists根據subquery的結果集是否為空來返回一個布爾值——如果不為空則返回true,否則返回false。

以例子說明其使用方法:

table1table2

id class_nameid name class_id

01一年級 01 張三01

02二年級 02 李四02

03三年級 04 王五04

1、在子查詢中使用NULL仍然返回結果集:select * from table1 where exists(select null),該條sql語句等同于:select * from table1,其查詢結果為:

id class_name

01一年級

02二年級

03三年級

2、select t1.id,t1.class_name from table1 t1 where exists (select * from table2 t2 where t2.class_id = t1.id),該條sql語句等同于:select t1.id,t1.class_name from table1 t1 where t1.id in (select t2.class_id from table2 t2 where t2.class_id = t1.id),其查詢的結果為:

id class_name

01一年級

02二年級

其查詢過程為:

select t1.id,t1.class_name from table1 t1 where exists (select * from table2 t2 where t2.class_id = '01')

---> select * from table2 t2 where t2.class_id = '01'有數據存在,所以exists返回true;

select t1.id,t1.class_name from table1 t1 where exists (select * from table2 t2 where t2.class_id = '02')

---> select * from table2 t2 where t2.class_id = '02'有數據存在,所以exists返回true;

select t1.id,t1.class_name from table1 t1 where exists (select * from table2 t2 where t2.class_id = '03')

---> select * from table2 t2 where t2.class_id = '03'沒有數據存在,所以exists返回false;

這種執行過程可以通俗的理解為:將外查詢表的每一行,代入內查詢作為檢驗,如果內查詢返回的結果取非空值,則exists子句返回true,這一行可作為外查詢的結果行,否則不能作為結果。
分析器會先看語句的第一個詞,當它發現第一個詞是select關鍵字的時候,它會跳到from關鍵字,然后通過from關鍵字找到表名并把表裝入內存,接著是找where關鍵字,如果找不到則返回到select找字段解析,如果找到where,則分析其中的條件,完成后再回到select分析字段,最后形成一張虛表。
where關鍵字后面的是條件表達式,條件表達式計算完成后,會有一個返回值,即非0或0,非0即為真(true),0即為假(false)。如果為正則執行select語句,否則不執行select語句。
分析器先找到關鍵字select,然后跳到from關鍵字,將該關鍵字后面的表導入內存,并通過指針找到第一條記錄,接著找到where關鍵字計算它的條件表達式,如果為真那么把這條記錄裝到一個虛表當中,指針再指向下一條記錄。如果為假那么指針直接指向下一條記錄,而不進行其它操作。一直檢索完整個表,并把檢索出來的虛擬表返回給用戶。exists是條件表達式的一部分,它也有一個返回值(true或false)。

在插入記錄前,需要檢查這條記錄是否已經存在,只有當記錄不存在時才執行插入操作,可以通過使用EXISTS條件句防止插入重復記錄。
insert into table1 (id,class_name) values ('03','四年級') where not exists (select * from table1 where table1 = '03')

exists與in的區別:

1、in引導的子句只能返回一個字段,exists子句可以有多個字段;

2、通常情況下采用exists要比in效率高,因為in不走索引,但要但要具體情況具體分析:in適合于外表大而內表小的情況;exists適合于外表小而內表大的情況。

轉載于:https://www.cnblogs.com/jpit/p/8317176.html

總結

以上是生活随笔為你收集整理的SQL中的Exist操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本美女逼 | 国产精品免费电影 | 国产又爽又黄视频 | 亚洲欧洲成人在线 | 日本熟妇成熟毛茸茸 | 亚洲精品高潮 | 相亲对象是问题学生在线观看 | 日韩最新视频 | 精品乱码一区二区三四区视频 | 久久精品免费播放 | 欧美高清在线观看 | 亚洲无码精品在线观看 | 婷婷色婷婷开心五月四房播播 | 加勒比波多野结衣 | 黑人巨大精品欧美一区二区 | 在线精品视频播放 | 欧美日韩在线一区二区三区 | 久久人成 | 日韩六区 | 国产91清纯白嫩初高中在线观看 | 男女污污软件 | 国产传媒av | 国产精品视频a | 香蕉色综合 | 9色在线视频 | 欧美激情在线狂野欧美精品 | 日本在线网站 | 国产精品伦一区二区三区免费看 | 亚洲成人网在线播放 | 九九九精品视频 | 成年午夜视频 | 欧美日韩国产免费 | 欧美亚洲成人网 | 草草屁屁影院 | 日韩av网址在线观看 | 国产亚洲欧美在线 | 亚洲综合小说网 | 国产成人亚洲精品无码h在线 | 亚洲一级电影 | 一级黄色性生活视频 | 午夜操操 | 黄黄的视频在线观看 | 日美毛片| m3u8成人免费视频 | 日本激情视频 | 黄在线视频| 午夜精品久久久久久久91蜜桃 | 欧美人xxxx| 欧美日韩www | 久久久久久久久久久久久女国产乱 | 欧美在线观看网站 | 欧美特级黄色录像 | 久久一道本 | 都市激情一区 | 毛茸茸毛片 | 国产农村乱对白刺激视频 | 精品国产www | 动漫美女隐私无遮挡 | 国内三级在线 | 人人干人人爽 | 天天摸夜夜 | 毛片动态图 | 精品一区在线 | 亚洲第一在线播放 | 91国内精品久久久久 | 97人人插| 亚洲欧美成人综合 | 2020亚洲天堂 | 免费av软件 | 国产一区亚洲二区三区 | 黄色喷水网站 | 亚洲网站视频 | 黄色精品 | 樱花草涩涩www在线播放 | 99福利视频导航 | 国产精品电影在线观看 | 欧美老女人性生活 | av一区二区三区四区 | 在线观看免费的av | 色综合天天综合网国产成人网 | wwwxxoo| 永久免费不卡在线观看黄网站 | 日韩一区二区欧美 | 毛片一二三区 | 色免费看 | 无码日韩精品一区二区 | 国产a免费视频 | 精久久久久久 | 国产成人亚洲一区二区 | 久久激情影院 | 9人人澡人人爽人人精品 | 波多野结衣二区三区 | 无码人妻久久一区二区三区 | 少妇又色又紧又爽又刺激视频 | 9色av | av不卡一区二区 | 99色图| 欧美高潮视频 | 波多在线观看 |