ANSI SQL标准和准则
2019獨角獸企業重金招聘Python工程師標準>>>
ANSI SQL標準和準則
SQL:ANSI數據庫管理標準
結構化查詢語言(SQL)是用于訪問和管理數據庫的數據庫管理員(DBA)的標準語言。
多年來,SQL不斷發展,許多版本和語言開始出現。為了統一SQL以獲得最佳實踐,美國國家標準協會(ANSI)為數據庫查詢語言創建了特定的標準。
SQL時間軸
-
1970年:為IBM工作的計算機Edgar Frank Codd博士于1970年6月在計算機協會(ACM)期刊上發表了他的著名論文“大型共享數據庫的數據關系模型”。Codd博士的模型仍然是關系數據庫管理系統(RDBMS)的權威模型。
-
1978年:?IBM公司在其位于加利福尼亞州的圣何塞研究中心開發數據庫系統System / R以及數據庫語言結構化英語查詢語言(SEQUEL)。它們基于Codd博士的原始模型,他們稱之為SEQUEL。
-
1979年:?Relational Software,Inc。發布了第一個關系數據庫管理系統,并將其命名為Oracle。他們的RDBMS在一臺小型機上運行,??使用SQL作為主要查詢語言。該產品變得如此受歡迎,該公司更名為Oracle。
-
1982年:?IBM發布了第一個基于SQL的商用SQL,它們命名為SQL /數據系統或SQL / DS,并于1985年發布了Database 2系統或DB2。兩個系統都在IBM大型計算機上運行。IBM稍后將DB2移植到其他系統,包括在Windows和UNIX操作系統上運行的系統。
ANSI標準逐年
-
1986:?SQL-87最初由ANSI于1986年正式確定。
-
1989年:美國國家標準協會(ANSI)發布了第一套數據庫查詢語言標準,稱為SQL-89或FIPS 127-1。
-
1992年:?ANSI發布了修訂后的標準ANSI / ISO SQL-92或SQL2,它們比SQLI更嚴格,增加了一些新功能。這些標準引入了合規水平,表明方言符合ANSI標準的程度。
-
1999:?ANSI發布SQL3或ANSI / ISO SQL:1999,具有新功能,如對對象的支持。取代了核心規范的合規水平,以及另外9個封裝的附加規格。
-
2003:?ANSI發布SQL:2003,引入標準化序列,XML相關功能和標識列。第一個RDBMS的創建者EFCodd博士于同年4月18日去世。
-
2006:?ANSI發布SQL:2006,定義如何將SQL與XML結合使用,并使應用程序能夠將XQuery集成到現有的SQL代碼中。
-
2008:?ANSI發布SQL:2008,引入INSTEAD OF觸發器以及TRUNCATE語句。
-
2011:?ANSI發布SQL:2011或ISO / IEC 9075:2011,ISO(1987)的第七個修訂版和SQL數據庫查詢語言的ANSI(1986)標準。
他們將新的ANSI SQL標準分為九個部分,包括:
-
第1部分 - ISO / IEC 9075-1:2011?SQL / Framework,它提供了邏輯概念。
-
第2部分 - ISO / IEC 9075-2:2011?SQL / Foundation,包括中心元素SQL。
-
第3部分ISO / IEC 9075-3:2008?SQL /調用級接口(CLI)解釋了接口組件,例如用于以各種編碼語言(如COBOL和C ++)執行SQL語句的過程,結構和變量綁定。
-
第4部分ISO / IEC 9075-4:2011?SQL /持久存儲模塊(PSM),概述了SQL的過程擴展標準,包括條件處理和控制流,以及語句條件信號和重新標記,以及局部變量和游標。將表達式分配給參數和變量。解決了持久數據庫語言例程(如存儲過程)的維護問題。
-
第9部分ISO / IEC 9075-9:2008?SQL /外部數據管理(MED),包括用于定義數據鏈接類型的SQL擴展和允許SQL管理外部數據的外部數據包裝器。外部數據是可訪問的,但不受基于SQL的DBMS管理。
-
第10部分ISO / IEC 9075-10:2008?SQL /對象語言綁定(OLB)定義了SQLJ的語義和語法。SQLJ是將SQL嵌入到Java中。該標準規定了SQLJ應用程序的二進制可移植性機制。它還定義了幾個Java包及其包含的類。
-
第11部分ISO / IEC 9075-11:2011?SQL /信息和定義Schemata,指定信息模式和定義模式,提供使SQL對象和數據庫自我描述的工具。包括SQL對象標識符,安全性和授權規范,以及安全性和完整性約束。支持ISO / IEC 9075的功能和包,以及基于SQL的DBMS實現提供的功能。
-
第13部分 - ISO / IEC 9075-13:2008?ISO / IEC 9075-13:2008:SQL例程和類型使用Java編程語言(JRT),指定將Java類用作SQL結構化用戶定義類型的能力從SQL應用程序中調用靜態Java方法作為例程,在數據庫中稱為Java。
-
第14部分 - ISO / IEC 9075-14:2011?SQL / XML相關規范,定義了在SQL中使用XML時基于SQL的擴展。它概述了XML數據類型,例程和函數。它還描述了在SQL數據庫中存儲和管理XML的XML到SQL數據類型映射。
ISO / IEC 13249 SQL多媒體和應用程序包與ISO / IEC 9075一起作為單獨但相關的標準,指定基于SQL的各種接口和包。
該軟件包的目標是提供對最常見的數據庫應用程序的集中訪問,例如圖片,文本,空間數據和數據挖掘。
如何查找標準副本
由于ISO和ANSI版權限制,SQL標準規范的硬拷貝僅可購買。您可以在ANSI網站上找到電子副本,方法是選擇“訪問標準 - eStandards商店”并搜索“SQL語言”。
每個文檔有兩種變體,但它們是相同的:
INCITS / ISO / IEC 9075 - * - 2011
ISO / IEC 9075 - *:2011
每個數據庫創建者都希望遵守這些標準,從而使SQL的各種實現變得相似;?但是,每個實現仍然具有使用SQL的獨特方言,包括標準的擴展或添加。
將SQL置于測試中
所有SQL方言的基本SQL命令和語句都是類似的,因此一旦DBA知道如何使用它,他們就可以輕松地學習其他方法。
雖然大多數SQL數據庫程序都有自己的專有擴展,但為了符合ANSI標準,它們必須至少以相同的方式支持這五個主要命令:
UPDATE
刪除
選擇
插
哪里
SQL使DBA能夠在數據庫中執行以下操作:
-
執行查詢
-
檢索數據
-
插入,更新和刪除記錄
-
創建新表和視圖
-
建立新的數據庫
-
生成存儲過程
-
設置視圖,表和過程的權限。
為了生成可以從數據庫訪問數據的網站,關系數據庫管理系統(RDBMS)數據庫程序是必要的。一些流行的RDBMS程序包括:
-
SQL Server
-
MS Access
-
MySQL的
-
Postgre SQL
-
Oracle數據庫。
為了創建數據庫,數據庫管理員還需要使用以下內容:
-
標準的標記語言,如CSS / HTML
-
服務器端腳本語言,例如ASP或PHP。
-
了解如何使用SQL檢索您請求的數據。
數據庫的剖析
關系數據庫管理系統(RDBMS)構成了數據庫的基礎。使用RDBMS允許DBA將數據存儲在稱為表的數據庫對象中。表由按部分組織的列和行相關數據組成。
識別數據庫表
大多數數據庫包含多個表,因此DBA必須使用名稱標識每個表。每個表都包含包含信息和數據的記錄行。
例如,企業將使用具有客戶表的數據庫,該客戶表包含每個客戶的以下數據:
顧客姓名
聯系人姓名
客戶ID
客戶地址 - 街道,城市,郵政編碼和國家
客戶聯系信息
在這種情況下,該表包含五個記錄 - 每個客戶一個 - 和八列,每個數據塊一個:客戶名稱,聯系人姓名,客戶ID,包括城市的客戶地址,郵政編碼和國家/地區,以及客戶聯系信息。
與SQL數據庫通信
數據庫管理員使用SQL語句執行數據庫中所需的所有操作。然后將結果存儲在結果表中,稱為結果集。
SQL通常不區分大小寫,并且某些數據庫系統需要在每個SQL語句的末尾使用分號。分號已成為在數據庫系統中將SQL語句彼此分離的標準方法。
這使DBA能夠在一次調用服務器時執行多個SQL語句。
一些SQL命令包括:
-
ALTER TABLE修改表。
-
ALTER DATABASE修改數據庫。
-
CREATE DATABASE創建新數據庫。
-
CREATE INDEX創建索引/搜索鍵。
-
CREATE TABLE創建新表。
-
DELETE從數據庫中刪除數據。
-
DROP INDEX刪除索引。
-
DROP TABLE刪除表
-
INSERT INTO將新數據插入數據庫。
-
SELECT從數據庫中提取數據。
-
UPDATE更新數據庫中的數據。
Codd的12條規則
當他創建第一個關系數據庫管理系統時,Codd博士包含了13條規則,建議如果數據庫管理系統滿足所有這些規則,那么它就是一個真正的關系數據庫管理系統。
因為他從0到12編號,他們被稱為Codd的12條規則:
-
規則零:基礎聲明基本系統必須滿足三個基本要求:它必須是關系型的,包括數據庫和管理系統。它還必須專門利用關系設施來管理數據庫,才能被視為真正的RDBMS。
-
規則一:信息表示以單數形式表示數據庫中的所有信息,特別是通過將值放在表行內的列位置。
-
規則二:保證訪問所有數據都必須是可訪問的,就像主鍵的基本要求一樣。通過定義包含的表和列的名稱以及包含行的主鍵值,可以合理地尋址數據庫中的每個單獨標量值。
-
規則三:處理空值?DBMS必須讓每個字段保持為空或為空。這意味著它必須以系統的方式支持對任何不適用或缺失信息的表示的操縱,該方式不同于所有常規值,并且獨立于數據類型。
-
規則四:活動在線目錄系統必須支持使用其常規查詢語言的授權用戶可訪問的內聯,聯機,關系結構或目錄。用戶應該能夠使用他們用于訪問數據庫內部數據的相同關系模型和查詢語言來訪問數據庫的目錄。
-
規則五:綜合數據子語言系統必須支持至少一種具有線性語法的關系語言。用戶應該能夠在應用程序中以交互方式利用它。它還必須支持數據操作操作(如更新和檢索)和數據定義操作(如視圖定義)以及事務管理操作(如提交,開始和回滾)。它還應該具有完整性和安全性約束。
-
規則六:更新任何理論上可以更新的視圖都必須由系統更新。
-
規則七:高級更新,插入和刪除系統應該支持一次更新,插入和刪除操作符,以便用戶可以從由多個表和/或行的數據構成的集合中檢索關系數據庫中的數據。應為任何可檢索集啟用更新,插入和刪除操作,而不是單個表中的單行。
-
規則八:物理數據獨立性物理級別的更新不應要求基于結構更新應用程序。例如,數據存儲方式的更改,例如是否將數據放在數組或鏈接列表中。
-
規則九:邏輯數據獨立性對邏輯級別的更新(例如列,表和行)不應要求基于結構更新應用程序。實現邏輯數據獨立性比物理數據獨立性更難。
-
規則10:完整性獨立性指定完整性約束必須與應用程序和目錄分開存儲。必須可以在適當時更新這些約束而不影響任何當前存在的應用程序。
-
規則11:分發獨立性數據庫用戶不應看到數據庫各部分到各個位置的分布。面對引入DBMS的分布式版本或當前分布式數據在整個系統中重新分配時,所有現有應用程序應能夠連續有效地運行。
-
規則12:非顛覆如果系統提供一次一個記錄或低級別接口,則無法利用它來減少另一個系統。這種情況的一個例子是繞過關系完整性或安全約束的行為。
結構化查詢語言或SQL已經走過了漫長的道路,但用于創建它的基礎仍然很強大。隨著云計算成為常態,數據庫管理員可能會發現更多使用它的方式和地點;?但是,ANSI將保留用于指定統一數據庫查詢語言的標準。
資源:
ANSI.org
SQL的歷史
W3Resource
←網站管理員工具的最終列表AZHTTP狀態代碼→
轉載于:https://my.oschina.net/hblt147/blog/1843640
總結
以上是生活随笔為你收集整理的ANSI SQL标准和准则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【神经网络】RBF神经网络逼近任意连续非
- 下一篇: 富文本编辑器内容存储至Mysql