Basic SQL

Ming-chiao Wu Jojo
Feb 25, 2017 · 4 min read

SQL是用來和database溝通的語法
像是MySQL, SQL Server, Access, Oracle, Sybase, DB2皆是
不過也有些資料庫屬於non-SQL database就無法使用

database 的組成就是一張一張的資料表(table),
table由row和column組成
每一筆資料由一個row代表, 每個column則是代表資料的不同屬性
ex. 現有一張products的資料表
每一個row就代表一個品項
可能會有的column像是 price, id, product_name, store_amount,…
這樣的屬性

最基本的query:

SELECT <col> FROM table;
如果<col> 用米字號*代替 就會回傳整張tabel內容, 不過如果是大型db肯定很花時間
如果只要部分的col可以寫像 SELECT <col1>, <col2>FROM table
ex.SELECT id, price FROM products; 回傳的table就只會有id, price兩個column;

重新命名回傳col名稱 AS

SELECT <col> AS <new_col_name> FROM table;
ex. SELECT id AS “Product id”, price AS MyPrice FROM products;
新給的命名超過一個單字時 要用引號匡起來

選擇條件 WHERE

SELECT <col> FROM <table> WHERE <condition..>;
condition的語法為 <col> <operator> <value>
ex: name = “Johnny”
可能的狀況有 完全相等 不相等
SELECT * FROM products WHERE id=301;
SELECT * FROM products WHERE store_amount !=0;
如果col的資料型態是numerical, data可以有>, <的條件
SELECT * FROM products WHERE price<=3000;
SELECT * FROM games WHERE played_on > “2016–09–30”;

多個條件成立 AND, OR

SELECT <col> FROM <table> WHERE <cond1> AND/OR <cond2>;
AND為同時成立, OR為其中一個成立即符合

col的值有數個可能 使用IN

SELECT <col> FROM <table> WHERE <col> IN (A,B,C);
假如要找出幾個特定的值 好比說餐廳要找出日式,中式, 義式
SELECT * FROM resturants WHERE style IN (“Japanese”, “Chinese”, “Italian”);
如果style是“Japanese”, “Chinese”, “Italian”的其中一種 就符合條件

col值在一個區間內 BETWEEN

SELECT <col> FROM <table> WHERE <col> BETWEEN A AND B;
如果col值是屬於numerical或是date
就可以用BETWEEN來搜尋
SELECT * FROM games WHERE played_on BETWEEN “2016–09–30” AND “2016–09–15”; //記得語法上不能在區間的值加上括號

pattern condition LIKE

SELECT <col> FROM <table> WHERE <col> LIKE “<%term%>”;
用於column的值為xxx開頭, 結尾, 或是含有一定的值
開頭 SELECT * FROM persons WHERE name LIKE “John%”; // Johnny
結尾 SELECT * FROM persons WHERE name LIKE “%Donald”; // McDonald
含有值 SELECT * FROM words WHERE name LIKE “%ee%”; // Tee, Street, …
從最後一例看出%可以為空的 像是“ee%”
在Tee的”ee”後面已經沒有字 但仍然符合條件

missing value NULL

SELECT <col> FROM <table> WHERE <col> IS/IS NOT NULL;
用來查詢貨品有無寄出 或是圖書有無歸還 因還沒有資料寫入 所以會是NULL
SELECT name, ISBN FROM books WHERE return_date IS NULL;
查詢未歸還圖書

Ming-chiao Wu Jojo

Written by

Front-end developer, now self-learning to be a full-stack, love travel, live house, hiking, jogging, foodie, sleep until satisfied. ‘Hello World’