SQL語句在審計中的簡單應(yīng)用.doc_第1頁
SQL語句在審計中的簡單應(yīng)用.doc_第2頁
SQL語句在審計中的簡單應(yīng)用.doc_第3頁
SQL語句在審計中的簡單應(yīng)用.doc_第4頁
SQL語句在審計中的簡單應(yīng)用.doc_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

SQL語句在審計的簡單應(yīng)用SELECT語句是SQL語言中使用頻率最高的語句,完全可以說SELECT語句是SQL的靈魂。SELECT語句的作用就是讓數(shù)據(jù)庫服務(wù)器根據(jù)用戶的要求搜索出所需要的信息資料,并按規(guī)定的格式進(jìn)行整理,再返回給用戶。一、SELECT語句的基本組件和描述:SELECT指明要檢索的數(shù)據(jù)的列。FROM指明從哪(幾)個表中檢索行。WHERE指明返回數(shù)據(jù)必須滿足的標(biāo)準(zhǔn)(條件)。GROUPBY對于集合查詢,指明返回的列數(shù)據(jù)通過這些列來形成組(分組查詢)。HAVING對于集合查詢,指明返回的集合值必須滿足的標(biāo)準(zhǔn)。ORDERBY指明返回的排序順序(排序查詢)。例如:簡單查詢數(shù)據(jù)庫表hzbb中的以下幾列,并將查詢結(jié)果的每一行都返回在選定列中顯示,可用以下SQL語句表示:SELECT id, lname, fname, state, zip, contractFROMhzbb(前面的列名即字段名如用*表示所有列)即為:SELECT*FROMhzbb添加WHERE條件子句,以縮小檢索范圍。如只返回顯示state列中含有CA字符,并且同時滿足contract列中值為0的報有記錄(行)??捎靡韵耂QL語句表示:SELECT id, lname, fname, state, zip, contractFROMhzbbWHERE state =CAANDcontract = 0(邏輯操作符AND表示與的意思,而OR表示或的意思,如使用AND則返回的行必須滿足AND兩邊的條件,OR操作符則要求OR兩邊至少滿足一個條件)雖然 SELECT 語句的完整語法較復(fù)雜,但是其主要的子句可歸納如下:SELECTselect_list INTO 新表名 FROM表一 ,表二 WHERE 條件表達(dá)式 GROUP BY 分組列 HAVING 指定組或聚合應(yīng)滿足的搜索條件 ORDER BY指定要排序的列 ASC(升序)| DESC(降序) 二、審計實務(wù)中的SQL例句說明1、在SELECT語句中,“*”表示表中所有的列。如:select*from憑證庫 該語句表示選擇憑證庫(表)中所有列的記錄。2、使用TOP關(guān)鍵字用于指定只返回前面一定數(shù)量的數(shù)據(jù)。當(dāng)查詢到的數(shù)據(jù)非常多(如有100萬行),但又沒有必要對所有數(shù)據(jù)進(jìn)行瀏覽時,使用TOP關(guān)鍵字可以大大減少查詢的時間。如: SELECTTOP20FROMHZK 表示從數(shù)據(jù)庫HZK中返回前面20行的數(shù)據(jù)。SELECTTOP 20PERCENTFROM HZK 表示從數(shù)據(jù)庫表HZK中搜索返回前20%的數(shù)據(jù)。3、使用DISTINCT關(guān)鍵字。使用DISTINCT關(guān)鍵字可從返回的結(jié)果數(shù)據(jù)集合中刪除重復(fù)的行,使返回的結(jié)果更加簡潔。如:selectdistinct 科目編碼from憑證庫,該語句表示從憑證庫中選擇科目編碼以及使用distinct關(guān)鍵字后去掉那些重復(fù)的科目編碼,使每個科目編碼都是唯一。注意:在使用DISTINCT關(guān)鍵字后,如果表中存在多個NULL的數(shù)據(jù),服務(wù)器將會把這些數(shù)據(jù)視為相等。4、靈活運(yùn)用SQL語句使用計算列。在進(jìn)行審計數(shù)據(jù)分析和查詢時經(jīng)常需要對查詢的數(shù)據(jù)進(jìn)行再計算,這里審計人員可充分運(yùn)用SELECT語句的功能來直接使用計算列對審計數(shù)據(jù)進(jìn)行運(yùn)算,而計算列并不存在于表格所存儲的數(shù)據(jù)中,它是通過對某些列的數(shù)據(jù)進(jìn)行計算而得出的結(jié)果列。例如:將每噸水泥的銷售價格降低20%:SELECTID,TYPE,銷售價格,銷售價格-銷售價格 * 20%FROMSJKB由于計算列沒有列名,所以返回的結(jié)果看不到它的字段名字。在計算列上,允許使用+、-、*、/、% 和邏輯運(yùn)算符。5、操作查詢的列名。SELECT語句可以根據(jù)實際的需要對查詢數(shù)據(jù)的列標(biāo)題進(jìn)行修改,或者為設(shè)立沒有標(biāo)題的列增加臨時的標(biāo)題。對列名進(jìn)行操作的方法有三種:一是在列表達(dá)式后面直接給出列名。SELECT title_id 商品代號, price原價, price price * 0.3現(xiàn)價FROMtitle二是使用SQL支持的“=”符號來連接列表達(dá)式。SELECT 商品代號=title_id , 原價=price, 現(xiàn)價=price price * 0.3 fromtitle三是在指定列標(biāo)題時,使用AS關(guān)鍵字來連接列表達(dá)式和指定的列名。SELECT title_id AS圖書代號, priceAS原價, price price * 0.3AS 現(xiàn)價 FROMtitle以上三種語句返回結(jié)果相同。注意:在對列名進(jìn)行操作時,有以下幾個問題值得注意:當(dāng)使用中文列名時,可以不寫引號,但決不能使用全角引號,否則查詢結(jié)果出錯;當(dāng)使用的英文列名超過兩個單詞時,必須使用引號將列名括起來;可以聯(lián)合使用本節(jié)介紹的3種方法,返回結(jié)果相同。另外,審計人員還可通過應(yīng)用函數(shù)方式直接對表列進(jìn)行操作。如語句:Select sum(jfje), sum(dfje)frompzk該語句是將pzk(憑證庫)中所有憑證的借方發(fā)生額求和和貸方發(fā)生額求和,借以查看pzk表中借貸發(fā)生額是否平衡。6、使用WHERE條件子句。使用WHERE子句的目的是從表的數(shù)據(jù)集中篩選出符合審計人員設(shè)定條件的行。使用WHERE子句可以限制查詢的范圍,提高查詢效率。使用時注意WHERE子句必須緊跟FROM子句之后。WHERE子句中的條件表達(dá)式包括算術(shù)表達(dá)式和邏輯表達(dá)式。算術(shù)表達(dá)式:=(等于); (大于);(不等于);?。ú淮笥冢?!=(大于等于); 150 例2:通過對摘要字段內(nèi)容的選擇篩選出其中與招待費(fèi)有關(guān)的所有憑證。Select科目編碼,科目名稱,摘要,憑證日期,借方金額,貸方金額 from 憑證庫 where 摘要 like%招待費(fèi)%例3:在憑證庫中統(tǒng)計7到12月份現(xiàn)金的借貸發(fā)生總額。Select sum(借方金額) as現(xiàn)金借方發(fā)生總額 , sum(貸方金額) as現(xiàn)金貸方發(fā)生總額from憑證庫where 科目編碼 like 101% and憑證日期 between #2004-07-01 #and#2004-12-31#例4:從憑證庫表中篩選出“貸:現(xiàn)金”,且摘要中不含“工資”或“獎金”或“稿費(fèi)”或“補(bǔ)”或“津貼”或“勞?!被颉案@被颉俺霾睢被颉安盥觅M(fèi)”字段,且現(xiàn)金貸方發(fā)生額大于結(jié)算起點(diǎn)(5000元)的所有記錄。審計人員可通過此語句為審查除發(fā)工資、獎金或借差旅費(fèi)等情況之外,現(xiàn)金使用是否超范圍、超限額。本例是以5000元作為界點(diǎn),具體使用時也可視其需要做具體修改。如果現(xiàn)在科目不為101,可能對編碼也要做修改。select * from 憑證庫 where 科目編碼 like 101% and 貸方金額 5000and 摘要 not like %工資% and 摘要 not like %獎金% and 摘要 not like %稿費(fèi)% and 摘要 not like %補(bǔ)% and 摘要 not like %津貼% and 摘要 not like %勞保% and 摘要 not like %福利% and 摘要 not like %出差% and 摘要 not like %差旅費(fèi)%7、使用BETWHEEN關(guān)鍵字。使用BETWHEEN關(guān)鍵字可以方便地限制查詢數(shù)據(jù)的范圍(即包含在兩個邊界內(nèi)的值),NOTBETWHEEN (不包含在兩個邊界內(nèi)的值)。使用BETWHEEN表達(dá)式進(jìn)行查詢的效果可以使用=和和= $10AND商品價格=$15如果要查商品價格大于15元和小于10元的商品的代碼、種類和價格,可用以下查詢:select商品代碼,商品種類,商品價格fromtitleswhere商品價格$20也可用:whereNOTBETWHEEN15AND20注意:在使用BETWHEEN 限制查詢數(shù)據(jù)范圍時,同時包括了邊界值,而使用NOT BETWHEEN進(jìn)行查詢時沒有包括邊界值。 8、使用IN關(guān)鍵字。同BETWHEEN關(guān)鍵字一樣,IN關(guān)鍵字的引入也是為方便地限制檢索數(shù)據(jù)的范圍,靈活使用IN關(guān)鍵字,可以用簡潔的語句實現(xiàn)較復(fù)雜的查詢。如:selectpz_id,pz_date,pz_fname, pz_zyfromhzkwherestate = 招待費(fèi)orstate =餐費(fèi)orstate =酒水費(fèi)如用IN關(guān)鍵字可替代以上語句:selectpz_id,pz_date,pz_fname, pz_zyfromhzkwherestateIN ( 招待費(fèi) ,餐費(fèi), 酒水費(fèi) )如果要查詢不在列表中的值,可使用NOTIN ,方法同上。9、使用LIKE子語句進(jìn)行模糊查詢。審計人員往往在實際應(yīng)用中不一定總是能夠就很快地給出精確的查詢條件,因此經(jīng)常需要根據(jù)一些并不確定的線索來排查被審數(shù)據(jù),LIKE子句就是用來進(jìn)行模糊查詢的語句,在LIKE子句使用中,通常與通配符配合使用。SQL提供了四種通配符供用戶實現(xiàn)復(fù)雜的查詢條件:%(百分號):表示從0到n 個任意字符。_(下劃線):表示單個任意字符。 (封閉方括號):表示方括號內(nèi)列出的任意一個字符。 :表示任意一個沒有在方括號內(nèi)列出的字符。如:where科目名稱like%費(fèi)就是查詢條件以“費(fèi)”結(jié)尾的科目字段。下列將查詢出所有滿足tel_id的前面兩個字母為“72”、第4個字母為“”的人員姓名和電話號碼:Selecttel_lanme,tel_fname,phone,tle_idfromTEL Wheretel_idlike72_% 使用方括號可以將字符查詢的范圍進(jìn)一步縮小。注意:在LIKE子句的查詢條件中,包含在 中的所有字符都將被考慮進(jìn)去,包括空格在內(nèi),所以要注意在 中末尾含有空格而影響查詢結(jié)果。必須注意的是所有通配符都只有在LIKE子句中才有意義,否則,通配符會被當(dāng)作普通字符處理。也就是說通配符只有跟隨LIKE后才有效。10、使用ORDERBY給數(shù)據(jù)排序Select 語句獲得的數(shù)據(jù)一般是沒有按規(guī)律進(jìn)行排序的,GROUP 主要是對表中的信息細(xì)化分組,對屬于同組信息進(jìn)行統(tǒng)計,一般與函數(shù)一起使用。語法為:Orderbyorderbyexpression ASCDESC ,.n Orderbyexpression:定義用于排序的列??梢允褂枚嗔羞M(jìn)行排序,各列在orderby子句中的順序決定了排序過程中的優(yōu)先級。 ASC表示升序, DESC表示降序。默認(rèn)情況下,orderby子句按升序進(jìn)行排列。即默認(rèn)使用ASC關(guān)鍵字,如果特別要求按降序進(jìn)行排序,必須使用DESC關(guān)鍵字。 如果在某一列中使用了計算列,如對某一列使用了函數(shù)或者是表達(dá)式,而又希望針對該列的值進(jìn)行排序,那么必須在orderby 子句中再包含該函數(shù)或表達(dá)式,或使用為該計算列臨時分配的列名。GROUP主要是對表中的信息分組,在分組的基礎(chǔ)上,對表的信息按組進(jìn)行統(tǒng)計,一般和函數(shù)一起使用。例1:對憑證庫中其他應(yīng)收款(113)科目中各末級科目按科目編碼進(jìn)行分組統(tǒng)計,并將借方金額和貸方金額分別進(jìn)行求和顯示。select 科目編碼 ,sum(借方金額),sum(貸方金額) from 憑證庫 where 科目編碼 like 113%group by 科目編碼例2:在憑證庫中統(tǒng)計其他應(yīng)受款(113)中二級科目(二級科目長度為5)的年借方發(fā)生總額和貸方發(fā)生總額。在本例中,可通過調(diào)整長度來控制所求的科目級別,如果是3就是求其他應(yīng)受款所有借貸方總額,如果是7就是所有的三級科目借貸方總額。當(dāng)然其具體數(shù)值大小根據(jù)實際編碼長度為準(zhǔn)。select left(科目編碼,5),sum(借方金額),sum(貸方金額) from 憑證庫 where 科目編碼 like 113%group by left(科目編碼,5) 例3:上例是對年度求借貸發(fā)生總額,本語句是求出其他應(yīng)受款(113)中二級科目的每個月的借貸發(fā)生總額。同樣改變數(shù)字大小可以

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論