第03章表的使用_第1頁
第03章表的使用_第2頁
第03章表的使用_第3頁
第03章表的使用_第4頁
第03章表的使用_第5頁
已閱讀5頁,還剩52頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1第三章

表的使用★2本章要點(1):掌握表的概念、組成和分類;★掌握用表設計器創建和修改表結構的方法及其相關的SQL命令;★掌握表記錄的追加、瀏覽、定位、修改、刪除和篩選的操作;★掌握追加、刪除、更新記錄的SQL命令;★掌握表的打開和關閉方法,掌握工作區和當前工作區的概念;3本章要點(2):★掌握表的索引的概念,索引的類型,結構復合索引文件的創建,修改和使用。★掌握表之間的關系及其種類,掌握表的關聯及其建立和解除的方法;掌握表的數據緩沖訪問的概念、數據緩沖的類型和設置數據緩沖的方法;4目錄3.1

表結構的創建和使用3.2

表記錄的編輯修改3.3

表的使用3.4表的索引3.5建立表之間的臨時關系5表的概念以文件形式存儲在磁盤上的一張二維表。擴展名:.dbf列:字段(Field),描述數據的某個特征; 行:記錄(Record),多個字段的集合表結構:存儲表記錄的一個公共的結構3.1表結構的創建和使用63.1.1字段的基本屬性

一、字段名:可以用中文字符,為了操作方便,建議使用英文。二、字段的數據類型(Type):(見書P.55表3-1)三、字段寬度(Width):字段容納數據的最大字節數備注型、通用型:4字節貨幣型、日期型、日期時間型、雙精度型:8字節邏輯型:1字節四、小數位數:針對數值型、浮點型和雙精度型字段五、空值(NULL):表示字段中“沒有值”或沒有確定值空值不等同于數值0、空字符串、或邏輯假(.F.)73.1.2創建新表表結構的創建方式:1、表設計器2、SQL命令用CREATETABLE-SQL命令:CREATETABLE|DBF表文件名;(字段名1類型(寬度,小數位數),字段名2類型(寬度…)…)

createtablestu1(smc(8),mathn(5,1))3、使用NULL值在CREATETABLE命令中使用NULL和NOTNULL子句

createtablestu1(smc(8)NULL,mathn(5,1))

表示字段sm接受NULL值8如:creattablestu1(smc(8),mathn(5,1))usestu1modistru93.1.3修改表結構★一、用表設計器修改

MODIFYSTRUCTURE二、用ALTERTABLE-SQL名令修改添加字段

ALTERTABLEstu1ADDCOLUMNxhC(8)重命名字段

ALTERTABLEXSRENAMECOLUMNBJMCTOBJ刪除字段

ALTERTABLEXSDROPCOLUMNBJ修改表的字段寬度

ALTERTABLEXSALTERxhC(12)103.2.1記錄的追加

1.立即輸入記錄

2.瀏覽狀態下追加注意:在“顯示”菜單中選中“追加方式”

3.使用INSERT-SQL命令

INSERTINTOstu1(sm,math,xh);

VALUES("高山",78,"950106")

或:

INSERTINTOstu1(sm,math,xh)VALUES("高山",78,"950106")

*4.從其他表追加

APPENDFROM

表名3.2表記錄的編輯修改11貨幣型、日期型、日期時間型、數值型、邏輯型等數據直接輸入。備注型數據輸入雙擊該記錄的字段,出現編輯窗口,輸入數據。字段中如果有數據顯示Memo,沒有數據顯示memo通用型數據輸入雙擊該記錄的字段,出現編輯窗口,然后可以用以下方法處理:菜單“編輯”|插入對象|位圖圖像、確認|

出現位圖圖像的編輯窗口,在該窗口的操作:菜單“編輯”|粘貼來源|查找文件[注]1、通用型數據,可放的圖片有:.bmp.gif.jpg等

2、字段中如果有數據顯示Gen,沒有數據顯示gen123.2.2查看表的內容

1.瀏覽窗口編輯和瀏覽兩種狀態的區別

2.BROWSE命令

BROWSE[FIELDS

字段名1,字段名2,……][FOR<條件>]

Usexs

browse&&瀏覽表的所有記錄

browforxb=‘男‘&&瀏覽xb=’男‘的所有記錄

browsefieldsxh,xm&&篩選字段133.LIST、DISPLAY命令

LIST/DISPLAY[范圍][FIELDS表達式表];[FOR條件表達式][while條件表達式];[TOPRINT][OFF]例:

LIST&&顯示所有記錄

DISPLAY&&顯示當前記錄

范圍:All全部記錄Nextn從當前記錄開始的n個記錄Recordn指定的一個記錄Rest當前記錄后的所有記錄[FOR條件表達式]篩選指定范圍內的全部記錄[while條件表達式]篩選從當前記錄開始的連續的若干個記錄OFF不顯示記錄號TOPRINT輸出到打印機14記錄的處理一記錄指針標志

3個控制標志記錄的指針標志;記錄的開始標志;記錄的結束標志;剛打開表時,記錄指針指向第一個記錄

3個函數EOF()、BOF()、RECNO()測試記錄指針的位置文件頭(表結構等信息)第1號記錄第2號記錄第N號記錄記錄開始標志Bof()為.T.記錄結束標志Eof()為.T.記錄指針3.2.3記錄的定位

15文件頭(表結構等信息)第1號記錄第2號記錄第N號記錄Recno()為1Bof()為.f.記錄開始標志Bof()為.T.Recno()為1記錄結束標志Eof()為.T.Recno()為N+1Recno()為NEof()為.f.表中記錄情況BOF()值RECNO()值EOF()值無記錄.t.1.t.有記錄.f.1.f.剛打開表時記錄指針情況16二、記錄的定位方式

絕對定位;相對定位;條件定位;

3個命令:

SKIP

[nRecords]

相對定位

GO

<nRecords>

絕對定位

GOTO

<nRecords>

Locate

例:

skip2&&從當前記錄向文件尾移動2個記錄

skip-1&&從當前記錄向文件頭移動1個記錄

go2&&移動到第2個記錄

Locateforxm=“小平”

Disp

&&顯示當前記錄

Continue

&&繼續查找下一個叫“小平”的人173.2.4記錄的修改1.在瀏覽窗口中編輯修改記錄2.批量記錄的修改界面方式:菜單:表|替換字段命令方式:

UPDATE-SQL;REPLACE

如:updatejssetgl=js.gl+1wheregl<60

replaceglwithgl+1forgl<60

replaceallmathwithmath-10

注:

update-SQL更新表時,表不必事先打開

replace更新表時,表必須先打開183.2.5記錄的刪除步驟:標記要刪除的記錄;徹底刪除帶標記的記錄1.標記要刪除的記錄(邏輯刪除)界面方式:命令方式:⑴DELETE--SQL命令

DELETEFROM表名[WHERE<條件>]

deletefromstudentwherexm='李曉'⑵DELETE命令

DELETE[范圍][FOR<條件1>][WHERE<條件2>]

例deleteforxb=‘男’192.徹底刪除記錄(物理刪除)命令:

PACK

刪除帶有刪除標記的記錄

ZAP

刪除表中所有記錄,只留下表結構3.恢復帶刪除標記的記錄

RECALL&&恢復當前記錄

RECALLALL&&恢復所有記錄

RECALLFORxb=‘男’

&&恢復性別為男的記錄20測試記錄的刪除標記

DELETE()測試當前記錄是否帶有刪除標記,有刪除標記,函數值為.T.無刪除標記,函數值為.F.控制對帶有刪除標記記錄的訪問

SETDELETEON|OFFON——隱藏帶有刪除標記的記錄

OFF——允許訪問帶有刪除標記的記錄(默認值)SETDELETEONSETDELETEOFF213.2.6篩選記錄篩選記錄是指從表中選出滿足指定條件的記錄。命令

SETFILTERTO

條件表達式如要去掉篩選條件,則執行以下命令

SETFILTERTO

例:

usetabscore

brow&&顯示所有記錄

setfiltertomath>80

brow&&顯示數學大于80的記錄

setfilterto&&取消篩選

setfiltertodelete()&&選出已邏輯刪除的記錄比較包含for子句的命令

browseforxb=‘男’&&選出xb=‘男’的記錄223.2.7篩選字段篩選字段是選出表中的部分列。命令

SETFIELDSTO[字段名表|ALL]setfieldstoxh,math

brow或browsefields

字段1,字段2,……23指示當前記錄指針刪除標記區窗口分割條列頭列分割線瀏覽方式編輯方式“學生情況”的瀏覽窗口返回243.3表的使用3.3.1工作區一、工作區的概念工作區就是表可以打開的內存區域。每個工作區有一個編號。一個工作區某一時刻只能打開一張表,但可在不同工作區打開同一張表。

VFP有32767個工作區,剛啟動完VFP工作區1被自動選中。二、工作區中表的別名在工作區中打開的表都有一個別名。別名確定:

1、用戶取名

2、系統默認如果表是第一次打開,系統以表文件名作為別名;再次打開同一個表,系統以字母作為別名。

1~10號工作區默認的別名:A~J,

11號以后工作區默認的別名:W11、W12……25選擇工作區命令格式:select工作區號或表的別名

select1等價selecta

select0&&選擇未被使用的區號最小的工作區例select1usexsselect5usexsagainSelect0usexsagainaliasstu&&指定別名26三、當前工作區正在使用的工作區,稱為當前工作區。usestu1aliasstu&&在當前工作區打開表seleb&&選擇工作區2usexs&&當前工作區是工作區2,打開表273.3.2打開和關閉表一、表的打開1.通過界面操作菜單:文件|打開2.使用命令USE表名[IN工作區]

例:usexsin23.多次打開一張表USE表名AGAINusexsin2usexsin1againselect3usexsagain28二、關閉表1.界面操作“在數據工作期”窗口中2.命令操作關閉當前工作區中的表use關閉非當前工作區中的表

usein

別名|工作區或:select

別名|工作區

use關閉所有工作區中的表

closealltable退出系統時,自動關閉表293.3.3表的獨占與共享使用一張可以同時被多個用戶打開,稱為表的共享使用;一張只能被一個用戶打開,稱為表的獨占使用;

VFP在默認狀態下以獨占方式加載;一、設置獨占與共享打開表的默認狀態1、菜單:工具|選項302、命令:SETEXCLUSIVEON&&設置默認打開方式為獨占SETEXCLUSIVEOFF&&設置默認打開方式為共享此命令的設置,并不影響已打開表的狀態二、強行用一種方式打開表

USE表名SHARE&&以共享方式打開表

USE表名EXCLUSIVE&&以獨占方式打開表注:同一張表多次打開時,以第一次打開的方式為準。以共享方式打開表,表結構不能修改,是只讀屬性

Usestudentshare&&以共享方式打開表

modifystru&&是只讀屬性313.3.4利用數據緩沖訪問表中的數據一、數據緩沖數據緩沖是VFP在多用戶環境下,用以保護對表的數據更新維護的一種技術。它在內存中開辟一個緩沖區,對表的數據的修改先保存在緩沖區中,用戶可以決定是否用緩沖區中的數據更新表。二、數據緩沖的類型記錄緩沖僅對表的一個記錄開設緩沖區表緩沖對整張表開設緩沖區提供緩沖的方式(鎖定記錄方式):保守式防止一個用戶訪問另一個用戶正在修改的記錄或表,在編輯時鎖定記錄;開放式高效的更新記錄的方式,在寫入記錄時加鎖;32三、設置表的數據緩沖

1、界面方式:“工作區屬性”對話框:set

或:打開表-菜單:表|屬性

2、命令方式:CURSORSETPROP()函數設置數據緩沖

CURSORSETPROP(’BUFFERING’,緩沖類型值,[工作區])

四、檢測數據一致性*

檢測緩沖區數據是否與數據源表一致

CURVAL()從遠程數據源中直接返回字段值

OLDVAL()返回字段初值

五、執行和放棄對緩沖區的修改

TABLEUPDATE():執行對緩沖區的修改

TABLEREVERT():放棄對緩沖區的修改3334鎖定方式緩沖類型返回35幾個概念1、記錄順序物理順序:記錄的存儲順序稱為物理順序。邏輯順序:記錄的處理順序成為邏輯順序。2、索引(Index)

表索引是根據索引關鍵字的值進行邏輯排序一組記錄號。索引文件由索引序號和對應于索引序號的表的記錄號(稱為指針)組成。索引提供對數據的快速訪問。3、索引關鍵字建立索引的依據;可以是一個字段或字段表達式。多個字段建立索引表達式應注意數據類型統一。4、索引標志(TAG)

是索引關鍵字的名稱必須以下劃線、字母或漢字開頭,長度不超過10個字節3.4表的索引363.4.1索引文件的種類索引本身不改變表記錄的物理順序,而是將其保存到索引文件中。三種不同的索引文件復合索引文件(.cdx)可以把多個索引存儲在該文件中結構復合索引文件非結構復合索引文件*與表文件的主文件名同名,創建時系統自動給定,與表文件同步打開、更新和關閉。文件名由用戶給出,不能和表文件一起自動打開,要用打開索引文件的命令將其打開才能起作用獨立索引文件(.idx)*只存儲一個索引不會隨表的打開而自動打開37索引的類型(四種)1、主索引2、侯選索引

3、普通索引4、唯一索引*

適用于數據庫表的結構復合索引,一張表只有一個主索引,可確保字段中輸入值的唯一性。適用于數據庫表和自由表,一張表可以有多個侯選索引,也可確保字段中輸入值的唯一性。允許表中有重復索引值的記錄允許表中索引值的記錄不唯一,但只有第一個有相同索引關鍵字值的記錄有效。(為兼容舊版保留)383.4.2索引文件的創建一、用“表設計器”創建結構復合索引文件39二、用INDEX命令創建命令格式:indexon字段表達式tag索引標識名

[FOR條件表達式][ASCENDING|DESCENDING][UNIQUE|CANDIDATE]ASCENDING指定索引按升序,默認為按升序DESCENDING指定索引按降序UNIQUE

指定索引類型為唯一索引CANDIDATE指定索引類型為候選索引缺省表示普通索引FOR

篩選參加索引的記錄40例:為xs表建立的相關字段建索引

usexs

indexonxmtagxm&&按xm順序索引

indexonxb+xmtagxbxmindexonxb+str(rxzf)tagxbzf&&先按性別排序,再按入學總分排序413.4.3索引的修改和刪除一、用“表設計器”二、用INDEX命令例,修改索引

indexonxb+xmtagxbxm

indexonxm+xbtagxbxm

刪除索引deletetagxbxm423.4.4索引的使用p.72★

1、一個表可以有多個索引;

2、在復合索引的多個索引中,在某個時刻只有一個索引對表起作用,該索引標識稱為主控索引。主控索引可以指定;

3、結構復合索引是隨表的打開而自動打開的,但任何一個索引都不會自動設置為主控索引,此時表中的記錄仍按物理順序顯示和訪問;

4、打開表時可以指定主控索引,或打開表后設置主控索引;43一、設置主控索引1.打開表的同時指定主控索引⑴指定復合索引文件的主控標識

USE表文件名

ORDER[TAG]標識名[OFcdx文件名]usexsorderxsxb

&&

設xs表已按xb建立索引xsxb⑵按照索引編號指定為主控索引

USE表文件名

ORDER索引編號

usexsorder1442.打開表后再設置主控索引

界面方式:窗口|數據工作期|按“屬性”或表|屬性打開“工作區屬性”窗口,

命令方式:例,設XS表已按XH建立索引xsxh

usexs

setordertoxsxh&&可以setorderto

編號注意:Setorderto

命令與Setorderto0命令完全一樣。取消主控索引的設置,索引文件保持打開,但是表中所有記錄的顯示和訪問順序是記錄號順序而不是索引順序。setorderto編號,編號超出范圍顯示出錯45關于索引注意幾點索引的作用結構復合索引的建立

indexonxbtagxsxb指定主控索引

usexsorderxsxb或

usexs

setordertoxsxb46二、有關索引的常用函數1.CDX(1)返回打開的表的結構復合索引文件名

*

NDX(1)返回打開的表的獨立索引文件名

?Cdx(1)&&顯示路徑\xs.cdx2.ORDER()返回主控索引標識

SYS(22)與ORDER()函數的功能相似

setordertoxb?order()&&顯示xb3.TAG()返回復合索引文件中的索引標識名

?tag(1)&&返回第1個索引的標識名

?tag(2)&&返回第2個索引的標識名

?tag()&&返回主控索引的標識名47三、快速定位記錄1、find命令2、seek命令這2個命令都是在一張表中基于主控索引搜索首次出現的一個記錄,這個記錄的索引關鍵字必須與指定的表達式相匹配。命令格式:

find字符串

seek表達式48例:

usexs

indexonxmtagxsxm

setordertoxsxm

seek“張三”&&不能寫:seek張三

&&find“張三“等價

find

張三

?Found()

&&若找到返回.t.,若找不到則返回.f.

49返回第1個是主控索引503.5建立表之間的臨時關系3.5.1臨時關系臨時關系隨表的關閉而解除。用于在打開的2張表之間控制相關表的訪問可以在自由表之間、數據庫表之間、自由表與數據庫表之間建立建立臨時關系后,就會使得一張子表的記錄指針自動隨另一張父表的記錄指針移動而移動。建立臨時關系的兩張表需要符合一對一或一對多關系。513.5.2臨時關系的建立設xs表和cj表是一對多的關系為xs表的xh字段建立了普通索引xsxh為cj表的xh字段建立了普通索引cjxh一、在“數據工作期”對話框中建立臨時關系52二、用命令格式:SETRELATIONTO表達式INTO子表區號|子表別名注:表達式通常是主表的建過主索引的字段。例,下面一組命令等價于前面的界面操作select0usecjordertagcjxh&&cjxh為子表索引select0usexs&&當前工作區為主表所在工作區setrelationtoxs.xhintocj53比較下列代碼,功能一樣USExs.dbfIN0USEcjIN0SETORDERTOTAGCjxhSelexsSetRELATIONTOXs.xhINTOCj

select0usecjordertagcjxhselect0usexssetrelationtoxs.xhintocj543.5.3解除臨時關系在“數據工作期”的關系列表中雙擊關系連線,刪除用命令

SETRELATIONTO|OFFINTO

子表區號|別名

select<主表工作區號>

setrelationto&&解除所有與主表的關系

setrelationoffintocj&&解除與子表cj的關系關閉表時,其臨時關系也自動解除。55例.已知學生表(XSB.DBF)中的數據如下:記錄號學號姓名性別出生日期系名代號

1000104王凱男09/02/82022000101李兵男04/09/83023000103劉華女10/06/82024

溫馨提示

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

評論

0/150

提交評論