SQL SELECT 資料庫處理基本指令(一)
基本指令
常用於將資料從資料庫中的表格內選出,FROM 資料庫中的表格內選出 SELECT 需要的資料,Car_Data 表格是一個資料庫內的結構,它的目的是儲存資料,表格處理中,如何列出需要的資料。
下列例子中可以看到基本的 SQL 架構語法:
DISTINCT
SELECT DISTINCT s_name FROM Car_Data
例如需要列出這個 Car_Data 表格中 s_name 欄位內有哪些不同的名稱值,而且每個值出現的次數只要出現一次。
s_name | s_price | s_sate |
Honda Accord | 1079000 | 2016-03-15 |
Toyota Camry | 799000 | 2016-02-15 |
Nissan Livina | 499000 | 2016-04-15 |
Toyota Camry | 819000 | 2016-02-15 |
Suzuki Swift | 548000 | 2016-01-15 |
Honda Accord | 1068000 | 2016-03-15 |
s_name | s_price | s_sate |
Honda Accord | 1079000 | 2016-03-15 |
Toyota Camry | 799000 | 2016-02-15 |
Nissan Livina | 499000 | 2016-04-15 |
Suzuki Swift | 548000 | 2016-01-15 |
WHERE
SELECT * FROM Car_Data WHERE s_price > 600000
例如需要列出這個 Car_Data 表格中 s_price 欄位內有哪些價格值大於 600000 時,就會需要用到 WHERE 這個指令。
s_name | s_price | s_sate |
Honda Accord | 1079000 | 2016-03-15 |
Toyota Camry | 799000 | 2016-02-15 |
Nissan Livina | 499000 | 2016-04-15 |
Toyota Camry | 819000 | 2016-02-15 |
Suzuki Swift | 548000 | 2016-01-15 |
s_name | s_price | s_sate |
Honda Accord | 1079000 | 2016-03-15 |
Toyota Camry | 799000 | 2016-02-15 |
Toyota Camry | 819000 | 2016-02-15 |
[ AND | OR ] 簡單條件
SELECT * FROM Car_Data WHERE s_price > 800000 OR (s_price < 600000 AND s_price > 500000)
例如需要列出這個 Car_Data 表格中 s_price 欄位內有哪些價格的值
大於 800000 或是在 500000 及 600000 之間的資料需要用到 WHERE 這個指令。
s_name | s_price | s_sate |
Honda Accord | 1079000 | 2016-03-15 |
Toyota Camry | 799000 | 2016-02-15 |
Nissan Livina | 499000 | 2016-04-15 |
Toyota Camry | 819000 | 2016-02-15 |
Suzuki Swift | 548000 | 2016-01-15 |
s_name | s_price | s_sate |
Honda Accord | 1079000 | 2016-03-15 |
Suzuki Swift | 548000 | 2016-01-15 |
IN
SELECT * FROM Car_Data WHERE s_name IN ('Honda Accord','Toyota Camry')
例如需要列出這個 Products_Data 表格中 s_name 欄位內有哪些指定的名稱值。在括弧內可以有一或多個值,而不同值之間由逗點分開。值可以是數目或是文字。
s_name | s_price | s_sate |
Honda Accord | 1079000 | 2016-03-15 |
Toyota Camry | 799000 | 2016-02-15 |
Nissan Livina | 499000 | 2016-04-15 |
Toyota Camry | 819000 | 2016-02-15 |
Suzuki Swift | 548000 | 2016-01-15 |
Honda Accord | 1068000 | 2016-03-15 |
s_name | s_price | s_sate |
Honda Accord | 1079000 | 2016-03-15 |
Toyota Camry | 799000 | 2016-02-15 |
Toyota Camry | 819000 | 2016-02-15 |
Honda Accord | 1068000 | 2016-03-15 |
LIKE
SELECT * FROM Car_Data WHERE s_name LIKE '%CO%'
例如需要列出這個 Products_Data 表格中 s_name 欄位內有哪些名稱值符合 CO。
'ABC%' : 所有以 'ABC' 起頭的字串。例如 'ABCD' 和 'ABCABC' 都符合這字串。'%XYZ' : 所有以 'XYZ' 結尾的字串。例如 'WXYZ' 和 'YZXYZ' 都符合這字串。'%CO%' : 所有含有 'CO'這個模式的字串。
例如 'Honda Accord' 和 'Mitsubishi Colt Plus' 都符合這個模式。
s_name | s_price | s_sate |
Honda Accord | 1079000 | 2016-03-15 |
Toyota Camry | 799000 | 2016-02-15 |
Nissan Livina | 499000 | 2016-04-15 |
Infiniti G Coupe | 2100000 | 2016-02-15 |
Suzuki Swift | 548000 | 2016-01-15 |
Mitsubishi Colt Plus | 499000 | 2016-03-15 |
s_name | s_price | s_sate |
Honda Accord | 1079000 | 2016-03-15 |
Infiniti G Coupe | 2100000 | 2016-02-15 |
Mitsubishi Colt Plus | 499000 | 2016-03-15 |
ORDER BY
SELECT * FROM Car_Data ORDER BY s_price DESC
例如列出這個 Products_Data 表格中 s_price 欄位的由大往小列出 DESC。WHERE 子句不一定是需要的、但如果 WHERE 子句存在的話,必須是在 ORDER BY 子句之前。ASC 參數其結果會以由小往大的順序列出、DESC 參數其結果會以由大往小的順序列出。
如果兩者皆沒有被寫出的話,那預設值就會用 ASC。
s_name | s_price | s_sate |
Honda Accord | 1079000 | 2016-03-15 |
Toyota Camry | 799000 | 2016-02-15 |
Nissan Livina | 499000 | 2016-04-15 |
Infiniti G Coupe | 2100000 | 2016-02-15 |
Suzuki Swift | 548000 | 2016-01-15 |
s_name | s_price | s_sate |
Infiniti G Coupe | 2100000 | 2016-02-15 |
Honda Accord | 1079000 | 2016-03-15 |
Toyota Camry | 799000 | 2016-02-15 |
Suzuki Swift | 548000 | 2016-01-15 |
Nissan Livina | 499000 | 2016-04-15 |