数据库的语言——SQL
DBMS 是一種系統軟件,我們要與它交互的時候就必須使用某種語言,在數據庫發展初期每一種DBMS 都有自己的特有的語言,不過逐漸的SQL 成為了所有DBMS 都支持的主流語言。SQL 是專為數據庫而建立的操作命令集,是一種功能齊全的數據庫語言。在使用它時,只需要發出“做什么”的命令,“怎么做”是不用使用者考慮的。SQL功能強大、簡單易學、使用方便,已經成為了數據庫操作的基礎,并且現在幾乎所有的數據庫均支持SQL。
SQL的英文全稱是Structured Query Language,它是1974 年由Boyce和Chamberlin提出的,并且首先在IBM的關系數據庫原型產品R系統(SYSTEM R)上實現。它的前身是1972 提出的SQUARE(Specifying Queries As Relational Expressesion)語言,在1974 年做了修改,并且改名為SEQUEL(Structured English Query Language)語言,后來SEQUEL簡化為SQL。
SQL 是高級的非過程化編程語言,允許用戶在高層數據結構上工作。使用它,用戶無需指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同數據庫系統可以使用相同的SQL 語言作為數據輸入與管理的接口。它以記錄集合作為操縱對象,所有SQL 語句接受集合作為輸入,返回集合作為輸出,這種集合特性允許一條SQL 語句的輸出作為另一條SQL 語句的輸入,所以SQL 語言可以嵌套,這使它具有極大的靈活性和強大的功能,在多數情況下,在其他語言中需要一大段程序實現的一個單
獨事件只需要一個SQL語句就可以達到目的,這也意味著用SQL語言可以寫出非常復雜的語句。
SQL 具有下面4個主要的功能:創建數據庫并定義表的結構;查詢需要的數據;更新或者刪除指定的數據;控制數據庫的安全。使用SQL我們可以完成和DBMS的幾乎所有交互任務。
比如我們要查找年齡小于18 歲的員工信息,那么我們只要執行下面的SQL就可以:
SELECT * from Employees where age<18
比如我們要將所有職位為“名譽總裁”的員工刪除,那么就可以執行下面的SQL:
DELETE from Employees where position=’ 名譽總裁’
可以看到我們只是描述了我們要做什么,至于怎么去做則由DBMS 來決定。可以想想如果要是自己編程去實現類似的功能,則需要編寫非常復雜的算法才能完成,而且性能也不一定會非常好。
我們可以通過三種方式執行SQL:
1,在工具中執行。各個DBMS幾乎都提供了工具用于執行SQL語句,比如Microsoft SQL,Server 的Management Studio、DB2 的命令中心、Oracle的SqlPlus 或者MySQL的Query Browser。在這些工具中我們只要輸入要執行的SQL然后點擊【執行】按鈕就可以得到執行結果。
2,以編譯的方式嵌入到語言中。在這種方式中我們可以把SQL 直接寫到代碼中,在編譯的時候由編譯器來決定和數據庫的交互方式。比如PowerBuild、C等就采用這種方式。
3,以字符串的形式嵌入到語言中。在這種方式中SQL 語句只是以字符串的形式寫到代碼中,然后由代碼將其提交到DBMS,并且分析返回的結果。目前這是大部分支持數據
庫操作的語言采用的方式,比如C#、Java、Python、Delphi 和VB等。
由于嵌入到語言中的執行方式是嚴重依賴宿主語言的,而本書不假定用戶使用任何編程語言,為了能夠使得使用任何語言的讀者都能學習本書中的知識點,本書將主要以在工具中執行的方式來執行SQL語句,讀者可以根據自己使用的編程語言來靈活運用這些知識點。
IBM 是SQL 語言的發明者,但是其他的數據庫廠商都在IBM 的SQL 基礎上提出了自己的擴展語法,因此形成了不同的SQL 語法,對于開發人員來說,使用這些有差異的語法是非常頭疼的時候。因此在1986年美國國家標準化協會(ANSI)為SQL 制定了標準,并且在1987年國際標準化組織(ISO)也為SQL 指定了標準,迄今為止已經推出SQL-86、SQL-89、SQL-92、SQL-99、SQL-2003等版本的標準。
雖然已經有了國際標準,但是由于種種原因,各個數據庫產品的SQL 語法仍然有著很大差異,在數據庫A上能成功執行的SQL放到數據庫B上就會執行失敗。為了方便使用不同數據庫產品的讀者都能成功運行本書中的例子,我們會介紹各種數據庫SQL 的差異性,并且給出解決方案,而且本書將會安排專門章節講解跨數據庫程序開發的技術。
轉載于:https://www.cnblogs.com/yuyu666/p/9819963.html
總結
以上是生活随笔為你收集整理的数据库的语言——SQL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python后端从数据库请求数据给到前端
- 下一篇: 【python】入门指南:控制语句