




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
PAGEPAGE31計算機審計方法語言編制規(guī)范——計算機審計實務(wù)公告第13號中華人民共和國審計署二OO八年三月
目錄1.前言 52.引言 53.審計腳本語言(ASL) 53.1概述 53.2約束 63.3參數(shù)作用域 63.4常量 73.5變量 73.6數(shù)組 73.7表達式、運算符與界符 73.7.1算術(shù)運算符 73.7.2邏輯運算符 83.7.3關(guān)系表達式 83.7.4界符 93.8敘述語法 93.8.1分支語句 93.8.2WHILE循環(huán) 103.8.3REPEAT-until循環(huán) 113.9過程 123.9.1過程定義 123.9.2過程的調(diào)用 123.10系統(tǒng)基本字(保留字) 133.11系統(tǒng)函數(shù) 183.12程序舉例 244.Sql語句 314.1約束 314.2常用SQL數(shù)據(jù)庫操作 324.3查詢表 324.3.1Select語句 324.3.2修改表 354.3.3連接表 374.4常用SQL函數(shù)與表達式 394.4.1聚合函數(shù) 394.4.2字符串函數(shù) 404.4.3時間函數(shù): 434.5常用函數(shù)對照表 44
計算機審計方法語言編制規(guī)范1.前言本規(guī)范由審計署計算機技術(shù)中心、信息化建設(shè)辦公室提出。本規(guī)范的起草單位:審計署計算機技術(shù)中心、信息化建設(shè)辦公室。2.引言計算機審計方法語言包括ASL審計腳本語言和SQL語句兩部分。ASL審計腳本語言完成審計方法的流程控制。ASL審計腳本語言是由審計署基于PASCAL語言研制的適用于審計人員編制計算機審計方法的語言。SQL語句完成對數(shù)據(jù)庫的操作。本規(guī)范的SQL語句采用國家標(biāo)準(zhǔn)GB_12991-91《信息處理系統(tǒng)數(shù)據(jù)庫語言SQL》及國際標(biāo)準(zhǔn)ISO/IEC9075:1992《信息技術(shù)數(shù)據(jù)庫語言SQL》中審計所需的部分內(nèi)容。為使計算機審計方法語言適用于SQLserver、ORACLE、DB2等不同數(shù)據(jù)庫,本規(guī)范在4.5節(jié)中列示了常用函數(shù)在SQLserver、ORACLE、DB2等數(shù)據(jù)庫使用中的對照表。3.審計腳本語言(ASL)3.1概述審計腳本語言是基于PASCAL語言的基礎(chǔ)之上開發(fā)一門專為審計人員書寫審計方法的編程語言。審計腳本語言主體是PASCAL語言的子集,在此基礎(chǔ)之上進行了數(shù)據(jù)庫操作、圖表輸出等一系列功能擴展,其功能簡單,結(jié)構(gòu)清晰,可讀性強,具備了一般高級語言的必備部分。3.2約束(1)變量、標(biāo)示符、函數(shù)及過程名稱一律使用英文字母開頭,可以使用英文和數(shù)字。(2)變量、標(biāo)示符、函數(shù)及過程名稱大小寫不敏感。(3)一段程序中變量、過程不能超過100個。(4)數(shù)字最大位數(shù)為24位。(5)過程嵌套不超過3層。(6)一行程序不超過5000個字符(7)任何一段超過1行以上的程序需要使用begin….end語句進行約束,表明哪里是開始,哪里是結(jié)束。(8)每行程序以分號作為結(jié)束符。(9)全程序以end.作為結(jié)束(10)變量定義要在主程序的begin之前。(11)賦值語句使用:=為運算符3.3參數(shù)作用域過程可以引用自己定義的局部參數(shù),也可以引用包圍它的外過程定義的局部參數(shù)。3.4常量定義常量的格式:CONST<常量標(biāo)識符>=<常量>說明:常量說明部分以關(guān)鍵字const開頭,后面的標(biāo)識符為常量標(biāo)識符,其中"="號后的常量為整數(shù)、實數(shù)、字符、字符串(字符、字符串常量在后面章節(jié)中將作介紹)。而且,在常量說明部分可以將幾個常量說明成符號常量,共用一個關(guān)鍵字"const"。3.5變量變量說明的格式:VAR<變量標(biāo)識符>[,<變量標(biāo)識符>];其中VAR是ASL保留字,表示開始一個變量說明段;3.6數(shù)組說明的格式:array<數(shù)組標(biāo)識符>[下標(biāo)];其中array是ASL保留字,表示開始一個數(shù)組說明段。3.7表達式、運算符與界符3.7.1算術(shù)運算符算術(shù)運算符說明+加號-減號*乘號/除號3.7.2邏輯運算符邏輯運算符說明=等于and與or或not非3.7.3關(guān)系表達式關(guān)系表達式說明:=等于號(賦值符、算術(shù)表達式)<小于>大于<>、#不等于<=小于等于>=大于等于3.7.4界符界符說明,逗號,變量界符。用來分隔函數(shù)和過程的參數(shù),以及聲明變量時分隔變量;分號,語句界符。用來做為每一行程序段的結(jié)束標(biāo)志.句號,程序界符。用來表示程序全部結(jié)束,一般使用在最后一個end后()小括號,函數(shù)和過程的參數(shù)界符。[]中括號,數(shù)組下標(biāo)的界符,定義數(shù)組時使用,一般中括號中間添入該數(shù)組的下標(biāo)‘’單引號,字符串的界符,單引號中間一般為字符串。如果想單獨輸入一個單引號字符,則需要‘’’’。//注釋符,注釋符號,//后的本行文字不影響程序執(zhí)行。3.8敘述語法3.8.1分支語句(1)格式Ⅰ、IF<布爾表達式>THEN語句;Ⅱ、IF<布爾表達式>THEN語句1ELSE語句2;
(注意Ⅱ型IF語句中語句1后無";"號)(2)功能Ⅰ、執(zhí)行IF語句時,先計算<布爾表達式>的值,若為TRUE則執(zhí)行語句,否則不執(zhí)行任何操作。Ⅱ、執(zhí)行IF語句時,先計算<布爾表達式>的值,若為TRUE則執(zhí)行語句1,否則執(zhí)行語3.8.2WHILE循環(huán)while語句的形式為:while<布爾表達式>do<語句>;其意義為:當(dāng)布爾表達式的值為true時,執(zhí)行do后面的語句。while語句的執(zhí)行過程為:①判斷布爾表達式的值,如果其值為真,執(zhí)行步驟2,否則執(zhí)行步驟4;②執(zhí)行循環(huán)體語句(do后面的語句);③返回步驟1;④結(jié)束循環(huán),執(zhí)行while的下一個語句。說明:這里while和do為保留字,while語句的特點是先判斷,后執(zhí)行。當(dāng)布爾表達式成立時,重復(fù)執(zhí)行do后面的語句(循環(huán)體)。3.8.3REPEAT-until循環(huán)用while語句可以實現(xiàn)"當(dāng)型循環(huán)",用repeat-until語句可以實現(xiàn)"直到型循環(huán)"。repeat-until語句的含義是:"重復(fù)執(zhí)行循環(huán),直到指定的條件為真時為止"。直到循環(huán)語句的一般形式:Repeat
<語句1>;:<語句n>;until<布爾表達式>;其中Repeat、until是ASL保留字,repeat與until之間的所有語句稱為循環(huán)體。說明:①repeat語句的特點是:先執(zhí)行循環(huán),后判斷結(jié)束條件,因而至少要執(zhí)行一次循環(huán)體。②repeat-until是一個整體,它是一個(構(gòu)造型)語句,不要誤認(rèn)為repeat是一個語句,until是另一個語句。③repeat語句在布爾表達式的值為真時不再執(zhí)行循環(huán)體,且循環(huán)體可以是若干個語句,不需用begin和end把它們包起來,repeat和until已經(jīng)起了begin和end的作用。while循環(huán)和repeat循環(huán)是可以相互轉(zhuǎn)化的。3.9過程3.9.1過程定義在pascal中,函數(shù)也遵循先說明后使用的規(guī)則,在程序中,函數(shù)的說明放在調(diào)用該函數(shù)的程序(主程序或其它子程序)的說明部分。函數(shù)的結(jié)構(gòu)主程序的結(jié)構(gòu)很相似。procedure<過程名>;{過程首部}說明:過程首部以關(guān)鍵字procedure開頭。過程名是用戶自定義的標(biāo)識符,只用來標(biāo)識一個過程,不能代表任何數(shù)據(jù),因此不能說明"過程的類型"。過程體的說明部分可以定義只在本過程有效的標(biāo)號、常量、類型、變量、子程序等。3.9.2過程的調(diào)用過程調(diào)用是通過一條獨立的過程調(diào)用語句來實現(xiàn)的,調(diào)用的一般格式為:call<過程名>3.10系統(tǒng)基本字(保留字)系統(tǒng)基本字(保留字)說明調(diào)用舉例var變量定義基本字,描述其后面的字符為定義的變量。vara,x,mymun;const常量定義基本字,描述其后面的字符為定義的常量。constpi=3.14159265;array數(shù)組定義基本字,描述其后面的字符為定義的數(shù)組。arraya[10],b[10];procedure過程定義基本字,描述其后面的字符為定義的程序過程。vara;proceduresum;begina:=a+1;write(a);end;begina:=1;callsum;end.call調(diào)用過程基本字,調(diào)用定義的一個過程。begin程序開始基本字,一段程序的開始標(biāo)志。vara,b;begina:=1;b:=2;ifa<>0thenbeginb:=b+a;write(b);end;end.end程序結(jié)束基本字,一段程序的結(jié)束標(biāo)志。程序段結(jié)束end后面緊跟分號,全程序結(jié)束end后面緊跟句號。如過在if語句有else,則在else前的end不用跟隨分號。ifif-then-else判斷基本字。if條件thenbegin處理語句;處理語句;endelsebegin處理語句;處理語句;end;ifa>0thenwrite(‘a(chǎn)是正數(shù)’);ifa>0thenwrite(‘a(chǎn)是正數(shù)’)elsewrite(‘a(chǎn)是不是正數(shù)’);ifa>=0thenbegina:=a+1;write(‘a(chǎn)是正數(shù)’);endelsewrite(‘a(chǎn)是負(fù)數(shù)’);thenelserepeatrepeat-until循環(huán)基本字。repeat-until循環(huán)是直到until后的條件滿足循環(huán)就停止repeat處理語句;處理語句;until條件;i:=0;repeata:=i*i;write(a);i:=i+1;untili>5;untilwhilewhile-do循環(huán)基本字while條件dobegin處理語句;處理語句;end;b:=1;whileb<100dobegina:=b*b;ifa>60000thenbreak;b:=b+1;end;write(b);dobreak循環(huán)中止基本字read錄入基本字。vara;beginread(a);ifa>0thenwrite(‘a(chǎn)是正數(shù)’)elsewrite(‘a(chǎn)是不是正數(shù)’);end.write輸出基本字。3.11系統(tǒng)函數(shù)系統(tǒng)標(biāo)示符說明調(diào)用舉例LeftStr左截取字符串函數(shù),輸入要操作的字符串和截取的個數(shù),返回左截取后的字符串。一個中文文字符占兩位。leftstr(‘操作字符’,個數(shù));RightStr右截取字符串函數(shù),輸入要操作的字符串和截取的個數(shù),返回右截取后的字符串。一個中文文字符占兩位。rightstr(‘操作字符串’,個數(shù));MidStr中部截取字符串函數(shù),輸入要操作的字符串,起始位置和截取的個數(shù),返回中部截取后的字符串。一個中文文字符占兩位。MidStr(‘操作字符串’,起始位置,個數(shù));Length字符串取長度函數(shù),輸入要操作的字符串,返回該字符串的長度,一個中文字符占兩位。一個中文文字符占兩位。Length(‘操作字符串’);CreateQ執(zhí)行SQL語句,返回一個SQL語句的執(zhí)行及結(jié)果到查詢變兩中。第一個參數(shù)是查詢的SQL語句,第二個參數(shù)是使用過已經(jīng)沒有用的查詢變量,如果是第一次作查詢則填寫-1,這樣做的好處是,節(jié)省查詢變量的個數(shù),節(jié)約資源。CreateQ(‘SQL語句’,查詢變量);a:=createq(‘select*from憑證表’,-1);a:=createq(‘select*from憑證表’,a);QEof查看查詢變量當(dāng)前指向的記錄是否為空。返回1則表明為空。QEof(查詢變量);a:=createq(‘select*from憑證表’,-1);b:=QEof(a);ifb<>1thenbegin//你的操作//……//你的操作end;QMov查尋變量記錄移動函數(shù),返回成功與否。QMov(查詢變量,移動方向1向下-1向上);a:=createq(‘select*from憑證表’,-1);b:=QMov(a,1);QFDValue取當(dāng)前查詢變量當(dāng)前紀(jì)錄的字段的值。入口參數(shù)一個是查詢變量,一個是某一個字段的名稱,需要用單引號括起來。QFDValue(查詢變量,‘字段名稱’);a:=createq(‘select*from憑證表’,-1);b:=QFDValue(a,‘摘要’);RecordNum如果參數(shù)為一個打開的查詢變量,則取出當(dāng)前查詢變量的記錄個數(shù)。如果參數(shù)為數(shù)據(jù)庫中的一個表名,則取出該表的所有記錄個數(shù)。RecordNum(查詢變量或‘表名稱’);ExecuteUpdate執(zhí)行數(shù)據(jù)庫插入、更新、刪除(Insert,Update,Delete)的SQL語句的函數(shù)。ExecuteUpdate(‘SQL語句’);CreateTempTable把SQL語句取出來的結(jié)果以用戶輸入的表名存儲在數(shù)據(jù)庫中。CreateTempTable(‘新表名’,‘SQL語句’);OPutChart將查詢變量或SQL語句結(jié)果輸出到圖表。Y軸字段顯示顏色參數(shù):clred——紅色、clblue——藍(lán)色、clyellow——黃色、clgreen——綠色、clMaroon——栗色、clPurple——紫色、clFuchsia——紫紅色、clOlive——橄欖色、clSkyBlue——天藍(lán)色、clMoneyGreen——貨幣綠色、clLime——亮綠色?;蛘咧苯邮褂妙伾珨?shù)字,格式為$加6位的16進制數(shù)字。如:$1f11cOPutChart(查詢變量或‘SQL語句’,‘X軸字段’,‘Y軸字段1,顯示顏色參數(shù)1;Y軸字段2,顯示顏色參數(shù)2;Y軸字段N,顯示顏色參數(shù)N’);AddVouDout輸出源憑證號到疑點庫中,該源憑證號對應(yīng)的憑證將被定義為已落實疑點。AddVouDout(源憑證號);AddVouRslt輸出源憑證號到疑點庫中,該源憑證號對應(yīng)的憑證將被定義為未落實疑點。AddVouRslt(源憑證號);AddTransDout把指定查詢變量的當(dāng)前記錄輸出到業(yè)務(wù)疑點的臨時庫中。AddTransDout(查詢變量,‘疑點說明’);AddTransRslt把指定查詢變量的當(dāng)前記錄輸出到業(yè)務(wù)結(jié)果的臨時庫中。AddTransRslt(查詢變量,‘疑點說明’);TransBatch把指定查詢變量的業(yè)務(wù)疑點或結(jié)果臨時庫中的數(shù)據(jù)寫入業(yè)務(wù)疑點或結(jié)果庫中。并清空相應(yīng)的臨時庫中的數(shù)據(jù)TransBatch(查詢變量,‘批量疑點說明’);showmsgshowmsg(‘消息內(nèi)容’);3.12程序舉例(1)賦值語句//定義變量并且為變量賦值和輸出變量constpi=3.14159265;//常量賦值VarInputNumber,InputString,CurrentQuery;ArrayInputArrary[10];BeginInputNumber:=123;//數(shù)值賦值InputString:='ABCDEFG';//字符串賦值InputArrary[1]:='abc';//數(shù)組賦值CurrentQuery:=CreateQ('select*from憑證庫',-1);ShowMsg(InputNumber);ShowMsg(InputString);ShowMsg(InputArrary[1]);End.(2)判斷語句//腳本說明://輸入一個數(shù)判斷輸入的數(shù)字是否為正數(shù),正數(shù)顯//示你輸入的數(shù)為正數(shù)負(fù)數(shù)顯示你輸入的數(shù)為負(fù)數(shù)VarInputNumber;beginRead(InputNumber);ifInputNumber<>0thenbeginifInputNumber>0thenbeginShowMsg('你輸入的是正數(shù)');endelsebeginShowMsg('你輸入的是負(fù)數(shù)數(shù)');end;endelsebeginShowMsg('你輸入的是零');end;end.(3)循環(huán)語句//提示用戶輸入一個數(shù)字,如果輸入的數(shù)是負(fù)數(shù)停止//循環(huán)否則將輸入的數(shù)字累加并在最后將累加結(jié)果顯示VarInputNumber,TotalNumber;ProcedureDoCycle;BeginTotalNumber:=0;Read(InputNumber);//輸入一個數(shù)字whileInputNumber>0do//循環(huán)條件輸入的數(shù)字是正數(shù)BeginTotalNumber:=TotalNumber+InputNumber;//累加輸入的數(shù)字Read(InputNumber);//輸入一個數(shù)字End;End;//主程序BeginCallDoCycle;//調(diào)用過程ShowMsg(TotalNumber);//顯示累計結(jié)果End.(4)數(shù)據(jù)庫操作//讀取憑證庫中的一月份憑證,計算一類,五類科//目,2,3,4類科目總數(shù)并顯示//對于憑證號為1的憑證放在未落實疑點為2的放//到已落實疑點varCurrentQuery,IsEmpty,AccountCode,Total1,Total2,VoucherNum,SourceVoucherNum;beginTotal1:=0;Total2:=0;CurrentQuery:=CreateQ('select*from憑證庫where會計月份=1',-1);IsEmpty:=Qeof(CurrentQuery);ifIsEmpty<>1thenbeginrepeatAccountCode:=QFDValue(CurrentQuery,'科目編碼');AccountCode:=LeftStr(AccountCode,1);ifAccountCode='1'orAccountCode='5'thenbeginTotal1:=Total1+1;endelsebeginTotal2:=Total2+1end;IsEmpty:=Qmov(CurrentQuery,1);IsEmpty:=Qeof(CurrentQuery);VoucherNum:=QFDValue(CurrentQuery,'憑證號');ifVoucherNum=1thenbeginSourceVoucherNum:=QFDValue(CurrentQuery,'源憑證號');AddVouDout(SourceVoucherNum);end;ifVoucherNum=2thenbeginSourceVoucherNum:=QFDValue(CurrentQuery,'源憑證號');AddVouRslt(SourceVoucherNum);end;untilIsEmpty=1;end;write(Total1);write(Total2);ShowMsg(Total1);end.(5)字符串操作varTestString,ResultStr,LengthStr;beginTestString:='ABCDEFG';ResultStr:=LeftStr(TestString,1);ShowMsg(ResultStr);ResultStr:=RightStr(TestString,1);ShowMsg(ResultStr);ResultStr:=MidStr(TestString,1,4);ShowMsg(ResultStr);ResultStr:=TrimStrEX(TestString,'CD','DC');ShowMsg(ResultStr);LengthStr:=Length(TestString);ShowMsg(LengthStr);end.(6)圖形輸出//用戶輸入科目編碼對當(dāng)前輸入的科目編碼按月份//匯總借貸金額以圖表方式輸出varCurrentQuery,x;beginRead(x);CurrentQuery:=CreateQ('SELECT會計月份,SUM(借方金額)ASJ,SUM(貸方金額)ASDFROM憑證庫WHERELEFT(科目編碼,4)='+''''+x+''''+'GROUPBY會計月份',-1);oputchart(CurrentQuery,'會計月份','J,clred;D,clgreen');end.4.Sql語句4.1約束在計算機審計方法語言中的SQL語句只支持?jǐn)?shù)據(jù)定義語言(DDL,DataDefinitionLanguage)、數(shù)據(jù)操縱語言(DML,DataManipularionLanguage)、數(shù)據(jù)控制語言(DCL,DataControlLanguage)和系統(tǒng)存儲過程(SystemStoredProcedure)中的數(shù)據(jù)定義語言和數(shù)據(jù)操縱語言。4.2常用SQL數(shù)據(jù)庫操作4.3查詢表4.3.1Select語句Select語句從一個或多個表中檢索數(shù)據(jù)(1)語法SELECT[ALL|DISTINCT]{Columnexpression[ASname]}[…]|*FROM
<tablereference>[{,<tablereference>}…][WHERE<searchcondition>][GROUPBYColumns[Havingcondition]]Select語句查詢sql數(shù)據(jù),返回一個由在From子句中所指的表導(dǎo)出的結(jié)果表。結(jié)果表的導(dǎo)出可以描述為一個操作的序列,每一個操作的結(jié)果被輸入到下一個操作。這個操作序列是From子句,然后是WHERE、GROUPBY、HAVING和選擇清單(即列表達式的清單),而對這些子句的描述也以這個順序出現(xiàn)。From子句Form子句為查詢提供一個<表引用>語法FROM<tablereference>[{,<tablereference>}…]WHERE子句可選項WHERE子句用于設(shè)置對于行的檢索條件。不在規(guī)定范圍內(nèi)的任何行都從結(jié)果表中去除。規(guī)定的搜索條件必須含有算術(shù)和布爾運算符、sql判斷和Sql標(biāo)量函數(shù),以及設(shè)置運算順序的括弧。語法[WHERE<searchcondition>]GROUPBY子句GROUPBY子句邏輯上將由WHERE子句返回的結(jié)果集重新編組。語法[GROUPBY[ALL]group_by_expression[,...n][WITH{CUBE|ROLLUP}]]HAVING子句可選行HAVING子句用于為組設(shè)置檢索條件。不在規(guī)定范圍內(nèi)的任何組都從結(jié)果集中去除。規(guī)定的搜索條件必須含有算術(shù)運算符、布爾運算符、SQL判斷和SQL標(biāo)量函數(shù),以及設(shè)置運算順序的括弧。語法[HAVING<search_condition>]Case子句:計算條件列表并返回多個可能結(jié)果表達式之一<caseexpression>FunctionSpecifyaconditionalvalue.Format<caseexpression>::=<caseabbreviation>|<casespecification><caseabbreviation>::=NULLIF<leftparen><valueexpression><comma><valueexpression><rightparen>|COALESCE<leftparen><valueexpression>{<comma><valueexpression>}...<rightparen><casespecification>::=<simplecase>|<searchedcase><simplecase>::=CASE<caseoperand><simplewhenclause>...[<elseclause>]END<searchedcase>::=CASE<searchedwhenclause>...[<elseclause>]END<simplewhenclause>::=WHEN<whenoperand>THEN<result><searchedwhenclause>::=WHEN<searchcondition>THEN<result><elseclause>::=ELSE<result><caseoperand>::=<valueexpression><whenoperand>::=<valueexpression><result>::=<resultexpression>|NULL<resultexpression>::=<valueexpression>4.3.2修改表(1)ALTER語句ALTERTABLE更改一個基本表的定義。語法ALTERTABLE<tablename><altertableaction><altertableaction>::=ADD[COLUMN]<Columndefinition>|ALTER[COLUMN]<Columnname>SETDEFAULTdefaultvalue|ALTER[COLUMN]<Columnname>DROPdefault|ALTER[COLUMN]<Columnname>ADDSCOPE<tablename>|ALTER[COLUMN]<Columnname>ADDSCOPE{RESTRICT|CASCADE}|ALTER[COLUMN]<Columnname>{RESTRICT|CASCADE}|ADD<TableConstraint>|DROPCONSTRAINT<Constraintname>{RESTRICT|CASCADE}(2)INSERT語句將新行添加到表。語法INSERT[INTO]<Tablename>
[(<Columnname>[{,<Columnname>}…])][OVERRIDESYSTEMGENERATEDVALUES]<queryexpression>INSERTINTO[ONLY]<Tablename>DEFAULTVALUES(3)UPDATE語句更改表中的現(xiàn)有數(shù)據(jù)。語法UPDATE[ONLY]<Tablename>SET<Columnname>=scalar_expression[{,<Columnname>=scalar_expression}…]|ROW=row_expression[WHERE<search_condition>](3)DELETE語句從表中刪除行。語法DELETEFROM[ONLY]<Tablename>[WHERE<search_condition>]4.3.3連接表連接表是指由笛卡爾積(交叉連接)、自然連接、內(nèi)連接、外連接和聯(lián)合連接得到的表語法:<joinedTable>::=<tablereference>CROSSJOIN<tablereference>|<tablereference>[NATURAL][<jointype>]JOIN<tablereference>[<joinspecification>]|(<joinedTable>)<jointype>::=INNER|{LEFT|RIGHT|FULL}[OUTER]|
UNION<joinspecification>=::ON<searchcondition>|USING(join<Columnname>[{,join<Columnname>}…])笛卡爾積(交叉連接)分為顯式和隱式兩種,不帶ON子句,返回的是兩表的乘積。隱式的交叉連接,使用“,”連接表。顯式的交叉連接,使用”CROSSJOIN”連接表。內(nèi)連接內(nèi)連接(INNERJOIN)形成的中間表為兩個表經(jīng)過ON條件過濾后的笛卡爾積。自然連接(NATURALINNERJOIN)自然連接無需指定連接列,SQL會檢查兩個表中是否相同名稱的列,且假設(shè)他們在連接條件中使用,并且在連接條件中僅包含一個連接列。不允許使用ON語句,不允許指定顯示列,顯示列只能用*表示對于每種連接類型(除了交叉連接外),均可指定NATURAL。外連接(OUTERJOIN)外連接分三類:左外連接(LEFTOUTERJOIN)、右外連接(RIGHTOUTERJOIN)和全外連接(FULLOUTERJOIN)。三者的共同點是都返回符合連接條件和查詢條件(即:內(nèi)連接)的數(shù)據(jù)行。不同點如下:左外連接還返回左表中不符合連接條件單符合查詢條件的數(shù)據(jù)行。右外連接還返回右表中不符合連接條件單符合查詢條件的數(shù)據(jù)行。全外連接還返回左表中不符合連接條件單符合查詢條件的數(shù)據(jù)行,并且還返回右表中不符合連接條件單符合查詢條件的數(shù)據(jù)行。全外連接實際是上左外連接和右外連接的數(shù)學(xué)合集(去掉重復(fù)),即“全外=左外UNION右外”。聯(lián)合連接(UNIONJOIN)找出全外連接和內(nèi)連接之間差異的所有行。4.4常用SQL函數(shù)與表達式4.4.1聚合函數(shù)AVG返回組中值的平均值??罩祵⒈缓雎?。語法AVG([ALL|DISTINCT]expression)COUNT返回組中項目的數(shù)量。語法COUNT({[ALL|DISTINCT]expression]|*})MAX返回表達式的最大值。語法MAX([ALL|DISTINCT]expression)MIN返回表達式的最小值。語法MIN([ALL|DISTINCT]expression)SUM返回表達式中所有值的和,或只返回DISTINCT值。SUM只能用于數(shù)字列??罩祵⒈缓雎浴UZ法SUM([ALL|DISTINCT]expression)4.4.2字符串函數(shù)(1)字符子串函數(shù)返回字符串的一部分語法:<charactersubstringfunction>::=SUBSTRING(<charactervalueexpression>FROM<startposition>[FOR<stringlength>])(2)字符整理函數(shù)去除尾端或首端的或是首端和尾端的整理字符。語法:trimfunction>::=TRIM(<trimoperands>)<trimoperands>::=[[<trimspecification>][<trimcharacter>]FROM]<trimsource><trimsource>::=<charactervalueexpression><trimspecification>::=LEADING|TRAILING|BOTH<trimcharacter>::=<charactervalueexpression>(3)對換函數(shù)將字母在大小寫之間進行轉(zhuǎn)換fold>::={UPPER|LOWER}(<charactervalueexpression>)(4)字符翻譯函
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國稀土冶煉分離市場運行動態(tài)及發(fā)展前景分析報告
- 2025甘肅省安全員考試題庫附答案
- 南京醫(yī)科大學(xué)《課程論文寫作與學(xué)術(shù)規(guī)范》2023-2024學(xué)年第二學(xué)期期末試卷
- 黔西南民族職業(yè)技術(shù)學(xué)院《外國建筑史》2023-2024學(xué)年第二學(xué)期期末試卷
- 青海交通職業(yè)技術(shù)學(xué)院《傳感檢測技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 天津商業(yè)大學(xué)《學(xué)術(shù)論文選題與寫作》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖北大學(xué)《財務(wù)會計一》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025上海市建筑安全員考試題庫及答案
- 西藏大學(xué)《軟件交互設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 做賬實操-駕校行業(yè)的賬務(wù)處理分錄
- 高中英語-Studying abroad教學(xué)課件設(shè)計
- 原材料取樣檢測安全操作規(guī)程
- 創(chuàng)新思維與方法(第2版)PPT全套完整教學(xué)課件
- (5.3.2)-2.2雜草的分類農(nóng)田雜草及防除學(xué)
- 人教部編道德與法治五年級下冊單元計劃
- 天津武清區(qū)事業(yè)單位考試真題2022
- 鐵路營業(yè)線施工安全管理培訓(xùn)課件
- 旅行社運營實務(wù)電子課件 1.2 了解旅行社核心業(yè)務(wù)部門
- 綜合交通運輸體系認(rèn)知
- GM/T 0115-2021信息系統(tǒng)密碼應(yīng)用測評要求
- YY 0670-2008無創(chuàng)自動測量血壓計
評論
0/150
提交評論