如何用Oracle SQL語言通信?
結(jié)構化查詢語言(StructuredQuery Language,SQL)是當今主要的查詢語言,它主要用于管理主流類型的DBMS—關系型DBMS(RDBMS)。所有與數(shù)據(jù)庫相關的通信往來都將通過DBMS完成,為了做這件事,你可以使用SQL或其他類似的東西。數(shù)據(jù)庫系統(tǒng)管理員(DBA)使用查詢語言來建立并維護數(shù)據(jù)庫,用戶使用查詢語言來訪問數(shù)據(jù)庫并查看或更改數(shù)據(jù)。以下介紹Oracle SQL語言:
最近,面向?qū)ο螅∣bject-Oriented,OO)的DBMS已經(jīng)成為最為突出的數(shù)據(jù)庫管理系統(tǒng),并找到了許多適當?shù)膽铆h(huán)境,如在CAD/CAM、工程、多媒體等等。面向?qū)ο驞BMS適于在這些領域中應用,因為在一個幾乎非事務性的環(huán)境中,它們具有控制復型數(shù)據(jù)類型實力。由于競爭,RDBMS廠商為了提供包括文本、音頻、圖像和視頻數(shù)據(jù)類型的面向?qū)ο?多媒體性能,已經(jīng)制造了商業(yè)可用的通用服務器。Oracle的UniversalServer就是一個例子。另外,用戶定義的數(shù)據(jù)類型或可擴展類型,已經(jīng)被擴大或增加到核心數(shù)據(jù)庫服務器中,Oracle8就提供了這樣的性能。類似這樣的RDBMS產(chǎn)品被認為是混合的,然而它們明顯比以前的RDBMS更具有主流性。
此外,多維數(shù)據(jù)庫(Multi-DimensionalDatabase,MDD)也分享了部分市場份額,這些數(shù)據(jù)庫為帶有許多必須被多維存取或列表的變量(例如行為科學數(shù)據(jù))的應用提供了高度索引化的數(shù)據(jù)。在傳統(tǒng)的RDBMS中,這幾乎是不可能實現(xiàn)的,數(shù)據(jù)庫只允許單獨使用。再者,為和MDD競爭,RDBMS供應商提供了一些他們自己的層次產(chǎn)品,這些產(chǎn)品提供超級索引化的數(shù)據(jù),并使用了特殊的技術,例如位映射索引。Oracle的Express就是一個多維數(shù)據(jù)庫的例子。
你已經(jīng)了解了DBMS的主要任務,為了進一步了解一個RDBMS是由什么構成的,你必須先了解關系模型。下列情況出現(xiàn)在一個關系模型中:
■數(shù)據(jù)的基礎項是關系。
■在這些表上的操作只產(chǎn)生關系(關系型閉合)。
什么是關系?這是一個描述兩個集合的元素如何相互聯(lián)系或如何一一對應的數(shù)學概念。因此,關系模型是建立在數(shù)學基礎上的。
然而,對你來說,關系只是一個帶有一些特殊屬性的表,一個關系模型把數(shù)據(jù)組織到表中,而且僅在表中??蛻簟?shù)據(jù)庫設計者、數(shù)據(jù)庫系統(tǒng)管理員和用戶都以同樣的方式—即從表中—查看數(shù)據(jù)。那么,表就是關系模型的近義詞。一個關系型表有一組命名的屬性(attribute)或列,以及一組元組(tuple)或行。有時列被稱為域,行被稱為記錄,列和行的交集通常被叫做單元。列標示位置,有作用域或數(shù)據(jù)類型,例如字符或整數(shù)。一個關系表必須符合某些特定條件,才能成為關系模型的一部分。
■貯存在單元中的數(shù)據(jù)必須是原子的。每個單元只能存貯一條數(shù)據(jù),這也叫信息原則(InformationPrinciple)。盡管在過去的數(shù)年中按某些違反這一條的方式已經(jīng)建立了許多系統(tǒng),但違反這一條將不能運用良好的設計原則。當一個單元包含多于一條的信息時,這叫做信息編碼(informationcoding),一個很好的例子是一個車輛識別號碼(Vehicle IdentificationNumber,VIN)。如果它被存貯成一列,這將違犯信息原則,因為它包含了多條信息,例如產(chǎn)地、型號、出廠等等。在這樣的情況下,是否采用違背理論的方案是一個設計的選擇問題,盡管在多數(shù)情況下,結(jié)果證明這對數(shù)據(jù)的完整性是一不利的。
■貯存在列下的數(shù)據(jù)必須具有相同數(shù)據(jù)類型。
■每行是唯一的(沒有完全相同的行)。
■列沒有順序。
■行沒有順序。
■列有一個唯一性的名稱。
除了表和它們的屬性,關系模型有它自己特殊的操作。
在Oracle SQL語言占主導地位之前,一種具有競爭性的語言是來自Ingres的QUEL或QUEry語言,另一種是UDL(統(tǒng)一數(shù)據(jù)語言,Unified DataLanguage)。ANSI(美國國家標準化組織)是一個具有廣泛范圍的標準實體,其中包括計算機軟件語言(如SQL)的標準。
Oracle SQL語言既是一種數(shù)據(jù)定義語言(DataDefinitionLanguage,DDL),也是一種數(shù)據(jù)操作語言(DataManipulationLanguage,DML)。數(shù)據(jù)庫系統(tǒng)管理員和用戶可以通過完全相同的語言訪問數(shù)據(jù)庫。關系模型要求的最后一件事是兩個基礎的完整性原則。它們是實體完整性原則(entity integrityrule)和引用完整性原則(referentialintegrityrule)。首先,讓我們看看兩個定義:
■主鍵(primarykey)是能唯一標識行的一列或一組列的集合。有時,多個列或多組列可以被當作主鍵。
■由多個列構成的主鍵被稱為連接鍵(concatenatedkey)、組合鍵(compoundkey),或者更常稱為復合鍵(compositekey)。
數(shù)據(jù)庫設計者決定哪些列的組合能夠最準確和有效地反映業(yè)務情形,這并不意味著其他數(shù)據(jù)未被存貯,只是那一組列被選作主鍵而已。一個
RDBMS就是一個建立在前面這些關系模型基礎上的,一般能滿足所提到的全部要求的DBMS。
【編輯推薦】