国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > MySQL > 正文

mysql嵌套查詢語(yǔ)句示例分析

2024-07-24 12:33:18
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
  這篇文章主要講解了“mysql嵌套查詢語(yǔ)句實(shí)例分析”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“mysql嵌套查詢語(yǔ)句實(shí)例分析”吧!
 
  在mysql中,嵌套查詢表示在一個(gè)SELECT語(yǔ)句的WHERE子句或HAVING子句中嵌套另一個(gè)SELECT語(yǔ)句的查詢,也叫作子查詢,語(yǔ)法為“SELECT語(yǔ)句 WHERE 條件(SELECT語(yǔ)句)”。
 
  本教程操作環(huán)境:windows10系統(tǒng)、mysql8.0.22版本、Dell G3電腦。
 
  嵌套查詢
 
  定義:一個(gè)內(nèi)層查詢語(yǔ)句(select-from-where)塊可以嵌套在另外一個(gè)外層查詢塊的where子句中,其中外層查詢也稱為父查詢,主查詢。內(nèi)層查詢也稱子查詢,從查詢。子查詢一般不使用order by子句,只能對(duì)最終查詢結(jié)果進(jìn)行排序。
 
  另一種定義:在一個(gè)SELECT 語(yǔ)句的WHERE 子句或HAVING 子句中嵌套另一個(gè)SELECT 語(yǔ)句的查詢稱為嵌套查詢,又稱子查詢。
 
  嵌套查詢的工作方式是:先處理內(nèi)查詢,由內(nèi)向外處理,外層查詢利用內(nèi)層查詢的結(jié)果嵌套查詢不僅僅可以用于父查詢select語(yǔ)句使用。還可以用于insert、update、delete語(yǔ)句或其他子查詢中。
 
  一、子查詢的組成
 
  1、包含標(biāo)準(zhǔn)選擇列表組件的標(biāo)準(zhǔn)select查詢。
 
  2、包含一個(gè)或多個(gè)表或者視圖名稱的標(biāo)準(zhǔn)from子句。
 
  3、可選的where子句。
 
  4、可選的group by子句。
 
  5、可選的having子句。
 
  二、子查詢的語(yǔ)法規(guī)則
 
  1、子查詢的select查詢總是使用圓括號(hào)括起來(lái)。
 
  2、不能包括compute或for.browse子句。
 
  3、如果同時(shí)指定top子句,則可能只包括order by子句。
 
  4、子查詢最多可以嵌套到32層。個(gè)別查詢可能會(huì)不支持32層嵌套。
 
  5、任何可以使用表達(dá)式的地方都可以使用子查詢,只要它返回的是單個(gè)值。
 
  6、如果某個(gè)表只出現(xiàn)在子查詢中二不出現(xiàn)在外部查詢中,那么該表的列就無(wú)法包含在輸出中。
 
  三、返回一組值的子查詢
 
  如果子查詢的返回值不止一個(gè),而是一個(gè)集合時(shí),則不能直接使用比較運(yùn)算符,可以在比較運(yùn)算符和子查詢之間插入ANY、SOME或ALL。其中等值關(guān)系可以用IN操作符。
 
  3.1 all嵌套查詢
 
  all是sql中的邏輯運(yùn)算符好,如果一系列的比較都為true,那么結(jié)果才能為true。
 
  select name from person
 
  where countryid > all ( select countryid from country  --當(dāng)countryid大于以下返回的所有id,此結(jié)果才為T(mén)rue,此結(jié)果才返回
 
  where countryname = '中國(guó)');

  3.2 in嵌套查詢
 
  in關(guān)鍵字用于where子句中用來(lái)判斷查詢的表達(dá)式是否在多個(gè)值的列表中。返回滿足in列表中的滿足條件的記錄。
 
  select name
 
  from person
 
  where countryid in ( select countryid
 
  from country
 
  where countryname = '中國(guó)');
 
  3.3 some嵌套查詢
 
  some在sql中的邏輯運(yùn)算符號(hào),如果在一系列比較中,有些值為T(mén)rue,那么結(jié)果就為T(mén)rue。some的語(yǔ)法是:
 
  select name from person
 
  where countryid = some ( select countryid from country    --用等號(hào)和以下查詢到的值比較,如果與其中一個(gè)相等,就返回
 
  where countryname = '中國(guó)');
 
  3.4 exists嵌套查詢
 
  exists是sql中的邏輯運(yùn)算符號(hào)。如果子查詢有結(jié)果集返回,那么就為T(mén)rue。exists代表“存在”的意義,它只查找滿足條件的那些記錄。一旦找到第一個(gè)匹配的記錄后,就馬上停止查找。
 
  exists 子查詢
 
  其中子查詢是一個(gè)首先的select語(yǔ)句,不允許有compute子句和into關(guān)鍵字。
 
  exists 的意思是,子查詢是否有結(jié)果集返回。
 
  SELECT * FROM Person
 
  WHERE exists ( SELECT 1); --SELECT 0 SELECT NULL 返回結(jié)果都一樣,因?yàn)檫@三個(gè)子查詢都有結(jié)果集返回,因此總是True,SELECT * FROM Person照常執(zhí)行
 
  但是如果子查詢中因?yàn)榧恿藯l件而沒(méi)有結(jié)果集返回,則主語(yǔ)句就不執(zhí)行了:
 
  SELECT * FROM Person
 
  WHERE exists ( SELECT * FROM Person
 
  WHERE Person_Id = 100); --如果不存在Person_Id的記錄,則子查詢沒(méi)有結(jié)果集返回,主語(yǔ)句不執(zhí)行
 
  四、返回新數(shù)據(jù)表的子查詢
 
  5.1 查詢“001”課程比“002”課程成績(jī)高的所有學(xué)生的學(xué)號(hào);
 
  Select a.Sno from (select Sno,score from SC where Sno='001') a,
 
  (select Sno,scorefrom SC where Cno='002') b
 
  Where a.score>b.score and a.Sno=b.Sno;
 
  感謝各位的閱讀,以上就是“mysql嵌套查詢語(yǔ)句實(shí)例分析”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)mysql嵌套查詢語(yǔ)句實(shí)例分析這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
 

(編輯:武林網(wǎng))

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 丰镇市| 奇台县| 卢氏县| 木兰县| 棋牌| 大姚县| 滦南县| 威信县| 林周县| 苍南县| 宁海县| 高州市| 疏勒县| 乐陵市| 大渡口区| 城市| 祁门县| 上犹县| 惠来县| 龙门县| 团风县| 上栗县| 永吉县| 丰台区| 营山县| 武穴市| 彩票| 北流市| 河南省| 江西省| 九台市| 巴青县| 武邑县| 清丰县| 霍城县| 南木林县| 红桥区| 丁青县| 桐柏县| 长治市| 潼南县|