Professional Documents
Culture Documents
數據庫補充筆記 (答案版) PDF
數據庫補充筆記 (答案版) PDF
數據庫補充筆記 (答案版) PDF
1
中華傳道會劉永生中學
數據庫︰
數據庫︰SQL
1 是什麼?
是什麼
SQL是什麼
1.1 SQL (Structured Query Language)代表結 構 化 查 詢 語 言 。
1.2 當用戶發出一項查詢,便可從數據庫檔內獲得若干資料。這項查詢是根據用戶所提供的條件
(condition) 所作出的一項檢索。而 SQL則是一個可讓用戶把條件列明的查詢語言。這樣,用戶
只須列明查詢的條件,而不須要實際知道有關的檢索方法。
1.3 一般的數據庫管理軟件系統 (DBMS) 都包含 SQL 功能。
2 的概念
SQL的概念
2.1 通過 SQL 指令,用戶先要找尋的數據庫檔及查詢的 條 件 ,SQL 程序便會在這數據庫
檔內檢查每筆記錄是否符合條件,並把顯示合適的資料。這個過程稱為檢索。 (見例 2)
2.2 除了直接查問各筆記錄的資料外,也可查問 運 算 數項,例如最大值、最小值、總和及平均等。
2.3 查詢所得的結果會以表格的形式顯示,用戶亦可指示 SQL 程序把結果貯存成為數據庫檔。
3 檢索指令的基本結構
SQL檢索指令的基本結構
字段 欄
記錄 橫列
數據庫檔 表格
Database(2)/ SQL/P.2
實例:學生個人資料
考慮以下貯存學生數據的數據庫檔 STUDENT. DBF:
欄名 類型 欄寬 內容 例子
id 數字 4 學生編號
name 字符 32 學生英文姓名
dob 日期 8 出生日期
sex 字符 1 性別: M / F
class 字符 2 班別
classno 數字 2 班號
hcode 字符 1 社名 R = Red, Y = Yellow, B = Blue, G = Green
dcode 字符 3 居住地區碼 TST = 尖沙咀(Tsim Sha Tsui), MK = 旺角(Mong Kok)
remission 邏輯 1 學費減免 T =享有學費減免, F = 沒有學費減免
mtest 數字 3 數學測驗分數 貯存學生數學測驗的分數,滿分為100。
4 一般語法(
一般語法 SELECT… FROM… WHERE… )
句法如下︰
SELECT [ALL / DISTINCT] expr1 [AS col1], expr2 [AS col2]… FROM tablename WHERE condition
語句 功能
SELECT 指明選擇要顯示的資料
FROM 從哪表格選取資料
WHERE 設定篩選條件
4.1 SQL 程序會從數據庫檔 tablename 選取符合條件的橫列並以表格的格式顯示。
4.2 表達式 expr1, expr2 可以是 字 段 ,或以 函 數 和字段組成的表達式。
4.3 而 col1, col2 是表達式 expr1, expr2 在輸出結果的表格內的 欄 名 。
4.4 加入 DISTINCT 會輸出 無 重 覆 出現的橫列,而選項 ALL 則輸出重覆而合條件的記錄。
4.5 條件 condition 可以是等 式 、不等式,或 字 符 串 的比較,並使用邏輯運算符使用。
5 於FoxPro環境使用
環境使用 SQL
5.1 用戶可於指令視窗 (Command Window) 直接輸入指令,亦可使用對話方塊把指令輸入。
5.2 使用 SQL,必須開啟有關數據庫︰USE [數據庫名稱] (例︰ USE STUDENT )
5.3 若用戶選用字符串的完全配對時,便須輸入 SET ANSI ON。
6 邏輯運算符
運算 運算符 作用
及 AND 兩個條件 同 時 為真,結果為真。
或 OR 兩個條件 任 一 為真,結果才為真。
非 NOT 將所得的結果相反。
Database(2)/ SQL/P.3
語句︰
語句︰實例
SQL語句 備註
求所有學生的資料︰ 該查詢並無任何條件限制,故省去
SQL語句︰ WHERE。
SELECT * FROM student SELECT 部分以 * 表示來源表格所有欄。
查詢所得的結果將貯存於一 暫 時 的表格
內。
求1A 班學生的名字和社名︰ SQL會於student表格中檢查每一列是否符
SQL語句︰ 合資格(class= “1A”),並顯示欄name, hcode
SELECT name, hcode, class; 及 class於暫時的表格內。
FROM student; 以分號 ( ; ) 代表指令可並未完成。
WHERE class="1A"
求出紅社社員的居住地區︰(hcode="R") 若兩個或以上的學生居住於同一地區,使
SQL語句︰ 用選項 DISTINCT 便可把重覆的結果省
SELECT DISTINCT dcode FROM student; 去。
WHERE hcode="R"
求出 1A 班有學費減免的學生的名字和編號︰ 在 WHERE分中加上 AND 表示需同時符
SQL語句︰ 合。
SELECT name, id, class ; 因 remission 是一個邏輯值(T / F),故可直
FROM student ; 接在邏輯表達式中使用 。
WHERE class="1A" AND remission
如邏輯值需表達非,可於前方加入 NOT 。
實例
SQL實例 備註
求出所有出生於星期三或星期六的學生。 CDOW()函數︰
SQL語句︰ 輸入日期,並輸出英文星
期。如︰Monday, Tuesday,
SELECT name, class, CDOW(dob) AS bday
Thursday…
FROM student; DOW()函數︰
WHERE DOW(dob) IN (4,7) 輸入日期,並輸出數字星
期︰星期日=1,星期一=2。
如此類推。
求出所有不是在一月、三月、六月或九月出生的學生。 MONTH()函數︰
SQL語句︰ 輸入日期,並輸出月份為數
字。
SELECT name, class, dob FROM student;
以 NOT 表示「非」邏輯值。
WHERE MONTH(dob) NOT IN (1,3,6,9)
求出1A 班的學生名字及數學測驗分數,其分數界乎於 80~90
SQL語句︰
SELECT name, mtest FROM student;
WHERE class="1A" AND mtest BETWEEN 80 AND 90
實例
SQL實例 備註
實例
SQL實例 備註
參考網頁︰
SQL語法入門(http://www.1keydata.com/tw/sql/sql.html)
簡單易懂的介紹 SQL(http://vzoo.net/),可於網上練習執行SQL指令