TT百科:SQL(結(jié)構(gòu)化查詢語言)
SQL(結(jié)構(gòu)化查詢語言)是一門用于管理關(guān)系型數(shù)據(jù)庫和對數(shù)據(jù)庫中數(shù)據(jù)執(zhí)行多種操作的標準化編程語言。SQL創(chuàng)建于20世紀70年代,它由數(shù)據(jù)庫管理員使用,開發(fā)人員在書寫數(shù)據(jù)集成腳本和數(shù)據(jù)分析的時候也用它來建立并執(zhí)行分析查詢。
SQL的使用包括修改數(shù)據(jù)庫表和索引結(jié)構(gòu);增加,更新和刪除數(shù)據(jù)記錄;以及為事務(wù)處理和分析應用程序恢復數(shù)據(jù)庫信息子集。查詢和其他SQL操作采用的是將命令書寫為語句的形式。常用的SQL語句有選擇,增加,插入,更新,刪除,創(chuàng)建,修改和截斷。
SQL在1970年代末到1980年代初成為關(guān)系型數(shù)據(jù)庫事實上的標準編程語言,也被稱為SQL數(shù)據(jù)庫。關(guān)系型系統(tǒng)包含一組有行和列的表。表中的每列對應與一個數(shù)據(jù)類別,如客戶名稱和地址,而每行則包含了交叉列的一個數(shù)據(jù)值。
American National Standards Institute(ANSI美國國家標準協(xié)會)在1986年采用了正式的SQL標準,并且緊接著于1987年被International Organization for Standardization(ISO國際標準化組織)采用。從那時起,這兩家標準制定實體對此標準發(fā)布了超過六項聯(lián)合更新;***的版本SQL 2011于今年批準。
專有的和開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng)都圍繞著SQL而構(gòu)建,它們都可供企業(yè)使用。它們包括Microsoft SQL Server,Oracle Database,IBM DB2,SAP HANA,SAP Adaptive Server,MySQL (如今由Oracle擁有) 以及PostgreSQL。但是,這些數(shù)據(jù)庫產(chǎn)品中的很多是通過專有擴展來支持SQL的,而這些擴展是專門針對用于過程編程和其他功能的標準語言的。例如,Microsoft提供了一組名為Transart-SQL(T-SQL)的擴展,而Oracle對于該標準的擴展版本是PL/SQL。因此,供應商所提供的SQL的不同變體并不能互相完全兼容。
SQL命令分為幾種不同的類型,其中有數(shù)據(jù)操縱語言(DML)和數(shù)據(jù)定義語言(DDL)語句,事務(wù)控制和安全措施。DML詞匯用于恢復和操作數(shù)據(jù),而DDL語句則是用于對數(shù)據(jù)庫結(jié)構(gòu)進行定義和修改。事務(wù)控制有助于管理事務(wù)處理,確保事務(wù)要么完成,要么在錯誤或問題發(fā)生的時候進行回滾。而安全語句是用于控制數(shù)據(jù)庫訪問以及創(chuàng)建用戶角色和權(quán)限的。
SQL語法是在書寫語句時候的編碼格式。圖1給出了一個用Microsoft的T-SQL書寫的DDL語句例子,它是用來對SQL Server 2016中的一個數(shù)據(jù)庫表進行修改的。
SQL Server 2016中的T-SQL代碼示例
圖1. SQL Server 2016中的T-SQL代碼示例。這是針對ALTER TABLE WITH (ONLINE = ON | OFF)選項的代碼。
SQL-on-Hadoop查詢引擎是SQL的一個較新的分支,它可以讓有圍繞Hadoop系統(tǒng)而構(gòu)建的大數(shù)據(jù)架構(gòu)的企業(yè)對其進行利用從而不必使用更為復雜且生疏的語言。特別是用于開發(fā)批處理應用程序的MapReduce編程環(huán)境。通過Hadoop分銷商和其他供應商已有十多款SQL-on-Hadoop工具可供使用了。其中很多是開源軟件或是這些技術(shù)的商業(yè)版本。此外,Apache Spark處理引擎通常用于連接Hadoop,包括一個Spark SQL模型,它同樣支持基于SQL的編程。
一般來說,SQL-on-Hadoop仍是一項新興技術(shù),而且大多數(shù)可用的工具并不支持SQL關(guān)系型實現(xiàn)中所提供的所有功能。但隨著各個公司尋求獲得擁有大數(shù)據(jù)應用程序編程SQL技能的開發(fā)和分析人員,它們正逐漸成為Hadoop部署的固定組件。