現在我們已經討論了中級SQL的語法
那麼讓我們看看在一個Access應用程序中我們可以使用它的一些途徑
數據庫范例 作為這篇文章的附帶
這裡有一個叫acIntSQL
mdb的數據庫范例
在acIntSQL中的任一處都是基於本文所提到的所有主題
並且它通過查詢和范例的代碼演示了我們所討論的不同SQL語句
在acIntSQL中所使用到的許多部分查詢都是基於特定工作表中存在和包含的數據
或者是基於其它已經存在的數據庫對象
如果你由於丟失數據而在運行一個查詢產生故障
打開工作表重置窗體並單擊工作表重置按鍵
這將會重新生產工作表和其中原始缺省數據
如果要手動通過工作表重置過程
你需要按照下面的順序執行這些查詢過程
Drop Table Shipping
Drop Table Invoices
Drop Table Customers
Drop Table CreditLimit
Create Table Customers
Create Table Invoices
Create Table Shipping
Create Table CreditLimit
Populate Customers
Populate Invoices
Populate Shipping
Populate CreditLimit
查詢 查詢就是指存儲在Access數據庫中並可以隨時調用的SQL 語句
也可以直接被Access 用戶界面或Visual Basic? for Applications (VBA)編程語言調用
查詢可以使用Access Query Designer來建立
Access Query Designer時一個可以很容易建立SQL語句的強大的可視化工具
或者你也可以通過直接在SQL視圖窗口輸入SQL語句來建立查詢
如同在
Microsoft Jet SQL for Access
基礎篇
一文中所述
Access把數據庫中所有面向數據的任務轉化為SQL 語句
要演示這一點
讓我們使用Access Query Designer來建立一個查詢
打開acIntSQL數據庫 (單擊此處拷貝acIntSQL
mdb 數據庫例子
)
確保tblCustomers 和 tblInvoices這兩個表單已經創建並且其中包含有數據
在數據庫窗口中從Objects條中選擇Queries選項
在數據庫窗口工具條裡單擊按鍵 New
在New Query對話框中選擇Design View並單擊OK
在Show Table對話框中選擇tblCustomers並單擊Add
接著選擇tblInvoices 並單擊Add
接著單擊Close按鍵
在tblCustomers 域名列表中選擇Last Name 域並把它拖到設計表格中的第一個域中
在tblInvoices 域名列表中選擇InvoiceDate 和 Amount域並把它們拖到設計表格中
在設計表格中InvoicwDate域的Sort屬性裡選擇Ascending
從Access菜單條中選擇View並單擊SQL View
這樣就打開了SQL View 窗口和顯示了在查詢中Access正在使用的SQL語法
注意 這個查詢類似於存儲在acIntSQL 數據庫中的
Join
Inner
查詢
嵌入語句 嵌入SQL 語句就是指你在Visual Basic for Applications (VBA) 編程語言中使用SQL 語句
雖然深入討論如何使用VBA超出了本文的范圍
但如何使用程序來運行SQL 語句卻是一件簡單的工作
在acIntSQL數據庫中
有兩個使用內部SQL語句的窗體需要通過Jet OLE DB provider 和 ADO來運行
就是演示數據定義語句的 Intermediate DDL 窗體
以及演示數據處理語句的Intermediate DML窗體
中級DDL 語句 這個acIntSQL數據庫有許多關於你可以用來管理你的數據庫結構的SQL 語句的范例
有一部分數據定義語言 (DDL) 語句被以數據定義查詢的方式存儲
而其它的則在程序設計代碼的內部作為內聯SQL使用
如果你要使用這些DDL例子
你需要在運行它之前刪除一些數據庫對象
例如
如果你想運行創建當前數據類型的查詢
你就先要確定當前數據表單不存在
如果不是
那麼
這個查詢就會返回一個信息告訴你這個表單已經存在
在運行任何DDL 例子之前
檢查它所要創建或改變的數據庫對象確定其已經被設定好
這樣程序才能完全的運行
在內聯DDL 語句范例中
同樣的建議仍然是適用的
檢查並設定它們會影響的數據庫對象以確保DDL 語句的順利運行
一般來說
內聯DDL 語句只是通過簡單設定一個ADO Connection對象來運行
並將SQL 語句傳送給 Connection對象的運行程序
下面是來源於在中級DDL語句窗體的二進制數據類型的輸入輸出
Private Sub cmdBinary_Click() Dim conDatabase As ADODB
Connection
Dim SQL As String
On Error GoTo Error_Handler
Set conDatabase = Application
CurrentProject
Connection
注意: Fields
through
can be created through both
SQL View and the Jet OLEDB Provider
Fields
and
can only be created through the
Jet OLE DB provider
SQL =
CREATE TABLE tblCodeBinaryDataTypes (
& _
Field
_BINARY BINARY
& _
Field
_BINARY
BINARY(
)
& _
Field
_VARBINARY VARBINARY
& _
Field
_VARBINARY
VARBINARY(
)
& _
Field
_BVARYING BINARY VARYING
& _
Field
_BVARYING
BINARY VARYING(
))
conDatabase
Execute SQL
MsgBox
The BINARY datatypes table has been created!
conDatabase
Close
Set conDatabase = Nothing
Exit Sub
Error_Handler:
MsgBox Err
Description
vbInformation
End Sub
運行過其中一個DDL 語句後
在設計視圖中打開被影響的數據庫查看產生了什麼變動
如果DDL 語句影響了表單之間的關聯
打開編輯關聯窗口查看其變動
例如讓我們檢查一下在中級DDL語句窗體中的Alter Table w/ Fast Foreign Key輸出指令和按鍵
打開acIntSQL 數據庫
確定tblCustomers 和 tblInvoices 表單已經被創建
在數據庫窗口從Objects條中選擇Forms
在數據庫窗口工具條中著重顯示Intermediate DDL 語句的窗體並單擊Design按鍵
在Intermediate DDL 語句窗體中
鼠標右鍵點擊Alter Table w/ Fast Foreign Key按鍵並從彈出菜單中選擇 Build Event…
這操作將打開VBA開發環境以及包含著cmdFastKey_Click子過程的代碼窗口
檢查被分配給 SQL變量的SQL 語句
SQL =
ALTER TABLE tblInvoices
& _
ADD CONSTRAINT FK_tblInvoices
& _
FOREIGN KEY NO INDEX (CustomerID) REFERENCES
& _
tblCustomers (CustomerID)
& _
ON UPDATE CASCADE
& _
ON DELETE CASCADE
注意 DDL 語句改變了tblInvoices 表單並添加了牢固的外關鍵字限制
同時它也通過使用級聯子句在tblInvoices 和 tblCustomers 之間建立了一個數據關聯
關閉VBA 開發環境
關閉Intermediate DDL 語句窗體
從Tools菜單中
選擇Relationships…菜單項以打開關聯窗口
雙擊tblCustomers 和 tblInvoices 之間的關聯鏈接以打開Edit Relationships對話框
注意級聯性更新和刪除選項沒有被設置
關閉對話框
當關聯鏈接仍然顯示時
按Delete鍵刪除聯接
關閉關聯窗口
如果Intermediate DDL 語句在數據庫窗口仍然顯示
點擊數據庫窗口工具條中的Open按鍵
點擊Alter Table w/ Fast Foreign Key按鍵產生一個外關鍵字聯系
關閉Intermediate DDL 語句窗體
當新的關系鏈接被創建後
使用前面提到的步驟打開Edit Relationships對話框
注意級聯性更新和刪除選項已經被設置
中級 DML 語句 這個acIntSQL數據庫有許多關於數據處理語言 (DML) 語句的例子
在這些范例裡你可以用它們來找到數據
並且它們中的大多數是以查詢的形式實現的
僅有的以在線SQL形式實現的DML 語句則是基於中級DML 語句窗體的
窗體中的三個例子在LIKE子句中使用
_
和
%
通配符
並使用SELECT INTO 語句在一個外部數據庫中創建一個表單
在acIntSQL 數據庫中保存的兩個查詢是屬於DML 語句內容卻執行類似DDL的操作
其中的SELECT INTO 語句從已有的數據庫中找到數據並用這些數據創建新的工作表
通過這些范例的學習
你將學會如何刪除目標工作表
前提是這些工作表已經存在
在中級DML語句的窗體中的Create Customers Database輸出指令和按鍵展示了一個對SELECT INTO 語句的有趣應用
這是一個告訴你使用中級SQL 語句所能完成的各種事情的一個好的例子
下面就是關於輸出命令和按鍵的子過程的代碼
Private Sub cmdCreateDB_Click()
Dim conCatalog As ADOX
Catalog
Dim conDatabase As ADODB
Connection
Dim SQL As String
Dim sDBName As String
On Error GoTo Error_Handler
Initialize objects & variables
Set conDatabase = Application
CurrentProject
Connection
Set conCatalog = New ADOX
Catalog
sDBName =
C:\Customers
mdb
Create the Customers database
conCatalog
Create
Provider=Microsoft
Jet
OLEDB
;
& _
Data Source=
& sDBName
Run the DML statement to build the Customers table
SQL =
SELECT * INTO tblCustomers IN
& sDBName & _
&
FROM tblCust
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22098.html