日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

ANSI SQL标准和准则

發(fā)布時(shí)間:2023/12/14 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ANSI SQL标准和准则 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

ANSI SQL標(biāo)準(zhǔn)和準(zhǔn)則

SQL:ANSI數(shù)據(jù)庫管理標(biāo)準(zhǔn)

結(jié)構(gòu)化查詢語言(SQL)是用于訪問和管理數(shù)據(jù)庫的數(shù)據(jù)庫管理員(DBA)的標(biāo)準(zhǔn)語言。

多年來,SQL不斷發(fā)展,許多版本和語言開始出現(xiàn)。為了統(tǒng)一SQL以獲得最佳實(shí)踐,美國國家標(biāo)準(zhǔn)協(xié)會(huì)(ANSI)為數(shù)據(jù)庫查詢語言創(chuàng)建了特定的標(biāo)準(zhǔn)。

SQL時(shí)間軸

  • 1970年:為IBM工作的計(jì)算機(jī)Edgar Frank Codd博士于1970年6月在計(jì)算機(jī)協(xié)會(huì)(ACM)期刊上發(fā)表了他的著名論文“大型共享數(shù)據(jù)庫的數(shù)據(jù)關(guān)系模型”。Codd博士的模型仍然是關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)的權(quán)威模型。

  • 1978年:?IBM公司在其位于加利福尼亞州的圣何塞研究中心開發(fā)數(shù)據(jù)庫系統(tǒng)System / R以及數(shù)據(jù)庫語言結(jié)構(gòu)化英語查詢語言(SEQUEL)。它們基于Codd博士的原始模型,他們稱之為SEQUEL。

  • 1979年:?Relational Software,Inc。發(fā)布了第一個(gè)關(guān)系數(shù)據(jù)庫管理系統(tǒng),并將其命名為Oracle。他們的RDBMS在一臺(tái)小型機(jī)上運(yùn)行,??使用SQL作為主要查詢語言。該產(chǎn)品變得如此受歡迎,該公司更名為Oracle。

  • 1982年:?IBM發(fā)布了第一個(gè)基于SQL的商用SQL,它們命名為SQL /數(shù)據(jù)系統(tǒng)或SQL / DS,并于1985年發(fā)布了Database 2系統(tǒng)或DB2。兩個(gè)系統(tǒng)都在IBM大型計(jì)算機(jī)上運(yùn)行。IBM稍后將DB2移植到其他系統(tǒng),包括在Windows和UNIX操作系統(tǒng)上運(yùn)行的系統(tǒng)。

ANSI標(biāo)準(zhǔn)逐年

  • 1986:?SQL-87最初由ANSI于1986年正式確定。

  • 1989年:美國國家標(biāo)準(zhǔn)協(xié)會(huì)(ANSI)發(fā)布了第一套數(shù)據(jù)庫查詢語言標(biāo)準(zhǔn),稱為SQL-89或FIPS 127-1。

  • 1992年:?ANSI發(fā)布了修訂后的標(biāo)準(zhǔn)ANSI / ISO SQL-92或SQL2,它們比SQLI更嚴(yán)格,增加了一些新功能。這些標(biāo)準(zhǔn)引入了合規(guī)水平,表明方言符合ANSI標(biāo)準(zhǔn)的程度。

  • 1999:?ANSI發(fā)布SQL3或ANSI / ISO SQL:1999,具有新功能,如對(duì)對(duì)象的支持。取代了核心規(guī)范的合規(guī)水平,以及另外9個(gè)封裝的附加規(guī)格。

  • 2003:?ANSI發(fā)布SQL:2003,引入標(biāo)準(zhǔn)化序列,XML相關(guān)功能和標(biāo)識(shí)列。第一個(gè)RDBMS的創(chuàng)建者EFCodd博士于同年4月18日去世。

  • 2006:?ANSI發(fā)布SQL:2006,定義如何將SQL與XML結(jié)合使用,并使應(yīng)用程序能夠?qū)Query集成到現(xiàn)有的SQL代碼中。

  • 2008:?ANSI發(fā)布SQL:2008,引入INSTEAD OF觸發(fā)器以及TRUNCATE語句。

  • 2011:?ANSI發(fā)布SQL:2011或ISO / IEC 9075:2011,ISO(1987)的第七個(gè)修訂版和SQL數(shù)據(jù)庫查詢語言的ANSI(1986)標(biāo)準(zhǔn)。

他們將新的ANSI SQL標(biāo)準(zhǔn)分為九個(gè)部分,包括:

  • 第1部分 - ISO / IEC 9075-1:2011?SQL / Framework,它提供了邏輯概念。

  • 第2部分 - ISO / IEC 9075-2:2011?SQL / Foundation,包括中心元素SQL。

  • 第3部分ISO / IEC 9075-3:2008?SQL /調(diào)用級(jí)接口(CLI)解釋了接口組件,例如用于以各種編碼語言(如COBOL和C ++)執(zhí)行SQL語句的過程,結(jié)構(gòu)和變量綁定。

  • 第4部分ISO / IEC 9075-4:2011?SQL /持久存儲(chǔ)模塊(PSM),概述了SQL的過程擴(kuò)展標(biāo)準(zhǔn),包括條件處理和控制流,以及語句條件信號(hào)和重新標(biāo)記,以及局部變量和游標(biāo)。將表達(dá)式分配給參數(shù)和變量。解決了持久數(shù)據(jù)庫語言例程(如存儲(chǔ)過程)的維護(hù)問題。

  • 第9部分ISO / IEC 9075-9:2008?SQL /外部數(shù)據(jù)管理(MED),包括用于定義數(shù)據(jù)鏈接類型的SQL擴(kuò)展和允許SQL管理外部數(shù)據(jù)的外部數(shù)據(jù)包裝器。外部數(shù)據(jù)是可訪問的,但不受基于SQL的DBMS管理。

  • 第10部分ISO / IEC 9075-10:2008?SQL /對(duì)象語言綁定(OLB)定義了SQLJ的語義和語法。SQLJ是將SQL嵌入到Java中。該標(biāo)準(zhǔn)規(guī)定了SQLJ應(yīng)用程序的二進(jìn)制可移植性機(jī)制。它還定義了幾個(gè)Java包及其包含的類。

  • 第11部分ISO / IEC 9075-11:2011?SQL /信息和定義Schemata,指定信息模式和定義模式,提供使SQL對(duì)象和數(shù)據(jù)庫自我描述的工具。包括SQL對(duì)象標(biāo)識(shí)符,安全性和授權(quán)規(guī)范,以及安全性和完整性約束。支持ISO / IEC 9075的功能和包,以及基于SQL的DBMS實(shí)現(xiàn)提供的功能。

  • 第13部分 - ISO / IEC 9075-13:2008?ISO / IEC 9075-13:2008:SQL例程和類型使用Java編程語言(JRT),指定將Java類用作SQL結(jié)構(gòu)化用戶定義類型的能力從SQL應(yīng)用程序中調(diào)用靜態(tài)Java方法作為例程,在數(shù)據(jù)庫中稱為Java。

  • 第14部分 - ISO / IEC 9075-14:2011?SQL / XML相關(guān)規(guī)范,定義了在SQL中使用XML時(shí)基于SQL的擴(kuò)展。它概述了XML數(shù)據(jù)類型,例程和函數(shù)。它還描述了在SQL數(shù)據(jù)庫中存儲(chǔ)和管理XML的XML到SQL數(shù)據(jù)類型映射。

ISO / IEC 13249 SQL多媒體和應(yīng)用程序包與ISO / IEC 9075一起作為單獨(dú)但相關(guān)的標(biāo)準(zhǔn),指定基于SQL的各種接口和包。

該軟件包的目標(biāo)是提供對(duì)最常見的數(shù)據(jù)庫應(yīng)用程序的集中訪問,例如圖片,文本,空間數(shù)據(jù)和數(shù)據(jù)挖掘。

如何查找標(biāo)準(zhǔn)副本

由于ISO和ANSI版權(quán)限制,SQL標(biāo)準(zhǔn)規(guī)范的硬拷貝僅可購買。您可以在ANSI網(wǎng)站上找到電子副本,方法是選擇“訪問標(biāo)準(zhǔn) - eStandards商店”并搜索“SQL語言”。

每個(gè)文檔有兩種變體,但它們是相同的:

  • INCITS / ISO / IEC 9075 - * - 2011

  • ISO / IEC 9075 - *:2011

  • 每個(gè)數(shù)據(jù)庫創(chuàng)建者都希望遵守這些標(biāo)準(zhǔn),從而使SQL的各種實(shí)現(xiàn)變得相似;?但是,每個(gè)實(shí)現(xiàn)仍然具有使用SQL的獨(dú)特方言,包括標(biāo)準(zhǔn)的擴(kuò)展或添加。

    將SQL置于測試中

    所有SQL方言的基本SQL命令和語句都是類似的,因此一旦DBA知道如何使用它,他們就可以輕松地學(xué)習(xí)其他方法。

    雖然大多數(shù)SQL數(shù)據(jù)庫程序都有自己的專有擴(kuò)展,但為了符合ANSI標(biāo)準(zhǔn),它們必須至少以相同的方式支持這五個(gè)主要命令:

  • UPDATE

  • 刪除

  • 選擇

  • 哪里

  • SQL使DBA能夠在數(shù)據(jù)庫中執(zhí)行以下操作:

    • 執(zhí)行查詢

    • 檢索數(shù)據(jù)

    • 插入,更新和刪除記錄

    • 創(chuàng)建新表和視圖

    • 建立新的數(shù)據(jù)庫

    • 生成存儲(chǔ)過程

    • 設(shè)置視圖,表和過程的權(quán)限。

    為了生成可以從數(shù)據(jù)庫訪問數(shù)據(jù)的網(wǎng)站,關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)數(shù)據(jù)庫程序是必要的。一些流行的RDBMS程序包括:

    • SQL Server

    • MS Access

    • MySQL的

    • Postgre SQL

    • Oracle數(shù)據(jù)庫。

    為了創(chuàng)建數(shù)據(jù)庫,數(shù)據(jù)庫管理員還需要使用以下內(nèi)容:

    • 標(biāo)準(zhǔn)的標(biāo)記語言,如CSS / HTML

    • 服務(wù)器端腳本語言,例如ASP或PHP。

    • 了解如何使用SQL檢索您請求的數(shù)據(jù)。

    數(shù)據(jù)庫的剖析

    關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)構(gòu)成了數(shù)據(jù)庫的基礎(chǔ)。使用RDBMS允許DBA將數(shù)據(jù)存儲(chǔ)在稱為表的數(shù)據(jù)庫對(duì)象中。表由按部分組織的列和行相關(guān)數(shù)據(jù)組成。

    識(shí)別數(shù)據(jù)庫表

    大多數(shù)數(shù)據(jù)庫包含多個(gè)表,因此DBA必須使用名稱標(biāo)識(shí)每個(gè)表。每個(gè)表都包含包含信息和數(shù)據(jù)的記錄行。

    例如,企業(yè)將使用具有客戶表的數(shù)據(jù)庫,該客戶表包含每個(gè)客戶的以下數(shù)據(jù):

  • 顧客姓名

  • 聯(lián)系人姓名

  • 客戶ID

  • 客戶地址 - 街道,城市,郵政編碼和國家

  • 客戶聯(lián)系信息

  • 在這種情況下,該表包含五個(gè)記錄 - 每個(gè)客戶一個(gè) - 和八列,每個(gè)數(shù)據(jù)塊一個(gè):客戶名稱,聯(lián)系人姓名,客戶ID,包括城市的客戶地址,郵政編碼和國家/地區(qū),以及客戶聯(lián)系信息。

    與SQL數(shù)據(jù)庫通信

    數(shù)據(jù)庫管理員使用SQL語句執(zhí)行數(shù)據(jù)庫中所需的所有操作。然后將結(jié)果存儲(chǔ)在結(jié)果表中,稱為結(jié)果集。

    SQL通常不區(qū)分大小寫,并且某些數(shù)據(jù)庫系統(tǒng)需要在每個(gè)SQL語句的末尾使用分號(hào)。分號(hào)已成為在數(shù)據(jù)庫系統(tǒng)中將SQL語句彼此分離的標(biāo)準(zhǔn)方法。

    這使DBA能夠在一次調(diào)用服務(wù)器時(shí)執(zhí)行多個(gè)SQL語句。

    一些SQL命令包括:

    • ALTER TABLE修改表。

    • ALTER DATABASE修改數(shù)據(jù)庫。

    • CREATE DATABASE創(chuàng)建新數(shù)據(jù)庫。

    • CREATE INDEX創(chuàng)建索引/搜索鍵。

    • CREATE TABLE創(chuàng)建新表。

    • DELETE從數(shù)據(jù)庫中刪除數(shù)據(jù)。

    • DROP INDEX刪除索引。

    • DROP TABLE刪除表

    • INSERT INTO將新數(shù)據(jù)插入數(shù)據(jù)庫。

    • SELECT從數(shù)據(jù)庫中提取數(shù)據(jù)。

    • UPDATE更新數(shù)據(jù)庫中的數(shù)據(jù)。

    Codd的12條規(guī)則

    當(dāng)他創(chuàng)建第一個(gè)關(guān)系數(shù)據(jù)庫管理系統(tǒng)時(shí),Codd博士包含了13條規(guī)則,建議如果數(shù)據(jù)庫管理系統(tǒng)滿足所有這些規(guī)則,那么它就是一個(gè)真正的關(guān)系數(shù)據(jù)庫管理系統(tǒng)。

    因?yàn)樗麖?到12編號(hào),他們被稱為Codd的12條規(guī)則:

    • 規(guī)則零:基礎(chǔ)聲明基本系統(tǒng)必須滿足三個(gè)基本要求:它必須是關(guān)系型的,包括數(shù)據(jù)庫和管理系統(tǒng)。它還必須專門利用關(guān)系設(shè)施來管理數(shù)據(jù)庫,才能被視為真正的RDBMS。

    • 規(guī)則一:信息表示以單數(shù)形式表示數(shù)據(jù)庫中的所有信息,特別是通過將值放在表行內(nèi)的列位置。

    • 規(guī)則二:保證訪問所有數(shù)據(jù)都必須是可訪問的,就像主鍵的基本要求一樣。通過定義包含的表和列的名稱以及包含行的主鍵值,可以合理地尋址數(shù)據(jù)庫中的每個(gè)單獨(dú)標(biāo)量值。

    • 規(guī)則三:處理空值?DBMS必須讓每個(gè)字段保持為空或?yàn)榭铡_@意味著它必須以系統(tǒng)的方式支持對(duì)任何不適用或缺失信息的表示的操縱,該方式不同于所有常規(guī)值,并且獨(dú)立于數(shù)據(jù)類型。

    • 規(guī)則四:活動(dòng)在線目錄系統(tǒng)必須支持使用其常規(guī)查詢語言的授權(quán)用戶可訪問的內(nèi)聯(lián),聯(lián)機(jī),關(guān)系結(jié)構(gòu)或目錄。用戶應(yīng)該能夠使用他們用于訪問數(shù)據(jù)庫內(nèi)部數(shù)據(jù)的相同關(guān)系模型和查詢語言來訪問數(shù)據(jù)庫的目錄。

    • 規(guī)則五:綜合數(shù)據(jù)子語言系統(tǒng)必須支持至少一種具有線性語法的關(guān)系語言。用戶應(yīng)該能夠在應(yīng)用程序中以交互方式利用它。它還必須支持?jǐn)?shù)據(jù)操作操作(如更新和檢索)和數(shù)據(jù)定義操作(如視圖定義)以及事務(wù)管理操作(如提交,開始和回滾)。它還應(yīng)該具有完整性和安全性約束。

    • 規(guī)則六:更新任何理論上可以更新的視圖都必須由系統(tǒng)更新。

    • 規(guī)則七:高級(jí)更新,插入和刪除系統(tǒng)應(yīng)該支持一次更新,插入和刪除操作符,以便用戶可以從由多個(gè)表和/或行的數(shù)據(jù)構(gòu)成的集合中檢索關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)。應(yīng)為任何可檢索集啟用更新,插入和刪除操作,而不是單個(gè)表中的單行。

    • 規(guī)則八:物理數(shù)據(jù)獨(dú)立性物理級(jí)別的更新不應(yīng)要求基于結(jié)構(gòu)更新應(yīng)用程序。例如,數(shù)據(jù)存儲(chǔ)方式的更改,例如是否將數(shù)據(jù)放在數(shù)組或鏈接列表中。

    • 規(guī)則九:邏輯數(shù)據(jù)獨(dú)立性對(duì)邏輯級(jí)別的更新(例如列,表和行)不應(yīng)要求基于結(jié)構(gòu)更新應(yīng)用程序。實(shí)現(xiàn)邏輯數(shù)據(jù)獨(dú)立性比物理數(shù)據(jù)獨(dú)立性更難。

    • 規(guī)則10:完整性獨(dú)立性指定完整性約束必須與應(yīng)用程序和目錄分開存儲(chǔ)。必須可以在適當(dāng)時(shí)更新這些約束而不影響任何當(dāng)前存在的應(yīng)用程序。

    • 規(guī)則11:分發(fā)獨(dú)立性數(shù)據(jù)庫用戶不應(yīng)看到數(shù)據(jù)庫各部分到各個(gè)位置的分布。面對(duì)引入DBMS的分布式版本或當(dāng)前分布式數(shù)據(jù)在整個(gè)系統(tǒng)中重新分配時(shí),所有現(xiàn)有應(yīng)用程序應(yīng)能夠連續(xù)有效地運(yùn)行。

    • 規(guī)則12:非顛覆如果系統(tǒng)提供一次一個(gè)記錄或低級(jí)別接口,則無法利用它來減少另一個(gè)系統(tǒng)。這種情況的一個(gè)例子是繞過關(guān)系完整性或安全約束的行為。

    結(jié)構(gòu)化查詢語言或SQL已經(jīng)走過了漫長的道路,但用于創(chuàng)建它的基礎(chǔ)仍然很強(qiáng)大。隨著云計(jì)算成為常態(tài),數(shù)據(jù)庫管理員可能會(huì)發(fā)現(xiàn)更多使用它的方式和地點(diǎn);?但是,ANSI將保留用于指定統(tǒng)一數(shù)據(jù)庫查詢語言的標(biāo)準(zhǔn)。

    資源:

    ANSI.org

    SQL的歷史

    W3Resource

    ←網(wǎng)站管理員工具的最終列表AZHTTP狀態(tài)代碼→

    轉(zhuǎn)載于:https://my.oschina.net/hblt147/blog/1843640

    總結(jié)

    以上是生活随笔為你收集整理的ANSI SQL标准和准则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。