Presentation is loading. Please wait.

Presentation is loading. Please wait.

SQL Structured Query Language 用以操縱資料庫的指令集 資料操作語言DML:操作資料錄

Similar presentations


Presentation on theme: "SQL Structured Query Language 用以操縱資料庫的指令集 資料操作語言DML:操作資料錄"— Presentation transcript:

1 SQL Structured Query Language 用以操縱資料庫的指令集 資料操作語言DML:操作資料錄
如DELETE, SELECT, UPDATE …. 資料定義語言DDL:建立資料表及資料欄位 如AFTER TABLE, CREATE TABLE ….

2 SELECT 敘述 對資料庫進行選取查詢的動作 將查詢結果指定給Recordset物件的Recordsource屬性就可以將資料顯示出來

3 SELECT 語法 SELECT 欄位 FROM 資料表 例如:SELECT 書名,分類,作者 FROM 書籍

4 SELECT 語法 – 排序 SELECT 欄位 FROM 資料表 ORDER BY 排序方式 排序方式:ASC遞增排序,DESC遞減排序
SELECT * FROM書籍 ORDER BY 頁數 DESC SELECT * FROM書籍 ORDER BY 頁數 ASC, 分類 DESC

5 SELECT 語法 – 篩選不重複的紀錄 SELECT DISTINCT 欄位 FROM 資料表

6 SELECT 語法 – 使用別名 SELECT 欄位1 AS 別名1,欄位2 AS 別名2 FROM 資料表
例如:SELECT 作者 AS 程式設計專家 FROM 書籍 SELECT 作者 FROM 書籍 資料內容一樣,顯示的欄位名稱不同

7 SELECT 語法 – 限定選取筆數 SELECT TOP n FROM 資料表 SELECT TOP n Percent FROM 資料表
例如:SELECT TOP 5 * FROM 書籍 ORDER BY 售價 DESC

8 SELECT 語法 – 統計函數 SELECT 統計函數 AS 別名 FROM 資料表
例如:SELECT AVG(售價) AS 平均售價 FROM 書籍 COUNT:統計資料比數 SUM:總合 MIN,MAX:求最小與最大 STDEV:取標準差 VAR:取變異數

9 SELECT 語法 – 分組統計 SELECT 欄位FROM 資料表 GROUP BY 欄位
例如:SELECT 分類, AVG(售價) AS 平均售價 FROM 書籍 GROUP BY 分類

10 SELECT 語法 – 分組統計再篩選 SELECT 欄位FROM 資料表 GROUP BY 欄位 HAVING 條件
例如:SELECT 分類, AVG(售價) AS 平均售價 FROM 書籍 GROUP BY 分類 HAVING AVG(售價) > 400

11 SELECT 語法 – 子集合查詢 SELECT 欄位FROM 資料表 WHERE 欄位 IN 子集合
SELECT * FROM 書籍 WHERE 作者名 IN (SELECT 作者名 FROM 作者 WHERE 專長 = ‘程式設計’)

12 執行SELECT 敘述 使用Recordset物件的Open方法 使用Connection物件的Execute方法
使用Command物件的Execute方法

13 使用Recordset物件的Open方法
Rs.open 書籍, cn, adOpenStatic sql=“SELECT * FROM 書籍” Rs.open sql, cn, adOpenStatic

14 使用Connection物件的Execute方法
Set recordset=Connection.execute(SQL敘述,recordaffected,options) 這種recordset為唯讀,所以不能進行編修的動作 如果要指定給DATAGRID  Cn.CursorLocation = adUseClient

15 使用Command物件的Execute方法
Set recordset=command.execute 這種recordset為唯讀,所以不能進行編修的動作 需設定command物件的Commandtext(SQL敘述)與ActiveConnection(Connection物件)屬性

16 動作查詢(Action Query) RecordSet內容的更新,新增,刪除等要求(Query),稱之為動作查詢(Action Query) 不可以使用RecordSet的Open方法 使用Command物件或是Connection物件的Execute方法

17 動作查詢(Action Query)-更新
使用Update敘述 語法: Update 資料表名稱 Set 欄位=欄位值 Ex: Update 書籍 Set 分類=“程式設計”

18 動作查詢(Action Query)-新增
使用Inset Into敘述 語法: Insert Into 資料表名稱(欄位1,欄位2,….) Value (值1,值2,…) Ex: Insert Into 書籍 (書名,分類,售價) Value (“Delphi”,”程式設計”,500)

19 動作查詢(Action Query)-刪除
使用Delete敘述 語法: Delete From 資料表名稱 Ex: Delete from 書籍

20 使用Connection物件來執行 動作查詢(Action Query)
語法: Connection.Execute 動作查詢,RecordsAffected,Options Recordset.Requery 執行動作查詢後會產生一新的Recordset,所以需用Recordset物件的Requery方法取得新的Recordset物件

21 使用Command物件來執行 動作查詢(Action Query)
須先設定Command物件的CommandText和ActionConnection屬性 語法: Command.Execute Recordset.Requery 執行動作查詢後會產生一新的Recordset,所以需用Recordset物件的Requery方法取得新的Recordset物件

22 連SQL Server

23 連SQL Server Public cn As New ADODB.Connection
Public rs As New ADODB.Recordset '查詢 Public cmd As New ADODB.Command '新增/刪除/修改 Private Sub Form_Load() cn.ConnectionString = "Provider=SQLOLEDB.1;Password=1234;Persist Security Info=True;User ID=sa;Initial Catalog=Northwind;Data Source= " cn.CursorLocation = adUseClient cn.Open ' 使用connection的excute方法 Set rs = cn.Execute("SELECT * FROM employees") Set DataGrid1.DataSource = rs ' 使用command的excute方法 ' mysql = "SELECT * FROM employees" ' cmd.ActiveConnection = cn ' cmd.CommandText = mysql ' Set rs = cmd.Execute ' Set DataGrid1.DataSource = rs End Sub

24 連SQL Server ‘ 新增(方法一使用command) Private Sub Command3_Click()
mysql = "insert into employees (FirstName,LastName) values ('cc','" & Trim(Text1.Text) & "')" cmd.ActiveConnection = cn cmd.CommandText = mysql cmd.Execute rs.Requery End Sub ‘新增(方法二使用connection) Private Sub Command7_Click() cn.Execute "insert into employees (FirstName,LastName) values ('cc','" & Trim(Text1.Text) & "')" rs.Requery End Sub

25 連SQL Server ' 修改 Private Sub Command5_Click()
mysql = "update employees set FirstName='cc',LastName='" & Trim(Text1.Text) & "' where employeeid=" & rs(0) cmd.ActiveConnection = cn cmd.CommandText = mysql cmd.Execute rs.Requery End Sub

26 連SQL Server '刪除 Private Sub Command4_Click()
mysql = "delete from employees where employeeid =" & rs(0) cmd.ActiveConnection = cn cmd.CommandText = mysql cmd.Execute rs.Requery End Sub

27 連SQL Server ' 查詢 Private Sub Command6_Click()
If rs.State <> adStateClosed Then rs.Close End If rs.Open "SELECT * FROM employees where lastname like '%" & Text1.Text & "%'", cn, adOpenStatic, adLockOptimistic If rs.RecordCount > 0 Then Label1.Caption = rs("lastname") Set DataGrid1.DataSource = rs Else Label1.Caption = "沒有資料" End Sub

28 連SQL Server Private Sub Form_Unload(Cancel As Integer)
Set DataGrid1.DataSource = Nothing cn.Close Set cn = Nothing End Sub


Download ppt "SQL Structured Query Language 用以操縱資料庫的指令集 資料操作語言DML:操作資料錄"

Similar presentations


Ads by Google