常见的嵌套查询
標題幾種常見的嵌套查詢
1.錄入數據
# 創建學員信息表 CREATE TABLE stu_info( id INT AUTO_INCREMENT PRIMARY KEY, NAME VARCHAR(20), gender CHAR(1), department VARCHAR(10), age TINYINT, province VARCHAR(10), email VARCHAR(50), mobilephone CHAR(11));# 創建學員成績表 CREATE TABLE stu_score( id INT , MySQL TINYINT, Python TINYINT, Visualization TINYINT);# 向學員表中插入數據INSERT INTO stu_info(NAME,gender,department,age,province,email,mobilephone) VALUES ('張勇','男','數學系',23,'河南','sfddf123dd@163.com','13323564321'), ('王兵','男','數學系',25,'江蘇','lss1993@163.com','17823774329'), ('劉偉','男','計算機系',21,'江蘇','qawsed112@126.com','13834892240'), ('張峰','男','管理系',22,'上海','102945328@qq.com','13923654481'), ('董敏','女','生物系',22,'浙江','82378339@qq.com','13428439022'), ('徐曉紅','女','計算機系',24,'浙江','xixiaohong@gmail.com','13720097528'), ('趙伊美','女','數學系',21,'江蘇','zhaomeimei@163.com','13417723980'), ('王建國','男','管理系',24,'浙江','9213228402@qq.com','13768329901'), ('劉清','女','統計系',23,'安徽','lq1128@gmail.com','17823651180'), ('趙家和','男','計算機系',28,'山東','dcrzdbjh@163.com','13827811311');# 向成績表中插入數據INSERT INTO stu_score VALUES(1,87,72,88),(3,90,66,72),(2,90,70,86),(4,88,82,76),(8,92,67,80),(10,88,82,89),(5,79,66,60),(7,91,78,90),(6,82,79,88),(9,85,70,85);SELECT * FROM `stu_info`;SELECT * FROM `stu_score`;2.含in關鍵詞的嵌套查詢
in關鍵詞有兩種用法:
Ⅰ將可枚舉的離散值寫在值列表中
Ⅱ語法中的嵌套,即把另一個查詢語句塊寫在in關鍵詞后面的括號內
①查詢與張勇,劉偉同一個系的學員信息
SELECT * FROM`stu_info` WHERE `department` IN (SELECT `department` FROM`stu_info` WHERE `NAME` IN ('張勇', '劉偉'));②查詢MySQL成績大于90分的學員信息
#用in嵌套來寫 SELECT * FROM `stu_info` WHERE id IN (SELECT id FROM `stu_score` WHERE MySQL >90); #用內連接來寫(感覺麻煩了好多,小白不懂o(╥﹏╥)o) SELECT s1.id,`NAME`,`gender`,`department`,`age`,`province`,`email`,`mobilephone` FROM`stu_info` AS s1 INNER JOIN `stu_score` AS s2 ON s1.`id` = s2.`id` WHERE s2.`MySQL` > 90 ;3.含exists關鍵詞的嵌套查詢
exists關鍵詞的作用與in幾乎一樣,區別在于,通過exists查詢返回的不是具體的值的集合,而是滿足條件的邏輯值;通常情況下,exists的查詢速度比in關鍵詞查詢速度快一些。
①查詢MySQL成績大于90分的學員信息
## 含比較運算符的嵌套查詢
SELECT * FROM`stu_info` AS s1 WHERE s1.`age` >= (SELECT AVG(age) FROM`stu_info` AS s2 WHERE s1.`department` = s2.`department`) ;5.含any或all 關鍵詞的嵌套查詢
對于含比較運算符的嵌套查詢而言,嵌套部分查詢語句結果返回單個值,如果嵌套部分的查詢返回多個值,并且父查詢和子查詢之間任然可以使用比較運算符進行連接時,就需要使用any和all關鍵詞了
①查詢非管理系中比管理系任意一個學員年齡小的學員信息
②查詢非管理系中比管理系所有學員年齡小的學員信息
總結
- 上一篇: 两篇文章都是翻译了一半就翻不下去了,E文
- 下一篇: 主板芯片