SQL-92標準 中文翻譯

轉自:

鳳舞於九天,棲於桫欏,涅槃 http://blog.sina.com.cn/suoluosoul,後面還有寸身無恙的BLOG相關內容理解,記錄於此,以後繼續


前言

ISO(國際標準化組織)是一個由國家標準機構(ISO成員機構)構成的世界性的聯邦。通常由ISO技術委員會開展籌備國際標準的工作。如果成員機構關注的某個主題成立了技術委員會,那麼成員機構有權派代表參加該委員會。與ISO有聯絡的國際組織,政府和非政府組織,也參與工作。在所有電工標準化的問題上,ISO與國際電工委員會(IEC )密切合作。

 

被技術委員會採納的國際標準草案將會分發給各成員機構尋求認可,之後才能由ISO理事會接受爲國際標準。按照ISO規程,需要參加表決的成員機構中至少75%贊成,該草案才能通過。

 

國際標準ISO / IEC 9075:1992出自聯合技術委員會ISO / IEC JTC1 ,信息處理系統。

 

它取消並取代國際標準ISO / IEC 9075:1989 ,DatabaseLanguage-SQL,構成技術性修訂。

 

該國際標準包含了七個告知性的附錄:

- 附錄A (資料): SQL語言的分級;

- 附錄B (資料): 實現定義的要素;

- 附錄C (資料): 實現依賴的要素;

- 附錄D (資料): 不推薦使用的功能;

- 附錄E (資料): 與ISO / IEC 9075:1989的不兼容;

- 附錄F (資料): SQL的維護和解釋。

 

簡介

 

該國際標準於1992年被批准。

 

 

該國際標準是從ISO/IEC9075:1989(信息系統,數據庫語言SQL完整性增強)發展而來,並取代了那個國際標準。該國際標準在詳細說明中增加了大量重要的新特性和功能。一般情況下該標準與ISO/IEC9075:1989標準兼容,也就是說,除了極少數例外,符合ISO / IEC9075:1989標準的SQL語言也符合該國際標準,並且在兩者實現上保持一致。在ISO / IEC9075:1989和該國際標準之間,已知的不相容參考告知性附件E “與ISO / IEC 9075:1989的不兼容 ”。

 

 

在ISO/IEC9075:1989和該國際標準之間,技術方面的改變包括現有功能的改進或增強和新功能的定義。現有功能的重要改進有:

-直接調用SQL語言的更好的定義;

-改進的診斷能力,特別是新的狀態參數( SQLSTATE ) ,診斷領域,並支持報表。

 

 

重要的新特性有:

1)       支持更多的數據類型(DATE, TIME, TIMESTAMP, INTERVAL, BIT string,variable-length character and bit strings, and NATIONAL CHARACTERstrings),

2)       除了表示SQL語言本身以外,還支持字符集和更多的排序規則,

3)       支持更多的標量操作,如連接字符串和取子字符串的字符串操作,日期和時間操作,條件表達式的形成,

4)       在標量值查詢表達式和表值查詢表達式的使用上,增強了通用性和正交性,

5)       更多的set操作符(例如,union join, natural join, set difference, and setintersection),

6)       能夠在方案中定義域,

7)       支持對方案的操作(特別是DROP和ALTER語句),

8)       支持在Ada、C、MUMPS語言中嵌入SQL語句(模塊和嵌入式語法),

9)       更多的權限能力,

10)    更多的引用完整性的能力,包括引用的動作,檢查約束中的子查詢,單獨的斷言,以及用戶控制約束的推遲,

11)    信息方案的定義,

12)    支持SQL語言的動態執行,

13)    支持某些設施所需的遠程數據庫訪問(尤其是連接的管理語句和合格的方案名稱),

14)    支持臨時表,

15)    支持各級事務的一致性,

16)    支持數據類型轉換(各種數據類型使用CAST表達式),

17)    支持滾動遊標,

18)    具有標記的能力,以輔助應用程序的可移植性。

 

 

該國際標準的內容組織如下:

1)       第1條“範圍” ,指定該國際標準的範圍。

2)       第2條“規範參考” ,通過該國際標準的引用,標識額外的標準。這些標準構成該國際標準的規定。

3)       第3條“定義,記號,和約定” ,定義了該國際標準中使用的記號和約定。

4)       第4條“概念” ,給出在SQL定義中用到的概念。

5)       第5條“詞法要素” ,定義語言的詞法要素。

6)       第6條“標量表達式”,定義產生標量值的語言要素。

7)       第7條“查詢表達式”,定義產生數據行和數據表的語言要素。

8)       第8條“謂詞” ,定義語言的謂詞。

9)       第9條“數據分配規則” ,指定檢索數據或存儲數據到數據庫的分配規則,和set操作形成規則。

10)    第10條“附加的公用要素” ,定義用於語言各部分的附加的語言要素。

11)    第11條“方案的定義和操縱” ,定義創建和管理方案的能力。

12)    第12條“模塊” ,定義模塊和過程。

13)    第13條“數據操縱” ,定義數據操縱語句。

14)    第14條“事務管理” ,定義SQL事務管理語句。

15)    第15條“連接管理”,定義SQL連接管理語句。

16)    第16條“會話管理” ,定義SQL會話管理語句。

17)    第17條“動態SQL ” ,定義動態執行SQL語句的能力。

18)    第18條“診斷管理” ,定義診斷管理能力。

19)    第19條“嵌入式SQL ” ,定義在某些標準編程語言中嵌入SQL的語法。

20)    第20條“直接調用的SQL ” ,定義了SQL語言的直接調用。

21)    第21條“信息方案和定義方案” ,定義包含方案信息的可視化表。

22)    第22條“狀態碼” ,定義標識SQL語句執行狀態的值和這些值返回的機制。

23)    第23條“一致性” ,定義了符合該國際標準的準則。

24)    附錄A “SQL語言的分級” ,是一個告知性的附錄。它列出了分級的規則,定義了入門級SQL和中級水平SQL。

 

25)    附錄B , “實現定義的要素”,是一個告知性的附錄。它列出了在該國際標準正文中規定的數據庫上的語法、含義或效果是部分或全部實現定義的特性,並描述了在各種情況下執行者應提供的確定信息。

 

26)    附錄C,“實現依賴的要素”,是一個告知性的附錄。它列出了在該國際標準正文中明確規定的數據庫上的含義和效果是實現依賴的特性。

 

27)    附錄D,“不推薦使用的功能”,是一個告知性的附錄。它列出了技術委員會打算將來在該國際標準的修訂版中,不會出現的功能。

 

28)    附錄E,“與ISO / IEC 9075:1989的不兼容”,是一個告知性的附錄。它列出了該國際標準當前版本和ISO / IEC9075:1989標準之間的不兼容 。

 

29)    附錄F,“SQL的維護和解釋”,是一個告知性的附錄。它列出自ISO / IEC 9075:1989採納以來,被ISO / IECJTC1/SC21處理過的SQL解釋和修正。

 

在該國際標準的文本中,條款開始於一個新的奇數頁,並在第5條“詞法要素”到第22條“狀態碼”,子條款開始於新的一頁。任何由此產生的空白空間不是很大。

 

範圍

該國際標準定義了SQL數據的數據結構和基本操作。它提供了SQL數據的創建,獲取,維護,控制,保護的功能。

 

注:該國際標準的構架使用數據管理的關係模型描述(ISO/IEC DIS 10032:1991)。

 

該國際標準規定了對以下幾點的數據庫語言的語法和語義:

-SQL數據的結構和完整性約束的指定和修改,

-SQL的數據和遊標的聲明和調用操作,

-數據庫語言過程的聲明,並將其嵌入到標準的編程語言中。

它還指定描述SQL數據的結構和完整性約束的信息方案。

 

該國際標準

-爲在多個SQL實現之間的數據定義和編譯單元的可移植性提供載體,

-爲多個SQL實現的互連提供載體,

-爲在編譯單元中的嵌入式SQL語句,規定了相關語法,否則就需要符合特殊的編程語言標準。它定義符合特定編程語言標準的等效的編譯單元。在這等效的編譯單元中,每個嵌入式SQL語句被一些語句替換,這些語句調用包含了SQL語句的數據庫語言過程,

-規定了直接引用SQL語句的語法。

 

該國際標準在以下幾條中,沒有定義方法或綁定的時間

-數據庫管理系統組件,

-SQL數據定義的聲明,

-SQL過程,

-編譯單元,包含了嵌入式SQL。

 

實現該國際標準可能的環境,還應支持應用程序的編程語言,終端用戶的查詢語言,報告生成系統,數據字典系統,項目庫系統,和分佈式通信系統,以及數據庫設計,數據管理,和性能優化等各種工具。

 

規範性引用

下列標準包含的規定構成該國際標準的規定。該版本自發布之時有效。所有的標準都受制於修訂,鼓勵基於該國際標準各方達成協議,調查應用如下所列最新版國際標準的可能性。IEC和ISO的成員維護當前有效國際標準的登記。

- ISO/IEC 646:1991, Information technology-ISO 7-bit codedcharacter set for information interchange.

- ISO/IEC 1539:1991, Information technology-Programminglanguages-Fortran.

- ISO 1989:1985, Programming languages-COBOL. (Endorsement ofANSI X3.23-1985).

- ISO 2022:1986, Information technology-ISO 7-bit and 8-bitcoded character sets-code extension techniques.

- ISO 6160:1979, Programming languages-PL/I (Endorsement of ANSIX3.53-1976).

- ISO 7185:1990, Information technology-Programminglanguages-Pascal.

- ISO 8601:1988, Data elements and interchange formats -Information interchange-Representation of dates and times.

- ISO 8652:1987, Programming languages-Ada. (Endorsement ofANSI/MIL-STD-1815A-1983).

- ISO/IEC 8824:1990, Information technology-Open SystemsInterconnection-Specification of Abstract Syntax Notation One(ASN.1).

- ISO/IEC 9579-2:[1], Information technology - Open SystemsInterconnection - Remote Database Access, Part 2: SQLspecial-ization.

- ISO/IEC 9899:1990, Programming languages - C.

- ISO/IEC 10206:1991, Information technology-Programminglanguages-Extended Pascal.

- ISO/IEC 10646:[1], Information technology-Multiple-octet codedcharacter set.






定義、記號和約定

 

3.1  定義

爲了該國際標準的目的,應用以下定義。

3.1.1  摘自ISO/IEC10646標準的定義

該國際標準使用的以下條款,摘自ISO/IEC 10646標準:

a)        character字符

b)       octet字節

c)       variable-length coding 可變長度編碼

d)       fixed-length coding 固定長度編碼

 

3.1.2  摘自ISO 8601標準的定義

該國際標準使用的以下條款,摘自ISO 8601標準:

a)        Coordinated Universal Time (UTC)

b)       date ("date, calendar" in ISO 8601)

3.1.3 該國際標準提供的定義

該國際標準定義以下條款:

 

a)        可賦值: 值或數據類型的特徵。這些值或數據類型可以賦值給特定數據類型的數據實例。

 

b)       (集合的)基數: 集合中對象數目. 對象可以相同.

 

c)       字符表: 用於明確的目的和應用的字符的集合。每個字符表都有一個隱含默認的整理序列。

 

d)       可壓縮性: 字符串數據項的屬性,用於管理如何確定該項的整理序列。

 

e)        排序規則; 整理序列:對兩個可比較的字符串的排序方法. 每個字符集都有一個默認的整理序列.

 

f)        可比較: 兩個數據對象的特徵,允許一個對象的值和另一個對象的值進行比較。同樣對於數據類型:只有當兩個數據類型的對象可以比較,才能說這兩個數據類型可以比較。

 

g)       說明符: SQL對象的編碼描述。 它包含了該對象符合SQL實現要求的所有信息。

 

h)       互異: 如果兩個值,都爲空值,或者根據第8.2條 “謂詞比較”,它們相等,就認爲這兩個值相同。否則,它們是互異的。在兩行(或部分行)中,只要對應的值有一個是不同的,則認爲兩行(或部分行)是互異的。

 

i)         重複: 當且僅當兩個或兩個以上的值或行是相同的,才能認爲它們是重複的。

 

j)         二元運算符: 具有兩個操作數(左操作數和右操作數)的操作符。 在該國際標準中一個二元操作符的例子是"-"——減號操作符,該操作符說明左邊操作數減去右邊操作數。

 

k)       使用形式: 在字符串中表現字符的約定或編碼。有些使用形式是定長的編碼,有些是可變長度的編碼。

 

l)         使用形式轉換: 將字符串從一種使用形式轉換爲另一種使用形式的方法。

 

m)     實現定義: 不同的SQL實現之間可能不同,由實現者詳細說明每個特別的SQL實現。

 

n)       實現依賴: 不同的SQL實現之間可能不同,不由該國際標準說明,也不要求實現者說明每個特別的SQL實現。

 

o)       一元操作符: 只有一個操作數的操作符. 在該國際標準中一元算術操作符的一個例子是"-"——負號操作符,該操作符說明操作數爲負數。

 

p)       多重集: 對象的無序集合,對象可以相同,集合可以爲空。

 

q)       n元操作符: 具有多個操作數的操作符。在該國際標準中的n元操作符的例子是COALESCE。

 

r)        空值 (null): 一個特殊的值或者標誌,用來表明不含任何數據值。

 

s)        持久:  除非有意去銷燬,否則會一直存在。引用和級聯動作是有意的。SQL事務(見子條款4.28,“SQL事務”)或SQL會話(見子條款 4.30,“SQL會話”)結束時附帶的動作不是有意的。

 

t)         多餘的重複:  除了一個以外,其他的重複值或行的多重集。

 

u)       清單: 見字符表。

 

v)       序列: 對象的有序集合。對象可以相同。

 

w)     : 不同對象的無序集合。該集合可爲空。.

 

x)       SQL-實現: 符合該國際標準的數據庫管理系統。

 

y)       轉換: 將一個字符表中字符轉換成相同或不同字符表中字符的方法。

 

3.2  記號

該國際標準中使用的語法符號是BNF 的一種擴展版本 ("Backus Naur Form" or "Backus NormalForm")。

 

   在BNF中,語言的每個語法元素通過一個產生規則定義。產生規則根據由字符,字符串和語法元素組成的規則定義元素。

 

   在該國際標準中使用的BNF的版本,使用以下符號:

 

符號含義

 

<>  尖括號,用於分隔字符串,字符串爲語法元素的名稱,SQL語言的非終結符。

 

::=  定義操作符。用在生成規則中,分隔規則定義的元素和規則定義。 被定義的元素位於操作符的左邊,規則定義位於操作符的右邊。

 

[ ]  方括號表示規則中的可選元素。方括號中的規則部分可以明確指定也可以省略。

 

{ }  花括號聚集規則中的元素。在花括號中的規則部分必須明確指定。

 

|    替換操作符。 該豎線表明豎線之後的規則部分對於豎線之前的部分是可替換的。如果豎線出現的位置不在花括號或方括號內,那麼它指定對於該規則定義的元素的一個完整替換項。如果豎線出現的位置在花括號或方括號內,那麼它指定花括號對或方括號對最裏面內容的替換項。

 

. . .省略號表明在規則中省略號應用的元素可能被重複多次。如果省略號緊跟在閉花括號"}"之後,那麼它應用於閉花括號和開花括號"{"之間的規則部分。如果省略號出現在其他任何元素的後面,那麼它只應用於該元素。

 

!!  介紹普通英文文本。BNF中沒有表示某語法元素的定義時使用。

 

空格用來分隔語法元素。多個空格和多個換行符被視爲單個空格。除了上面所給的特殊用途的符號,在規則中的其它字符和字符串表示其本義。此外,如果定義操作符右邊的符號全部由BNF中的符號組成,那麼這些符號僅代表其本義,不需要考慮其特殊含義。

 

花括號對和方括號對內部可以任意嵌套,替換操作符可以出現在嵌套的任何地方。

 

形成任何語法元素實例的字符串可能產生自該元素的BNF定義,產生過程應用以下步驟:

 

1) 對於該元素,選擇在產生規則右邊定義的任意一個選項, 並用該選項替換該元素。

 

2) 替換每個省略號和省略號所應用的一個或多個對象的實例。

 

3) 對於方括號中的字符串部分, 要麼刪除括號和括號中的內容,要麼將括號轉換爲花括號。

 

4) 對於花括號中的字符串部分,對其子字符串應用步驟1至步驟5,然後移除花括號。

 

5) 對於仍然在字符串中的非終結語法元素(如在尖括號中的名稱),應用步驟1至步驟5 。

 

當字符串中不再存在非終結符時,擴展過程(或產生過程)完成。

 

約定

3.3.1  告知性元素

告知性的註解在該國際標準正文中出現好幾次。 例如:

注: 這是一個註解的例子。

這些註解不屬於該國際標準的規範部分,並且不應聲明符合註解中說明的資料。

3.3.2  語法元素說明

根據以下指定語法元素:

 

   -  功能: 對於元素意圖的簡短說明。

   -  格式: 元素語法的BNF定義。

   -  語法規則:元素語法屬性的詳細說明,或在BNF中沒有表示的,但該元素必須滿足的附加語法約束的詳細說明,或者兩者兼而有之。

   -  訪問規則: 管理方案對象訪問的規則的詳細說明,應用在通用規則成功運用之後。

   -  通用規則:元素運行時效果的詳細說明。多個通用規則用來指定元素效果,所需的效果通過開始第一個通用規則,並在數字序列中應用中獲得,除非規則說明或暗示序列中的改變或規則應用結束。除非應用了特殊規則,否則通用規則在序列的最後一條應用之後終結。

   -  分級規則:元素如何支持各種級別的SQL的詳細說明。

 

註釋性符號的範圍是定義這些符號的子條款。子條款中,在語法規則,訪問規則或者通用規則中定義的符號可以在其他規則中引用,引用前需先定義。

3.3.3  信息方案的詳細說明

根據以下指定該國際標準的信息方案對象:

 

   -  功能: 對於該定義意圖的簡短說明。

   -  定義: SQL中該對象的定義。

   -  描述: 對該對象運行值的詳細說明,主要針對定義中不清楚的地方。

 

   在信息方案中定義視圖的定義只用來說明這些可視化表的內容。 這些視圖所基於的實際對象依賴於實現。

3.3.4  術語的使用

3.3.4.1  異常

短語“引發異常狀況:”, 用於通用規則和其他顯示語句執行不成功的地方,通用規則應用, 除了子條款 12.3,"<過程>", 和子條款 20.1,"<直接SQL 語句>",可能中止,可獲得診斷信息,語句的執行對SQL數據或方案沒有影響。被異常情況終止的SQL語句的SQL描述符區域的影響,除非通過該國際標準顯式定義,否則依賴於實現。

 

短語“引發完成狀況:”,用於通用規則和其他顯示通用規則的應用沒有中止,可獲得診斷信息;除非同時引發了異常狀況,否則語句執行成功。

 

   語句執行時,可能出現多個情況。多個情況的診斷信息是否可用依賴於實現。

3.3.4.2  語法包含

在格式中,如果語法元素<B>對於語法元素<A>出現在BNF產生規則的右邊,那麼就說<A>恰好包含<B>。如果<A>恰好包含<C>或者<A>恰好包含<B>,而<B>又包含<C>,那麼<A>包含<C>。

 

在SQL語言中,如果<A>恰好包含<B>,那麼就說<A>的一個實例A1恰好包含<B>的一個實例B1,並且B1的文本是A1文本的一部分。如果<A>的一個實例A1包含C1或者A1恰好包含<B>的實例B1,而B1又包含C1,那麼就說A1包含C1。

 

如果A1包含B1並且A1包含<C>的一個實例C1,C1又包含B1,那麼就說A1通過中介<C>包含B1。如果A1包含B1並且A1不包含C1,而C1又包含B1,那麼就說A1不通過中介<C>包含B1。

 

如果A1包含B1不通過中介A2或者B2,那麼就說A1只包含B1。

 

如果<A>包含<B>,那麼<B>包含於<A>,<A>對於<B>來說是一個包含的產生符號。如果<A>簡單包含<B>,那麼<B>簡單包含於<A>,<A>對於<B>來說是一個簡單包含的產生符號。

 

假設A1是<A>的一個實例,B1是<B>的一個實例。如果<A>包含<B>,那麼就說A1包含B1或者B1包含於A1。如果<A>僅包含<B>,,那麼就說A1簡單包含B1或者B1簡單包含於A1。

 

   如果A1滿足C,A2滿足C,,但A1不包含A2,那麼就說A1在最內部滿足條件C。如果A1滿足C,A2滿足C,但A1不包含於A2,那麼就說A1在最外部滿足條件C。

 

如果<A>包含一個<tablename>,<tablename>標誌通過<viewdefinition> V定義的視圖,那麼<A>一般包含V中的<queryexpression>。如果<A>包含<B>,那麼<A>一般包含<B>。如果<A>一般包含<B>,<B>一般包含<C>,那麼<A>一般包含<C>。

 

如果A1不通過中介<set functionspecification>或<subquery>包含B1,那麼就說A1直接包含B1。

3.3.4.3 條款表示規則要求

在語法規則中,條款應定義符合SQL語言語法的條件。只有當通用規則中指定的行動執行後,這些依賴於方案內容的條件才爲真。不符合的SQL格式和語法規則的語言依賴於實現。當嘗試評估訪問或通用規則並且實現既不是處理不符合的SQL語言也不是以不符合的方式處理符合的SQL語言時,如果語法規則規定的任一條件沒有滿足,那麼將引發異常狀況:語法錯誤或違反訪問規則(如果這種情況發生在動態SQL語句執行中,那麼引發的異常是動態SQL語句的語法錯誤或訪問規則的違反;如果這種情況發生在直接引用SQL語句中,那麼引發的異常是直接SQL語句的語法錯誤或訪問規則的違反)。

 

在訪問規則中,條款應定義滿足通用規則成功應用的條件。當通用規則應用時,如果任一這種條件沒有滿足,那麼將引發異常狀況:語法錯誤或違反訪問規則。

 

在分級規則中,條款應定義符合指定級別的SQL語言的條件。

3.3.4.4 規則評估次序

一個相符的實現並不需要執行在一般規則中定義的精確的行動次序,但是在SQL數據和方案上應達到相同的效果。該條款是用來有效地強調行動的效果可以通過實現的不同方式達到。

 

   包含和被包含的語法元素的語法規則和訪問規則語法元素同時有效應用。包含和被包含的語法元素的一般規則應用,被包含的應用在前,包含的應用在後。當運算符的優先級取決於該國際標準的格式或者圓括號,這些符號通過該優先順序有效地應用。當運算符不取決於該國際標準的格式或者圓括號,表達式有效的評估一般從左至右。然而,表達式是否從左至右評估是依賴於具體實現的,特別是操作數或操作符可能引發情況,或者如果表達式的結果,在沒有完全評估表達式各個部分的前提下,能夠確定。總之,如果一個語法元素包含多個其他的語法元素,那麼出現在產生規則前面的語法元素和出現在後面的語法元素一般規則的應用,出現在前面的語法元素早於出現在後面的語法元素。

 

例如,在產生規則中:

   <A> ::=<B><C>

 

   對於<A>,<B>,和<C>語法規則和訪問規則同時有效應用。對於<A>,<B>和<C>的一般規則應用,<C>在<B>之後,<A>在最後。

 

   如果表達式或者搜索條件的結果,在沒有完全評估表達式或者搜索條件各個部分的前提下,能夠確定,那麼表達式或者搜索條件非必要的評估部分稱爲無關緊要的部分。如果屬於無關緊要部分的訪問規則沒有滿足,那麼將引發語法錯誤或違反訪問規則的異常狀況,不管無關緊要部分是否已經評估。如果評估無關緊要部分引發異常,那麼該異常是否引發依賴具體實現。

3.3.4.5  條件規則

條件規則通過“If”或“Case”慣例指定。通過“Case”慣例指定的規則包含一個使用“If”慣例的條件子規則列表。第一個條件成立的“If”子規則是“Case”規則下的有效子規則。“Case”規則下的最後一個子規則應該聲明爲“Otherwise”。如果之前的“If”子規則條件都不成立,那麼該子規則有效。

3.3.4.6  語法替代

在語法規則和一般規則中,短語 "X is implicit"表明該語法規則和一般規則將要解釋成元素X已經實際指定。

 

   在語法規則和一般規則中,短語 "the following <X> isimplicit: Y" 表明該語法規則和一般規則將要解釋成已經實際上指定語法元素包含Y 。

 

   在語法規則和一般規則中,短語 "former is equivalent to latter"表明該語法規則和一般規則將要解釋成元素中之前的實例與之後的實例等效。

 

   如果在子條款中引用的BNF非終結符,沒有說明它如何包含在子條款定義的BNF產生過程中,那麼

 

    Case:

   - 如果BNF非終結符是定義在子條款的自身,那麼該引用應假定爲此BNF非終結符,出現在定義產生規則左邊。

 

   - 否則,該引用應假定爲一個恰好包含特殊的BNF非終結符的BNF產生規則。.

 

3.3.4.7  其他條款

一些語法規則定義條款,如T1,表示命名或沒有命名的表。這些條款用作表名或相互關係名稱。條款用作相互關係名稱,這並不意味着爲了命名錶而定義任何新的相互關係名稱,也不影響任何實際的相互關係名稱。

 

   一個SQL語句S1的執行是執行SQL語句的直接結果,如果S1是包含在一個已經執行的<procedure>中的SQL語句,或者S1是<SQLstatement variable>的值,<SQL statementvariable>被包含在一個已經執行的<procedure>中的<executeimmediate statement>所引用,或者S1是<SQLstatement variable>的值,其中<SQLstatement variable>通過一個<preparestatement>與一個<SQL statementname>關聯 ,並且<SQL statementname>被包含在一個已執行的<executestatement>所引用。

3.3.5  描述符

描述符是定義指定類型對象實例屬性的數據的概念結構的集合。描述符的概念用於指定SQL語義。任何數據庫或環境中都不需要描述符以任何特殊的形式存在。

 

一些SQL對象只有在某些SQL對象的背景中才能存在。例如,列只能存在於表中 。這些對象通過描述符獨立描述,啓用對象描述符(如:表)包含被啓用對象的描述符(如:列或表約束)。

 

在其他情況下,某些SQL對象只有在另外一些SQL對象存在的前提下才能存在,即使不存在包含關係。例如,如果斷言引用的表不存在,那麼SQL不允許斷言存在。 因此, 斷言描述符依賴於零個或多個表描述符(等效於,斷言依賴於零個或多個表). 一般來說,描述符D1依賴或被依賴於另一個描述符D2。

 

有兩種方式顯示依賴。在許多情況下, 依賴構建描述符包含依賴構建的名稱 。在這種情況下"the name of" 應理解爲"sufficient information to identify the descriptorof";因此,實現者可以選擇指針或<catalog name>,<schema name>的串聯等等。此外,描述符可以包含文本(如<query expression>,<search condition>)。在這種情況下,是否在實現中包含文本或它自身風格的解析樹是不相關的;描述符的有效性明確依賴對象提到的描述符的存在。

 

“列基於域”和“列依賴於域”等效。

 

如果一個描述符被其他描述符所依賴,或一個描述符被另一個描述符包含,那麼企圖銷燬該描述符很可能會失敗。銷燬一個描述符會導致所有該描述符所包含的描述符被銷燬,但是不影響依賴它的描述符。

3.3.6  索引排印

在該國際標準的索引中,使用以下約定:

 

   - 以黑體出現的索引條目顯示定義單詞、詞組或者BNF非終結符的頁;

   - 以斜體出現的索引條目顯示在格式中使用BNF非終結符的頁;

   - 以羅馬字體出現的索引條目顯示在標題,函數,語法規則,訪問規則,通用規則,分級規則,表,或其他描述性文本中使用的單詞,詞組或BNF非終結符。

數據庫語言SQL的對象標誌符

功能

 

數據庫語言SQL的對象標誌符標誌在開放的系統環境中對於其他實體SQL實現的特徵。

 

格式

 

        <SQL object identifier> ::=

             <SQL provenance> <SQLvariant>

        <SQL provenance> ::=<arc1><arc2><arc3>

        <arc1> ::= iso | 1 | iso<left paren> 1 <rightparen>

        <arc2> ::= standard | 0 | standard<left paren> 0 <rightparen>

        <arc3> ::= 9075

        <SQL variant> ::= <SQLedition> <SQLconformance>

        <SQL edition> ::=<1987> |<1989> |<1992>

        <1987> ::= 0 | edition1987<left paren> 0 <rightparen>

        <1989> ::=<1989 base> <1989package>

        <1989 base> ::= 1 | edition1989<left paren> 1 <rightparen>

        <1989 package> ::=<integrity no> |<integrity yes>

        <integrity no> ::= 0 | IntegrityNo<left paren> 0 <rightparen>

        <integrity yes> ::= 1 | IntegrityYes<left paren> 1 <rightparen>

        <1992> ::= 2 | edition1992<left paren> 2 <rightparen>

        <SQL conformance> ::=<low> |<intermediate> |<high>

        <low> ::= 0 | Low<left paren> 0 <rightparen>

        <intermediate>::= 1 | Intermediate <left paren> 1<right paren>

        <high> ::= 2 | High<left paren> 2 <rightparen>

語法規則

1) 除非<SQLedition>爲<1992>,否則<SQLconformance>不會爲<high>。

2) <SQL conformance>的值標識符合的級別:

a) 如果 <SQL edition> 指定爲<1992>, 那麼

     Case:

      i) <low>,入門級SQL。

      ii) <intermediate>, 中級SQL。

      iii) <high>, 完整級SQL。

    b)否則:

      i) <low>, 級別1.

      ii) <intermediate>, 級別2.

3) <1989package>爲<integrityno>,意味着完整性增強功能沒有實現。<1989package>爲<integrityyes>,意味着完整性增強功能已經實現。




概念

(數據類型)

 

  數據類型是可表示的值的集合。值的邏輯表示是<literal>,物理表示依賴於實現。

 

  在該國際標準中,如果一個值沒有任何邏輯細分,那麼該值是基元。一個值要麼是空值要麼是非空值。

 

  空值是依賴實現的一個特殊值,有別於所有相關數據類型的非空值。實際上只有一個空值,該空值是每個SQL數據類型的成員。空值沒有<literal>,雖然關鍵詞NULL被用在一些地方,來表明該處需要空值。

 

  SQL通過以下<keyword>定義各種數據類型:CHARACTER, CHARACTER VARYING, BIT, BITVARYING, NUMERIC, DECIMAL, INTEGER, SMALLINT, FLOAT, REAL, DOUBLEPRECISION, DATE, TIME, TIMESTAMP, and INTERVAL.

 

  子條款 6.1, "<data type>",描述了各種數據類型的語法屬性。

 

  爲了便於參考,數據類型CHARACTER 和CHARACTER VARYING統稱爲字符型字符串類型。 BIT和BITVARYING統稱爲位字符串類型。字符型字符串和位字符串統稱爲字符串類型。其值爲字符串。數據類型NUMERIC, DECIMAL,INTEGER 和SMALLINT 統稱爲精確數值類型。數據類型FLOAT, REAL 和DOUBLE PRECISION統稱爲近似數值類型。精確數值類型和近似數值類型統稱爲數值類型,其值是數字。數據類型DATE,TIME和TIMESTAMP統稱爲日期時間類型,其值是日期、時間。數據類型INTERVAL 是間隔類型,其值是間隔。

 

  每個數據類型都有一個相關的數據類型描述符。數據類型描述符的內容由具體的數據類型決定。數據類型描述符包括數據類型的識別,所有宿主語言都有它自身的數據類型,獨立於SQL數據類型,儘管可能使用相同的名字來描述數據類型。在子條款12.3,"<procedure>",和子條款19.1,"<embedded SQL hostprogram>"描述了將SQL數據類型映射爲宿主語言數據類型。不是每個SQL數據類型在宿主語言中都有其對應的數據類型。

 

(位字符串)

4.3  位字符串

位字符串是二進制位序列,每個位具有0或1值。位字符串具有長度,長度爲字符串中位的個數。長度爲0或正整數。

 

      位字符串數據類型通過其描述符描述。位字符串數據類型描述符包括:

          -  明確的位字符串數據類型名稱(BIT或BIT VARYING);

          -  位字符串數據類型的長度。

4.3.1  位字符串比較和賦值

所有爲字符串都可相互比較。兩個位字符串相等,當且僅當根據子條款8.2, "<comparisonpredicate>"指定的比較它們是相等的。

     將位字串賦值給位字串變量,源字串中從最重要的位到最不重要的位,到目標字符串最重要的位,一次賦一位。

4.3.2 位字符串操作符

4.3.2.1 位字串操作符和其返回值

字符串

<bitconcatenation>是一個操作符‘|’,返回連接兩個給定次序的位字符串操作對象形成的位字符串。

     <bit substringfunction>是一個三元函數,語法和語義,除了第一個參數和返回值均爲位字符串外,其他與<charactersubstring function>同。

4.3.2.2 其他位字符串操作符

<length expression>返回給定位字符串長度。

      <positionexpression>確定字符串S1第一次出現在字符串S2的位置。如果S1的長度爲0,則對於任何S2,返回1。如果S2中不存在S1,則返回0。




還有寸身無恙的BLOG也有相關內容:

寸身無恙的BLOG
http://blog.sina.com.cn/u/1080755857
http://blog.sina.com.cn/s/articlelist_1080755857_1_1.html
SQL標準介紹:動態SQL
http://blog.sina.com.cn/s/blog_406b0691010006wh.html
SQL標準介紹:嵌入式SQL
http://blog.sina.com.cn/s/blog_406b0691010006wg.html
SQL標準介紹:SQL訪問控制
http://blog.sina.com.cn/s/blog_406b0691010006we.html
SQL標準介紹:SQL數據語句
http://blog.sina.com.cn/s/blog_406b0691010006w2.html
SQL標準介紹:SQL模式語句
http://blog.sina.com.cn/s/blog_406b0691010006w0.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章