資料庫查詢

Download Report

Transcript 資料庫查詢

資料庫查詢
Y.C. Chen
1
SQL敘述的語法
SELECT 篩選條件
FROM 資料表名稱
[WHERE 搜尋子句]
[ORDER BY 排序子句 [ASC | DESC]]
Y.C. Chen
2
ASP中使用SQL命令
定義SQL敘述
Dim strSQL
strSQL=“SELECT * FROM 成績單”
讀取符合SQL敘述的Recordset
Dim objRS
Set objRS=Server.CreateObject(“ADODB.Recordset”)
objRS.Open strSQL, objConn, adOpenKeySet,
adLockOptimistic, adCmdText
Y.C. Chen
3
範例
從「成績單」資料表篩選出所有記錄的
「姓名」、「自然」、「國語」三個欄
位。
SELECT 姓名,自然,國語 FROM 成績單
從「成績單」資料表篩選出所有記錄的
每個欄位。
SELECT * FROM 成績單
Y.C. Chen
4
範例(續)
從「成績單」資料表篩選出所有記錄的「姓
名」、「自然」兩個欄位,然後分別將欄位更
名為「姓名」與「理化」。
SELECT 姓名 AS 名字,自然 AS 理化 FROM 成績單
從「成績單」資料表篩選出所有記錄的「姓名」
欄位,同時將「國語」、「數學」、「自然」
三個欄位相加後的分數產生為「月考總分」欄
位。
SELECT 姓名, 國語+數學+自然 AS 月考總分
FROM 成績單
Y.C. Chen
5
篩選
語法:SELECT ….. FROM ….. WHERE …
國語成績在90分以上所有記錄的「姓名」、
「數學」兩個欄位
SELECT 姓名,數學 FROM 成績單 WHERE 國語 >
90
從「成績單」資料表篩選出所有「國語」或
「數學」分數在90分以上之記錄的「姓名」、
「國語」、「數學」三個欄位
SELECT 姓名, 國語, 數學 FROM 成績單 WHERE 國
語 > 90 OR 數學 > 90
Y.C. Chen
6
篩選範例
從「成績單」資料表篩選出所有「國語」
分數小於90且「數學」分數大於90,或
「國語」分數小於90且「自然」分數大
於90之記錄的所有欄位
SELECT * FROM 成績單 WHERE 國語 <90
AND (數學 >90 OR 自然 > 90)
Y.C. Chen
7
“LIKE”篩選
從「成績單」資料表篩選出所有「姓名」
以“陳”開頭之記錄的所有欄位
SELECT * FROM 成績單 WHERE 姓名
LIKE ‘陳%’
從「成績單」資料表篩選出所有「姓名」
是“X小美”之記錄的所有欄位
SELECT * FROM 成績單 WHERE 姓名
LIKE ‘_小美’
Y.C. Chen
8
“LIKE”篩選(續)
從「成績單」資料表篩選出所有「姓名」以a、
b、c、d、e、f等字母開頭,後面為ean之記錄
的所有欄位
SELECT * FROM 成績單 WHERE 姓名 LIKE ‘[af]ean’
從「成績單」資料表篩選出所有「姓名」以d、
f、l、p、r、t等字母為首,後面為ean之記錄的
所有欄位
SELECT * FROM 成績單 WHERE 姓名 LIKE
‘[dflprt]ean’
Y.C. Chen
9
Where特殊句型
加入VBScript函式
SELECT * FROM 成績單 WHERE Mid(姓名,
1, 1)=‘陳’
加入IS NULL或IS NOT NULL判斷空白
欄位
SELECT * FROM 成績單 WHERE (數學 IS
NULL) AND (國語 IS NOT NULL)
Y.C. Chen
10
Where特殊句型(續)
加入IN判斷欄位資料範圍
SELECT * FROM 成績單 WHERE 國語 IN
(80, 85, 88)
SELECT * FROM 成績單 WHERE 姓名 IN
(‘陳小新’, ‘陳俊榮’, ‘孫小美’)
加入BETWEEN限制篩選範圍
SELECT 姓名, 國語, 數學 FROM 成績單
WHERE 數學 BETWEEN 80 AND 90
Y.C. Chen
11
排序
語法:SELECT ….. FROM ….. ORDER BY …
遞增:ASC。預設值,可以省略
遞減:DESC
篩選出所有欄位,將「國語」、「數學」、
「自然」三個欄位相加產生新的「月考總分」
欄位,然後依照月考總分由高到低顯示
SELECT *, 國語+數學+自然 AS 月考總分 FROM 成
績單 ORDER BY 國語+數學+自然 DESC
Y.C. Chen
12
排序(續)
篩選出所有欄位,將「數學」、「自然」
兩個欄位相加產生新的「數理能力」欄
位,然後將數理能力165分以上者依照數
學分數由高到低顯示
SELECT *, 數學+自然 AS 數理能力 FROM
成績單 WHERE 數學+自然 > 165 ORDER
BY 數學 DESC
Y.C. Chen
13
設定最傳回筆數
語法:SELECT TOP …..
前五筆
SELECT TOP 5 * FROM 成績單 ORDER BY
國語 DESC
前50%
SELECT TOP 50 PERCENT * FROM 成績單
ORDER BY國語 DESC
Y.C. Chen
14
使用EXECUTE方法
Connection物件的Execute方法可以用來
執行SQL敘述,並傳回一個符合SQL敘述
的Recordset物件。
語法:
Set objRS=objConn.Execute(strSQL)
限制:
不用再呼叫Open方法,但游標只能向下移
動,記錄只能供讀取。
Y.C. Chen
15
Command物件
Dim objCommand
Set objCommand=Server.CreateObject(“ADODB.Command”)
objCommand.ActiveConnection=objConn
objCommand.CommandText=strSQL
Dim objRS
Set objRS=objCommand.Excute
Y.C. Chen
16
新增記錄
SQL敘述的INSERT指令可以在資料表內
插入新的記錄
語法:
INSERT INTO 資料表名稱(欄位1,欄位2,欄位
3) VALUES(資料1,資料2,資料3)
Y.C. Chen
17
更新記錄
SQL敘述的UPDATE指令可以更新資料
表內現有的記錄
語法:
UPDATE 資料表名稱 SET 欄位1=資料1, 欄
位2=資料2 WHERE 條件
Y.C. Chen
18
刪除記錄
SQL敘述的DELETE指令可以刪除資料表
內現有的記錄
語法:
DELETE * FROM 資料表 WHERE 條件
Y.C. Chen
19