06版自考《數(shù)據(jù)庫及其應用》筆記(10)
附:函數(shù)及命令
函數(shù)P75 數(shù)值函數(shù)
1、絕對值 ABS(<數(shù)值表達式>) 2、取整 INT(<數(shù)值表達式>) 3、更大值MAX(N1,N2,…)4、更小值 MIN( N1,N2,…) 5、平方根SQRT(<數(shù)值表達式>) 6、EXP(<數(shù)值表達式>)=eX 7、LOG(<數(shù)值表達式>)=LnX
8、正弦 SIN(<數(shù)值表達式>) 9、余弦 COS(<數(shù)值表達式>) 10、正切 TAN(<數(shù)值表達式>) (*弧度表示)
11、0-1之間隨機數(shù) RAND([<數(shù)值表達式>])(數(shù)值表達式為負,從當前時鐘取種子數(shù))
12、四舍五入ROUND(<數(shù)值表達式1>,<保留位數(shù)>)*保留位數(shù)為負表示其絕對值為整數(shù)部分四舍五入的位數(shù)
字符串函數(shù)
1、字符串長度LEN(<字符表達式>)2、刪尾部空格TRIM(<字符表達式>)3、刪頭部空格LTRIM(<字符表達式>)
4、取子串SUBSTR(<字符表達式>,<從第幾個開始>,[<取幾個字符>]) 5、首字母大寫PROPER(<字符表達式>)
6、子字符串查找AT(<字符表達式1>,<字符表達式2>)返回式1在式2的開始位置,沒找到返回0,區(qū)分大小寫
7、子串替換STUFF(<字符表達式1>,<數(shù)值表達式1>,<數(shù)值表達式2>,<字符表達式2>)
8、大小變小寫LOWER(<字符表達式>)9、小寫變大寫UPPER(<字符表達式>)10、空格SPACE(<空格數(shù)量>)
11、字符串復制REPLICATE(<字符串>,<復制次數(shù)>)12、宏替換&<內(nèi)存變量>[,<字符串>]
日期和時間函數(shù)
1、取系統(tǒng)日期DATE() 2、取系統(tǒng)時間TIME()3、取年份YEAR(<日期表達式>)4、取日DAY(<日期表達式>)
5、取月份MONTH(<日期表達式>)6、日期格式轉換MDY(<日期表達式>)(月日年格式)
數(shù)據(jù)類型轉換函數(shù)
1、字符轉數(shù)值VAL(<字符表達式>)2、字符轉日期CTOD(<字符表達式>)
3、日期轉字符DTOC (<日期表達式>[,1])帶可選項“1”返回一個適于進行索引的日期字符串
4、數(shù)值轉字符STR(<數(shù)值表達式1>[,<返回字符串長度>[,<小數(shù)部分輸出位數(shù)>]])
測試函數(shù)
1、數(shù)據(jù)類型測試TYPE(<字符表達式>)2、測試文件尾EOF([<工作區(qū)號>|<文件別名>])
2、測試文件頭BOF([<工作區(qū)號>|<文件別名>])4、測試當前記錄號RECNO([<工作區(qū)號>|<文件別名>])
5、測試庫文件記錄數(shù)RECCOUNT([<工作區(qū)號>|<文件別名>])6、測試屏幕行列坐標ROW()、COL()
7、測試是否查找成功FOUND([<工作區(qū)號>|<文件別名>])8、測試打印頭坐標PROW()、PCOL()
數(shù)據(jù)庫基本*作
內(nèi)存變量賦值:1、store <表達式> to <內(nèi)存變量表>2、<內(nèi)存變量>=<表達式>
3、save screen to <屏幕型內(nèi)存變量> restore screen from <屏幕型內(nèi)存變量>
內(nèi)存變量釋放:1、release <內(nèi)存變量表> 2、release all [like|except<通配符>] 3、clear memory 4、clear all
內(nèi)存變量文件建立:save to <內(nèi)存變量文件名>[all [like|except<通配符>]]
內(nèi)存變量恢復:restore from <內(nèi)存變量文件名> [additive]無additive消除當前內(nèi)存中變量,有additive保留變量
內(nèi)存變量顯示:1、list memory [to print] 2、display memory [to print]
內(nèi)存變量輸出: ?|??[<表達式表>] ?從當前光標所在行的下一行第0列開始顯示,??從當前光標所在處開始顯示
數(shù)組定義:dimension|declare <數(shù)組名1>(<數(shù)值表達式1>[,<數(shù)值表達式2>])[,<數(shù)組名2>(<數(shù)值表達式3>[<數(shù)值表達式4>])]… 數(shù)組元素賦值:1、store <表達式> to <數(shù)組> 2、<數(shù)組>=<表達式>
數(shù)據(jù)庫文件記錄值傳送到數(shù)組scatter[fields<字段表>] to <數(shù)組> [blank] memvar [blank]
數(shù)組中的數(shù)據(jù)傳送到數(shù)據(jù)庫文件gather from<數(shù)組>| memvar [fields<字段表>]
建數(shù)據(jù)庫文件結構create[<文件名>|?] 追加記錄append[blank] 數(shù)據(jù)庫文件打開use[<庫文件名>|?][alias<別名>]
記錄顯示list | display[<范圍>][fields<字段名表>][for<條件>][while<條件>][off][to printer|file<文件名>]
范圍:record n第n條記錄*作,next n下n條記錄*作,all所有記錄*作,rest當前到文件結束所有記錄*作
off 不顯示記錄 關閉當前工作區(qū)數(shù)據(jù)庫use 關閉當前打開的所有數(shù)據(jù)庫 close databases關閉所有close all
關閉索引文件 close indexes 關閉格式文件 close format 關閉過程文件 close procedure
關閉后備文本文件 close alternate 顯示數(shù)據(jù)庫結構list|display structure[to printer|to file<文件名>]
修改庫結構 modify structure (生成。bak和。tbk文件,修改字段類型該字段數(shù)據(jù)丟失,不能同時修改字段名和寬度)
絕對移動go|goto[[record]<記錄號>|top|bottom][in <工作區(qū)號>|<文件別名>](第一個記錄:鍵值更小的記錄)
相對移動skip[<移動記錄數(shù)>][in <工作區(qū)號>|<文件別名>]插入記錄insert[before][blank]before:前,blank空
邏輯刪除delete[<范圍>][for<條件>][while<條件>] 恢復邏輯刪除recall[<范圍>][for<條件>][while<條件>]
物理刪除pack 物理刪除所有記錄zap 編輯修改edit|change[<范圍>][fields<字段名表>][for<條件>][while<條件>]
瀏覽編輯browse[<范圍>][fields<字段名表>][for<條件>][while<條件>][freeze<字段名>][noappend][nodelete]
[noedit][font<字體>[,<字號>] freeze<字段名>指定可修改的字段
替換修改replace[<范圍>]<字段1>with<表達式1>[,<字段2>with<表達式2>…] [for<條件>][while<條件>]
排序 /a升序/d降序/c不區(qū)分大小寫,關鍵字只能C、N、D型??砂嚓P聯(lián)工作區(qū)文件字段:別名->字段名
sort to<文件名>on<字段1>[/a][/c][/d][,<字段2>[/a][/c][/d]…][<范圍>][fields<字段表>][for<條件>][while<條件>]
index on<關鍵字表達式>to<索引文件名>[for<條件>][compact][unique][additive]多字段索引必須是C型。
compact壓縮 unique惟一性索引(若有多條記錄具有相同關鍵字表達式,索引文件只包含第一條記錄。Additive不關閉先前打開的索引,新建索引文件成為主索引。關閉索引文件1、set index to 2、close index
打開索引文件1、use<庫文件名>index<索引文件名表> 2、set index to<索引文件名表>
指定主索引set order to[<索引文件名表中的順序號>|<索引文件名>] 重建索引reindex[compact]
順序查詢locate[<范圍>][for<條件>][while<條件>]繼續(xù)查詢continue(locate中用while語句,continue無意義)
索引查詢find<字符串>|<數(shù)值常量>只能查字符串或數(shù)字字符串有前導空格須用引號,否則可不必使用定界符
seek<表達式> 按指定范圍統(tǒng)計滿足條件的記錄count[<范圍>][for<條件>][while<條件>][to<內(nèi)存變量名>]
求和:sum[<范圍>][<數(shù)值表達式>][for<條件>][while<條件>][to<內(nèi)存變量名表>|to array<數(shù)組>]
求平均值:average[<范圍>][<數(shù)值表達式>][for<條件>][while<條件>][to<內(nèi)存變量名表>|to array<數(shù)組>]
分類匯總:total on<關鍵字表達式>to<分類庫文件名>[<范圍>][fields<字段名表>][for<條件>][while<條件>]
庫文件復制:copy to<庫文件名>[<范圍>][fields<字段名表>][for<條件>][while<條件>]
庫結構復制:copy structure to<新庫文件名>[fields<字段名表>] 文件復制copy file<源文件名>to<目標文件名>
庫文件復制成文本數(shù)據(jù)文件:sdf復制成標準格式(各記錄定長,字符無分界符)delimited非標準格式數(shù)據(jù)文件,特點:各記錄不定長,每個記錄以回車換行為結束標志,字段值之間用逗號分開,字符型數(shù)據(jù)用雙引號括起來。
copy to<數(shù)據(jù)文件名>sdf|delimited[with<定界符>|blank][<范圍>][fields<字段名表>][for<條件>][while<條件>]
文本數(shù)據(jù)到庫文件:append from<數(shù)據(jù)文件名>sdf|delimited[with<定界符>|blank][for<條件>][fields<字段名表>]
選擇工作區(qū)select<工作區(qū)號>|<別名> 刪除關聯(lián)set relation to
建立文件關聯(lián)set relation to[<關鍵字表達式>|<數(shù)值表達式>into<工作區(qū)號>|<別名>][additive]
庫文件連接join with<別名>to<新庫文件名>[fields<字段名表>][for<條件>] 庫文件更新:
update on<關鍵字段>from<別名>replace<字段名1>with<表達式1>[,<字段名2>with<表達式2>…][random]
建立命令文件:modify command[<命令文件名>|?][in window<窗口名>|screen] 命令文件運行:do<命令文件名>
命令文件注釋:1、note<注釋>2、*<注釋>3、&&<注釋> 清屏命令:clear 返回命令return
accept[<字符表達式>]to<內(nèi)存變量>接受從鍵盤輸入的字符型數(shù)據(jù)。Input[<字符表達式>]to<內(nèi)存變量>接受從鍵盤輸入的數(shù)據(jù),wait[<字符表達式>][ to<內(nèi)存變量>][window[nowait][timeout<等待秒數(shù)>]等待一個字符。無字符表達式提示:press any key to continue.window使提示信息顯示在系統(tǒng)窗口中。
格式化輸出:@<行,列>say<表達式>[picture“[@功能符串][格式符串]”][font<字體>[,<字號>]]
格式化輸入:@<行,列>[say<表達式>]get<內(nèi)存變量>|<字段>[picture“[@功能符串][格式符串]”][range<上界>[,<下界>]][[open]window<窗口名>][enable|disable][valid<邏輯表達式1>][when<邏輯表達式2>]
window指定編輯備注字段窗口(窗口須事先定義)disable|enable是否允許存取該變量
valid檢查get數(shù)據(jù)正確性,只有邏輯表達式1為真時才能移到下一個get變量。
定義文本編輯區(qū):@<行,列>edit<內(nèi)存變量>size<行數(shù)>,<列數(shù)>font[<字體>[,<字號>]][scroll]
read[cycle][save]cycle定義一個循環(huán)read,可通過tab、enter回到第一個對象,save使對象能被以后的read編輯
功能符:! 小寫變大寫;B數(shù)值左對齊;D日期型按set date格式;E日期型按日/月/年;Z數(shù)值為0時顯示空格;$ 貨幣格式;只支持say:( 負數(shù)加括號; C正數(shù)后加CR;X負數(shù)后加DB.只支持get:A只允許字母字符;J字符右對齊;K光標移到變量時自動刪除原內(nèi)容;T刪除字符前后空格
格式符:X允許任何字符;#顯示正負號,只許數(shù)字、空格、正負號;!小寫變大寫;*第一個有效數(shù)字前0變*;
。 小數(shù)點位置;, 隔三位插,;只支持say:A數(shù)值型用A替換數(shù)字; Y邏輯型T變Y,F(xiàn)變N,數(shù)值型用Y替換數(shù)字; $數(shù)值型貨幣號,字符型$替代字符; 9字符型只許0-9; 只支持get:A只允許字母;L只允許邏輯型;N只允許字母和數(shù)字;9只允許數(shù)字、正負號;$第一個有效數(shù)字前0變$;
清整個屏幕:clear 清屏幕局部區(qū)域:@<行1,列1>[clear|clear to<行2,列2>]
分支語句:if<條件><命令序列1>[else<命令序列2>]endif 多分支選擇語句:do case case<條件1>
<命令序列1> case<條件2><命令序列2>…case<條件n><命令序列n>[otherwise<命令序列n+1>]endcase
while循環(huán)語句:do while<條件><命令序列1>[loop]<命令序列2>[exit]enddo
for(給定次數(shù))循環(huán)語句:for<循環(huán)變量>=<初值>to<終值>[step<步長>]<命令序列>[loop][exit]endfor
scan循環(huán):scan[<范圍>][for<條件>][while<條件>]<命令序列>[loop][exit]endscan
定義過程:procedure<過程名>[parameters<形參表>]<過程體>return[to master] 過程文件格式:procedure<過程名1><過程體1>return procedure<過程名2><過程體2>return…procedure<過程名n><過程體n>return
打開過程文件:set procedure to[<文件名>],關閉過程close procedure 調(diào)用過程do<過程名>[with<實參表>]
定義全局變量:public<內(nèi)存變量表>
隱藏指定內(nèi)存變量:1、private<內(nèi)存變量表>2、private all[like<通配符變量名>]|except<通配符變量名>]
自定義函數(shù):function<函數(shù)名>[parameters<形參表>]<函數(shù)體>return<表達式> 調(diào)用函數(shù):函數(shù)名([<實參表>])
定義窗口:define window<窗口名1>from<左上角行號,列號>to<右下角行號,列號>[double|panel|system|<border string>|shadow][in window <窗口名2>][title<標題>][font<字體>[,<字號>][close][float][grow][zoom][minimize]
邊框樣式double雙線、panel粗線、system模擬命令窗口、默認單線。border string字符串邊框,shadow陰影
in window定義在指定的父窗口內(nèi)[close關閉][float移動][grow改變大小][zoom更大化][minimize更小化]
激活窗口:activate window<窗口名1>|<all>in window<窗口名2>休眠窗口:deactivate window<窗口名>[all]
釋放窗口:release window<窗口名表> 顯示、隱去窗口show/hide window<窗口名表>|<all>
1、定義水平菜單:define menu<菜單名>[in window<窗口名>][key<熱鍵>]
2、定義菜單選項:define pad<選項名>of<菜單名>prompt<提示>[at<行,列>][key<熱鍵>]
3、設置菜單命令:on selection pad<選項名>of<菜單名><命令> 4、激活菜單:activate menu<菜單名>
5、定義彈出菜單:define popup<菜單名>[from<左上角行,列>]
6、定義菜單選項:define bar<選項號>of<菜單名>prompt<提示>[key<熱鍵>]
7、設置菜單命令:on selection bar<選項號>of<菜單名><命令> 8、激活菜單:activate popup<菜單名>
9、下拉菜單中定義PAD選中后執(zhí)行的彈出菜單:on pad<選項名>of<水平菜單名>activate popup<彈出菜單名>
10、二級彈出菜單:on selection bar<選項號>of<菜單名> activate popup<二級菜單名>
下拉菜單設計命令:1,2,9(3),5,6,7(10),4(彈出菜單已經(jīng)在水平菜單中激活)
建立create <menu|screen|report|project> <文件名>(菜單文件|屏幕文件|報表文件|項目文件)
修改modify <menu|screen|report|project> <文件名>(菜單文件|屏幕文件|報表文件|項目文件)
運行do <menu|screen|report|project> <文件名>(菜單文件|屏幕文件|報表文件|項目文件)
對象可以用show get <變量名>[enable|disable]激活或關閉 show gets<變量表>enable
設置參數(shù)值set<參數(shù)名>to<參數(shù)值> 設置狀態(tài)值:set<參數(shù)名>on|off
set print on(off)打印機邏輯開關 set deleted off(on)off時被邏輯刪除的記錄仍參與*作
set exact on(off)find查詢是否精確匹配 set development on(off) 是否自動重新編譯、替代目標文件
set talk on(off)命令執(zhí)行是否給出回應,set console on(off)非格式化輸入數(shù)據(jù)是否回顯
set device to screen(print|file<文件名>)設置輸出設備 set udfparms to [value|reference]設置傳遞方式
set default to<目錄>設置默認目錄 set sysmenu on(off)設置是否顯示系統(tǒng)菜單
SQL語言
建庫文件create table|dbf<庫文件名>(<字段名1><類型>[(<長度>[,<小數(shù)位>])][,<字段名2>…])|from array<數(shù)組>
建臨時庫文件create cursor<文件名>(<字段名1><類型>[(<長度>[,<小數(shù)位>])][,<字段名2>…])|from array<數(shù)組>
數(shù)據(jù)插入insert into<庫文件名>[(<字段名1>[,<字段名2>…])]value(<表達式1>[,<表達式2>…])
insert into<庫文件名>from array<數(shù)組>|from memory 數(shù)據(jù)刪除 delete from<庫文件名>where<條件>
數(shù)據(jù)修改update<庫文件名>set<字段名1>=<表達式1>[,<字段名2>=<表達式2>…][where<條件>]
數(shù)據(jù)查詢select[all | distinct][<別名>.]<檢索項>[,[<別名>.]<檢索項>…]from<庫文件名>[<別名>][,<庫文件名>]
[<別名>…][into<目標>]|[to file<文件名>[additive]|to printer|to screen][where<連接條件>[and<連接條件>]
[and|or<過濾條件>[ and|or<過濾條件>…]]][group by<分組列>[,<分組列>…]][having<過濾條件>]
[union[all]<select>][order by<排序項>[asc|desc][,<排序項>[asc|desc]…]]
distince:無重復的結果記錄。檢索項:主要是字段名,選中的字段可以和SQL函數(shù)一起使用
group by:將查詢結果按某一列(或多列)的值進行分組。having:只與group by配合使用,用于說明分組條件
union[all]<select>:將兩個查詢結果合并在一起輸出,無ALL重復記錄被自動取消,有all表示結果全部合并。



