一個查詢是一個在數據庫中拿取數據的要求。在 SQL 中,我們使用 SELECT 指令去查詢。
在以下例子中,我們使用 s6a
這個表。
最簡單的 SELECT 語句如下︰
SELECT
<選擇列表>
FROM <表的名稱>
這語句把所有在 <表的名稱> 所示的表中拿取所有記錄中的指定字段(在
<選擇列表> 標明)。輸出中各個記錄中字段的次序和該語句中
<選擇列表> 標明的次序一樣。
如果要把所有字段拿取,在 <選擇列表> 中填上「*」」。
輸出中記錄的次序和表中記錄的次序一樣。
例如︰
拿取 s6a 整個表︰ |
SELECT * FROM s6a |
輸出︰
class_num |
stud_id |
name |
email |
clc |
ue |
phy |
pm |
cs |
1 |
92114 |
Chan Wai Man, Raymond |
s92114@sample.edu.hk |
64 |
55 |
70 |
64 |
59 |
2 |
92133 |
Chow Chi Ling |
clchow@example.com |
70 |
62 |
62 |
59 |
70 |
3 |
94302 |
Fung Ching Man, Mandy |
mandyfung@example.com |
72 |
50 |
42 |
59 |
60 |
4 |
91131 |
Hung Wai Ming |
s91131@sample.edu.hk |
52 |
48 |
55 |
39 |
59 |
5 |
92153 |
Leung King |
kleung@example.com |
40 |
50 |
51 |
40 |
60 |
6 |
92211 |
Poon Kwok Fai |
kwokfai@testing.com.hk |
59 |
60 |
70 |
77 |
75 |
7 |
91194 |
Sung Hing Wah, Patrick |
patricksung@example.com |
70 |
72 |
81 |
69 |
70 |
8 |
97602 |
Tang Wing Chi |
s97602@sample.edu.hk |
80 |
79 |
70 |
72 |
69 |
9 |
92145 |
Wong Ka Tak, Kent |
klkwon@example.com |
35 |
40 |
52 |
50 |
42 |
10 |
93211 |
Yeung Chun |
cyeung@testing.com.hk |
69 |
80 |
77 |
60 |
52 |
11 |
96374 |
Lai Fung Chun |
s96374@sample.edu.hk |
78 |
75 |
69 |
65 |
61 |
12 |
94412 |
Chan Lai Yin |
cly@testing.com.hk |
43 |
59 |
53 |
61 |
60 |
13 |
98832 |
Man Fook Wing |
fwman@testing.com.hk |
55 |
77 |
34 |
40 |
51 |
14 |
95343 |
Chung Kwok Fai, Fred |
fredchung@example.com |
72 |
62 |
53 |
47 |
50 |
15 |
97233 |
Lee Lai May |
maylee@testing.com.hk |
67 |
71 |
56 |
60 |
55 | |
從 s6a 這個表中選取字段
name、stud_id 和 cs(留意字段的次序)︰ |
SELECT name, stud_id, cs FROM s6a |
輸出︰
name |
stud_id |
cs |
Chan Wai Man, Raymond |
92114 |
59 |
Chow Chi Ling |
92133 |
70 |
Fung Ching Man, Mandy |
94302 |
60 |
Hung Wai Ming |
91131 |
59 |
Leung King |
92153 |
60 |
Poon Kwok Fai |
92211 |
75 |
Sung Hing Wah, Patrick |
91194 |
70 |
Tang Wing Chi |
97602 |
69 |
Wong Ka Tak, Kent |
92145 |
42 |
Yeung Chun |
93211 |
52 |
Lai Fung Chun |
96374 |
61 |
Chan Lai Yin |
94412 |
60 |
Man Fook Wing |
98832 |
51 |
Chung Kwok Fai, Fred |
95343 |
50 |
Lee Lai May |
97233 |
55 | |
除了一列表的字段及字符「*」外,跟著關鍵字
SELECT 的 <選擇列表>
也可以一列表的算式。一個算式可以是一個常數、一個字段名稱或由算術運算符(例如 +、-、*、 /)及括號連接成以上各樣的任何組合。
例如︰
列出所有中六甲班的學生的班號、姓名及五個科目的平均分︰ |
SELECT class_num, name, (clc + ue + pm + phy + cs) / 5 FROM s6a |
輸出樣本(不同的系統可能有不同輸出)︰
class_num |
name |
Exp_3 |
1 |
Chan Wai Man, Raymond |
62.4000 |
2 |
Chow Chi Ling |
64.6000 |
3 |
Fung Ching Man, Mandy |
56.6000 |
4 |
Hung Wai Ming |
50.6000 |
5 |
Leung King |
48.2000 |
6 |
Poon Kwok Fai |
68.2000 |
7 |
Sung Hing Wah, Patrick |
72.4000 |
8 |
Tang Wing Chi |
74.0000 |
9 |
Wong Ka Tak, Kent |
43.8000 |
10 |
Yeung Chun |
67.6000 |
11 |
Lai Fung Chun |
69.6000 |
12 |
Chan Lai Yin |
55.2000 |
13 |
Man Fook Wing |
51.4000 |
14 |
Chung Kwok Fai, Fred |
56.8000 |
15 |
Lee Lai May |
61.8000 |
在輸出中,系統會為 <選擇列表> 中的算式自行建立一個「字段名稱」(例如上面所示的
Exp_3)。數值(在這情況中的
Exp_3)的顯示格式和軟件有關。 |
有時候,我們想有一個有意義的形容性名稱,用來代表輸出中的一個字段名稱。要達到這個目的,我們可以在字段名稱後使用關鍵字 AS,然後一個新的名稱(即同址別名)。
例如︰
從表 s6a 中選取字段
name、stud_id 和 cs,以及把字段
cs 顯示為 Computer_studies。 |
SELECT name, stud_id, cs AS computer_studies FROM
s6a |
輸出︰
name |
stud_id |
Computer_studies |
Chan Wai Man, Raymond |
92114 |
59 |
Chow Chi Ling |
92133 |
70 |
Fung Ching Man, Mandy |
94302 |
60 |
Hung Wai Ming |
91131 |
59 |
Leung King |
92153 |
60 |
Poon Kwok Fai |
92211 |
75 |
Sung Hing Wah, Patrick |
91194 |
70 |
Tang Wing Chi |
97602 |
69 |
Wong Ka Tak, Kent |
92145 |
42 |
Yeung Chun |
93211 |
52 |
Lai Fung Chun |
96374 |
61 |
Chan Lai Yin |
94412 |
60 |
Man Fook Wing |
98832 |
51 |
Chung Kwok Fai, Fred |
95343 |
50 |
Lee Lai May |
97233 |
55 | |
同址別名通常和算式一起使用︰
列出中六甲班所有學生的班號、姓名及五個科目的平均分,以及把平均分顯示為
Average︰ |
SELECT class_num, name, (clc + ue + pm + phy + cs) / 5 AS Average FROM s6a |
輸出樣本(不同的系統可能有不同輸出)︰
class_num |
name |
Average |
1 |
Chan Wai Man, Raymond |
62.4000 |
2 |
Chow Chi Ling |
64.6000 |
3 |
Fung Ching Man, Mandy |
56.6000 |
4 |
Hung Wai Ming |
50.6000 |
5 |
Leung King |
48.2000 |
6 |
Poon Kwok Fai |
68.2000 |
7 |
Sung Hing Wah, Patrick |
72.4000 |
8 |
Tang Wing Chi |
74.0000 |
9 |
Wong Ka Tak, Kent |
43.8000 |
10 |
Yeung Chun |
67.6000 |
11 |
Lai Fung Chun |
69.6000 |
12 |
Chan Lai Yin |
55.2000 |
13 |
Man Fook Wing |
51.4000 |
14 |
Chung Kwok Fai, Fred |
56.8000 |
15 |
Lee Lai May |
61.8000 | |