1. 程式人生 > 資料庫 >mysql 查詢 (二)

mysql 查詢 (二)

 

帶 any/all 謂詞的子查詢

 

例子:

1. 查詢出成績比1號學生或3號學生高的其他學生的 的資訊(stu)

檢視 stu 表

方法1:使用 any 謂詞

 

方法2:使用聚合函式 min()

 

2. 查詢出成績比1號學生和3號學生都高的其他學生的 的資訊(stu)

使用 all 謂詞

 使用聚合函式 max()

 


 

 

帶有 exists 謂詞的子查詢

 

例子:

1. 查詢未選課程的學生資訊(stu中有,而stu_score中沒有的學號)

檢視 stu, stu_score表

 

使用 not exists

 

2. 查詢既選修了1號課程又選修了4號課程的學生的學號(stu_score)

 


 

 

基於派生表的查詢(from 型子查詢)

 

例子:

1. 用from型子查詢實現 select * from stu where sex = 'f' and grade <60:(性別女,分數低於60)

 

 


 

 

連線查詢

 

多表連線查詢原理:

1. 先確定資料要用到哪些表。

2. 將多個表先通過笛卡爾積變成一個表。

3. 然後去除不符合邏輯的資料(根據where後的條件)。

 

 

 

 

1. 不帶謂詞的連線(很少使用)

例如:

連線 stu 和 stu_score

select stu.*, stu_score.* from stu,stu_score;

 

2. 等值連線

例子:

(1) 查詢選修了1號課程的所有學生的基本資訊

 

(2) 查詢出所有學生的學號,姓名,課程名及各門功課的成績 (stu,score,course)

stu,score,course三表如下所示:

查詢:

 

 

---------------------------------------------------------------------------------------------------------------------

自身連線

例子

查詢既選修了1號課程又選修了2號課程的學生的學號(score)

 

----------------------------------------------------------------------------------------------------------------------------

外連線

 

 

 

例子

查詢出所有學生的學號,姓名,課程號,及各門功課的成績 (stu,stu_score)包括沒有選修任何課程的學生

stu, stu_score 表

stu 左連線 stu_score

stu 右連線 stu_score

 

 


 

 

集合查詢

 

1. 並操作:union

 

例子:

(1): 合併 A 和 B,id 對應的 num 求和

A, B:

合併: