《SQL語言基礎》PPT課件.ppt
《《SQL語言基礎》PPT課件.ppt》由會員分享,可在線閱讀,更多相關《《SQL語言基礎》PPT課件.ppt(47頁珍藏版)》請在裝配圖網上搜索。
1、第6章 SQL語言基礎,第6章 SQL語言基礎,目前,無論是像Oracle、SQL Server、DB2、Sybase等這些大型的數據庫管理系統,還是像Visual FoxPro、MySQL、Access等中小型的數據庫管理系統,都支持SQL作為數據查詢語言。,6.1 SQL語言概述,6.1.1 SQL語言的功能 SQL語言主要有數據定義、數據操縱和數據控制等功能。 1.數據定義 2.數據操縱 3.數據控制 4.嵌入功能,6.1 SQL語言概述,6.1.2 SQL語言的特點 1.綜合統一 2.高度非過程化 3.統一的語法結構 4.面向集合的操作方式 5.語言簡潔,易學易用,6.1 SQL語言
2、概述,6.1.3 PL/SQL與SQL的關系 PL/SQL(Procedural Language/SQL,過程化SQL)也是一種程序設計語言,是Oracle公司對標準SQL語言的過程化擴展,PL/SQL在普通SQL語句的使用上增加了編程語言的特點,所以PL/SQL就可以把數據操作和查詢語句組織在PL/SQL代碼的過程性單元中,通過邏輯判斷、循環(huán)等操作實現復雜的功能或者計算。PL/SQL主要用于在Oracle數據庫系統上進行數據操作和開發(fā)應用。,6.2 數據定義,數據定義功能是針對數據對象進行定義,主要包括表、視圖和索引、觸發(fā)器、存儲過程和程序包等。,6.3 數據操縱,數據操縱包括數據查詢和
3、數據更新兩大類操作,是通過數據操縱語言DML來實現。數據查詢操作是通過SQL的SELECT語句來完成。數據更新包括數據插入、刪除和修改操作,對應SQL的INSERT、DELETE、UPDATE語句。在Oracle 11g中,數據操縱語句除了上述語句外,還包括TRUNCATE、CALL、EXPLAIN PLAN、LOCK TABLE語句等。,6.4 數據控制,數據控制功能主要包括數據庫的事務管理功能和數據保護功能等,即對數據庫的恢復、并發(fā)控制、安全性和完整性控制等,而這些功能都是通過對各種數據庫對象的各種操作權限進行管理而實現的。,6.5 基本數據查詢,6.5.1 數據查詢基本結構 SELECT
4、語句的基本格式為: SELECT ALL | DISTINCT TOP n PENCERT , INTO FROM ,數據源表名或視圖名 WHERE GROUP BY HAVING ORDER BY ASC | DESC ,6.5 基本數據查詢,6.5.2 簡單查詢 1.查詢所有列 【例6.1】查詢表scott.emp表中所有列,可以使用如下語句: SELECT * FROM scott.emp; 2.查詢指定列 【例6.2】查詢表scott.emp表中的ename列,語句如下:說 明 SELECT ename FROM scott.emp;,6.5 基本數據查詢,6.5.2 簡單查詢 3.改
5、變列標題 其語法格式如下: SELECT AS , AS , FROM 【例6.3】查詢表scott.emp表中的ename列將其列名改為雇員姓名,語句如下: SELECT ename AS 雇員姓名 FROM scott.emp;,6.5 基本數據查詢,6.5.2 簡單查詢 4.查詢經過計算的值 【例6.4】下列查詢語句就是進行運算的結果,查詢emp表中的兩項工資的總和,執(zhí)行結果如圖6-2所示。 SELECT sal+comm FROM scott.emp; 5.利用DISTINCT關鍵字消除取值重復的行 【例6.5】消除emp表中job列的重復值的語句如下,執(zhí)行結果如下圖。 SELECT
6、DISTINCT job FROM scott.emp;,6.5 基本數據查詢,6.5.3 使用WHERE子句進行篩選 1.比較運算符 【例6.6】查看scott.emp表中在10號部門的所有員工具體情況。 SELECT * FROM scott.emp WHERE deptno=10; 2.確定范圍 【例6.7】查詢scott.emp表中工資在1500和3000之間的雇員編號。 SELECT empno FROM scott.emp WHERE sal BETWEEN 1500 and 3000;,6.5 基本數據查詢,3.確定集合 【例6.8】查詢scott.emp表中在10,20或30號
7、部門工作的雇員編號。 SELECT * FROM scott.emp WHERE deptno IN(10, 20, 30); 4.字符匹配 謂詞LIKE可以用來進行字符串的匹配。其一般語法格式如下: 列表 NOT LIKE 【例6.9】查詢名字中含有K字母的雇員姓名。 SELECT ename FROM scott.emp WHERE ename LIKE %K%;,6.5 基本數據查詢,5.涉及空值NULL的查詢 【例6.10】查詢comm 列為NULL的雇員信息。 SELECT * FROM scott.emp WHERE comm IS NULL; 6.多重條件查詢 多重條件查詢也
8、稱為復合條件查詢,是指WHERE子句后有多個查詢條件,使用邏輯運算符(AND、OR、NOT)將多個條件聯接起來,組成復合查詢條件。 【例6.11】查詢10號部門工資在2000元以上的雇員信息。 SELECT * FROM scott.emp WHERE deptno=10 and sal2000;,6.5 基本數據查詢,6.5.4 使用ORDER BY子句進行查詢的排序 使用ORDER BY子句的語法格式如下: SELECT ALL | DISTINCT TOP n PENCERT , FROM ORDER BY ASC | DESC 【例6.12】請將emp表中元組按照部門號升序、員工編
9、號降序排列。 SELECT * FROM scott.emp ORDER BY deptno ASC,empno DESC;,6.5 基本數據查詢,6.5.5 使用GROUP BY子句進行分組查詢 GROUP BY子句可以將查詢結果集的各行按一列或多列取值相等的原則進行分組。分組的目的是為了能為每個分組生成其匯總信息,即細化聚合函數的作用對象為每一組。 例6.13統計emp表中各個部門的人數。 select deptno ,count(*) from scott.emp Group by deptno;,6.5 基本數據查詢,6.5.6 使用HAVING子句對分組進行篩選 HAVING子句
10、通常與GROUP BY子句一起使用,其作用是在在完成對分組結果統計后,再使用HAVING子句對分組結果進行進一步的篩選。 【6.14】統計各個部門人數,將多于5人的部門編號輸出。 Select deptno from scott.emp group by deptno Having count(*)5;,6.5 基本數據查詢,6.5.7 使用INTO子句將查詢結果存儲到表中 在SELECT語句中使用INTO子句可以將查詢的結果存儲到一個新建的數據表或臨時表中。 例6.15 將emp表中的內容復制到newemp中。 Create table newemp(neweno number(4));
11、Insert into newemp1 select empno from scott.emp;,6.5 基本數據查詢,6.5.8 常用函數 在數據庫查詢中,經常要對查詢的數據進行統計計算,如求平均值、總和、平方差等,本節(jié)介紹Oracle數據庫系統提供的主要函數。 1字符函數 下面介紹常用的幾個字符函數的用法。 (1)ASCII()和CHR() ASCII()和CHR()是兩個基于ASCII的函數,ASCII(x)函數用于獲得字符串x最左邊字符的ASCII碼,CHR(x)函數用于獲得ASCII碼值為x的對應的字符。,6.5 基本數據查詢,6.5.5 常用函數 【例6.13】查看A的ASCII
12、碼。 SELECT ASCII(A) FROM dual; 結果是65,即函數返回字符“A”的ASCII碼值。 【例6.14】查看ASCII碼為65的字符。 SELECT CHR(65) FROM dual; 結果是字母A。,6.5 基本數據查詢,6.5.5 常用函數 (2)LENGTH() LENGTH(x)函數用于獲得x字符串中字符的個數,即返回字符串的長度。 【例6.15】使用LENGTH函數求字符串 This is Oracle 11g。 SELECT length(This is Oracle 11g) FROM dual;,6.5 基本數據查詢,6.5.5 常用函數 (3)CONC
13、AT() CONCAT(x, y)函數用于將字符串y添加在字符串x之后,即將兩個字符串連接起來形成一個字符串。 【例6.16】使用CONCAT函數將EMP表中各元組的ename添加在job之后。 SELECT CONCAT(job,ename) FROM scott.emp;,6.5 基本數據查詢,6.5.5 常用函數 (4)LOWER()和UPPER() LOWER()將字符串全部轉為小寫,而UPPER()將字符串全部轉為大寫。 (5)LTRIM()、RTRIM()和TRIM() LTRIM(x , trim_string)函數用于從x的左邊截去一些字符,該函數還可以使用可選的參數tr
14、im_string來指定要截去的字符;如果沒有指定trim_string參數,默認情況下會截去空格。同理,RTRIM函數用于從x的右邊截去一些字符,TRIM函數用于從x的左邊和右邊各截去一些字符。,6.5 基本數據查詢,6.5.5 常用函數 ( 6 )SUBSTR () SUBSTRING (, , length) 返回從字符串expression左邊第starting_ position 個字符起length個字符的部分。 Select substr(xiao ming is a good man,16,8) From dual;,6.5 基本數據查詢,6.5.5 常用函數 2數字函數 下面
15、介紹幾個常用的數字函數的具體用法。 (1)ABS() ABS(x)用于得到x的絕對值。 (2)MOD() MOD(x, y)函數返回x除以y所得的余數。 (3)CEIL() CEIL(x)返回大于或等于x的最小整數,即將參數x向上取整。,6.5 基本數據查詢,6.5.5 常用函數 2數字函數 (4)FLOOR() FLOOR(x)用于獲得小于或等于x的最大整數,即將參數x向下取整。 (5)POWER() POWER(x, y)用于計算x的y次冪。 (6)ROUND() ROUND(x, y)用于計算對x取整的結果,即對x進行四舍五入計算,并返回;其中y為可選參數,說明對第幾位小數取整。,6.5
16、 基本數據查詢,6.5.5 常用函數 2數字函數 (7)SQRT() SQRT(x)函數用于計算x的平方根,負數無意義。,6.5 基本數據查詢,6.5.5 常用函數 3聚合函數 在實際應用中,常常需要對表中的數據進行分類、統計、匯總等操作,如統計公司的人數、平均工資、最高工資等,這些都需要聚合函數來實現。聚合函數也被稱為聚集函數、分組函數、統計函數。,6.5 基本數據查詢,6.5.5 常用函數 (1)AVG()函數 AVG()函數用于返回一組數值中所有非空數值的平均值。 (2)MAX()和MIN()函數 MIN()函數用于返回一個列范圍內的最小非空值;MAX()函數用于返回最大值。 (3)C
17、OUNT()函數 COUNT()函數用于返回一個列內所有非空值的個數,這是一個整型值。,6.5 基本數據查詢,6.5.5 常用函數 (4)SUM()函數 SUM()函數是最常用的聚合函數之一,其功能是返回一個列范圍內所有非空值的總和。和AVG()函數一樣,它用于數值數據類型。 4日期時間函數 Oracle數據庫系統提供了豐富的日期時間函數來處理日期類型數據,有些函數可用于解析日期值的日期與時間部分,有些函數可用于比較、操縱日期/時間值。,6.5 基本數據查詢,4日期時間函數 (1)LAST_DAY() LAST_DAY()返回指定日期所在月最后一天的日期,通常被用來確定當前月中還剩下多少
18、天。 【例6.21】執(zhí)行下列語句求當前月份的最后一天。 SELECT LAST_DAY(SYSDATE) FROM DUAL; (2)MONTHS_BETWEEN() 【例6.22】下列例子求當前日期與2012年12月20日之間相隔的月數。 SELECT MONTHS_BETWEEN(SYSDATE,20-12月-2012) FROM DUAL;,6.5 基本數據查詢,4日期時間函數 (3)NEXT_DAY() 【例6.23】下列例子求下一個星期一的日期。 SELECT NEXT_DAY(SYSDATE,星期一) FROM DUAL; (4)獲取系統時間 Select sysdate from
19、 dual; Select current_date from dual; (5)設置日期格式 Alter session set nls_date_format=yyyy-mm-dd hh:mi:ss;,6.5 基本數據查詢,6.5.5 常用函數 5轉換函數 (1)CAST() CAST(x AS type)用來將x轉換為由type指定的兼容數據庫類型。 【例6.27】下面查詢展示了使用CAST()將字面值轉換為指定的類型: SELECT CAST(12345.67 AS VARCHAR2(10)), CAST(9A4F AS RAW(2)), CAST(12345.678 AS NUM
20、BER(10,2)) FROM dual;,6.5 基本數據查詢,6.5.5 常用函數 (2)CONVERT() 對于簡單類型轉換,CONVERT()函數和CAST()函數的功能相同,只是語法不同。 【例6.28】下面的例子演示CONVERT()函數的使用: Select convert(搴旇鏄彲浠殑, ZHS16GBK, UTF8) From dual;,6.5 基本數據查詢,6.5.5 常用函數 (3)TO_CHAR() TO_CHAR(x , format)函數用于將x轉換為一個字符串,可選參數format是格式化控制符,用來指定轉換后x的格式。結構format取決于x是數字還是日期
21、。 Select to_char(12345.66) from dual; Select to_char(sysdate) from dual;,6.5 基本數據查詢,6.5.5 常用函數 (4)TO_NUMBER() TO_NUMBER(x , format)函數用于將x轉換為一個數字,可選參數format字符串用來指定轉換后的格式。 【例6.27】下面這個查詢使用TO_NUMBER函數將字符串970.13轉換為一個數字,然后再在其基礎上加上25.5: SELECT TO_NUMBER(970.13) + 25.5 FROM dual;,6.5 基本數據查詢,6.5.5 常用函數 6正則表
22、達式函數 使用正則表達式函數可以在字符串中搜索字符模式。 下面介紹幾個常用正則表達式函數的具體用法。 (1)REGEXP_LIKE() REGEXP_LIKE(x, pattern , match_option)函數用于在x中查找pattern參數中定義的正則表達式。,6.5 基本數據查詢,6.5.5 常用函數 (2)REGEXP_INSTR() REGEXP_INSTR(x, pattern , start , occurrence , return_option , match_option)用于在x中查找pattern;REGEXP_INSTR()返回pattern出現的位置,匹配位置從
23、1開始。 (3)REGEXP_REPLACE() REGEXP_REPLACE(x, pattern , replace_string , start , occurrence, match_option)用于在x中查找pattern,并將其替換為replace_string。 (4)REGEXP_COUNT() REGEXP_COUNT(x, pattern, start ,match_option)用于在x中查找pattern,并返回pattern在x中出現的次數。,6.6 高級數據查詢,6.6.1 多表連接查詢 1定義連接的兩種形式 定義連接有兩種形式,一種是在WHERE子句中定義,
24、另一種是在FROM子句中定義。 (1)在WHERE子句中定義連接 在WHERE子句中定義連接的查詢語句基本格式為: SELECT 表名.列名1, 表名.列名2, FROM 表名1, 表名2 WHERE 表名1.列名表名1.列名;,6.6 高級數據查詢,6.6.1 多表連接查詢 (2)在FROM子句中定義連接 在FROM子句中定義連接的查詢語句基本格式為: SELECT 表名.列名1, 表名.列名2, FROM 表名1 表名2 ON (連接條件) WHERE 其中:連接類型可以是:INNER JOIN(內連接)、OUTER JOIN(外連接)、CROSS JOIN(交叉連接)。,6.6 高
25、級數據查詢,6.6.1 多表連接查詢 2內連接 內連接使用INNER JOIN連接關鍵字,其連接格式為: FROM 表名1 INNER JOIN 表名2 ON (連接條件) (1)等值連接 在連接條件中使用“=”連接運算符時,稱為等值連接。 (2)非等值連接 在連接條件中使用除“=”以外的其它運算符(、=、)來比較被連接列的列值時,稱為非等值連接。,6.6 高級數據查詢,6.6.1 多表連接查詢 3外連接 如果查詢結果集包含來自一個表的所有行和另一個表中的匹配行,那么這種連接稱為外連接。 外連接又分為以下三類: 1)左外連接(LEFT OUTER JOIN):結果集包含左表中所有行和右表中
26、匹配行。 2)右外連接(RIGHT OUTER JOIN):結果集包含右表中所有行和左表中匹配行。 3)全外連接(FULL OUTER JOIN):結果集包含左、右兩個表中的所有行。,6.6 高級數據查詢,6.6.1 多表連接查詢 4交叉連接 交叉連接使用CROSS JOIN關鍵字來連接多個表,不能使用WHERE子句,返回的結果集包含所連接的表中所有行的全部組合,即結果集是所連接的各表數據行的笛卡爾積。 5自身連接 連接操作不僅可以在兩個不同的表之間進行,也可以是一個表與其自己進行連接,這種連接稱為自身連接。此時相同表要取不同的別名。,6.6 高級數據查詢,6.6.2 嵌套查詢 在SQL
27、語句中,一個SQL-FROM-WHERE語句稱為一個查詢塊。有時一個查詢塊無法完成查詢任務,需要將一個查詢塊嵌套在另一個查詢塊的WHERE子句或HAVING子句的條件中,這種將一個查詢塊嵌套在另一個查詢塊的條件子句中的查詢稱為嵌套查詢。 1使用IN謂詞的子查詢 使用IN謂詞的子查詢是指父查詢和子查詢之間用IN關鍵字進行連接,判斷原表中某個列值是否在子查詢的結果中。 2使用比較運算符的子查詢 使用比較運算符的子查詢是指父查詢和子查詢之間用比較運算符進行連接。,6.6 高級數據查詢,6.6.2 嵌套查詢 3使用ANY或ALL謂詞的子查詢 當子查詢返回結果為多個值時,父查詢還可以通過將比較運算符與ANY或ALL結合來和子查詢建立連接。 4使用EXISTS謂詞的子查詢 EXISTS代表存在量詞彐。有時侯只需要考慮子查詢是否有返回結果,而并不考慮結果的具體數據,此時可以使用EXISTS謂詞來定義子查詢。,6.6 高級數據查詢,6.6.3 集合操作 集合操作就是將兩個或多個SQL查詢結果集合并,形成復合查詢,所以集合操作的查詢也稱為聯合查詢。,
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。