基本介紹:
起手式就是 SELECT
和 FROM
:
SELECT name
FROM people;#name是某一個column的名字
#films是某一個表單的名字
#最後的分號;代表命令結束
選取複數的欄:
SELECT name, birthdate
FROM people ;
SELECT *
FROM people ;
#星號代表全部選取
選取欄位後,只顯示某個數量的列:
SELECT name, birthdate
FROM people
LIMIT 50 ;
select all the unique values from a column:
SELECT DISTINCT language
FROM films;
算數量:
SELECT COUNT(*)
FROM people;
#上列命令,會算出people這份表單裡面共有幾列
SELECT COUNT(birthdate)
FROM people;
#也可以單獨算指定的欄
SELECT COUNT(DISTINCT birthdate)
FROM people;
#結合剛剛的DISTINCT用法,算出birthdate這一欄裡面有幾個不重複的值
篩選
SQL中的判斷式和Python不太相同:
=
equal (Python是==
)<>
not equal (Python是!=
)<
less than>
greater than<=
less than or equal to>=
greater than or equal to
使用判斷式時,需先加上 WHERE
:
SELECT title
FROM films
WHERE title = 'Metropolis';SELECT title
FROM films
WHERE release_year > 2000;
可使用複數條件:
SELECT title
FROM films
WHERE (release_year = 1994 OR release_year = 1995)
AND (certification = 'PG' OR certification = 'R');
若需要篩選的條件型態為 int
且「介於某個數量」,也可以改使用 BETWEEN...ANT...
。不過這個條件是頭尾數皆包含:
#需選取介於1994~2000年間上映的電影:
SELECT title
FROM films
WHERE release_year >= 1994
AND release_year <= 2000;#也可改為使用BETWEEN:
SELECT title
FROM films
WHERE release_year BETWEEN 1994 AND 2000;
若需要篩選的條件有複數個,也可以用類似python list
的方式來調整,加上 IN
:
SELECT name
FROM kids
WHERE age = 2
OR age = 4
OR age = 6
OR age = 8
OR age = 10;#可改寫成:SELECT name
FROM kids
WHERE age IN (2, 4, 6, 8, 10);
SQL中, NULL
代表遺失或未知的資料,可以作為條件來篩選。例如我們想找出表單中,共有幾筆資料的「生日 birthdate
」是遺失:
SELECT COUNT(*)
FROM people
WHERE birthdate IS NULL;
SQL也可以幫你尋找「關鍵字」,例如,你想要找出名字是 Am 開頭的人(要撈出所有Am開頭的資料,長短不計),這時需要在關鍵字 Am 後方加上 %
:
SELECT name
FROM poeple
WHERE name LIKE 'Am%';
%
是代表任何長度的資料,若想要限縮,需改使用 _
,這代表只符合1個字元。下方命令會找出如Amazon / Amrzon / Amjzon等等資料。
SELECT name
FROM poeple
WHERE name LIKE 'Am_zon';
我們在使用 %
和 _
為條件時,都會在前面加上 LIKE
,也可以使用 NOT LIKE
作為反義搜尋。
aggregate functions
SQL 內建函數,稱為aggregate functions,能幫你自動計算一些資料型態,例如平均值:
SELECT AVG(budget)
FROM films;
最大值和最小值:
SELECT MAX(budget)
FROM films;SELECT MIN(budget)
FROM films;
總和:
SELECT SUM(budget)
FROM films;
SQL 也可以加減乘除的計算,起手式一定要寫 SELECT
:
SELECT ( 4 + 3 ) ; #結果為7
SELECT ( 4 - 3 ) ; #結果為1
SELECT ( 4 * 3 ) ; #結果為12
不過,除法比較不一樣:
SELECT ( 4 / 3 ) ;
#結果為1,因SQL預設你只需要相除後的「整數」結果,不需要餘數。
#若想要完整結果,需改成以下寫法:SELECT (4.0 / 3.0) AS result; #結果為1.333
上面的作法是把SQL直接當作計算機來使用,不過身為一個資料庫語言,SQL 可以直接對表單的欄位作運算的:
SELECT (gross — budget )
FROM films ;