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