SQL 指令 (select)
SQL 指令 (select)
http://blog.blueshop.com.tw/pili9141/articles/52279.aspx
1 | select |
2 | --◎ 查詢資料庫中資料,結尾需加上「;」 |
3 | |
4 | 查詢所有欄位 * |
5 | 1. select * from 資料表a |
6 | --◎ 查詢資料表a所有欄位,欄位順序為建表格時之順序 |
7 | |
8 | 查詢多欄 |
9 | 2. select 欄1 a,欄2 b from 資料表a |
10 | --◎ 查詢資料表a的欄位1,並給別名為a、欄位2給別名為b |
11 | --◎ 顯示結果的欄位名稱為別名的名稱 |
12 | |
13 | where 條件 |
14 | 3. select 欄位 from 資料表a where 條件1 and 條件2 or 條件3 |
15 | --◎ 查詢資料表a的欄位,需符合條件1和條件2,或符合條件3 |
16 | |
17 | order 排序 |
18 | 4. select 欄1,欄2 from 資料表a where 條件 order by 欄2 |
19 | --◎ 查詢資料表a符合條件的欄位1、2的值,並以欄2做排序 |
20 | --◎ 排序的欄位可以欄位順序的數字替代,此例可寫成 order by 2 |
21 | --◎ 排序預設由小到大,若要由大到小需加上desc,此例可寫成 order by 2 desc |
22 | --◎ 多欄排序,此例可寫成 order by 欄2,欄1 ,當欄2順序相同時,再以欄1做比較 |
23 | |
24 | group by 群組 |
25 | 5. select 欄1,欄2 from 資料表a where 條件 group by 欄1,欄2 |
26 | --◎ 查詢資料表a符合條件的欄位1、2的值,並將欄1、2相同的資料列做群組 |
27 | |
28 | ex. |
29 | 欄1 欄2 |
30 | ---------------- |
31 | A B |
32 | A C |
33 | A B |
34 | |
35 | select 欄1,欄2 from 資料表a group by 欄1,欄2; |
36 | |
37 | 欄1 欄2 |
38 | ---------------- |
39 | A B |
40 | A C |
41 | |
42 | --◎ group by 的欄位不一定列於select 之後 |
43 | |
44 | having 篩選group |
45 | 6. select 欄1,max(欄2) from 表a,表b |
46 | where a.欄1 = b.欄1 |
47 | group by a.欄1 |
48 | having max(欄2) >= 500 |
49 | |
50 | --◎ 查詢表a、表b,以表a的欄1和表b的欄1做關聯,查詢資料中欄2最大值,並做群組, |
51 | -- 群組後的資料,再篩選欄2的條件需>=500 |
52 | --◎ 主要是搭配gropu by ,可篩選group function |
53 | |
54 | case 處理符合條件之欄位值 |
55 | 7. select 欄1,欄2, |
56 | (case when 欄2 is null then '沒資料' |
57 | when 欄2 = '00' then 欄2 end) |
58 | from 資料表a |
59 | |
60 | --◎ 查詢資料表a的欄1、欄2,若欄2是null則查詢出來的欄位值顯示「沒資料」, |
61 | -- 若查詢的欄2等於00,則查出來的欄位值不變 |
62 | |
63 | 8. select 欄1,欄2, u_max(欄1,欄2) from 資料表a |
64 | --◎ 從資料表a中查詢欄1、欄2,並將欄1、2的欄位值當參數代入自訂function「u_max」中運算 |
65 | --◎ sql中可使用oracle提供的函數或是使用者自訂函數 |