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