Introduction to SQL — 1

Yunya Hsu
5 min readAug 14, 2021

基本介紹:

起手式就是 SELECTFROM

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 ;

--

--