SQL語言作為關系數據庫管理系統中的一種通用的結構查詢語言已經被眾多的數據庫管理系統所采用如ORACLESybaseInformix等數據庫管理系統它們都支持SQL 語言Delphi與使用SQL語言的數據庫管理系統兼容在使用Delphi開發數據庫應用程序時我們可以使用SQL語言編程支持SQL編程是Delphi的一個重要特征這也是體現Delphi作為一個強大的數據庫應用開發工具的一個重要標志
SQL語言簡介
SQL的歷史
在年代初EECodd首先提出了關系模型年代中期IBM公司在研制 SYSTEM R關系數據庫管理系統中研制了SQL語言最早的SQL語言(叫SEQUEL)是在 年 月的IBM Journal of R&D上公布的年ORACLE公司首先提供商用的SQLIBM公司在DB 和SQL/DS數據庫系統中也實現了SQL
年月美國ANSI采用SQL作為關系數據庫管理系統的標准語言(ANSI X )後為國際標准化組織(ISO)采納為國際標准年美國ANSI采納在ANSI X報告中定義的關系數據庫管理系統的SQL標准語言稱為ANSI SQL 該標准替代ANSI X版本該標准為下列組織所采納
● 國際標准化組織(ISO)為ISO 報告Database Language SQL With Integrity Enhancement
● 美國聯邦政府發布在The Federal Information Processing Standard Publication(FIPS PUB)
目前所有主要的關系數據庫管理系統支持某些形式的SQL語言大部分數據庫打算遵守ANSI SQL標准
SQL的優點
SQL廣泛地被采用正說明了它的優點它使全部用戶包括應用程序員DBA管理員和終端用戶受益非淺
() 非過程化語言
SQL是一個非過程化的語言因為它一次處理一個記錄對數據提供自動導航SQL允許用戶在高層的數據結構上工作而不對單個記錄進行操作可操作記錄集所有SQL 語句接受集合作為輸入返回集合作為輸出SQL的集合特性允許一條SQL語句的結果作為另一條SQL語句的輸入
SQL不要求用戶指定對數據的存放方法這種特性使用戶更易集中精力於要得到的結果所有SQL語句使用查詢優化器它是RDBMS的一部分由它決定對指定數據存取的最快速度的手段查詢優化器知道存在什麼索引哪兒使用合適而用戶從不需要知道表是否有索引表有什麼類型的索引
() 統一的語言
SQL可用於所有用戶的DB活動模型包括系統管理員數據庫管理員應用程序員決策支持系統人員及許多其它類型的終端用戶基本的SQL 命令只需很少時間就能學會最高級的命令在幾天內便可掌握
SQL為許多任務提供了命令包括
● 查詢數據
● 在表中插入修改和刪除記錄
● 建立修改和刪除數據對象
● 控制對數據和數據對象的存取
● 保證數據庫一致性和完整性
以前的數據庫管理系統為上述各類操作提供單獨的語言而SQL 將全部任務統一在一種語言中
() 是所有關系數據庫的公共語言
由於所有主要的關系數據庫管理系統都支持SQL語言用戶可將使用SQL的技能從一個RDBMS轉到另一個所有用SQL編寫的程序都是可以移植的
TQuery部件在SQL編程中的運用
在Delphi中是通過TQuery部件來實現對SQL語言支持的也就是說用Delphi 開發數據庫應用程序時使用SQL語言操作數據庫中的數據的唯一途徑是經過TQuery部件 TQuery部件在Delphi中使用SQL語言編程時占居著絕對重要的地位在使用Delphi 開發的數據庫應用中可以使用SQL語言訪問下列三個方面的數據庫
● Paradox或dBASE數據庫中的表
在訪問這些桌面數據庫系統中的數據時只能使用ANSI標准的SQL語言中的部分SQL 語句它們主要包括SelectInsertUpdate和Delete語句即本地SQL語句有關詳細情況請參見附錄局部SQL語句的使用
● 本地InterBase數據庫服務器中的數據庫
在InterBase數據庫中支持的SQL語句 在Delphi中都可以使用有關InterBase中SQL語句的語法和限制請參看InterBase的語言參考
● 遠程數據庫服務器中的數據庫
當然這要求在Delphi中必須安裝相應的SQL Link只要是數據庫服務器上的DBMS支持的SQL語句在Delphi中都可以使用有關語法及限制請參看相關的數據庫管理 系統的文檔
值得一提的是Delphi還支持異構查詢即可以同時查詢多個數據庫服務器中相同的或不同類型的數據庫表例如查詢的數據可以是來自ORACLE數據庫中的表和Sybase數據庫中的表或者其它多個數據庫中的表
TQuery部件的使用
TQuery部件是一個數據集部件它在Delphi部件選擇板上的數據訪問頁(Data Access)上它與TTable部件具有很多共同的特性我們在第十五章數據訪問部件的應用及編程中較詳細地進行了介紹 TQuery 部件在 SQL 編程中占居了十分重要的地位 它實現了Delphi對SQL語言的支持在Delphi開發的數據庫應用中SQL語句是通過TQuery部件傳遞到要訪問的數據庫系統的數據庫引擎中由數據庫引擎具體執行SQL語句以實現對數據的操作而不是傳遞給Delphi中的BDE由BDE實施具體的SQL動作
我們已經知道了TTable部件在訪問數據庫時已經具備很強大的功能TTable部件通過Delphi內置的BDE可以實現對各種數據庫系統的訪問然而TQuery部件提供了一些 TTable部件不具備的功能它們是
●多表聯接查詢
●復雜的嵌套查詢(Select中包含著Select子查詢)
●明確需要按SQL語言進行的操作
因為TTabel部件不能使用SQL語言而在TQuery部件可以使用SQL語言因而TQuery部件也就具備了強大的關系查詢能力當然這也使數據庫應用程序本身變得更復雜了
在Delphi應用程序中編寫和使用的SQL語句有兩種即靜態SQL語句動態SQL 語句靜態SQL語句是在程序設計階段將SQL命令文本作為TQuery部件的SQL屬性值設置而動態SQL語句編程是SQL語句中包含一系列的參數在程序運行過程中各參數值是可變的即可以動態地給SQL語句中的參數賦值
[] [] [] []
From:http://tw.wingwit.com/Article/program/Delphi/201311/25144.html