《第05章 SQL語言基礎(chǔ)》由會(huì)員分享,可在線閱讀,更多相關(guān)《第05章 SQL語言基礎(chǔ)(23頁珍藏版)》請(qǐng)?jiān)谘b配圖網(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的特點(diǎn)與命令類型的特點(diǎn)與命令類型1 面向集合的操作語言。面向集合的操作語言。2 在在SQL*PLUS或其他工具中執(zhí)行?;蚱渌ぞ咧袌?zhí)行。3 SQL可以實(shí)現(xiàn)嵌入式??梢詫?shí)現(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標(biāo)準(zhǔn)標(biāo)準(zhǔn)作為作為SQL最主要的標(biāo)準(zhǔn),是在最主要的標(biāo)準(zhǔn),是在1992年制定,這一標(biāo)年制定,這一標(biāo)準(zhǔn)被非正式地稱為準(zhǔn)被非正式地稱為SQL/92,或或SQL2。也是人們?cè)谝彩侨藗冊(cè)谝靡谩癝QL標(biāo)準(zhǔn)標(biāo)準(zhǔn)”的時(shí)候所指的版本,通常支持的時(shí)候所指的版本,通常支持4個(gè)不同的執(zhí)行級(jí)別:個(gè)不同的執(zhí)行級(jí)別:ENTRY、TRANSITIONAL、INTERMEDIATE和和FULL。Oracle 9i支持支持ENTRY級(jí)別級(jí)別Oracle 9i還支持許多對(duì)還
3、支持許多對(duì)SQL/92標(biāo)準(zhǔn)的擴(kuò)展,但這標(biāo)準(zhǔn)的擴(kuò)展,但這樣就不再可以移植。不在本章討論范圍。樣就不再可以移植。不在本章討論范圍。5-6Oracle 9i中的中的SQL環(huán)境環(huán)境在在Oracle 9i中,進(jìn)行中,進(jìn)行SQL語句操作的最主要工具語句操作的最主要工具是是SQL*PLUS。5-7通過查詢檢索數(shù)據(jù)通過查詢檢索數(shù)據(jù)查詢接口 應(yīng)用服務(wù)器應(yīng)用服務(wù)器Oracle9i服務(wù)器索索引引記錄記錄書書名名書書號(hào)號(hào)簡簡介介介介紹紹 字段字段本地機(jī)數(shù)據(jù)操作本地機(jī)數(shù)據(jù)操作本本地地查查詢?cè)兪臼疽庖鈭D圖5-8遠(yuǎn)程查詢示意圖遠(yuǎn)程查詢示意圖 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標(biāo)準(zhǔn)中定義的標(biāo)準(zhǔn)中定義的SELECT語句的完整語法語句的完整語法5-10考慮到考慮到SELECT語句的極端復(fù)雜性,這里給出常用語句的極端復(fù)雜性,這里給出常用的一般形式:的一般形式:SELECT 字段名字段名1,字段名,字段名2, FROM 表名表名1,表名表名2, WHERE 條件條件 ORDER BY 列名列名1,列名列名2,;5-11在查詢中的在查詢中的SELECT子句中建立表達(dá)式子句中建立表達(dá)式1 算術(shù)運(yùn)算符:主要包括算術(shù)運(yùn)算符:主要包括+、-、*、/和
6、和%2 數(shù)學(xué)函數(shù):數(shù)學(xué)函數(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個(gè)表或視圖,如個(gè)表或視圖,如果所選的列表中存在同名列,應(yīng)使用對(duì)象名限定。果所選的列表中存在同名列,應(yīng)使用對(duì)象名限定。但當(dāng)表名或視圖名很長時(shí)會(huì)使查詢難以閱讀,這時(shí)但當(dāng)表名或視圖名很長時(shí)會(huì)使查詢難以閱讀,這時(shí)可以在可以在FROM子句中使用別名。語法如下:子句中使
7、用別名。語法如下:FROM 表名表名 別名別名在實(shí)際工作中,還可以對(duì)表中的列名指定別名。一在實(shí)際工作中,還可以對(duì)表中的列名指定別名。一般語法如下:般語法如下:列名列名 as “別名別名”,如:,如:select bookname as “name” from bookinfo;5-13從表中檢索特定行從表中檢索特定行1 范圍運(yùn)算符例范圍運(yùn)算符例 between and 2 列表運(yùn)算符例列表運(yùn)算符例 in()3 模式匹配符例模式匹配符例 %和和_5-14分組和排序查詢結(jié)果集中的數(shù)據(jù)分組和排序查詢結(jié)果集中的數(shù)據(jù)ORDER BY子句子句統(tǒng)計(jì)函數(shù):統(tǒng)計(jì)函數(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)與插入值對(duì)應(yīng)字段名應(yīng)與插入值對(duì)應(yīng)2DELETE:按指定條件刪除。要?jiǎng)h除一個(gè)大表里的按指定條件刪除。要?jiǎng)h除一個(gè)大表里的全部記錄使用全部記錄使用TRUNCATE TABLE命令。并能釋放命令。并能釋放占用的數(shù)據(jù)塊表空間。占用的數(shù)據(jù)塊表空間。3UPDATE5-17P.88-97 的例的例1-23。5-18事務(wù)控制命令事務(wù)控制命令確保把多個(gè)確保把多個(gè)SQL語句當(dāng)作一個(gè)工作單元來處理的機(jī)語句
9、當(dāng)作一個(gè)工作單元來處理的機(jī)制稱為事務(wù)。它具有如下特性。制稱為事務(wù)。它具有如下特性。一致性:同時(shí)進(jìn)行的查詢和更新不會(huì)相互發(fā)生沖突一致性:同時(shí)進(jìn)行的查詢和更新不會(huì)相互發(fā)生沖突,其他用戶不會(huì)看到發(fā)生了變化但尚未提交的數(shù)據(jù),其他用戶不會(huì)看到發(fā)生了變化但尚未提交的數(shù)據(jù)可恢復(fù)性:在發(fā)生系統(tǒng)故障時(shí),數(shù)據(jù)庫會(huì)自動(dòng)地完可恢復(fù)性:在發(fā)生系統(tǒng)故障時(shí),數(shù)據(jù)庫會(huì)自動(dòng)地完全恢復(fù)未完成的事務(wù)。全恢復(fù)未完成的事務(wù)。5-19事務(wù)并發(fā)控制事務(wù)并發(fā)控制對(duì)事務(wù)并發(fā)存取不加控制會(huì)產(chǎn)生錯(cuò)誤。對(duì)事務(wù)并發(fā)存取不加控制會(huì)產(chǎn)生錯(cuò)誤。丟失修改:指修改間相互覆蓋。丟失修改:指修改間相互覆蓋。讀的不可重復(fù)性:指順序執(zhí)行的存取出錯(cuò)。讀的不可重復(fù)性:指順
10、序執(zhí)行的存取出錯(cuò)。臟讀:讀的不一致性。臟讀:讀的不一致性。5-20在在Oracle 9i數(shù)據(jù)庫系統(tǒng)中,事務(wù)是從提交、回滾、連接數(shù)據(jù)庫系統(tǒng)中,事務(wù)是從提交、回滾、連接到數(shù)據(jù)庫或開始第一條可執(zhí)行的到數(shù)據(jù)庫或開始第一條可執(zhí)行的SQL語句時(shí)開始,到一語句時(shí)開始,到一條提交、回滾語句或退出數(shù)據(jù)庫時(shí)結(jié)束。條提交、回滾語句或退出數(shù)據(jù)庫時(shí)結(jié)束。DDL語句會(huì)隱含執(zhí)行提交語句。語句會(huì)隱含執(zhí)行提交語句。利用回退語句可以在提交命令前撤消或回退一個(gè)事務(wù)。利用回退語句可以在提交命令前撤消或回退一個(gè)事務(wù)。可以回退整個(gè)事務(wù),也可以回退部分事務(wù),但是不能回可以回退整個(gè)事務(wù),也可以回退部分事務(wù),但是不能回退一個(gè)已經(jīng)被提交的事務(wù)。
11、回退部分事務(wù)的命令為:退一個(gè)已經(jīng)被提交的事務(wù)?;赝瞬糠质聞?wù)的命令為:rollback to savepoint 保留點(diǎn)名保留點(diǎn)名保留點(diǎn)是用戶放入事務(wù)中的標(biāo)記,用來表示一個(gè)可被回保留點(diǎn)是用戶放入事務(wù)中的標(biāo)記,用來表示一個(gè)可被回退的位置。保留點(diǎn)通過在事務(wù)中放入一個(gè)退的位置。保留點(diǎn)通過在事務(wù)中放入一個(gè)SAVEPOINT命令而被插入。該命令語法是:命令而被插入。該命令語法是:Savepoint 保留點(diǎn)名保留點(diǎn)名5-21如果在如果在ROLLBACK語句中沒有給出保留點(diǎn),則整語句中沒有給出保留點(diǎn),則整個(gè)事務(wù)被回退。在數(shù)據(jù)庫的插入、刪除和修改操作個(gè)事務(wù)被回退。在數(shù)據(jù)庫的插入、刪除和修改操作時(shí),只有當(dāng)事務(wù)提交
12、到數(shù)據(jù)庫時(shí)才算完成。事務(wù)提時(shí),只有當(dāng)事務(wù)提交到數(shù)據(jù)庫時(shí)才算完成。事務(wù)提交前,只有操作數(shù)據(jù)庫的這個(gè)人才能有權(quán)看到所做交前,只有操作數(shù)據(jù)庫的這個(gè)人才能有權(quán)看到所做的事情,別人只有在最后提交完成后才可以看到。的事情,別人只有在最后提交完成后才可以看到。3種提交類型種提交類型顯示提交:用顯示提交:用COMMIT命令直接完成的提交命令直接完成的提交隱式提交:用隱式提交:用SQL命令命令(ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME)間接完成的提交間接完成的提交自動(dòng)提交:用自
13、動(dòng)提交:用SET命令將命令將AUTOCOMMIT設(shè)置為設(shè)置為ON5-22讀寫事務(wù)處理讀寫事務(wù)處理新建立的事務(wù)是可讀寫的新建立的事務(wù)是可讀寫的.一個(gè)可讀寫的事務(wù)可以一個(gè)可讀寫的事務(wù)可以包含任何類型的包含任何類型的SQL語句,也可以使用語句,也可以使用SQL命令命令SET TRANSACTION的的READ WRITE項(xiàng)來顯式聲項(xiàng)來顯式聲明一個(gè)事務(wù)為可讀寫事務(wù),例如:明一個(gè)事務(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選項(xiàng)聲選項(xiàng)聲明一個(gè)事務(wù)為只讀的。明一個(gè)事務(wù)為只讀的。SET TRANSACTION READ ONLY;