結構化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的程式語言,是一種資料庫查詢和程式設計語言,用於存取數據以及查詢、更新和管理關係資料庫系統。
結構化查詢語言是高級的非過程化程式語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同資料庫系統, 可以使用相同的結構化查詢語言作為數據輸入與管理的接口。結構化查詢語言語句可以嵌套,這使它具有極大的靈活性和強大的功能。
簡介
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語句一起使用。
3、事務控制語言(TCL):它的語句能確保被DML語句影響的表的所有行及時得以更新。包括COMMIT(提交)命令、SAVEPOINT(保存點)命令、ROLLBACK(回滾)命令。
4、
數據控制語言(DCL):它的語句通過GRANT或REVOKE實現許可權控制,確定單個用戶和用戶組對
資料庫對象的訪問。某些RDBMS可用GRANT或REVOKE控制對
表單個列的訪問。
5、數據定義語言(
DDL):其語句包括動詞CREATE,ALTER和DROP。在資料庫中創建新表或修改、刪除表(CREAT 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<表名>(<列名1><數據類型>[列級完整性約束條件]
[,<列名2><數據類型>[列級完整性約束條件]]…
[,<-列名n><數據類型>[列級完整性約束條件]]
[,表列級完整性約束條件]);
說明:
①<>中是SQL語句必須定義的部分,[]中是SQL語句可選擇的部分,可以省略的。
②CREATE TABLE表示是SQL的關鍵字,指示本SQL語句的功能。
③<表名>是所要定義的基本表的名稱,一個表可以由一個或若干個屬性(列)組成,但至少有一個屬性,不允許一個屬性都沒有的表,這樣不是空表的含義。多個屬性定義由圓括弧指示其邊界,通過逗號把各個屬性定義分隔開,各個屬性名稱互不相同,可以採用任意順序排列,一般按照實體或聯繫定義屬性的順序排列,關鍵字屬性組在最前面,這樣容易區分,也防止遺漏定義的屬性。
④每個屬性由列名、
數據類型、該列的多個完整性約束條件組成。其中列名一般為屬性的英文名縮寫,在Microsoft Access 2010中也可以採用中文,建議不要這樣做,編程開發時不方便。
⑤完整性約束條件,分為列級的完整性約束和表級的完整性約束,如果完整性約束條件涉及該表的多個屬性列,則必須定義在表級上,否則既可以定義在列級也可以定義在表級。這些完整性約束條件被存入系統的數據字典中,當用戶操作表中數據時由RDBMS自動檢查該操作是否違背這些完整性約束,如果違背則RDBMS拒絕本次操作,這樣保持了資料庫狀態的正確性和完整性,不需要用戶提供檢查,提高了編程的效率,降低了編程難度。列級的完整性通常為主關鍵字的定義、是否允許為空。表級的完整性約束條件一般為外碼定義。
數據操縱
數據操縱語言是完成數據操作的命令,一般分為兩種類型的數據操縱。
①數據檢索(常稱為查詢):尋找所需的具體數據。
②數據修改:插入、刪除和更新數據。
數據操縱語言一般由 INSERT(插入)、 DELETE(刪除)、 UPDATE(更新)、 SELECT(檢索,又稱查詢)等組成。由於 SELECT經常使用,所以一般將它稱為查詢(檢索)語言並單獨出現。
數據管理
數據管理(又稱數據控制)語言是用來管理(或控制)用戶訪問許可權的。由GRANT(授權)、REVOKE(回收)命令組成。而 Visual Foxpro6不支持這種許可權管理。
SQL中的數據查詢語句
資料庫中的數據很多時候是為了查詢,因此,數據查詢是資料庫的核心操作。而在SQL中,查詢語言只有一條,即 SELECT語句。
- sql語句
結構化查詢語言(Structured Query Language)簡稱SQL,結構化查詢語言是一種資料庫查詢和程式設計語言,用於存取數據以及查詢、更新和管理關係資料庫系統;sql 語句就是對...
- 結構化查詢語言
結構化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種資料庫查詢和程式設計語言,用於存取數據以及查詢、更新和管理關係資料庫系統。...
- SQL語句大全
SQL即結構化查詢語言(Structured Query Language),是一種特殊目的的編程語言,是一種資料庫查詢和程式設計語言,用於存取數據以及查詢、更新和管理關係資料庫系統;同時...
- SQL語言的特點
SQL語言的特點,是綜合統一,是高度非過程化。...... SQL語言的特點,是綜合統一,是高度非過程化。1.綜合統一2.高度非過程化3.面向集合的操作方式...
- SQL語法
SQL編程語言的語法由ISO / IEC SC 32定義和維護,作為ISO / IEC 9075的一部分。該標準不是免費提供的。 儘管存在標準,但SQL代碼在不經過調整的情況下不能在不...
- 資料庫語言
SQL是高級的非過程化編程語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不...
- SQL語言參考大全
《SQL語言參考大全》是2008年10月1日人民郵電出版社出版的圖書,作者是梁冰、陳丹丹、蘇宇。...
- SQL語言詳解
《SQL語言詳解》是清華大學出版社2011 年出版的一本圖書。...... 《SQL語言詳解(第3版)》全面、深入地介紹了SQL的使用方法,主要包括關係型數據模型、關係代數、SQ...
- t-sql
T-SQL 即 Transact-SQL,是 SQL 在 Microsoft SQL Server 上的增強版,它是用來讓應用程式與 SQL Server 溝通的主要語言。T-SQL 提供標準 SQL 的 DDL 和 DML...
- SQL資料庫
SQL (Structured Query Language) 是具有數據操縱和數據定義等多種功能的資料庫語言,這種語言具有互動性特點,能為用戶提供極大的便利,資料庫管理系統應充分利用SQL...
- SqlServer
SQL是英文Structured Query Language的縮寫,意思為結構化查詢語言。SQL語言的主要功能就是同各種資料庫建立聯繫,進行溝通。按照ANSI(美國國家標準協會)的規定,SQL被...
- SQL語言與資料庫操作技術大全
《SQL語言與資料庫操作技術大全》是2008年由電子工業出版社出版的圖書,作者是馬軍。...
- SQL語言與關係資料庫
《SQL語言與關係資料庫》是電子工業出版社出版的圖書,本書著重於以實例引入概念,且對概念的闡述以夠用為度,注重實際技能的引導與培養。...
- 深入淺出SQL(中文版)
《深入淺出SQL(中文版)》是2009年東南大學出版社出版的圖書,作者是貝里。...... 《深入淺出SQL(中文版)》帶你進入SQL語言的心臟地帶,從使用INSERT和SELECT這些基...
- plsql
PL/SQL Developer是一個集成開發環境,專門開發面向Oracle資料庫的套用。PL/SQL也是一種程式語言,叫做過程化SQL語言(Procedural Language/SQL)。PL/SQL是Oracle資料庫...
- NoSQL
NoSQL,泛指非關係型的資料庫。隨著網際網路web2.0網站的興起,傳統的關係資料庫在應付web2.0網站,特別是超大規模和高並發的SNS類型的web2.0純動態網站已經顯得力不從...
- sql注釋
sql注釋,是在Transact-SQL 中可使用兩類注釋符,單行注釋和多行注釋。...... sql注釋多行注釋 編輯 與C語言相同的程式注釋符號,即“/**/”。“/*”用於注釋文...
- ASC(SQL語句)
(SQL語句)編輯 鎖定 本詞條缺少信息欄、名片圖,補充相關內容使詞條更完整,還能快速升級,趕緊來編輯吧!asc 表示升序,當排序列含空值時,排序列為空值的原組最後...
- ANSI SQL
“美國國家標準化組織(ANSI)”是一個核准多種行業標準的組織。SQL作為關係型資料庫所使用的標準語言,最初是基於IBM的實現在1986年被批准的。1987年,“國際標準化...
- Transact-SQL
Transact-SQL(又稱 T-SQL),是在 Microsoft SQL Server 和 Sybase SQL Server 上的 ANSI SQL 實現,與 Oracle 的 PL/SQL 性質相近(不只是實現 ANSI SQL,也為...
- SQL92
SQL92,是資料庫的一個ANSI/ISO標準。它定義了一種語言(SQL)以及資料庫的行為(事務、隔離級別等)。...
留言列表