資源描述:
《關系數據庫標準語言SQL課件.ppt》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、第五章關系數據庫標準語言SQL魯瑩5.1SQL概述SQL是英文StructureQueryLanguage的縮寫,作為關系數據庫管理系統(tǒng)通用的結構化查詢語言,幾乎所有的關系型數據庫系統(tǒng)都支持它。由于SQL具有功能豐富、使用方式靈活、語言簡潔易學等突出特點,深受廣大用戶歡迎。SQL語言具有許多的優(yōu)點,概括地來講主要有以下幾點:1.SQL是一種一體化的語言。SQL包括了數據定義、數據查詢、數據操縱和數據控制等方面的功能。2.SQL語言是一種高度非過程化的語言。SQL沒有必要一步步告訴計算機“如何”去做,而只需要描述清楚用戶要“做什么”,由系統(tǒng)自動
2、完成全部工作。5.1SQL概述3.SQL語言非常簡潔。SQL語言功能強,但它只有為數不多的幾條指令;SQL語法也非常簡單,它很靠近英語自然語言。4.SQL語言可以直接以命令方式交互使用,也可以嵌入到程序設計語言中以程序方式使用。結構化查詢語言SQL的格式SQL的格式:在SQL語言中查詢操作是用SELECT語句來完成的。它的基本格式如下:Select[distinct]*
3、<列表名>(*代表所有字段);From<表名>;[Where<條件表達式>;][groupby<分組屬性名>;]having<條件表達式>;[OrderBy<排序項目>[AS
4、C/DESC][,ASC/DESC]]比較運算符:=;LIKE;<>,!=,#;>=;<;<=。邏輯運算符:AND;OR;NOT;IN;NOTIN;EXISTS;UNION;INTERSECT;MINUS;5.2SQL的數據查詢功能WHERE:說明查詢條件GROUPBY:對查詢結果進行分組HAVING:必須跟隨GROUPBY使用,它用來限定分組必須滿足的條件;ORDERBY:對查詢結果進行排序,ASC升序,DESC降序,默認是升序。5.2SQL的數據查詢功能5.2.1簡單查詢例一:從職工表中檢索出所有工資值。SELECT工資FROM職工例二:
5、從職工表中檢索出所有工資值,并去掉重復值。SELECTDISTINCT工資FROM職工例三:從職工表中檢索工資多于1230元的所有信息。SELECT*FROM職工WHERE工資>1230例四:從倉庫表中檢索所有元組。SELECT*FROM倉庫5.2.2簡單聯(lián)接查詢例一:檢索出工資多于1230元的職工號和他們所在的城市。SELECT職工號,城市FROM職工,倉庫;WHERE(工資>1230)AND(職工.倉庫號=倉庫.倉庫號)例二:找出工作在面積大于400的倉庫的職工號以及這些職工工作所在的城市。SELECT職工號,城市FROM倉庫,職工;WH
6、ERE(面積>400)AND(職工.倉庫號=倉庫.倉庫號)5.2.3嵌套查詢外層查詢依賴于內層查詢的結果,而內層查詢與外層查詢無關。例一:哪些城市至少有一個倉庫的職工工資為1250元?SELECT城市FROM倉庫WHERE倉庫號IN;(SELECT倉庫號FROM職工WHERE工資=1250)法二:聯(lián)接查詢SELECT城市FROM職工,倉庫WHERE職工.工資=1250;AND職工.倉庫號=倉庫.倉庫號例二:查詢所有職工的工資都多于1210元的倉庫的信息?SELECT*FROM倉庫WHERE倉庫號NOTIN;(SELECT倉庫號FROM職工WH
7、ERE工資<=1210);AND倉庫號IN(SELECT倉庫號FROM職工)例一:檢索出工資在1220元到1240元范圍內的職工信息。SELECT*FROM職工WHERE工資BETWEEN1220AND1240SELECT*FROM職工WHERE(工資>=1220)AND(工資<=1240)例二:從供應商關系中檢索出全部公司的信息,不要工廠或其他供應商的信息。SELECT*FORM供應商WHERE供應商名LIKE“%公司”5.2.4幾個特殊運算符5.2.5排序例一:按職工的工資值升序檢索出全部職工信息。SELECT*FROM職工ORDERBY
8、工資例二:先按倉庫號排序,再按工資排序并輸出全部職工信息。SELECT*FROM職工ORDERBY倉庫號,工資5.2.6簡單的計算查詢用于計算檢索的常用函數是:COUNT(表達式)--計數;SUM(表達式)--求和;AVG(表達式)--計算平均值;MAX(表達式)--求最大值;MIN(表達式)--求最小值。例一:求職工所有的工資總數。SELECTSUM(工資)FROM職工例二:求在WH1倉庫工作的職工的最低工資值。SELECTMIN(工資)FROM職工WHERE倉庫號=“WH1”例一:求每個倉庫的職工的平均工資。SELECT倉庫號,AVG(工
9、資)FROM職工GROUPBY倉庫號例二:求至少有兩個職工的每個倉庫的職工的平均工資。SELECT倉庫號,COUNT(*),AVG(工資)FROM職工;GROUPB