Visual FoxPro是關系型數據庫管理系統的典型代表之一。
Visual FoxPro是一個可運行于Windows平臺之上的32位數據庫管理系統。
數據
:數據是指能被計算機存儲和處理、反映客觀事物的符號。數據處理
:數據處理是指對數據進行收集、存儲、分類、計算、統計、檢索及傳輸的過程。數據庫
:數據庫(DataBase,DB)是有組織的、可共享的相關數據的集合。數據庫管理系統
:(DataBase Management System,DBMS)是管理數據庫的軟件系統。功能是管理和維護數據。實體和實體集
:實體是現實世界中客觀存在并且可以互相區別的事物。實體集是同一類實體組成的集合。聯系的分類
:一對一關系、一對多關系、多對多關系。表格
:表格來管理數據,二維表反映事物之間的關系。數據類型
:層次模型、網狀模型、關系模型。關系模型
:關系模型是用二維表格的形式來表示實體與實體之間聯系的數據模型。數據庫類型
:層次數據庫、網狀數據庫、關系數據庫。?"How are you"&&在屏幕上顯示How are you 并換行??"How are you"&&在屏幕上顯示How are you 不換行clear&&清除屏幕顯示信息?date()&&屏幕上按"月/日/年"的格式顯示當前系統日期?time()&&顯示時間到秒use <表文件名>[in 工作區號][alias 別名]&&打開表create table|dbf <表文件名>(<字段名><類型>[寬度[,小數位]]) &&創建表help <幫助主題> &&獲取命令和楷書的幫助信息
運算符 | 名稱 | 運算符 | 名稱 |
---|---|---|---|
+ | 加法 | - | 減法 |
* | 乘法 | / | 除法 |
^或** | 乘方 | % | 求余 |
示例:?2+3&&屏幕上顯示5?2*3&&屏幕上顯示6?2**3&&屏幕上顯示8?2^3&&屏幕上顯示8?3-2&&屏幕上顯示1?6/2&&屏幕上顯示3?5%2&&屏幕上顯示1
運算符 | 名稱 | 運算符 | 名稱 |
---|---|---|---|
> | 大于 | >= | 大于等于 |
< | 小于 | <= | 小于等于 |
= | 等于 | == | 恒等于 |
<>或!=或# | 不等于 | $ | 包含于(僅用于字符) |
示例:?5>4&&屏幕顯示.T.?5<4&&屏幕顯示.F.?5=4&&屏幕顯示.F.?5<>4&&屏幕顯示.T.?5>=4&&屏幕顯示.T.?5<=4&&屏幕顯示.F.?7+8==3*5&&屏幕顯示.T.?"A">"B"&&屏幕顯示.F.根據比較ASCII碼?"am"$"I am a student."屏幕顯示.T.?"Am"$"I am a student."屏幕顯示.F.?Not 2>3&&屏幕顯示.T.?3>2 or 2>3&&屏幕顯示.T.?3>2 and 2>3&&屏幕顯示.F.?.T. > .F.&&屏幕顯示.T.
字符型:[China] 、'China'、"China" ;包括
數值型:56、56.5、-56 ;包括
日期型:{^2021/1/19}
邏輯性:.T. 、.F.
常量:常量是指值始終不變的量
變量:其值可以發生改變的量,一般分為字段變量和內存變量。字段變量是存儲在數據表中的量,內存變量是指存儲在內存中的變量。
內存變量用于在程序中臨時保存數據,將數據保存在內存中,使用變量前通常要先給變量賦值。
變量命名規則:
內存變量賦值
<內存變量名> = <表達式>
示例:XH = "FoxPro"&&將字符串FoxPro賦值給XH?XH&&屏幕顯示FoxProXH = 3*6&&將3*6的值賦值給XH?XH&&屏幕顯示18store "Hello" to a,b,c&&將字符串Hello同時賦值給a,b,c三個變量?a,b,c&&屏幕在同一行顯示三個Hello
顯示內存變量
display memory [like 變量通配名]
示例:display memory &&屏幕顯示所有用戶自定義變量
刪除內存變量
clear memory刪除所有用戶自定義內存變量
release <內存變量名> 刪除指定的用戶自定義內存變量
示例:store "Hello" to a,b,c&&將字符串Hello同時賦值給a,b,c三個變量?a,b,c&&屏幕在同一行顯示三個Hellorelease a,b&&將變量a,b刪除?a,b&&屏幕顯示找不到變量的出錯信息?c&&屏幕顯示Hello
一組變量名相同、使用下標來區別的內存變量就稱為數組。
數組由數組名和下標兩部分組成。數組名指定數組的名字,下標指定數組元素的個數。
數組名命名規則和變量名命名規則相同。
數組的下標從1開始
示例:ZH(4)&&數組名為ZH,下標為4,一維數組ST(3,5)&&數組名為ST,下標為3和5,二維數組
定義和顯示數組:數組通常先定義再賦值
declare <數組名> (行[,列])[,數組名2(行)[,列]]
示例:dimension a(5)&&定義a數組長度為5declare ZH(4),ST(3,5)&&定義ZH長度為4,ST長度為15的兩個數組ZH = "FoxPro"&&給數組ZH里的所有元素賦相同的值"FoxPro"ZH(1) = "王公子" &&將ZH數組的第一個元素賦值"王公子"字符串?ZH(1)&&屏幕顯示王公子ST(1,2) = "Java"&&將ST數組的第一行第二列的元素賦值為Java?ST(1,2)&&屏幕顯示Java
數組的刪除:刪除數組可以使用刪除內存變量的命令,但這個命令只能刪除整個數組
示例:release ZH&&刪除ZH數組
示例:1、取整函數:int?int(12.56)&&屏幕顯示:12?int(-12.56)&&屏幕顯示:-122、四舍五入函數:round?round(12.345,1)&&保留一位小數,屏幕顯示:12.3?round(12.345,2)&&保留兩位小數,屏幕顯示:12.353、平方根函數sqrt?sqrt(81)&&屏幕顯示81的算術平方根:9.00?sqrt(-81)&&屏幕顯示出錯信息4、日期和時間函數?date()&&屏幕顯示當前系統日期?year(date())&&屏幕顯示當前系統日期的年份?month(date())&&屏幕顯示當前系統日期的月份?day(date())&&屏幕顯示當期系統日期的日數值?time()&&屏幕顯示當前系統時間5、space空格函數?"姓名"&&屏幕從第1列顯示:姓名?space(20)+"姓名" &&屏幕從第21列開始顯示:姓名6、去空格函數?ltrim(space(4)+"姓名 ")&&屏幕顯示:姓名 班級?rtrim(space(4)+"姓名 ")&&屏幕顯示: 姓名班級?alltrim(space(4)+"姓名 ")&&屏幕顯示:姓名班級7、截取字符串函數?right("xsda.dbf",3)&&屏幕顯示:dbf?left("xsda.dbf",4)&&屏幕顯示:xsda?substr("數據庫管理系統",7,4) &&屏幕顯示:管理(說明:一個漢字占兩個字節)8、測試函數?len(space(20))&&屏幕顯示字符串長度:20?type("date()")&&屏幕顯示date函數的數據類型:D?vartype(date())&&屏幕顯示date函數的數據類型:D?empty(" ")&&屏幕顯示:.T.?between(5,6,10)&&屏幕顯示:.F.(5不在6-10之間)9、數字轉換為字符串返回值?str(1357.246,6,2)&&屏幕顯示轉換后的字符串:1357.2?str(1357.246)&&屏幕顯示轉換后的字符串:135710、字符串轉換為數值函數?val("246xs36")&&屏幕顯示轉換后的數值:246.00?val("XS246")&&屏幕顯示轉換后的數值:0.0011、日期轉換為字符串函數DTOC?dtoc({^1997/10/5})&&屏幕顯示轉換后的字符串:10/25/97?dtoc({^1997/10/25},1)&&屏幕顯示轉換后的字符串:19971025?ctod("1/19/2021")&&屏幕顯示轉換后的日期1/19/21,類型為日期函數12、大小寫字母轉換函數?upper("foxPro")&&屏幕顯示轉換為大寫字母的結果:FOXPRO?lower("FoxPro")&&屏幕顯示轉換為小寫字母的結果:foxpro13、字符串轉換為ASCII碼函數的返回值?asc("A")&&屏幕顯示:65?asc("a")&&屏幕顯示:97?chr(97)&&屏幕顯示a,將數組轉換為對應的ascii碼值14、絕對值函數abs?abs(-7)&&屏幕顯示:715、自然對數函數log?log(數值表達式)16、最值函數,如果是字符則比較的是字符的ascii的值?max(1,2,3,4,5,6)&&屏幕顯示6(max函數求最大值)?min(1,2,3,4,5,6)&&屏幕顯示1(min函數求最小值)
文件類型 | 拓展名 | 文件類型 | 拓展名 |
---|---|---|---|
表文件 | .dbf | 表備注文件 | .fpt |
報表文件 | .frx | 報表備注文件 | .frt |
標簽文件 | .lbx | 標簽備注文件 | .lbt |
表單文件 | .scx | 表單備注文件 | .sct |
數據庫文件 | .dbc | 復合索引文件 | .cdx |
項目文件 | .pjx | 項目備注文件 | .pjt |
文本文件 | .txt | 屏幕格式文件 | .fmt |
查詢程序文件 | .qpr | 程序文件 | .prg |
應用程序文件 | .app | 可執行文件 | .exe |
菜單格式文件 | .mnx | 菜單備注文件 | .mnt |
菜單程序文件 | .mpr | 內存變量文件 | .mem |
創建表的命令
create <表文件名>
命令功能:打開表設計器新建一個Visual FoxPro表。
參數說明:“表文件名”指定要創建的表的文件名,其中可以包含路徑。
實例create 學生檔案&&創建一個學生檔案表create D:\VFP\學生檔案 &&在D\VFP目錄下創建一個學生檔案表
創建表的SQL語句
create table | dbf <表文件名>(<字段名><類型>[(寬度[,小數位數])])
命令功能:新建一個Visual FoxPro表。
參數說明:表文件名指定要創建的表的文件名,可以包含路徑。
實例create table 學生(姓名 C(20),總分 N(5,2))
復制表的命令
copy to <表文件名> [fields 字段列表] [for 條件]
命令功能:復制當前表的數據創建一個新表。
參數說明:
實例use 學生copy to 學生成績 fields 姓名,總分 for 性別="男"
復制表結構
copy structure to <表文件名> [fields 字段列表]
命令功能:復制當前表的機構創建一個新表。
參數說明:
實例use 學生copy structure to 學生1 fields 姓名,總分
創建數據庫
create database <數據庫名>
命令功能:創建一個數據庫。
參數說明:庫名可以包含路徑
實例create database 學生信息
打開數據庫
open database <數據庫名>
命令功能:打開指定的數據庫。
參數說明:庫名可以包含路徑
實例open database 學生信息
設置當前數據庫
set database to <數據庫名>
命令功能:設置某個打開的數據庫為當前數據庫。
參數說明:
設置數據庫前必須先打開數據庫,如果打開數據庫,那么這個數據庫默認為當前數據庫。
實例open database 學生信息open database 學生檔案set database to 學生信息
關閉數據庫
close database
命令功能:關閉當前數據庫。
參數說明:若不是當前數據庫需要設置為當前數據庫。
實例open database 學生信息close database
關閉所有打開的文件
close all
命令功能:關閉所有打開的文件,也包含數據庫。
實例open database 學生信息close all
工作區—> 選擇當前工作區
select <工作區號>|<別名>
命令功能:選擇指定的工作區為當前工作區
參數說明:
1~10工作區號可以用A-J代替
select 0 該命令是選擇當前沒有使用的工作區號最小工作區作為當前工作區
實例select 1select A
打開表
use <表文件名> [in 工作區號] [alias 別名]
命令功能:在指定工作區上打開指定的表文件。
參數說明:
實例use 學生信息 in 1|A alias xsxx &&在1號工作區打開學生信息表,表的別名為xsxxselect xsxx&&表示使用別名選中1號工作區
關閉表
use [in 工作區號 | 別名]
命令功能:關閉指定工作區上打開的表。
參數說明:“ in 工作區 | 別名 ” ,關閉指定工作區上打開的表。若不寫則關閉當前表。
實例use&&關閉當前工作區打開的表use in 5 &&關閉5號工作區打開的表
顯示表結構
display structure
命令功能:顯示當前表結構。
實例use 學生信息display structure
修改表結構
modify structure
命令功能:打開表設計器修改當前表結構。
實例use 學生信息modify structure
瀏覽數據
browse [fields 字段列表] [for 條件] [freeze 字段名] [lock 鎖定字段名] [noappend] [nodelete] [noedit]
命令功能:打開窗口瀏覽/編輯當前表的數據。
參數說明:
實例list offbrowse fields 學號,姓名,年齡,性別 for 年齡>=18 freeze 姓名 lock 1
移動指針記錄—>絕對移動指針記錄
go top | bottom | 記錄號
命令功能:移動當前表的記錄指針。
參數說明:“ go top ” 指針移到第一條記錄,“ go bottom” 指針移到最后一條記錄,“ go 5 ” 指針移到第五條記錄
移動指針記錄—>相對移動指針記錄
skip [記錄數]
命令功能:以當前記錄為基準,移動當前表的記錄指針。
參數說明:選擇 “ 記錄數 ” ,指定記錄指針需要移動的記錄數,若記錄數為正則向下移動,若為負則向上移動,若不寫則移動一條記錄
實例skip -1 &&指針向上移動一條記錄skip 4&&指針向下移動四條記錄skip &&指針向下移動一條記錄
測試記錄函數
recno()
命令功能:返回當前表的當前記錄號。如果當前工作區沒有打開表,則函數返回0。
返回值類型:數值型。
實例use 學生信息go 5?recno()&&屏幕顯示5
測試記錄總數函數
reccount()
函數功能:返回當前表的記錄總數。
返回值類:型數值型。
實例use 學生檔案&&這張表有12條記錄?reccount()&&屏幕顯示12
顯示數據
display [all] [fields 字段列表]
命令功能:顯示當前表的數據。
參數說明:
實例use 學生成績display all fields 學號,姓名,總分
追加記錄
append [blank]
命令功能:在當前表的末尾追加記錄。
參數說明:選擇 “ blank ” ,追加一條空記錄,若不寫則進入追加記錄方式,允許追加多條記錄。
實例use 學生檔案append
從表文件追加記錄
append from <表文件名> [fields 字段列表] [for 條件]
命令功能:把指定表文件中的記錄追加到當前表。
參數說明:
實例use 學生檔案append from 學生檔案2 fields 學號,姓名,年齡,成績 for 等級="優秀"
邏輯刪除記錄
delete [all] [for 條件]
命令功能:邏輯刪除當前表中的指定記錄。
參數說明:選擇“all” 而不選擇“for”,將邏輯刪除所有記錄,選擇“for”將刪除滿足條件的所有記錄,兩者都不寫則只邏輯刪除當前記錄。
實例use 學生檔案delete for 年齡<=18 &&邏輯刪除年齡小于等于18歲的所有記錄
測試邏輯刪除
delete()
函數功能:如果記錄有刪除標記,返回邏輯真值,否則,返回邏輯假值。
返回值類型:邏輯型。
實例use 學生檔案delete for 年齡<=18?delete()&&屏幕顯示 .T.
撤回邏輯刪除
recall [all] [for 條件]
命令功能:撤回當前表中的邏輯刪除。
參數說明:選擇“all” 而不選擇“for”,將撤回邏輯刪除所有記錄,選擇“for”將撤回邏輯刪除滿足條件的所有記錄,兩者都不寫則只撤回邏輯刪除當前記錄。
物理刪除
pack
命令功能:物理刪除當前表中已被邏輯刪除的記錄
zap
命令功能:物理刪除當前表中的所有記錄
說明:使用物理刪除記錄時,通常先給自己記錄添加刪除標記,經檢查無誤后,再進行物理刪除。
更新數據
replace <字段名> with <表達式1>[,<字段名2> with <表達式2>…] [all] [for 條件]
命令功能:成批替換當前表的數據。
參數說明:
實例use 學生檔案replace 班級 with "18級軟工3班" all
創建索引
index on <關鍵字> tag <索引名> [of 復合索引文件名] [for 條件] [descending]
命令功能:為當前表創建一個索引。
參數說明:
實例use 學生檔案index on 入學成績 tag 成績1 for 班級="計算機01" descending
打開索引文件
set index to [索引文件列表]
命令功能:打開當前表的索引文件。
參數說明:選擇 “ 索引文件列表 ” ,指定打開的索引文件,其中兩個文件名之間用逗號分隔。若不寫則關閉當前表除結構索引外的其他打開的索引文件。
指定當前索引
set order to <索引名> [of 索引文件名]
命令功能:指定當前表的當前索引。
參數說明:選擇 “ of 索引文件名 ” ,指定該索引文件中的所用為當前索引,若不寫則指定結構索引文件中的索引為當前索引。
實例use 學生檔案&&在當前工作區打開學生檔案表set order to 年齡 &&指定結構索引文件中的入學成績為當前索引browse &&按當前索引指定的順序瀏覽數據
維護索引
reindex
命令功能:對當前表的所有打開的索引文件重新索引。
使用說明:仙子啊當前工作區打開表文件和需要維護的索引文件,再執行該命令,當前表所有打開的索引文件中都將被重新建立。
檢索數據
locate for <條件>
命令功能:在當前表中查找滿足條件的第一條記錄。
參數說明:“ 條件 ” ,是一個邏輯表達式,它用于指定記錄滿足的條件。
實例use 學生檔案locate for 學號="1001"display&&顯示查詢到的數據
繼續檢索
contiune
命令功能:在當前表中繼續查找滿足條件的下一條記錄。
實例use 學生檔案locate for 年齡>=17displaycontinuedisplay……
測試檢索函數
found()
函數功能:測試檢索數據是否成功的函數。若檢索成功則返回邏輯真,否則返回邏輯假。
返回值類型:邏輯性。
測試指針是否在文件尾
eof()
函數功能:測試記錄是否在文件尾的函數。若在文件尾則返回邏輯真,否則返回邏輯假。
返回值類型:邏輯性。
求和命令
sum [表達式列表] [for條件]
命令功能:計算當前表中指定數值型字段數據之和。
參數說明:
實例use 學生成績sum 語文
求平均值命令
average [表達式列表] [for 條件]
命令功能:計算當前表中指定數值型字段數據的算術平均值。
參數說明:與sum相同。
實例use 學生成績average(數學)
SQL語言包括以下四個部分:
本記主要學習數據操作語言
、數據查詢語言、數據定義語言
。
添加數據
insert into <表文件名>(字段1,字段2……) values(值1,值2……)
SQL功能:向數據表中添加一條記錄。
insert into <表文件名>(字段1,字段2……) values(值1,值2……),(值1,值2……),(值1,值2……),……
命令功能:向數據表中添加n條記錄。
參數說明:字段和值要一 一對應,字段類型和值類型也要一 一對應。
實例insert into 學生檔案(學號,姓名,總成績) values('1001','韓信',686)
刪除數據
delete from <表文件名> [where 條件]
SQL功能:按條件刪除記錄。
參數說明:若寫where條件則按條件進行刪除記錄,若不寫則刪除表中所有記錄。
實例delete from 學生檔案 where 年齡>20-- 刪除學生檔案 表中年齡所欲大于20歲的記錄delete from 學生檔案 -- 刪除學生檔案 表中所有記錄
修改數據
update <表文件名> set 字段名1=新值1,字段名2=新值2,… [where 條件]
SQL功能:根據條件修改表中記錄的值。
參數說明:字段名要和值一 一對應,且最少有一對,寫where條件則根據條件對滿足條件的所有記錄進行數據修改,若不寫where條件,則修改表中所有數據。
實例update 學生檔案 set 學號="1002",姓名="葉總" where 學號="1003"-- 將原來學號為1003的學生修改學號為1002且姓名為葉總update 學生檔案 set 性別="男" -- 將學生檔案表的所有記錄的性別都修改為男
單表查詢
select 字段列表 from <表文件名> []
SQL功能:查詢表文件指定字段的所有記錄。
參數說明:字段列表若寫成 * 則代表所有字段
。
實例select * from 學生檔案-- 查詢學生檔案所有信息select 學號,姓名 -- 查詢學生檔案所有信息,但只包含學號和姓名字段
單表條件查詢
select 字段列表 from <表文件名> where 條件
SQL功能:根據where條件查詢數據
參數說明:where條件可以是and或or
實例select * from 學生檔案 where 學號="1001"-- 查詢學號為1001的記錄select * from 學生檔案 where 班級="18軟工3班" and 姓名="李白"-- 查詢班級為18軟工三班并且姓名為李白的記錄select * from 學生檔案 where 班級="18軟工3版" or 姓名="廉頗"-- 查詢班級為18軟工三班或者姓名為李白的記錄
表別名和字段別名
select 字段 as 字段別名, 字段 as 字段別名,…… from <表文件名> as 表文件名的別名
SQL功能:為字段和表起別名
參數說明:as 為別名關鍵字,可以省略不寫,中間留出空格即可。
實例select 成績 as 學生成績 from 學生成績 as xscj-- ==========等價于==========select 成績 學生成績 from 學生成績 xscj
模糊查詢
select 字段列表 from <表文件名> where 字符名 like “%值%”
SQL功能:根據條件進行模糊查詢。
參數說明:%為占位符。
實例select * from 學生檔案 where 姓名 like "%白%"-- 查詢所有名字中帶白的記錄select * from 學生檔案 where 姓名 like "李%" -- 查詢所有以李字開頭的記錄
聚合函數
SUM、AVG、COUNT、MIN、MAX
函數功能:對數值型字段進行統計總和、計算平均值、計算總條數、求最小值、求最大值
參數說明:
實例select sum(年齡) from 學生檔案-- 求年齡字段的總累加值select avg(年齡) from 學生檔案-- 求年齡字段的平均值select count(學號) from 學生檔案-- 求總共有多少個學號select min(語文成績) from 學生檔案 -- 求語文成績最低的記錄select max(英語成績) from 學生檔案 -- 求英語成績最高的記錄
去重查詢
distinct(字段名)
函數功能:給指定的字段去重查詢,查詢出來的每條數據對于指定的字段不會有重復的數據。
實例select distinct(地區) from 學生信息-- 根據地區字段進行去重查詢,查詢出來的每條數據不會有重復的地區名稱
分組查詢
group by [having 條件]
SQL功能:對數據進行分組
參數說明:having 條件可以不寫
需求:查詢18級軟工3班男生和女生的平均年齡分別是多少?select 性別,avg(年齡) from 學生檔案 group by 性別 having 班級="18級軟工3班"
having 和 where 的區別
:
多表查詢
[數據庫名 !]<表名> [inner | left | right | full] join [數據庫名 !]<表名>[on 鏈接條件]
SQL功能:使多表之間進行聯查。
參數說明:
on 鏈接條件指表與表之間的連接條件,鏈接條件是一個邏輯表達式。
鏈接類型:
選項 | 名稱 | 說明 |
---|---|---|
inner | 內部鏈接 | 只返回完全滿足鏈接條件的記錄 |
left | 左鏈接 | 返回join左側中的所有記錄及右側表中匹配的記錄 |
right | 右鏈接 | 返回join右側中的所有記錄及左側表中匹配的記錄 |
full | 完全鏈接 | 返回兩個表中的匹配和不匹配的所有記錄 |
實例select * from xsgl!xsda inner join xsgl!xscj on xsda.id = xscj.id-- xsda表和xscj表的鏈接
嵌套查詢
select 字段列表 from 表名 where 條件
命令功能:嵌套查詢語句,條件可以是查詢語句,但值必須是唯一的。
實例select * from xsda where 年齡>(select avg(年齡) from xsda)-- 查詢年齡比平均年齡高的記錄
刪除表
drop table <表文件名>
SQL功能:刪除表文件及所有數據
實例drop table 學生檔案-- 刪除學生檔案這個表文件及所有數據 -- 溫馨提示:數據無價,謹慎操作!
刪除數據庫
delete database <數據庫名>
SQL功能:刪除數據庫文件。
添加自由表到數據庫中
add table <表名>
SQL功能:添加自由表到數據庫中。
將表移出
remove table <表名>
SQL功能:將表從數據庫中移出。
修改表名
alter table <新表名>
SQL功能:修改表名。
修改字段列名稱
alter table <表名> rename 字段名 to 新字段名
SQL功能:修改字段列名稱。
添加字段
alter table <表名> add 字段名 類型(長度)
SQL功能:從表中添加字段。
刪除字段
alter table <表名> drop 字段名
SQL功能:刪除表中的字段。
復制表
copy files 表1.* to 表2.*
SQL功能:復制表到一個新的表。其中不要打開被復制的表。
顯示文件內容
type 文件名.后綴名
命令功能:顯示文件信息。
創建查詢
create query
命令功能:創建一個查詢文件,打開查詢對話框。
運行查詢
do <查詢文件名>
命令功能:運行查詢文件。查詢文件名可以包含路徑名。
打開查詢文件
modify query <查詢文件名>
命令功能:修改查詢文件。查詢文件名可以包含路徑名。
查詢去向
[into 目標 | to file 文件名 [additive] | to printer | to screen]
命令功能:將查詢結果輸出到具體對象。
參數說明:
to file,將指定查詢結果輸出到文本文件中。選擇additive,查詢結果追加到文件尾,否則將覆蓋原來的內容。
to printer,將指定查詢結果輸送到打印機輸出。
to screen,將指定查詢結果顯示到屏幕上。
into 目標,將指定查詢結果輸出到表文件或數組中。
選項 | 意義 |
---|---|
cursor 表文件名 | 將查詢結結果保存到一個只讀的臨時表中 |
dbf 表文件名 | 將查詢結果保存到一個表文件中 |
array 數組名 | 將查詢結果保存到二維數組中 |
實例select 學號,姓名,成績,年齡,班級 from xsda into dbf xsxx-- 將查詢結果保存到xsxx表中select 學號,姓名,成績,年齡,班級 from xsda into cursor xsxx -- 將查詢結果保存到xsxx一個臨時的只讀表中select 學號,姓名,成績,年齡,班級 from xsda into array xsxx -- 將查詢結果保存到一個名為xsxx的二位數組中select 學號,姓名,成績,年齡,班級 from xsda to file xsxx -- 將查詢結果保存到名為xsxx的文本文檔中select 學號,姓名,成績,年齡,班級 from xsda to printer -- 將查詢結果送打印機輸出select 學號,姓名,成績,年齡,班級 from xsda to screen -- 將查詢結果打印在屏幕上
創建和運行本地視圖
create view <視圖名> as <查詢語句>
命令功能:為當前數據庫創建視圖
參數說明:查詢語句是指SQL查詢語句,該查詢語句指定視圖顯示的數據。
實例open database xsglcreate view xsxx_v as select 學號,姓名,年齡,班級 from xsxx
do 視圖名
命令功能:運行指定的視圖
參數說明:視圖名是指已經創建好的視圖
實例do xsxx_v
刪除視圖的SQL命令
drop view <視圖名>
SQL功能:刪除指定的視圖。
使用命令新建報表
create retport <報表文件名>
命令功能:新建一個空白報表。
參數說明:“報表文件名”指要創建的報表文件名,可以包含路徑。
create report E:\VFP\xsda_r
打開報表文件
modify report <報表文件名>
命令功能:打開指定的報表文件。
參數說說明:報表文件名可以包含路徑。
創建與運行程序
modify command <程序文件名>
命令功能:啟動文本編輯器創建和編輯程序文件。
參數說明:程序文件名指定要創建的文件名,可以包含路徑。
do <程序文件名>
命令功能:運行程序。
參數說明:程序文件名指定要運行的文件名,可以包含路徑。
清屏命令
clear
命令功能:清除屏幕上的顯示信息。
簡單輸入輸出命令
accept [提示信息] to <內存變量>
命令功能:把用戶輸入的字符串保存到指定的內存變量。
參數說明:提示信息是一個字符型表達式,選擇該項則顯示要提示的信息,若不寫則不提示。
accept "請輸入你的姓名:" to name
input [提示信息] to <內存變量>
命令功能:把用戶輸入的表達式的值保存到指定的內存變量。
參數說明:提示信息是一個字符型表達式,選擇該項則顯示要提示的信息,若不寫則不提示。
input "請輸入你的成績:" to score
wait [提示信息] [to 內存變量] [window] [timeout 時間]
命令功能:等待用戶輸入一個字符。
參數說明:
wait "請輸入(Y/N)" to msg window timeout 5
格式化輸入輸出命令
@<行,列> say <顯示信息> [字體屬性]
命令功能:在指定位置輸出顯示信息。
參數說明:
@ 1,10 say "學生檔案" font "隸書",20&&在屏幕第一行第10列開始處打印"學生檔案"并且設置字體為隸書,字號20
@ <行,列> say <顯示信息> get <變量>
命令功能:在指定位置輸入數據,并把輸入的數據保存在指定的變量
參數說明:
x = "Hello"@1,10 say "學生檔案" get x
測試行、列函數
row()
函數功能:返回當前光標的行坐標。
返回值類型:數值型。
?row()&&屏幕顯示當前光標的行號
col()
函數功能:返回當前光標的列坐標。
返回值類型:數值型。
?col()&&屏幕顯示當前光標的列號
設置程序運行環境
set talk on | off
命令功能:設置是否顯示某些命令執行的結果。選擇on則顯示執行的結果,選擇off反之亦然。
set talk off……set talk on
set safety on | off
命令功能:設置刪除文件數據時是否顯示提示信息。選擇on顯示提示信息,選擇off反之亦然。
set safety off……set safety on
clear all
命令功能:清除用戶自定義內存變量和對象
雙分支結構
if <條件>
?<語劇組1>
else
?<語句組2>
endif
參數說明:條件為邏輯性值,語句組是由Visual FoxPro的程序語句組成。
執行流程:如果滿足條件則執行語句組1然后結束,若不滿足條件則執行語句組2然后結束。
if 3>2 ?"真"else ?"假"endif&&屏幕上將打印"真"
多分枝結構
do case
?case <條件1>
?<語句組1>
?case <條件2>
?<語句組2>
?……
?[otherwise
?<語句組>]
endcase
參數說明:
程序流程:程序從第一個條件開始執行,若滿足條件則執行當前條件下的語句組然后結束程序,若不滿足則繼續匹配滿足條件的分支然后執行當前分支下的語句組然后結束程序。若選擇了otherwise當條件都不滿足時則執行otherwise語句組然后結束程序。
do casecase 1>1?"錯"case 1<2?"對"otherwise?"不知道"endcase&&屏幕將打印"對"
基于條件的循環
do while <條件>
?<語句組>
enddo
參數說明:
執行流程:只要條件的邏輯值為.T.則一直執行循環體。
do while .T.?"Hello"enddo&&死循環,屏幕將一直打印"Hello"
針對記錄的循環
scan [for條件]
?<語句組>
endscan
參數說明:
use 學生檔案scan for 班級 = "18級軟工1班"?學號endscan
指定次數的循環
for <變量>=<初值> to <終值> [step 步長]
?<語句組>
endfor
參數說明:
for n = 1 to 10??nendfor&&屏幕將打印12346789&&-----------------------------for n = 1 to 10 step 2??nendfor&&屏幕將打印13579
loop
命令功能:終止本次循環執行下一次循環。
for n = 1 to 10if n%2=0loopendif??nendfor&&屏幕將打印13579
exit
命令功能:終止當前循環結構執行循環結構后面的語句。
for n = 1 to 10if n%2=0exitendif??nendfor&&屏幕不會打印任何內容
定義過程
procedure <過程名>
?<語句組>
endproc
參數說明:“過程名”指定過程的名字,過程的命名規則與變量的命名規則相同。
procedure totalCicle?"Hello"endproc
打開與關閉過程文件
set procedure to [過程文件名]
參數說明:選擇”過程文件名“,打開指定的過程文件,若不寫則關閉已經打開的過程文件。
set procedure to totalCicle
傳遞參數命令
do <程序名 | 過程名> [with 參數列表]
命令功能:調用指定的程序,并把指定的參數傳遞給調用的下級程序
參數說明:選擇 with 參數列表,將把指定的參數傳遞給調用的子程序或過程,若不寫則不傳遞參數,參數可以是變量、常量、表達式。
do totalCicle with 5
接收參數的命令
parameters <參數表>
命令功能:接收上級程序傳遞來的參數。
參數說明:”參數表“中的參數只能是變量名,并且參數的個數要與do 命令傳遞參數的數目相同。
注意:接收參數命令必須是子程序或過程的第一條可執行程序。
parameters n,m
過程的實際應用
set talk offclearinput "請輸入圓的半徑:" to rdo totalCicle with r*定義的過程procedure totalCicleparameters rs = 3.14 * r^2?sset talk on
自定義函數
function 函數名
[parameter 參數名]
[return 表達式]
endfunc
函數功能:作用和過程一樣.
參數說明:
set talk offclear?totolsum(5)&&調用函數&&自定義函數function totolsumparameter XP = 1for n = 1 to XP=P+nendforreturn Pendfuncset talk off$$屏幕將打印16
創建表單
create form <表單文件名>
命令功能:創建一個空白表單。
create form E:\VFP\表單1
運行表單
do form <表單文件名>
命令功能:運行指定的表單。
do form E:\VFP\表單1
打開表單
modify form <表單文件名>
命令功能:打開指定的表單
modify form E:\VFP\表單1
表單常用命令
thisform.refresh&&刷新表單thisform.release&&釋放并關閉表單,從內存中清除表單
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
首信諾基亞是什么意思?首信諾基亞是由北京首信股份有限公司在諾基亞設立的合資公司,現變更為諾基亞首信通信有限公司諾基亞首都通信有限公司(簡稱NCT)隸屬于諾基亞()投資有限公司,總部位于北京經濟技術開發區。新公司是在北京首信諾基亞移動通信有限公司的基礎上吸收合并而成.原合資公司北京諾基亞邢航通信系統有限公司、諾基亞(蘇州)電信有限公司和東莞諾基亞移動電話有限公司將成為新公司在北京、蘇州和東莞的分公司...
K967列車一個車廂有幾個軟臥?K967次列車一節車廂有36個軟臥。K967次列車是北京至張家界西的空調特快列車。全程1664公里,運營時間25小時13分鐘。有北京站、涿州站、高碑店站、徐水站、保定站、定州站、石家莊站、邢臺站、邯鄲站、安陽站、鶴壁站、新鄉站、鄭州站、許昌站、臨潁站、西平站、駐馬店站、信陽站、廣水站、武昌站、岳陽站、長沙站、益陽站、常德站。北京到常德火車29日K967什么時候發售?...
什么品牌的激光測距儀好?1、國產品牌萊卡鏡頭,d210,x835,d510等倍加福,cr5,crI,afE等2、外國品牌Laitz徠茲24-70mm40,stf60,24-70mm100BERKKA鉑卡k1,k5,d901、品牌中通常和質量利益掛鉤的。去選擇什么樣的好品質,就會有相同的品牌產品車型匹配,所以要看您去選擇什么樣的產品品質的激光測距儀了,進口的以及質量好和價格也高。2、國產的有的品牌中...