SQL全名為Structured Query Language-結構化查詢語言,是一種基於特定目的而發展的程式語言,主要用於管理關聯式資料庫管理系統。
SQL的作用包括資料新增、查詢、更新和刪除,資料庫模式建立和修改,以及資料存取控制。
雖然一般都認為SQL只能用於資料庫系統上,但部份資料庫系統其實也有發展一些自定義的程式語法,可以讓SQL發揮更靈活的作用。
要注意的是,不同的資料庫系統中的SQL語法並不完全相同,本課程是以MySQL及MariaDB系統的SQL語法來進行教學。
SQL 基本語法操作
SQL語法算是一種特化過的程式語言,主要是針對資料庫而設計,而每種資料庫又可能在SQL的基礎上,再發展適合自己資料庫特色的語法,因此如果有機會接觸不同的資料庫系統,要先搞清楚其語法間的差異。
符號的使用
在MySQL和MariaDB的語法使用上,要注意上引號和單引號使用的場合,以免語句無法執行:
- 上引號: ` ` (鍵盤上方數字鍵最左邊的按鍵) -用來包住資料表及欄位名稱時使用
- 單引號: ' ' (鍵盤中間一排最右邊在enter鍵左邊的按鍵) -用來包住字串及值時使用
- 分 號:
;
代表一個SQL句子的結束,如果要同時執行多個SQL句子,要使用分號隔開
INSERT 新增 / 插入
1 |
|
SELECT 查詢
1 | SELECT `col1`,`col2`,... FROM `table1`,`table2`,... WHERE ... |
as
在select句子中,有時欄位的名稱不一定是呈現結果時要出現的,此時可以使用 as 來對欄位重新命名,例:
select
score
as ‘成績’, avg(score
) as ‘平均’ from students ……
UPDATE 更新
1 | UPDATE `table` SET `col1`='value1',`col2`='value2',... WHERE ... |
DELETE 刪除
1 | DELETE FROM `table` WHERE ... |
SQL 條件句操作
WHERE 條件
1 | SELECT * FROM `table` WHERE `id`='23'; |
IN 特殊指定
1 | SELECT * FROM `table` WHERE `id` IN('23','36','42','78','98'); |
BETWEEN 兩者之間
使用BETWEEN時要注意值的先後順序,小的在前,大的在後。
1 | SELECT * FROM `table` WHERE `id` BETWEEN '23' AND '98'; |
LIKE 模糊查詢
LIKE用來查詢模糊條件,搭配%
符號來查詢部份條件符合的資料。
1 | //查詢任何姓陳的資料 |
SQL 限制句操作
ORDER BY 排序
排序的參數有兩種
- ASC 預設的排序,可以不用寫,為遞增排序
- DESC 遞減排序
1
2
3
4
5
6
7
8
9SELECT * FROM `table` ORDER BY `birthday` ASC;
SELECT * FROM `table` ORDER BY `birthday` DESC;
可以多個欄位進行同值時的第二排序、第三排序等
SELECT * FROM `table` ORDER BY `birthday` DESC,`area` ASC;
上一句的意思是先以生日來做遞減排序,如果遇到多筆資料都是同一天生日的,再以縣市欄位來做遞增排序
GROUP BY 群組
1 | SELECT * FROM `table` GROUP BY `area`; |
LIMIT 限制筆數
1 | SELECT * FROM `table` LIMIT 20; |