欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

sql中exists的基本用法示例

 更新時(shí)間:2022年08月16日 10:49:22   作者:夙愿。  
關(guān)于exists的用法,相信很多人都有點(diǎn)迷糊,一開始我也犯迷糊,看了多篇博客和進(jìn)行多次實(shí)驗(yàn)之后,其實(shí)理解exists的用法并沒有那么困難,下面這篇文章主要給大家介紹了關(guān)于sql中exists基本用法的相關(guān)資料,需要的朋友可以參考下

現(xiàn)有:班級(jí)表(A_CLASS)

學(xué)生表( STUDENT)

注:學(xué)生表(STUDENT)的classId關(guān)聯(lián)班級(jí)表(A_CLASS)的主鍵ID

代碼:

select * from STUDENT s WHERE exists (select 1 from A_ClASS c where s.CLASS_ID=c.ID)

結(jié)果

【exists語句的執(zhí)行順序如下】:

1.首先會(huì)執(zhí)行外循環(huán)(select * from student

2.外循環(huán)返回的結(jié)果每一行都會(huì)拿著去內(nèi)層循環(huán)執(zhí)行(此時(shí)注意,內(nèi)層也是循環(huán)查詢的)

ps:select * from student查詢的為 (c1,c1,c2,c3);此時(shí)執(zhí)行順序應(yīng)該是(

第一次:select* from A_CLASS where c1=c1,第二次:select* from A_CLASS where c1=c2,

第三次:select* from A_CLASS where c1=c1,第四次:select* from A_CLASS where c1=c2,

第五次:select* from A_CLASS where c2=c1,第六次:select* from A_CLASS where c2=c2,

第七次:select* from A_CLASS where c3=c1,第八次:select* from A_CLASS where c3=c2)

注意:此時(shí)的內(nèi)層子查詢?nèi)绻麨閠rue,則直接返回不會(huì)再繼續(xù)執(zhí)行本次循環(huán);

綜上所述:第二次和第四次是不會(huì)被執(zhí)行的;  第一次和第三次還有第六次是符合條件的;

所以 STUDENT表中CLASS_ID字段為(c1,c2)的數(shù)據(jù)都會(huì)被查詢出來;

如果將 上述語句的=換成!=會(huì)是什么效果?

select * from STUDENT s WHERE exists (select 1 from A_ClASS c where s.CLASS_ID!=c.ID)

結(jié)果如果所示: 

具體分析一下:此時(shí)的執(zhí)行應(yīng)該和第一次一模一樣也是循環(huán)8次分別為:

第一次:select* from A_CLASS where c1!=c1,第二次:select* from A_CLASS where c1!=c2,

第三次:select* from A_CLASS where c1!=c1,第四次:select* from A_CLASS where c1!=c2,

第五次:select* from A_CLASS where c2!=c1,第六次:select* from A_CLASS where c2!=c2,

第七次:select* from A_CLASS where c3!=c1,第八次:select* from A_CLASS where c3!=c2

但是=換成了!=;這次是第六次和第八次沒有被執(zhí)行,其余的全被執(zhí)行,s.CLASS_ID涉及到(c1,c2,c3)并且語句都返回了true;

所以STUDENT表中CLASS_ID字段為(c1,c2,c3)的數(shù)據(jù)都會(huì)被查詢出來;

附:exists與in比較

in的用法相信大家很好理解。

select * from table_name where col_name [not] in(子查詢);
  • 先運(yùn)行子查詢,生成結(jié)果集
  • 再運(yùn)行外查詢時(shí),判斷col_name在不在子查詢里,在的話則返回該行,不在則不返回。
  • col_name的列數(shù)和子查詢的列數(shù)要相對(duì)應(yīng)

當(dāng)外大子小時(shí),即查詢的內(nèi)容很大時(shí),判斷次數(shù)少,in優(yōu)于exist【子查詢小用in】

當(dāng)外小子大時(shí),即查詢內(nèi)容很小時(shí),代入次數(shù)少,exists優(yōu)于in【子查詢大用exists】

總結(jié):

1.exists執(zhí)行外循環(huán)后,會(huì)拿著外循環(huán)的值,去內(nèi)層查詢,如果查詢到就直接返回true,并且終止本次循環(huán),如果是false,則會(huì)一直執(zhí)行,直至循環(huán)完成還為false,則本次內(nèi)循環(huán)不符合條件;

2.內(nèi)層的判斷條件不要寫!=;查詢的結(jié)果會(huì)不盡人意;

到此這篇關(guān)于sql中exists基本用法的文章就介紹到這了,更多相關(guān)sql exists的用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SQL Server根據(jù)分區(qū)表名查找所在的文件及文件組實(shí)現(xiàn)腳本

    SQL Server根據(jù)分區(qū)表名查找所在的文件及文件組實(shí)現(xiàn)腳本

    這篇文章主要介紹了SQL Server根據(jù)分區(qū)表名查找所在的文件及文件組實(shí)現(xiàn)腳本,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-07-07
  • SqlServer數(shù)據(jù)庫備份與還原的實(shí)現(xiàn)步驟

    SqlServer數(shù)據(jù)庫備份與還原的實(shí)現(xiàn)步驟

    這篇文章主要介紹了SqlServer數(shù)據(jù)庫備份與還原的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • SQL Server2012數(shù)據(jù)庫備份和還原的教程

    SQL Server2012數(shù)據(jù)庫備份和還原的教程

    這篇文章主要為大家詳細(xì)介紹了SQL Server2012數(shù)據(jù)庫備份和還原的教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • SQL?Server的觸發(fā)器詳解

    SQL?Server的觸發(fā)器詳解

    本文詳細(xì)講解了SQL?Server的觸發(fā)器,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • 異步的SQL數(shù)據(jù)庫封裝詳解

    異步的SQL數(shù)據(jù)庫封裝詳解

    一直在尋找一種簡(jiǎn)單有效的庫,它能在簡(jiǎn)化數(shù)據(jù)庫相關(guān)的編程的同時(shí)提供一種異步的方法來預(yù)防死鎖。使用這個(gè)庫,你可以輕松地連接到任何SQL-Server數(shù)據(jù)庫,執(zhí)行任何存儲(chǔ)過程或 T-SQL 查詢,并異步地接收查詢結(jié)果。這個(gè)庫采用C#開發(fā),沒有其他外部依賴。
    2015-09-09
  • 總結(jié)SQL執(zhí)行進(jìn)展優(yōu)化方法

    總結(jié)SQL執(zhí)行進(jìn)展優(yōu)化方法

    談到優(yōu)化就必然要涉及索引,就像要講鎖必然要說事務(wù)一樣,建議讀者先了解一下索引。
    2015-08-08
  • SQL2000 事務(wù)回滾問題探討

    SQL2000 事務(wù)回滾問題探討

    SQL2000 事務(wù)回滾問題,對(duì)于嚴(yán)重的錯(cuò)誤,系統(tǒng)根本就不會(huì)執(zhí)行隨后對(duì)@@error的判斷,會(huì)直接終止執(zhí)行,感興趣的朋友可以參考下哈
    2013-04-04
  • SqlServer 擴(kuò)展屬性的介紹

    SqlServer 擴(kuò)展屬性的介紹

    SqlServer 擴(kuò)展屬性的介紹,需要的朋友可以參考一下
    2013-03-03
  • 深入SQLServer中ISNULL與NULLIF的使用詳解

    深入SQLServer中ISNULL與NULLIF的使用詳解

    本篇文章是對(duì)SQLServer中ISNULL與NULLIF的使用進(jìn)行了詳細(xì)分析介紹,需要的朋友參考下
    2013-06-06
  • sqlserver中操作主從關(guān)系表的sql語句

    sqlserver中操作主從關(guān)系表的sql語句

    在項(xiàng)目開發(fā)中,經(jīng)常出現(xiàn)這樣的需求。在新增或修改一個(gè)主表數(shù)據(jù)時(shí),對(duì)應(yīng)的從表也要進(jìn)行同步,此時(shí)我們是怎么操作的了?
    2011-07-07

最新評(píng)論