更新時間:2021-11-02 10:57:35 來源:動力節點 瀏覽811次
SQL 是一種流行的關系數據庫語言,于 1986 年由美國國家標準協會 (ANSI) 首次標準化。此后,它被國際標準化組織 (ISO) 和國際電工委員會 (IEC) 正式采納為國際標準。它還被美國聯邦政府采用為聯邦信息處理標準 (FIPS)。
數據庫語言 SQL 正在由上述標準化機構不斷開發。最近發布的版本是在 1992 年,ANSI 作為美國國家標準 X3.135-1992 和 ISO/IEC 作為國際標準 9075:1992 發布的 580 頁規范。這兩個規范是逐字相同的。兩種版本都只能從 ANSI 獲得硬拷貝(銷售電話:+1-212-642-4900)。進一步的擴展和增強正在開發中(參見下面的 SQL 增強)。
FIPS SQL 規范發布為FIPS PUB 127-2;它通過引用指向 ANSI 規范,提供了四個 FIPS SQL 一致性級別,并確定了其他 FIPS SQL 要求,用于標記擴展、支持功能的文檔以及字符集支持。
SQL 標準非常流行,有大量且越來越多的符合要求的實現。它是或很快將成為大多數涉及結構化數據的聯邦數據庫和數據庫應用程序的定義基礎。
數據庫語言標準規定了數據庫管理系統 (DBMS) 的各個組件的語義。特別是,它定義了由 DBMS 實現的數據模型的結構和操作,以及支持數據定義、數據訪問、安全、編程語言接口和數據管理的其他組件。SQL 標準規定了支持關系數據模型的 DBMS 的數據定義、數據操作和其他相關設施。
數據庫語言標準適用于所有數據庫應用程序,其中數據將與其他應用程序共享,應用程序的生命周期比當前設備的生命周期長,或者應用程序將由非原始程序員理解和維護那些。
關系模型的基本結構是一個表,由行和列組成。數據定義包括聲明要包含在數據庫中的每個表的名稱、每個表的所有列的名稱和數據類型、對列中和列間值的約束以及向潛在用戶授予表操作權限。可以通過插入新行、刪除或更新現有行或選擇滿足給定搜索條件的行進行輸出來訪問表。可以通過笛卡爾積、聯合、交集、匹配列上的連接或給定列上的投影來操作表以生成新表。
SQL 數據操作操作可以通過游標或通用查詢規范調用。該語言包括所有算術運算、比較和字符串匹配的謂詞、通用和存在量詞、max/min 或 count/sum 的匯總運算,以及按組對表進行分區的 GROUP BY 和 HAVING 子句。事務管理是通過 COMMIT 和 ROLLBACK 語句實現的。
該標準提供了用于定義數據的應用程序特定視圖的語言工具。每個視圖都是生成所需表的數據庫操作的規范。然后在應用程序執行時具體化查看的表。
SQL 標準為與其他語言的接口提供了模塊語言。每個 SQL 語句都可以打包為一個過程,該過程可以被調用并具有從外部語言傳遞給它的參數。游標機制從一次只能處理表的一行的語言中提供一次一行的訪問。
訪問控制由 GRANT 和 REVOKE 語句提供。必須明確授予每個潛在用戶使用特定語句訪問特定表或視圖的權限。
SQL 完整性增強工具為參照完整性、CHECK 約束子句和 DEFAULT 子句提供了額外的工具。參照完整性允許指定主鍵和外鍵,并要求除非存在匹配的主鍵行,否則不得插入或更新外鍵行。Check 子句允許數據庫系統維護列間約束的規范。默認子句為缺失數據提供可選的默認值。
嵌入式 SQL 規范提供了編程語言的 SQL 接口,特別是 Ada、C、COBOL、FORTRAN、MUMPS、Pascal 和 PL/I。因此,應用程序可以將程序控制結構與 SQL 數據操作功能集成在一起。嵌入式 SQL 語法只是從符合標準的編程語言訪問的顯式 SQL 模塊的簡寫。
SQL-92 顯著增加了 1986 年原始標準的大小,包括用于修改或更改模式的模式操作語言、模式信息表以使用戶可以訪問模式定義、動態創建 SQL 語句的新工具以及新的數據類型和域. 其他新的 SQL-92 特性包括外連接、級聯更新和刪除引用操作、在表上設置代數、事務一致性級別、滾動游標、延遲約束檢查和大大擴展的異常報告。SQL-92 還刪除了許多限制,以使語言更加靈活和正交。
數據庫語言標準的目的是提供數據庫定義和數據庫應用程序在一致實現之間的可移植性。數據庫語言標準的使用適用于所有系統之間需要交換數據庫信息的情況。模式定義語言可用于交換數據庫定義和特定于應用程序的視圖。數據操作語言提供的數據操作使交換完整的應用程序成為可能。
關系數據模型以及 SQL 標準適用于需要在數據庫的數據結構和訪問路徑方面具有靈活性的數據庫應用程序。對于在生產控制下的應用程序以及當非計算機專業人員的最終用戶非常需要臨時數據操作時,它都是可取的。
SQL 模式定義語言特別適用于描述可以在各種數據管理應用程序之間傳輸的信息表。與 遠程數據庫訪問 (RDA)標準一起使用,可以以標準方式交換數據事件并使符合系統的系統進行互操作。
目前正在開發將 SQL 增強為一種用于定義和管理持久性復雜對象的計算完整語言。這包括:泛化和專業化層次結構、多重繼承、用戶定義的數據類型、觸發器和斷言、對基于知識的系統的支持、遞歸查詢表達式和其他數據管理工具。它還包括抽象數據類型 (ADT)、對象標識符、方法、繼承、多態性、封裝以及通常與對象數據管理相關的所有其他設施的規范。一個SQL3 FTP目錄包含個人作者給予說明和各種建議的SQL增強狀態論文。
1993 年,ANSI 和 ISO 開發委員會決定將未來的 SQL 開發拆分為一個多部分標準。截至 1995 年 12 月,這些部分是:
第 1 部分:框架。對文檔結構的非技術性描述。
第 2 部分:基礎。核心規范,包括所有新的 ADT 和 Object SQL 特性;目前已超過 800 頁。
第 3 部分:SQL/CLI。調用級接口。僅依賴于 SQL-92 的版本于 1995 年發布為 ISO/IEC 9075-3:1995。后續正在開發中,為 SQL 的其他部分中的新功能提供支持。
第 4 部分:SQL/PSM。存儲過程規范,包括計算完整性。目前正在處理 DIS 選票。
第 5 部分:SQL/綁定。取自 SQL-92 的動態 SQL 和嵌入式 SQL 綁定。目前沒有活躍的新工作,盡管 C++ 和 Java 接口正在討論中。
第 6 部分:SQL/XA。X/Open 開發的流行 XA 接口的 SQL 特化(見下文)。
第 7 部分:SQL/時態。一個新批準的 SQL 子項目,用于開發使用 SQL 進行時態數據管理的增強工具。
SQL Foundation 包括所有新的 SQL 抽象數據類型 (ADT) 工具。提議的新第 2 部分中的某些功能非常穩定,可以立即標準化,而其他功能正在積極發展,因此有些不穩定。這部分很快將分為可以“早期”進行的部分和可以等到“稍后”進行的部分。
早期的部分可以在 1996 年發展到 CD,并在 1998 年最終采用。所有用戶定義的 VALUE ADT、子類型系列、斷言、觸發器、保存點和光標擴展很容易成為“早期”部分,因為每個人都同意他們是穩定的規格。OBJECT ADT 工具處于“早期”和“后期”之間的邊緣,而 WITH OID VISIBLE 替代品目前處于“后期”部分。所有集合類型的東西(即列表、集合、數組、多重集)也處于邊緣,因為它們的規范仍然不完整。
SQL 調用級接口是第三方軟件開發人員的要求,他們生產用于個人計算機和工作站的“收縮包裝”軟件。他們不希望使用模塊處理器或嵌入式 SQL 預處理器綁定樣式,因為他們不希望將任何源代碼與他們銷售給個人用戶的產品一起分發。相反,他們希望有一個到 SQL 數據存儲庫的服務調用接口,可以從主機操作系統提供的調用環境中調用該接口。對 SQL 數據存儲庫的調用然后可以嵌入到目標代碼中,就像對任何其他系統服務的調用一樣。
調用級接口是執行 SQL 語句的替代機制。SQL/CLI 由許多例程組成,這些例程:
-- 分配和釋放資源。
-- 控制與 SQL 服務器的連接。
-- 使用類似于動態 SQL 的機制執行 SQL 語句。
-- 獲取診斷信息。
-- 控制事務終止。
CLI ExecDirect 例程和CLI Prepare 例程均支持標識為StatementText 的輸入字符串參數。如果 P 是 StatementText 的值,則 P 應滿足以下限制:
1. P 應符合 SQL'92 標準第 17.6 節“準備語句”中規定的“可準備語句”的格式、語法規則和訪問規則。
2. P 不應是“提交聲明”或“回滾聲明”。
3. P 應遵守 SQL/ERI Server 聲明的 SQL 支持級別的 Leveling Rules。
SQL/CLI 規范旨在支持嵌入到基于指針的編程語言和非基于指針的編程語言中的 CLI 例程。
特別是,CLI 例程可以嵌入到以下任何一種標準編程語言中:Ada、C、COBOL、Fortran、MUMPS、Pascal 和 PL/I。
SQL/ERI 服務器將指示它支持哪些語言。
SQL/CLI 包含許多特性使其與 SQL-92 完全兼容(例如處理國際字符集、滾動游標支持和對動態 SQL 的支持),并且添加了“簡潔”例程以使其向后兼容MicroSoft 的 ODBC 和早期的 SQL Access 和 X/Open Snapshot 規范。
編輯將在 1994 年 10 月中旬之前制作 DIS 文本,預計 DIS 投票可以在 1995 年 5 月完成。如果一切順利,應該會在 1995 年底發布 ISO/IEC SQL/CLI 標準。
這部分包括 SQL 中所有新的“編程語言控制流”特性,例如賦值、變量、循環、分支、過程塊結構、過程和函數調用、異常處理等。它為“存儲過程”,即在服務器上存儲和優化的 SQL 過程,可以通過一次調用從客戶端調用。
這是客戶端/服務器環境中非常重要的要求。
PSM 規范的一個優點是,非 SQL 數據存儲庫現在能夠將自己呈現給 SQL 環境,以符合最低級別的 SQL 數據操作,同時提供它們作為 SQL 的“增值”設施- 可調用的函數和過程。這應該是讓遺留系統和其他非 SQL 數據存儲庫(例如文檔管理系統和地理信息系統)聲明符合 FIPS PUB for SQL Environments 中定義的 SQL/ERI 配置文件之一的重要刺激因素(請參閱 SQL環境如下)。
SQL/PSM 規范將在今年秋天進行第一次 CD 投票,很可能不遲于 1995 年 7 月發展到 DIS。它應該在 1996 日歷年被正式采用為 ISO/IEC 標準。
該規范將標準化全局事務管理器和 SQL 資源管理器之間的應用程序接口 (API)。它將基于 ISO/IEC 10026“分布式事務處理”的語義標準化函數調用,SQL 資源管理器必須支持兩階段提交。基礎文檔源自具有 X/Open 權限的 X/Open 發布,它根據 SQL 數據類型為以下函數指定顯式輸入和輸出參數和語義:xa_close、xa_commit、xa_complete、xa_end、xa_forget、 xa_open、xa_prepare、xa_recover、xa_rollback 和 xa_start。
SQL/XA 的當前時間表要求在 1996 年進行 CD 注冊,并于 1998 年正式采用作為 ISO/IEC 標準。
用于開發多媒體應用程序 SQL 類庫的新 ISO/IEC 國際標準化項目于 1993 年初獲得批準。這項名為 SQL 多媒體 (SQL/MM) 的新標準化活動將指定 SQL 抽象數據類型 (ADT) 定義的包使用新興 SQL3 規范中提供的 ADT 規范和調用工具。SQL/MM 旨在標準化科學和工程、全文和文檔處理的類庫,以及管理多媒體對象(如圖像、聲音、動畫、音樂和視頻)的方法。它可能會為其他 JTC1 標準化機構定義的多媒體對象提供 SQL 語言綁定(例如 SC18 用于文檔,SC24 用于圖像,SC29 用于照片和電影)。
SQL/MM 的項目計劃表明它將是一個多部分標準,由不斷發展的部分組成。第 1 部分將是一個框架,指定如何構建其他部分。每個其他部分將專門用于特定的 SQL 應用程序包。1995 年 12 月存在以下 SQL/MM 部件結構:
第 1 部分:框架。對文檔結構的非技術性描述。
第 2 部分:全文。用于文本數據處理的方法和 ADT。目前只有很少的內容。
第 3 部分:空間。用于空間數據管理的方法和 ADT。大約 125 多頁,來自 3 個國家機構的空間數據專家做出了積極貢獻。
第 4 部分:通用設施。復數、三角函數和指數函數、向量、集合等的方法和 ADT。目前大約 85 頁。
SQL 環境是一個集成的數據處理環境,其中異構產品都支持 FIPS SQL 標準的某些方面, FIPS PUB 127-2,能夠相互通信并在適當的安全性、完整性和訪問控制機制下提供對數據和數據操作和方法的共享訪問。SQL 環境中的某些組件將是全功能 SQL 實現,它們符合 FIPS SQL 的整個級別并支持其所有必需的模式定義、數據操作、事務管理、完整性約束、訪問控制和模式信息子句。SQL 環境中的其他組件可能是專門的數據存儲庫,或圖形用戶界面和報告編寫器,它們支持 SQL 標準的選定部分,從而在同一 SQL 環境中提供其自身與其他產品之間的集成度。目的是對各種遺留或專用數據資源的集合提供高級別的控制。SQL 環境允許組織獲得 SQL 的許多優點,而無需進行大量、復雜且容易出錯的轉換工作;相反,組織可以以可控的方式發展到一個新的環境。
FIPS PUB 193用于 SQL 環境的 FIPS PUB 是定義適當一致性配置文件的持續努力的開始,供應商和用戶可以使用這些配置文件來指定各種產品如何適合 SQL 環境的確切要求。重點是為非 SQL 數據存儲庫指定通用的 SQL 外部存儲庫接口 (SQL/ERI) 配置文件。這些配置文件指定了如何使用 SQL 標準的一個子集來提供對舊數據庫的有限 SQL 訪問,或支持到專業數據管理器(如地理信息系統 (GIS)、全文文檔管理系統或對象數據庫)的 SQL 網關管理系統。其中指定的所有配置文件都用于服務器端產品,即控制持久數據并為用戶訪問該數據提供接口的產品。
許多應用程序需要在異構數據管理系統的管理和控制下存儲在地理上分離的數據庫中的各種數據(例如文檔、圖形、空間數據、字母數字記錄、復雜對象、圖像、語音、視頻)的邏輯集成數據庫。一個壓倒一切的要求是這些不同的數據管理器能夠相互通信,并在適當的安全性、完整性和訪問控制機制下提供對數據和數據操作和方法的共享訪問。大部分源數據可能存儲在簡單的文件系統、遺留數據管理系統或非常專業的數據存儲庫中,這些存儲庫僅滿足這些數據管理要求的一小部分。SQL 環境的目標是在邏輯上集成這些不同的數據存儲庫“好像” 它們受單個 SQL 數據管理器的控制。用戶表示工具,例如圖形用戶界面或報告編寫器,然后可以使用此 SQL 界面從各種來源收集數據,在臨時連接條件下將它們合并在一起,并以令人愉悅的圖形格式呈現給用戶。
正常運行的 SQL 環境將使用 SQL 語言使用標準化工具來描述此數據,將其集成到單個聯合集合中,強制執行任何完整性或訪問控制約束,并使其作為一個邏輯整體可用于復雜的用戶生產力或演示工具。然后,這些客戶端工具可以使用 SQL 的全部功能和靈活性進行數據檢索和操作。底層數據管理器可能實現非關系數據模型,因此可能難以支持嵌套子查詢、多表連接、選擇列表中的派生列、參照完整性或其他關系模型功能的 SQL 要求。另一方面,它們可能提供關系實現很少支持的其他數據模型的高級功能。
使用這種方法,SQL 可能被證明是異構數據存儲庫的集成器,就像它作為關系數據模型的語言接口一樣成功。如果非 SQL 實現為其數據和服務提供“簡單”的 SQL 接口,并且全功能 SQL 實現使用該簡單接口為最終用戶工具提供全功能服務,則 SQL 語言可以滿足這些集成目標。用于 SQL 環境的FIPS PUB 193 為此類“簡單”SQL 接口指定了標準配置文件,從而更容易指定和支持所需的集成。
SQL 和 RDA 為標準化通信提供了基礎。SQL 外部存儲庫接口 (SQL/ERI) 使非 SQL 數據存儲庫可以與用戶應用程序共享其數據。隨著面向對象和基于知識的數據管理的新興 SQL3 增強以及分布式數據庫的新興 RDA 擴展,ERI 可以發展以支持“無縫”數據集成。
通過以上介紹,大家對SQL數據庫語言的定義已經有了一些了解,如果您想了解更多相關信息,可以關注一下動力節點的Java在線學習,里面的內容更豐富,對于沒有基礎的小白來說非常適合,希望對大家能夠有所幫助。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習