SQL歷史
EF Codd博士在1970年6月在計(jì)算機(jī)機(jī)械協(xié)會(huì)(ACM)雜志“ACM通訊”上發(fā)表了“大型共
享數(shù)據(jù)庫數(shù)據(jù)關(guān)系模型” 咙崎。Codd的模型現(xiàn)在被接受為關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)的終極模型牍帚。這種結(jié)構(gòu)化英語查詢語言(SEQUEL)由IBM公司開發(fā)搓彻,從而使用Codd的模
型破喻。SEQUEL后來成為SQL(仍然發(fā)音為“sequel”)扒磁。1979年参淫,Relational Software无切,Inc.
(現(xiàn)在的Oracle)推出了第一個(gè)商業(yè)上可用的SQL實(shí)現(xiàn)枢希。今天泳秀,SQL被接受為標(biāo)準(zhǔn)的
RDBMS語言标沪。
SQL標(biāo)準(zhǔn)
Oracle努力遵守行業(yè)接受的標(biāo)準(zhǔn),并積極參與SQL標(biāo)準(zhǔn)委員會(huì)嗜傅。
業(yè)界認(rèn)可的委員會(huì)是美國國家標(biāo)準(zhǔn)協(xié)會(huì)(ANSI)和國際標(biāo)準(zhǔn)化組織(ISO)金句,隸屬于國際電工委員會(huì)(IEC)。
ANSI和ISO / IEC均接受SQ??L作為關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言吕嘀。
當(dāng)這些組織同時(shí)發(fā)布新的SQL標(biāo)準(zhǔn)時(shí)违寞,標(biāo)準(zhǔn)的名稱符合組織使用的慣例,但標(biāo)準(zhǔn)在技術(shù)上是相同的偶房。
2008年7月采用最新的SQL標(biāo)準(zhǔn)趁曼,通常稱為SQL:2008。
本標(biāo)準(zhǔn)的正式名稱為:
ANSI / ISO / IEC 9075:2008“數(shù)據(jù)庫語言SQL”棕洋,第1部分(“SQL / Framework”)挡闰,2(“SQL / Foundation”),3(“SQL / CLI” )掰盘,9(“SQL / MED”)摄悯,10(“SQL / OLB”),11(“SQL / Schemata”)愧捕,13(“SQL / JRT”)和ANSI / ISO / IEC 9075-14: “數(shù)據(jù)庫語言SQL”第14部分(“SQL / XML”)
ISO / IEC 9075:2008“數(shù)據(jù)庫語言SQL”奢驯,第1部分(“SQL / Framework”),2(“SQL / Foundation”)次绘,3(“SQL / CLI”)叨橱, 9(“SQL / MED”)典蜕,10(“SQL / OLB”),11(“SQL / Schemata”)罗洗,13(“SQL / JRT”)和ISO / IEC 9075-14:2008愉舔,“數(shù)據(jù)庫語言SQL “,第14部分(”SQL / XML“)
SQL如何工作
SQL的優(yōu)勢為所有類型的用戶(包括應(yīng)用程序員伙菜,數(shù)據(jù)庫管理員轩缤,管理員和最終用戶)提供了優(yōu)勢。從技術(shù)上講贩绕,SQL是一種數(shù)據(jù)子語言火的。SQL的目的是為關(guān)系數(shù)據(jù)庫(如Oracle數(shù)據(jù)庫)提供一個(gè)接口,所有SQL語句都是指向數(shù)據(jù)庫的指令淑倾。在這個(gè)SQL中與C和BASIC等通用編程語言不同馏鹤。SQL的功能如下:
它將數(shù)據(jù)集合作為組而不是作為單個(gè)單元進(jìn)行處理。
它提供對數(shù)據(jù)的自動(dòng)導(dǎo)航娇哆。
它使用單獨(dú)復(fù)雜和強(qiáng)大的語句湃累,因此獨(dú)立。流控制語句最初不是SQL的一部分碍讨,但它們可以在SQL治力,ISO / IEC 9075-5:1996最近被接受的可選部分中找到。流控制語句通常被稱為“持久存儲(chǔ)模塊”(PSM)并且Oracle SQL的PL / SQL擴(kuò)展與PSM類似勃黍。
SQL允許您在邏輯級(jí)別處理數(shù)據(jù)宵统。只有當(dāng)您想要操作數(shù)據(jù)時(shí),才需要關(guān)心實(shí)現(xiàn)細(xì)節(jié)覆获。例如马澈,要從表中檢索一組行,您可以定義用于過濾行的條件弄息。滿足條件的所有行都在單個(gè)步驟中檢索痊班,并且可以作為單位傳遞給用戶,另一個(gè)SQL語句或應(yīng)用程序疑枯。您不必一一處理這些行,也不必?fù)?dān)心物理存儲(chǔ)或檢索的方式蛔六。所有SQL語句都使用優(yōu)化器荆永,Oracle數(shù)據(jù)庫的一部分決定訪問指定數(shù)據(jù)的最有效手段。Oracle還提供了可以使優(yōu)化器更好地執(zhí)行其工作的技術(shù)国章。
SQL為各種任務(wù)提供語句具钥,包括:
查詢數(shù)據(jù)
- 插入,更新和刪除表中的行
- 創(chuàng)建液兽,替換骂删,更改和刪除對象
- 控制對數(shù)據(jù)庫及其對象的訪問
- 保證數(shù)據(jù)庫的一致性和完整性
- SQL將所有前述任務(wù)統(tǒng)一為一致的語言掌动。
所有關(guān)系數(shù)據(jù)庫的通用語言
所有主要的關(guān)系數(shù)據(jù)庫管理系統(tǒng)都支持SQL,因此您可以將SQL獲得的所有技能從一個(gè)數(shù)據(jù)庫傳輸?shù)搅硪粋€(gè)數(shù)據(jù)庫宁玫。另外粗恢,用SQL編寫的所有程序都是可移植的。他們經(jīng)撑繁瘢可以從一個(gè)數(shù)據(jù)庫移動(dòng)到另一個(gè)數(shù)據(jù)庫眷射,修改很少。
使用企業(yè)管理器
可以使用SQL語法完成許多操作佛掖,可以使用Enterprise Manager輕松完成妖碉。有關(guān)更多信息,請參閱Oracle Enterprise Manager文檔集芥被,Oracle數(shù)據(jù)庫2 Day DBA或任何Oracle數(shù)據(jù)庫2 Day +書欧宜。
詞匯約定
用于發(fā)出SQL語句的以下詞匯約定專門適用于SQL的Oracle數(shù)據(jù)庫實(shí)現(xiàn),但在其他SQL實(shí)現(xiàn)中通乘┢牵可以接受冗茸。
當(dāng)您發(fā)出SQL語句時(shí),可以在語句定義中的任何位置的任何位置包含一個(gè)或多個(gè)選項(xiàng)卡羹铅,回車符蚀狰,空格或注釋。
因此职员,Oracle數(shù)據(jù)庫以相同的方式評(píng)估以下兩個(gè)語句:
SELECT last_name麻蹋,salary * 12,MONTHS_BETWEEN(SYSDATE焊切,hire_date)
FROM employees
where_id = 30
ORDER BY last_name;
SELECT last_name扮授,
salary * 12,,
MONTHS_BETWEEN(SYSDATE专肪,hire_date)
FROM employees
where_id = 30
ORDER BY last_name;
保留字刹勃,關(guān)鍵字,標(biāo)識(shí)符和參數(shù)中的情況是微不足道的嚎尤。然而荔仁,案例在文本文字和引用的名稱中是重要的。
工具支持
Oracle提供了許多實(shí)用程序來方便您的SQL開發(fā)過程:
Oracle SQL Developer是一種圖形工具芽死,可讓您瀏覽乏梁,創(chuàng)建,編輯和刪除(刪除)數(shù)據(jù)庫對象关贵,編輯和調(diào)試PL / SQL代碼遇骑,運(yùn)行SQL語句和腳本,操作和導(dǎo)出數(shù)據(jù)以及創(chuàng)建和查看報(bào)表揖曾。使用SQL Developer落萎,您可以使用標(biāo)準(zhǔn)Oracle數(shù)據(jù)庫身份驗(yàn)證連接到任何目標(biāo)Oracle數(shù)據(jù)庫模式亥啦。連接后,可以對數(shù)據(jù)庫中的對象執(zhí)行操作练链。您還可以連接到所選第三方(非Oracle)數(shù)據(jù)庫(如MySQL翔脱,Microsoft SQL Server和Microsoft Access)的模式,查看這些數(shù)據(jù)庫中的元數(shù)據(jù)和數(shù)據(jù)兑宇,并將這些數(shù)據(jù)庫遷移到Oracle碍侦。
SQL * Plus是與每個(gè)Oracle數(shù)據(jù)庫服務(wù)器或客戶端安裝一起安裝的交互式和批處理查詢工具。它具有命令行用戶界面和名為iSQL * Plus 的基于Web的用戶界面隶糕。
Oracle JDeveloper是一個(gè)支持Java瓷产,Web服務(wù)和SQL的完整生命周期的多平臺(tái)集成開發(fā)環(huán)境。它提供了一個(gè)圖形界面枚驻,用于執(zhí)行和調(diào)整SQL語句和可視化架構(gòu)圖(數(shù)據(jù)庫建模器)濒旦。它還支持編輯,編譯和調(diào)試PL / SQL應(yīng)用程序再登。
Oracle Application Express是用于開發(fā)和部署數(shù)據(jù)庫相關(guān)Web應(yīng)用程序的托管環(huán)境尔邓。
SQL Workshop是Oracle Application Express的一個(gè)組件,可讓您從Web瀏覽器查看和管理數(shù)據(jù)庫對象锉矢。SQL Workshop可以快速訪問SQL命令處理器和SQL腳本存儲(chǔ)庫梯嗽。
Oracle調(diào)用接口和Oracle預(yù)編譯器可讓您在過程編程語言中嵌入標(biāo)準(zhǔn)SQL語句。
Oracle調(diào)用接口(OCI)允許您在C程序中嵌入SQL語句沽损。
Oracle預(yù)編譯器Pro * C / C ++和Pro * COBOL解釋了嵌入式SQL語句灯节,并將它們轉(zhuǎn)換為C / C ++和COBOL編譯器可以理解的語句。
大多數(shù)(但不是全部)Oracle工也支持Oracle SQL的所有功能绵估。