第四章 資料庫操作- SQL Select
內容:
-
4-1 何謂 SQL 命令
-
4-2 SQL 命令彙集
-
4-3 匯入/開啟 course_db 資料庫
4-1 何謂 SQL 命令
『結構化查詢語言』(Structure Query Language, SQL)是一套標準化的資料庫操作命令。幾乎所有資料庫系統都可以利用此它操作與管理,也就是說,學會了 SQL 查詢命令,就可以操作任何廠家的資料庫系統,譬如 Windows SQL Server、MySQL、Access、、等等。當然啦,直接用命令來操作資料庫並不方便,因為它需要一個命令、接一個命令的輸入,再由它的輸出結果來決定下一個應該輸入哪個命令。如果我們能夠依照需求,將多個 SQL 命令整合起來完成它,並且可以重複使用,就非常完美了。為了達成此目標,我們將 SQL 命令嵌程式入語言中,利用它編寫程式就可完成了,譬如將 SQL 嵌入 PHP 語言、Visual Basic(VB.net) 內、等等,這就是所謂『資料庫程式設計』了。
如何學習資料庫系統,許多書都由介紹資料庫架構開始,接著介紹如何建構資料庫,最後才了了草草的介紹如何操作資料庫。前面兩個階段已打垮學生的信心,最後再介紹如何操作已沒甚麼意思了。我們剛好相反,建構一個很完整的資料庫範例,學生利用 SQL 命令操作資料庫,認識資料庫的功能何在,讓學生了解為何要建立資料庫,並產生興趣。
SQL 大略上可區分為:DDL、DML、DRL、TCL、以及 DCL 等五大部分,如圖 4-1 所示,以下分別介紹之:
-
『資料定義語言』(Data Definition Language, DDL):提供可產生、變更、刪除資料庫或資料表之命令,如 Create、Alter、Drop、Truncate、Comment、以及 Rename等命令。
-
『資料處理語言』(Data Manipulation Language, DML):提供可以處理資料表之命令,譬如:Select、Insert、Update、Delete等。
-
『資料控制語言』(Data Control Language, DCL):提供管理資料庫或資料表授權使用之命令,如:Grant、Revoke
等。
-
『交易控制語言』(Transaction Control Language):多人使用環境的交易控制命令,如:Commit、Savepoint、Rollback、以及 Settransaction
等。
圖 4-1 SQL 語言總類
前兩者 DDL 與 DML 本課程將會介紹到,其它部分等待爾後有其它進階課程再介紹。為了讓同學快速認識資料庫系統,我們還是由 DML 開始,而且同學如能善加利用 SQL DML 工具,就能將很枯燥無味的『資料』,產生變化萬千的『訊息』或『資訊』。
從關聯式資料庫而言,SQL 命令即是操作資料庫內的資料表,也許一次操作一個、兩個、或多個資料表,但處理結果的輸出也是資料表,但欄位數目與資料筆數會隨著查詢結果而改變,如下圖所示:
圖4-2 SQL 語言處理模式
4-2 SQL 命令彙集
命
令 |
格
式 |
命
令 |
格
式 |
|
Select |
Select "欄位"
From "表格名"; |
Distinct |
Select Distinct "欄位"
From "表格名"; |
|
Where |
Select "欄位"
From "表格名"
Where "condition"; |
|
And/OR |
Select "欄位"
From "表格名"
Where "簡單條件"
{[And|Or] "簡單條件"}+
; |
|
In |
SELECT "欄位"
FROM "表格名"
WHERE "欄位"
IN ('值1',
'值2',
...); |
|
Between |
SELECT "欄位"
FROM "表格名"
WHERE "欄位"
BETWEEN '值1'
AND '值2'; |
|
Like |
SELECT "欄位"
FROM "表格名"
WHERE "欄位"
LIKE {模式}; |
|
Order By |
SELECT "欄位"
FROM "表格名"
[WHERE "條件"]
ORDER BY "欄位"
[ASC, DESC]; |
|
Count |
SELECT COUNT("欄位")
FROM "表格名"; |
|
Group by |
SELECT "欄位1",
SUM("欄位2")
FROM "表格名"
GROUP BY "欄位1" |
|
Having |
SELECT "欄位1",
SUM("欄位2")
FROM "表格名"
GROUP BY "欄位1"
HAVING (函數條件); |
|
Create |
CREATE TABLE "表格名"
("欄位
1" "欄位
1
資料種類",
"欄位
2" "欄位
2
資料種類"",
... ); |
|
Insert |
INSERT INTO "表格名"
("欄位1",
"欄位2",
...)
VALUES ("值1",
"值2",
...); |
|
Drop |
DROP TABLE "表格名"; |
Delete |
DELETE FROM "表格名"
WHERE "條件"; |
|
Truncate |
TRUNCATE TABLE "表格名"; |
|
Update |
UPDATE "表格名"
SET "欄位1"
= [新值]
WHERE "條件"; |
(Not) Like |
*、_(底線)、%、[ABC]、Pattern |
|
運算 |
+、-、*、/、% |
|
|
|
|
比較 |
=、
<>
、
<
、>
、
>=、between |
|
|
|
聚合 |
Count(欄位)、Ave、Sum、Max、Min |
|
4-3 匯入/開啟 course_db 資料庫
接下來,所有程式範例皆在 course_db 資料庫操作,吾人開啟該資料庫之後,直接利用 SQL 命令來查詢該資料內容,擷取所要的訊息。
(A) 開啟瀏覽器
輸入 URL:localhost,再點選 Database Manager 進入資料庫系統,如下:
(B) 登入 MySQL 資料庫系統
(C) 選擇資料庫
吾人選擇 course_db 資料庫,共有 7 個資料表,如下:
|
翻轉工作室:粘添壽
資料庫系統概論(含邏輯設計)
翻轉電子書系列:
|