《第05章 SQL語言基礎(chǔ)》由會員分享,可在線閱讀,更多相關(guān)《第05章 SQL語言基礎(chǔ)(23頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、5第第5章章 SQL語言基礎(chǔ)語言基礎(chǔ)5-2本章主要內(nèi)容包括:本章主要內(nèi)容包括:1. SQL概述概述2. SELECT、INSERT、 UPDATE、 DELETE3. 事務(wù)控制命令事務(wù)控制命令5-3SQL的特點與命令類型的特點與命令類型1 面向集合的操作語言。面向集合的操作語言。2 在在SQL*PLUS或其他工具中執(zhí)行。或其他工具中執(zhí)行。3 SQL可以實現(xiàn)嵌入式??梢詫崿F(xiàn)嵌入式。5-4SQL語句的三種類型語句的三種類型DDL:包含包含CREATE TABLE ALTER TABLE DROP TABLE CREATE INDEX DROP INDEXDCL:包含包含GRANT REVOKE C
2、OMMIT ROLLBACK LOCKDML:包含包含INSERT UPDATE DELETE SELECT5-5可移植性和可移植性和ANSI/ISO SQL標準標準作為作為SQL最主要的標準,是在最主要的標準,是在1992年制定,這一標年制定,這一標準被非正式地稱為準被非正式地稱為SQL/92,或或SQL2。也是人們在也是人們在引用引用“SQL標準標準”的時候所指的版本,通常支持的時候所指的版本,通常支持4個不同的執(zhí)行級別:個不同的執(zhí)行級別:ENTRY、TRANSITIONAL、INTERMEDIATE和和FULL。Oracle 9i支持支持ENTRY級別級別Oracle 9i還支持許多對還
3、支持許多對SQL/92標準的擴展,但這標準的擴展,但這樣就不再可以移植。不在本章討論范圍。樣就不再可以移植。不在本章討論范圍。5-6Oracle 9i中的中的SQL環(huán)境環(huán)境在在Oracle 9i中,進行中,進行SQL語句操作的最主要工具語句操作的最主要工具是是SQL*PLUS。5-7通過查詢檢索數(shù)據(jù)通過查詢檢索數(shù)據(jù)查詢接口 應(yīng)用服務(wù)器應(yīng)用服務(wù)器Oracle9i服務(wù)器索索引引記錄記錄書書名名書書號號簡簡介介介介紹紹 字段字段本地機數(shù)據(jù)操作本地機數(shù)據(jù)操作本本地地查查詢詢示示意意圖圖5-8遠程查詢示意圖遠程查詢示意圖 Oracle 9i數(shù)據(jù)庫數(shù)據(jù)庫被操作數(shù)據(jù)SQL解釋器.NET部件被操作數(shù)據(jù).NET
4、部件SQL解釋器SQL解釋器應(yīng)用程序 TCP/IP5-9select all | distinct on (expression, ) * | expression as output_name , into temporary | temp table new_table from from_item , where condition group by expression , having condition , union | intersect | except all select order by expression asc | desc | using operator ,
5、for update of class_name , limit count | all offset | , start SQL/92標準中定義的標準中定義的SELECT語句的完整語法語句的完整語法5-10考慮到考慮到SELECT語句的極端復雜性,這里給出常用語句的極端復雜性,這里給出常用的一般形式:的一般形式:SELECT 字段名字段名1,字段名,字段名2, FROM 表名表名1,表名表名2, WHERE 條件條件 ORDER BY 列名列名1,列名列名2,;5-11在查詢中的在查詢中的SELECT子句中建立表達式子句中建立表達式1 算術(shù)運算符:主要包括算術(shù)運算符:主要包括+、-、*、/和
6、和%2 數(shù)學函數(shù):數(shù)學函數(shù):ABS,MOD,POWER,SQRT,TRUNC3 字符串函數(shù)字符串函數(shù):ASCII,LOWER,UPPER,TO_CHAR, LENGTH。4 日期函數(shù):日期函數(shù):SYSDATE5 轉(zhuǎn)換函數(shù)轉(zhuǎn)換函數(shù):TO_CHAR,TO_NUMBER,TO_DATE5-12在在FROM子句中最多可以指定子句中最多可以指定256個表或視圖,如個表或視圖,如果所選的列表中存在同名列,應(yīng)使用對象名限定。果所選的列表中存在同名列,應(yīng)使用對象名限定。但當表名或視圖名很長時會使查詢難以閱讀,這時但當表名或視圖名很長時會使查詢難以閱讀,這時可以在可以在FROM子句中使用別名。語法如下:子句中使
7、用別名。語法如下:FROM 表名表名 別名別名在實際工作中,還可以對表中的列名指定別名。一在實際工作中,還可以對表中的列名指定別名。一般語法如下:般語法如下:列名列名 as “別名別名”,如:,如:select bookname as “name” from bookinfo;5-13從表中檢索特定行從表中檢索特定行1 范圍運算符例范圍運算符例 between and 2 列表運算符例列表運算符例 in()3 模式匹配符例模式匹配符例 %和和_5-14分組和排序查詢結(jié)果集中的數(shù)據(jù)分組和排序查詢結(jié)果集中的數(shù)據(jù)ORDER BY子句子句統(tǒng)計函數(shù):統(tǒng)計函數(shù):AVG(x)COUNT(x)COUNT(*)
8、MAX(x)MIN(x)STDDEV(x)SUM(x)VARIANCE(x)5-15多表查詢多表查詢P91. E.5-8, 5-95-16插入、更新和刪除表中行插入、更新和刪除表中行1INSERT INTO:字段名應(yīng)與插入值對應(yīng)字段名應(yīng)與插入值對應(yīng)2DELETE:按指定條件刪除。要刪除一個大表里的按指定條件刪除。要刪除一個大表里的全部記錄使用全部記錄使用TRUNCATE TABLE命令。并能釋放命令。并能釋放占用的數(shù)據(jù)塊表空間。占用的數(shù)據(jù)塊表空間。3UPDATE5-17P.88-97 的例的例1-23。5-18事務(wù)控制命令事務(wù)控制命令確保把多個確保把多個SQL語句當作一個工作單元來處理的機語句
9、當作一個工作單元來處理的機制稱為事務(wù)。它具有如下特性。制稱為事務(wù)。它具有如下特性。一致性:同時進行的查詢和更新不會相互發(fā)生沖突一致性:同時進行的查詢和更新不會相互發(fā)生沖突,其他用戶不會看到發(fā)生了變化但尚未提交的數(shù)據(jù),其他用戶不會看到發(fā)生了變化但尚未提交的數(shù)據(jù)可恢復性:在發(fā)生系統(tǒng)故障時,數(shù)據(jù)庫會自動地完可恢復性:在發(fā)生系統(tǒng)故障時,數(shù)據(jù)庫會自動地完全恢復未完成的事務(wù)。全恢復未完成的事務(wù)。5-19事務(wù)并發(fā)控制事務(wù)并發(fā)控制對事務(wù)并發(fā)存取不加控制會產(chǎn)生錯誤。對事務(wù)并發(fā)存取不加控制會產(chǎn)生錯誤。丟失修改:指修改間相互覆蓋。丟失修改:指修改間相互覆蓋。讀的不可重復性:指順序執(zhí)行的存取出錯。讀的不可重復性:指順
10、序執(zhí)行的存取出錯。臟讀:讀的不一致性。臟讀:讀的不一致性。5-20在在Oracle 9i數(shù)據(jù)庫系統(tǒng)中,事務(wù)是從提交、回滾、連接數(shù)據(jù)庫系統(tǒng)中,事務(wù)是從提交、回滾、連接到數(shù)據(jù)庫或開始第一條可執(zhí)行的到數(shù)據(jù)庫或開始第一條可執(zhí)行的SQL語句時開始,到一語句時開始,到一條提交、回滾語句或退出數(shù)據(jù)庫時結(jié)束。條提交、回滾語句或退出數(shù)據(jù)庫時結(jié)束。DDL語句會隱含執(zhí)行提交語句。語句會隱含執(zhí)行提交語句。利用回退語句可以在提交命令前撤消或回退一個事務(wù)。利用回退語句可以在提交命令前撤消或回退一個事務(wù)??梢曰赝苏麄€事務(wù),也可以回退部分事務(wù),但是不能回可以回退整個事務(wù),也可以回退部分事務(wù),但是不能回退一個已經(jīng)被提交的事務(wù)。
11、回退部分事務(wù)的命令為:退一個已經(jīng)被提交的事務(wù)?;赝瞬糠质聞?wù)的命令為:rollback to savepoint 保留點名保留點名保留點是用戶放入事務(wù)中的標記,用來表示一個可被回保留點是用戶放入事務(wù)中的標記,用來表示一個可被回退的位置。保留點通過在事務(wù)中放入一個退的位置。保留點通過在事務(wù)中放入一個SAVEPOINT命令而被插入。該命令語法是:命令而被插入。該命令語法是:Savepoint 保留點名保留點名5-21如果在如果在ROLLBACK語句中沒有給出保留點,則整語句中沒有給出保留點,則整個事務(wù)被回退。在數(shù)據(jù)庫的插入、刪除和修改操作個事務(wù)被回退。在數(shù)據(jù)庫的插入、刪除和修改操作時,只有當事務(wù)提交
12、到數(shù)據(jù)庫時才算完成。事務(wù)提時,只有當事務(wù)提交到數(shù)據(jù)庫時才算完成。事務(wù)提交前,只有操作數(shù)據(jù)庫的這個人才能有權(quán)看到所做交前,只有操作數(shù)據(jù)庫的這個人才能有權(quán)看到所做的事情,別人只有在最后提交完成后才可以看到。的事情,別人只有在最后提交完成后才可以看到。3種提交類型種提交類型顯示提交:用顯示提交:用COMMIT命令直接完成的提交命令直接完成的提交隱式提交:用隱式提交:用SQL命令命令(ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME)間接完成的提交間接完成的提交自動提交:用自
13、動提交:用SET命令將命令將AUTOCOMMIT設(shè)置為設(shè)置為ON5-22讀寫事務(wù)處理讀寫事務(wù)處理新建立的事務(wù)是可讀寫的新建立的事務(wù)是可讀寫的.一個可讀寫的事務(wù)可以一個可讀寫的事務(wù)可以包含任何類型的包含任何類型的SQL語句,也可以使用語句,也可以使用SQL命令命令SET TRANSACTION的的READ WRITE項來顯式聲項來顯式聲明一個事務(wù)為可讀寫事務(wù),例如:明一個事務(wù)為可讀寫事務(wù),例如:SET TRANSACTION READ WRITE;5-23只讀事務(wù)只讀事務(wù)只讀事務(wù)僅包含查詢語句。或者說,只讀事務(wù)不以只讀事務(wù)僅包含查詢語句?;蛘哒f,只讀事務(wù)不以任何形式修改數(shù)據(jù)庫,應(yīng)用程序可以顯式地使用任何形式修改數(shù)據(jù)庫,應(yīng)用程序可以顯式地使用SET TRANSACTION命令的命令的READ ONLY選項聲選項聲明一個事務(wù)為只讀的。明一個事務(wù)為只讀的。SET TRANSACTION READ ONLY;