該系列的文章解釋了什麼是Microsoft? Jet SQL,並說明了它如何在Access 2000的應用程序中使用。本文是基礎、中級和高級三篇中的第二篇。這些文章循序漸進的說明了使用Jet SQL的語法和一些方法,並示范了對於Access 2000來說較新的Jet SQL的特征。最後,本文的所有SQL參考都是針對Microsoft Jet 4.0 數據引擎所用的。
中級SQL說明 通過了解中級結構化查詢語言的一些概念,用戶可以增強控制數據庫的結構和對象的能力,並且可以通過許多有趣的和強有力的途徑操縱這些機構中包含的數據。結合使用諸如DAO和ADO之類的數據訪問方法,中級SQL 可以很大程度的提高用戶應用程序的靈活性及其表現。
基礎、中級和高級SQL的不同點 在基礎、中級和高級SQL之間劃分一條明顯的界限並不是一件容易的事情,在很多情況下,決定其所屬都只是簡單的決斷。但是對於該系列在Access 2000中使用SQL的文章來說,還考慮了如下的一些方面:
首先一點在於SQL語句本身的復雜級別。在前面的文章中,我們努力使用那些常用的語句,而且是最簡單的形式。本文則在前面基礎篇的基礎上介紹了更復雜的語句。
其次是在Access 2000中已經包含了一些新的SQL語句、子句和關鍵詞。盡管在本文中仍將使用Access上一版本中所包含的SQL語句,但是一定會出現一些在Access中第一次出現的SQL語句,在高級SQL一文中也是如此。
最後,那些關於安全性和多用戶解決方案的SQL語句將在高級篇中介紹,因為這些語句常常是用於更復雜的應用程序中的
通過使用中級SQL,用戶可以為你的Access應用程序增加更強的靈活性和能力。盡管簡單的和直接的SQL語句能夠完成很多的事情,但是使用更復雜的語句將擴展在數據庫中訪問和處理信息的方法范圍。使用中級SQL也將使得用戶可以更好的控制你的數據庫使用和維護工作
增強SQL 在Access 2000中,為了支持Access的新特性,為了和ANSI-92的標准更加一致,並且允許在Access 和 Microsoft? SQL Server?間的更好的兼容性,包含在Microsoft Jet 4.0數據引擎中的SQL作了許多增強。Jet數據引擎現在有兩種格式的SQL語法:一種是支持以前使用的SQL語法,另一種是支持新的SQL語法規范。需要格外注意的是,只有在用戶使用ActiveX? Data Objects (ADO)和Jet OLE DB provider時新的語法才是可用的,而當前通過Access SQL VIEw接口或者DAO是無法使用新的語法的。本文指出只有通過Jet OLE DB provider 和 ADO才能夠使用某個特定的SQL命令。
在Access的上一版本中,數據訪問對象(DAO)是主要的數據訪問方法。而現在發生了改變,盡管DAO 仍舊被支持,但新的數據訪問方法是使用ADO。ADO是微軟的通用數據訪問戰略(Microsoft's Universal Data Access strategy)的一部分,其最基本的假設是無論數據存在那裡都是可以訪問的,不管是數據庫、目錄結構還是某重用戶自定義的數據庫。
在討論Microsoft Jet SQL 時,ADO是非常重要的,正如在前面提到的,一些新的SQL語句只有在使用ADO 和Jet OLE DB provider時才是可用的。在本文和與本文相配套的示范數據庫中,所有的代碼都是使用ADO些的。那些沒有特意指明為只有通過ADO才可用的SQL語句都可以通過Access SQL VIEw 用戶接口或 DAO來執行。詳盡的關於ADO的討論超出了本文的范圍,用戶可以在下面的網站中找到最近的信息
http://www.microsoft.com/data/ado/.
SQL代碼規范 本文使用一致性的SQL代碼規范。與所有的代碼規范相同,目的是使用易讀和易於理解的方式來顯示代碼。這就要通過空格、換行和大寫關鍵字的結合使用來實現。通常來說,要使用大寫字母來打印SQL的關鍵字,如果SQL語句必須換行,盡量使SQL語句的主要部分一起換行。看過一些例子之後,相信讀者會對此有較好的感覺。
不合格式的SQL代碼 CREATE TABLE tblCustomers (CustomerID INTEGER NOT NULL, [Last Name] TEXT(50) NOT NULL, [First Name] TEXT(50) NOT NULL, Phone TEXT(10), Email TEXT(50))
良好格式的SQL代碼 CREA