1. 程式人生 > 實用技巧 >mysql基礎(二)

mysql基礎(二)

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;