sql

sql

結構化查詢語言
結構化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用于存取數據以及查詢、更新和管理關系數據庫系統。該系統保證選民的隐私信息不會被洩露,并且選民可以利用簽名驗證選票是否被正确統計。[1]
  • 中文名:結構化查詢語言
  • 外文名:Structured Query Language
  • 别名:
  • 通過時間:1986年10月
  • 所屬領域:數據庫
  • 是否區分大小寫:否

簡介

SQL語言1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的關系數據庫系統SystemR上實現。由于它具有功能豐富、使用方便靈活、語言簡潔易學等突出的優點,深受計算機工業界和計算機用戶的歡迎。1980年10月,經美國國家标準局(ANSI)的數據庫委員會X3H2批準,将SQL作為關系數據庫語言的美國标準,同年公布了标準SQL,此後不久,國際标準化組織(ISO)也作出了同樣的決定。

SQL從功能上可以分為3部分:數據定義、數據操縱和數據控制。

SQL的核心部分相當于關系代數,但又具有關系代數所沒有的許多特點,如聚集、數據庫更新等。它是一個綜合的、通用的、功能極強的關系數據庫語言。其特點是:

1、數據描述、操縱、控制等功能一體化。

2、兩種使用方式,統一的語法結構。SQL有兩種使用方式。一是聯機交互使用,這種方式下的SQL實際上是作為自含型語言使用的。另一種方式是嵌入到某種高級程序設計語言(如C語言等)中去使用。前一種方式适合于非計算機專業人員使用,後一種方式适合于專業計算機人員使用。盡管使用方式不向,但所用語言的語法結構基本上是一緻的。

3、高度非過程化。SQL是一種第四代語言(4GL),用戶隻需要提出“幹什麼”,無須具體指明“怎麼幹”,像存取路徑選擇和具體處理操作等均由系統自動完成。

4、語言簡潔,易學易用。盡管SQL的功能很強,但語言十分簡潔,核心功能隻用了9個動詞。SQL的語法接近英語口語,所以,用戶很容易學習和使用。

曆史起源

在1970年代初,由IBM公司San Jose,California研究實驗室的埃德加·科德發表将數據組成表格的應用原則(Codd's Relational Algebra)。1974年,同一實驗室的D.D.Chamberlin和R.F. Boyce對Codd's Relational Algebra在研制關系數據庫管理系統System R中,研制出一套規範語言-SEQUEL(Structured English QUEry Language),并在1976年11月的IBM Journal of R&D上公布新版本的SQL(叫SEQUEL/2)。1980年改名為SQL。 

1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2和SQL/DS數據庫系統中也實現了SQL。

1986年10月,美國ANSI采用SQL作為關系數據庫管理系統的标準語言(ANSI X3. 135-1986),後為國際标準化組織(ISO)采納為國際标準。

1989年,美國ANSI采納在ANSI X3.135-1989報告中定義的關系數據庫管理系統的SQL标準語言,稱為ANSI SQL 89,該标準替代ANSI X3.135-1986版本。

功能

SQL具有數據定義、數據操縱、和數據控制的功能。

1、SQL數據定義功能:能夠定義數據庫的三級模式結構,即外模式、全局模式和内模式結構。在SQL中,外模式又叫做視圖(View),全局模式簡稱模式(Schema),内模式由系統根據數據庫模式自動實現,一般無需用戶過問。

2、SQL數據操縱功能:包括對基本表和視圖的數據插入、删除和修改,特别是具有很強的數據查詢功能。

3、SQL的數據控制功能:主要是對用戶的訪問權限加以控制,以保證系統的安全性。

語句結構

結構化查詢語言包含6個部分:

1、數據查詢語言(DQL: Data Query Language):其語句,也稱為“數據檢索語句”,用以從表中獲得數據,确定數據怎樣在應用程序給出。保留字SELECT是DQL(也是所有SQL)用得最多的動詞,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。這些DQL保留字常與其它類型的SQL語句一起使用。

2、數據操作語言(DML:Data Manipulation Language):其語句包括動詞INSERT、UPDATE和DELETE。它們分别用于添加、修改和删除。

3、事務控制語言(TCL):它的語句能确保被DML語句影響的表的所有行及時得以更新。包括COMMIT(提交)命令、SAVEPOINT(保存點)命令、ROLLBACK(回滾)命令。

4、數據控制語言(DCL):它的語句通過GRANT或REVOKE實現權限控制,确定單個用戶和用戶組對數據庫對象的訪問。某些RDBMS可用GRANT或REVOKE控制對表單個列的訪問。

5、數據定義語言(DDL):其語句包括動詞CREATE,ALTER和DROP。在數據庫中創建新表或修改、删除表(CREATE TABLE 或 DROP TABLE);為表加入索引等。

6、指針控制語言(CCL):它的語句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于對一個或多個表單獨行的操作。

語言特點

SQL風格統一

SQL可以獨立完成數據庫生命周期中的全部活動,包括定義關系模式、錄入數據、建立數據庫、査詢、更新、維護、數據庫重構、數據庫安全性控制等一系列操作,這就為數據庫應用系統開發提供了良好的環境,在數據庫投入運行後,還可根據需要随時逐步修改模式,且不影響數據庫的運行,從而使系統具有良好的可擴充性。

高度非過程化

非關系數據模型的數據操縱語言是面向過程的語言,用其完成用戶請求時,必須指定存取路徑。而用SQL進行數據操作,用戶隻需提出“做什麼”,而不必指明“怎麼做”,因此用戶無須了解存取路徑,存取路徑的選擇以及SQL語句的操作過程由系統自動完成。這不但大大減輕了用戶負擔,而且有利于提高數據獨立性。

面向集合的操作方式

SQL采用集合操作方式,不僅查找結果可以是元組的集合,而且一次插入、删除、更新操作的對象也可以是元組的集合。

以同一種語法結構提供兩種使用方式

SQL既是自含式語言,又是嵌入式語言。作為自含式語言,它能夠獨立地用于聯機交互的使用方式,用戶可以在終端鍵盤上直接輸入SQL命令對數據庫進行操作。作為嵌入式語言,SQL語句能夠嵌入到高級語言(如C、C#、JAVA)程序中,供程序員設計程序時使用。而在兩種不同的使用方式下,SQL的語法結構基本上是一緻的。這種以統一的語法結構提供兩種不同的操作方式,為用戶提供了極大的靈活性與方便性。

語言簡潔,易學易用

SQL功能極強,但由于設計巧妙,語言十分簡潔,完成數據定義、數據操縱、數據控制的核心功能隻用了9個動詞:CREATE、ALTER、DROP、SELECT、INSERT、UPDATE、DELETE、GRANT、REVOKE。且SQL語言語法簡單,接近英語口語,因此容易學習,也容易使用。

SQL語句

數據定義

在關系數據庫實現過程中,第一步是建立關系模式,定義基本表的結構,即該關系模式是哪些屬性組成的,每一屬性的數據類型及數據可能的長度、是否允許為空值以及其它完整性約束條件。

定義基本表:

CREATE TABLE([列級完整性約束條件]

[,[列級完整性約束條件]]…

[,[列級完整性約束條件]]

[,表列級完整性約束條件]);

說明:

①中是SQL語句必須定義的部分,[]中是SQL語句可選擇的部分,可以省略的。

②CREATE TABLE表示是SQL的關鍵字,指示本SQL語句的功能。

③是所要定義的基本表的名稱,一個表可以由一個或若幹個屬性(列)組成,但至少有一個屬性,不允許一個屬性都沒有的表,這樣不是空表的含義。多個屬性定義由圓括号指示其邊界,通過逗号把各個屬性定義分隔開,各個屬性名稱互不相同,可以采用任意順序排列,一般按照實體或聯系定義屬性的順序排列,關鍵字屬性組在最前面,這樣容易區分,也防止遺漏定義的屬性。

④每個屬性由列名、數據類型、該列的多個完整性約束條件組成。其中列名一般為屬性的英文名縮寫,在Microsoft Access 2010中也可以采用中文,建議不要這樣做,編程開發時不方便。

⑤完整性約束條件,分為列級的完整性約束和表級的完整性約束,如果完整性約束條件涉及該表的多個屬性列,則必須定義在表級上,否則既可以定義在列級也可以定義在表級。這些完整性約束條件被存入系統的數據字典中,當用戶操作表中數據時由RDBMS自動檢查該操作是否違背這些完整性約束,如果違背則RDBMS拒絕本次操作,這樣保持了數據庫狀态的正确性和完整性,不需要用戶提供檢查,提高了編程的效率,降低了編程難度。列級的完整性通常為主關鍵字的定義、是否允許為空。表級的完整性約束條件一般為外碼定義。

數據操縱

數據操縱語言是完成數據操作的命令,一般分為兩種類型的數據操縱。

①數據檢索(常稱為查詢):尋找所需的具體數據。

數據操縱語言一般由 INSERT(插入)、DELETE(删除)、 UPDATE(更新)、 SELECT(檢索,又稱查詢)等組成。由于 SELECT經常使用,所以一般将它稱為查詢(檢索)語言并單獨出現。

數據管理

數據管理(又稱數據控制)語言是用來管理(或控制)用戶訪問權限的。由GRANT(授權)、REVOKE(回收)命令組成。而 Visual Foxpro6不支持這種權限管理。

SQL中的數據查詢語句

數據庫中的數據很多時候是為了查詢,因此,數據查詢是數據庫的核心操作。而在SQL中,查詢語言隻有一條,即 SELECT語句。

上一篇:K236

下一篇:Z92

相關詞條

相關搜索

其它詞條