自定義View系列教程00–推翻自己和過往,重學(xué)自定義View 自定義View系列教程01–常用工具介紹 自定義View系列教程02–onMeasure源碼詳盡分析 自定義View系列教程03–onLayout源碼詳盡分析 自定義View系列教程04–Draw源碼分析及其實(shí)踐 自定義View系列教程05–示例分析 自定義View系列教程06–詳解View的Touch事件處理 自定義View系列教程07–詳解ViewGroup分發(fā)Touch事件 自定義View系列教程08–滑動沖突的產(chǎn)生及其處理
探索Android軟鍵盤的疑難雜癥 深入探討Android異步精髓Handler 詳解Android主流框架不可或缺的基石 站在源碼的肩膀上全解Scroller工作機(jī)制
Android多分辨率適配框架(1)— 核心基礎(chǔ) Android多分辨率適配框架(2)— 原理剖析 Android多分辨率適配框架(3)— 使用指南
Android程序員C語言自學(xué)完備手冊 講給Android程序員看的前端系列教程(圖文版) 講給Android程序員看的前端系列教程(視頻版)
版權(quán)聲明
子查詢概述子查詢是指一個(gè)查詢語句嵌套在另一個(gè)查詢語句內(nèi)部的查詢;該查詢語句可以嵌套在一個(gè) SELECT、SELECT…INTO、INSERT…INTO等語句中。在執(zhí)行查詢時(shí),首先會執(zhí)行子查詢中的語句,再將返回的結(jié)果作為外層查詢的過濾條件。在子?xùn)嗽冎型ǔ?梢允褂帽容^運(yùn)算符和IN、EXISTS、ANY、ALL等關(guān)鍵字。 在開始學(xué)習(xí)子查詢之前,我們先準(zhǔn)備好數(shù)據(jù),代碼如下: DROP TABLE IF EXISTS student;DROP TABLE IF EXISTS class;-- 創(chuàng)建班級表CREATE TABLE class( cid int (4) NOT NULL PRIMARY KEY, cname varchar(20));-- 創(chuàng)建學(xué)生表CREATE TABLE student ( sid int (4) NOT NULL PRIMARY KEY, sname varchar (20), sage int (2), classid int (4) NOT NULL);-- 向班級表插入數(shù)據(jù)INSERT INTO class VALUES(1001,'Java');INSERT INTO class VALUES(1002,'C++');INSERT INTO class VALUES(1003,'Python');INSERT INTO class VALUES(1004,'PHP');INSERT INTO class VALUES(1005,'Android');-- 向?qū)W生表插入數(shù)據(jù)INSERT INTO student VALUES(1,'劉婷婷',20,1001);INSERT INTO student VALUES(2,'王琴琴',21,1002);INSERT INTO student VALUES(3,'楊洋洋',24,1003);INSERT INTO student VALUES(4,'李霞霞',23,1004);INSERT INTO student VALUES(5,'吳桃桃',21,1001);INSERT INTO student VALUES(6,'高倩倩',26,1001);INSERT INTO student VALUES(7,'甘麗麗',27,1002); - 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
帶比較運(yùn)算符的子查詢在子查詢中可使用>、<、=、>=、<=、!= 等比較運(yùn)算符。 示例如下: -- 查詢高倩倩同學(xué)所在班級的信息SELECT * FROM class WHERE cid=(SELECT classid FROM student WHERE sname='高倩倩');-- 查詢比高倩倩同學(xué)所在班級編號還大的班級的信息SELECT * FROM class WHERE cid>(SELECT classid FROM student WHERE sname='高倩倩');
結(jié)果如下:
帶[NOT] IN關(guān)鍵字的子查詢使用[NOT] IN關(guān)鍵字進(jìn)行子查詢時(shí)內(nèi)層查詢語句僅返回一個(gè)數(shù)據(jù)列,這個(gè)數(shù)據(jù)列中的值供外層查詢語句進(jìn)行比較操作。 示例如下: -- 查詢年紀(jì)大小為21的學(xué)生的所在班級的信息SELECT * FROM class WHERE cid IN (SELECT classid FROM student WHERE sage=21); 結(jié)果如下:
結(jié)果分析: - 使用IN關(guān)鍵字查詢出年紀(jì)大小為21的學(xué)生所在班級的編號;這些編號作為一個(gè)列供外層查詢使用
- 在外層查詢語句中依據(jù)班級編號查詢每個(gè)班級的信息
示例如下: -- 查詢年紀(jì)大小不為21的學(xué)生的所在班級的信息SELECT * FROM class WHERE cid NOT IN (SELECT classid FROM student WHERE sage=21);
結(jié)果如下:
帶EXISTS關(guān)鍵字的子查詢EXISTS關(guān)鍵字后面的參數(shù)可以是任意一個(gè)子查詢, 它不產(chǎn)生任何數(shù)據(jù)只返回TRUE或FALSE。當(dāng)返回值為TRUE時(shí)外層查詢才會 執(zhí)行。 示例如下: -- 假若高倩倩同學(xué)在學(xué)生表中則從班級表查詢所有班級信息SELECT * FROM class WHERE EXISTS (SELECT * FROM student WHERE sname='高倩倩'); 結(jié)果如下:
帶ANY關(guān)鍵字的子查詢ANY關(guān)鍵字表示滿足其中任意一個(gè)條件就返回一個(gè)結(jié)果作為外層查詢條件。 示例如下: -- 查詢比任一學(xué)生所屬班級號還大的班級編號SELECT * FROM class WHERE cid > ANY (SELECT classid FROM student);
結(jié)果如下:
結(jié)果分析: - 在子查詢中從學(xué)生表查出所有學(xué)生的班級號,即1001,1002,1003,1004
- 從班級表中查詢比1001,1002,1003,1004中任意一個(gè)班級號還的班級號
帶ALL關(guān)鍵字的子查詢ALL關(guān)鍵字與ANY有點(diǎn)類似,只不過帶ALL關(guān)鍵字的子?xùn)嗽兎祷氐慕Y(jié)果需同時(shí)滿足所有內(nèi)層?xùn)嗽儣l件。 示例如下: -- 查詢比所有學(xué)生所屬班級號還大的班級編號SELECT * FROM class WHERE cid > ALL (SELECT classid FROM student); 結(jié)果如下:
查詢語句的書寫順序和執(zhí)行順序在此總結(jié),查詢語句的書寫順序和執(zhí)行順序。 查詢語句的書寫順序 select ===> from ===> where ===> group by ===> having ===> order by ===> limit 查詢語句的執(zhí)行順序 from ===> where ===> group by ===> having ===> select ===> order by ===> limit 附錄在此,以附錄的形式給出本節(jié)教程的源碼,如下所示: DROP TABLE IF EXISTS student;DROP TABLE IF EXISTS class;-- 創(chuàng)建班級表CREATE TABLE class( cid int (4) NOT NULL PRIMARY KEY, cname varchar(20));-- 創(chuàng)建學(xué)生表CREATE TABLE student ( sid int (4) NOT NULL PRIMARY KEY, sname varchar (20), sage int (2), classid int (4) NOT NULL);-- 向班級表插入數(shù)據(jù)INSERT INTO class VALUES(1001,'Java');INSERT INTO class VALUES(1002,'C++');INSERT INTO class VALUES(1003,'Python');INSERT INTO class VALUES(1004,'PHP');INSERT INTO class VALUES(1005,'Android');-- 向?qū)W生表插入數(shù)據(jù)INSERT INTO student VALUES(1,'劉婷婷',20,1001);INSERT INTO student VALUES(2,'王琴琴',21,1002);INSERT INTO student VALUES(3,'楊洋洋',24,1003);INSERT INTO student VALUES(4,'李霞霞',23,1004);INSERT INTO student VALUES(5,'吳桃桃',21,1001);INSERT INTO student VALUES(6,'高倩倩',26,1001);INSERT INTO student VALUES(7,'甘麗麗',27,1002);-- 查詢高倩倩同學(xué)所在班級的信息SELECT * FROM class WHERE cid=(SELECT classid FROM student WHERE sname='高倩倩');-- 查詢比高倩倩同學(xué)所在班級編號還大的班級的信息SELECT * FROM class WHERE cid>(SELECT classid FROM student WHERE sname='高倩倩');-- 查詢年紀(jì)大小為21的學(xué)生的所在班級的信息SELECT * FROM class WHERE cid IN (SELECT classid FROM student WHERE sage=21);-- 查詢年紀(jì)大小不為21的學(xué)生的所在班級的信息SELECT * FROM class WHERE cid NOT IN (SELECT classid FROM student WHERE sage=21);-- 假若高倩倩同學(xué)在學(xué)生表中則從班級表查詢所有班級信息SELECT * FROM class WHERE EXISTS (SELECT * FROM student WHERE sname='高倩倩');-- 查詢比所有學(xué)生所屬班級號還大的班級編號SELECT * FROM class WHERE cid > ALL (SELECT classid FROM student);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
|