一、前言
大家好,上一講我們對資料庫的基本概念有了一個詳細的了解。在我們進入SQL資料庫的使用和開發之前,必須要對SQL語言有一個基礎性的了解。那麼這節課我們就重點學習下SQL語言的相關知識。
二、SQL概述
1、SQL 的定義及簡要描述
那麼,SQL語言到底是怎樣的一種語言呢?所謂的SQL語言其實就是“結構化查詢語言”,而就是結構化查詢語言的首字母的縮寫。
SQL語言的核心功能包括資料查詢、資料操縱、資料定義和資料控制四個部分。
SQL語言具有簡潔、友善、實用的優點,為完成其核心功能。
SQL語言隻用了6個動詞,即查詢(SELECT)、建立(CREATE)、插入(INSERT)、修改(UPDATE)、删除(DELETE)和授權(GRANT (REVOKE) )。
2、 SQL到底能幹些什麼?
那麼,我們會有所疑惑,SQL語言到底能幹什麼?
假如有一天,公司上司要求你根據公司已有的銷售資料生成一些統計資訊,考慮到傳統辦公軟體已不能勝任這樣的業務需求,那麼使用資料庫來完成資料的統計分析似乎成了唯一的選項。
對于這樣的一組銷售資料,如果我們用SQL查詢資料庫來實作,那麼隻需要寫出這樣的一組語句,就能統計出指定月份的銷售金額,那麼這就是我們的可以使用SQL語言去實作的功能。
二、SQL語言組成
SQL語言是具有強大查詢功能的資料庫語言。除此以外,SQL語言還可以控制資料庫管理系統為使用者提供其它的相關功能,它們分别是 資料定義語言、資料檢索語言、資料操縱語言、資料控制語言、資料共享、資料完整性。
1、 資料定義語言
SQL語言使用者定義,以及存儲資料項之間的關系,。資料定義語言包括了表操作、視圖操作、索引操作在内的諸多操作語句,比如常用的表建立語句就是典型的資料定義語言。
2、 資料檢索語言
SQL使用者或應用程式從資料庫中那麼這就要用到資料檢索語言。資料檢索語言包括了查詢語句和過濾語句在内的多種操作語言,像我們常用的條件語句、最小值函數、最大值函數、均值函數、求和函數都是屬于資料檢索語言。
3、資料操縱語言
SQL允許使用者或應用程式通過添加新資料、删除舊資料和修改以前存儲的資料對資料庫進行更新,那麼這就需要用到我們SQL中資料操縱語言。
像我們使用最多的查詢語句、插入語句、删除語句、修改語句就是屬于資料操縱語言。
4、 資料控制語言
我們可以使用SQL語言來限制使用者檢索、添加和修改資料的能力,保護存儲的資料不被未授權的使用者所通路,那麼這時我們就會用到資料控制語言。資料控制語言包括了資料控制和事務控制兩類語言,像我們用到的授權控制語句、事務控制語句都是屬于資料控制語言。
5、 程式化SQL語句
那麼最後我們來說一下程式化SQL語句,程式化SQL語句包括了像變量的定義、動态執行SQL語句在内的一些文法,相比較前面我們說到的語言種類,這些文法我們用到的不是很多,在這我們不做重點講解。
三、SQL語句的結構
1、 注意文法順序
那麼下面我們了解下SQL語句的結構,首先我們了解下SQL語句的文法順序,我們就以查詢語句為例來給大家作詳細的講解。
好,如果我們想要得到右邊的資料結果,那麼查詢語句的文法順序應該是查詢,字段清單,從,表名,條件是,年齡大于10,按年齡分組,取分組後計數大于1的,最後再輸出前4條。
由此我們可以總結出查詢語句的文法順序是:
第1步,先選擇from後面跟的表,産生虛拟表1;
第2步,當如果有Join和ON,那麼我們會再連接配接其它表,合并生成虛拟表2;
第3步,對虛拟表2進行條件過濾,符合條件的記錄會被插入到虛拟表3中;
第4步,對虛拟表3中的記錄進行分組操作,産生虛拟表4;
第5步,再對虛拟表4進行HAVING條件過濾,符合條件的記錄會被重新插入到虛拟表5中;
第6步,再用Select關鍵字選擇指定的列并插入到虛拟表6中;
第7步,如果遇到UNION,那麼會再連接配接兩個SELECT查詢語句,重複步驟1~6,并将2個虛拟表合并到虛拟表7中;
第8步,再将虛拟表7中的記錄進行排序,重新生成虛拟表8。
第9步,那麼最後再次取出指定行的記錄,傳回結果集。
那麼這就是整個查詢語句的執行順序。
從上面的文法順序解析中我們也可以總結出以下幾2點,
1、 SELECT 語句總是寫在最前面,但在大部分語句之後才執行。是以在SQL語句中,我們不能在WHERE、GROUP BY、 HAVING語句中使用在 SELECT 中設定的别名。
2、 無論是書寫順序,還是執行順序,UNION 都是排在 ORDER BY 前面的。SQL語句會将所有UNION 的查詢記錄合并在一起,再進行排序。
2、 不區分大小寫
SQL語句的關鍵字是不區分大小寫。在SQL語句的關鍵字中,無論是小寫還是大寫我們在執行的時候都是可以的。
3、 不同資料庫系統之間SQL文法的異同
我們說下不同資料庫系統之間SQL文法的差别問題。我們說不同的資料庫系統,比如MySql、SQL Server或者說Oracle,他們在SQL的文法上是存在着差别的。
大家不用擔心,這種差别是不大的,因為它們同屬結構化查詢語言,它們都遵循着結構化查詢語言的文法标準,是以如果你學會了MySql版本的SQL語言再來學習SQL Server版本的,那麼也是水到渠成的。
那麼考慮到使用的覆寫率問題,後續我們絕大多數時間内都會以MySql資料庫,再結合資料庫管理工具Navicat來跟大家一起學習SQL語言。
四、本講總結
通過本節課的學習,我們對SQL語言的基本概念有了一個較為基礎的了解。那麼下一課我們将一起學習下資料庫、表、行列鍵等概念。
好,本節課就先到這裡,謝謝大家!