mysql基礎(二)
阿新 • • 發佈:2020-10-09
0x02資料查詢
2、連線查詢
- 同時涉及兩個以上的表的查詢
- 等值連線:連線運算子為=
①查詢每個學生及其選修課程的情況
select student.*,sc.* from student,sc where student.sno=sc.sno;
- 自然連線:
②查詢每個學生及其選修課程的情況
select student.sno,sname,ssex,sage,sdept,cno,grade from student,sc where student.sno=sc.sno
③查詢選修2號課程且成績在90分以上的所有學生的學號和姓名。
select student.sno,sname from student,sc where student.sno and sc.cno='2' and sc.grade>90;
- 多表連線:兩個以上的表進行連線
④查詢每個學生的學號,姓名,選修的課程名及成績
select student.sno,sname,cname,grade from student,sc,course where student.sno=sc.sno and sc.cno=course.cno;
3、巢狀查詢
- 巢狀查詢:將一個查詢塊巢狀在另一個查詢塊的where子句或having短語的條件中的查詢稱為巢狀查詢。
⑤選擇課程號為2的學生的名字
select sname from student where sno in (select sno from sc where cno='2');
⑥查詢與“劉晨”在同一個系學習的學生
select sno,sname,sdept from student where sdept in (select sdept from student where sname="劉晨");
⑦查詢選修了課程名為“資訊系統”的學生學號和姓名
select sno,sname from student where sno in (select sno from sc where cno in (select cno from course where cname='資訊系統')); #先在course關係中找出“資訊系統”的課程號,為3號 #然後在sc關係中找出選修了3號課程的學生學號 #最後在student關係中取出sno和sname
⑧用連線查詢實現
select sno,sname from student,sc,course where student.sno=sc.sno and sc.cno=course.cno and course.cname='資訊系統';
4、集合查詢
集合操作的種類
- 並操作union
- 交操作intersect
- 差操作except
參加集合操作的各查詢結果的列數必須相同,對應項的資料型別也必須相同
①查詢計算機科學系的學生及年齡不大於19歲的學生
select * from student where sdept='cs' union select select * from student where sage<=19;
#union:將多個查詢結果合併起來時,系統自動去掉重複元組
#union all:將多個查詢結果合併起來時,保留重複元素
②查詢選修了課程1或者選修了課程2的學生
select sno from sc where cno='1' union select sno from sc where cno='2';
③查詢計算機科學系的學生與年齡不大於19歲的學生的交集。
select * from student where sdept='cs' intersect select * from student where sage<=19;
#爆出語法錯誤(待解決)
④實際上就是查詢計算機科學系中年齡不大於19歲的學生。
select * from student where sdept='cs' and sage<=19;