




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第4章數據庫的基本操作
4.1創建數據庫4.2數據表的操作4.3索引4.4視圖學習目標理解數據庫的概念;掌握數據庫設計器的用法;掌握表設計器的用法;熟練掌握數據表的基本操作;掌握表達式生成器的用法;理解索引的概念并掌握索引的使用;理解并掌握表間關聯關系使用;理解視圖的概念和創建步驟;掌握利用視圖更新數據。重點與難點重點在于數據表的操作;難點在于利用視圖更新數據。4.1創建數據庫數據庫是一組具有關聯關系的數據表的集合。數據庫設計是建立數據庫及其應用系統的技術,是信息系統開發的核心問題,它的內容包括結構特性設計和行為特性設計。結構特性設計是指數據庫總體概念的設計,應該符合具有最小數據冗余、能反映不同用戶的數據需求和能實現數據共享。行為特性設計是指實現數據庫用戶業務活動的應用程序的設計,用戶通過應用程序來訪問和操作數據庫。4.1.1創建數據庫數據庫可以使用菜單方式,也可以采用命令方式來創建。數據庫創建的命令格式如下:createdatabase<數據庫名>
其中,create一詞的含義就是“創建”,database的含義是“數據庫”,<數據庫名>是用戶自定義的數據庫文件的主文件名,可以不用指定擴展名,系統會自動添加上擴展名.dbc。使用菜單方式創建數據庫4.1.2使用數據庫設計器在數據庫設計器可以使用數據庫設計器工具按鈕,也可以使用鼠標右鍵和使用“數據庫”菜單來完成表和視圖等的操作。數據庫菜單是浮動菜單,進入到數據庫設計器才會出現,“數據庫”菜單最全面。4.1.3打開和關閉數據庫打開opendatabase
修改modifydatabase
當前數據庫設置setdatabaseto數據庫文件名關閉closedatabase[all]4.1.4查看和修改數據庫結構數據庫的組織結構的了解,可以通過瀏覽數據庫文件,查看分層結構、檢查當前數據庫和編輯.dbc文件等。命令modifydatabase&&查看或修改validatedatabase&&檢查完整性VFP中的.dbc文件類似于表文件,在數據庫沒有打開的條件下,可以使用use命令打開它并瀏覽。4.1.5刪除數據庫數據庫的刪除可以使用資源管理器來進行刪除,但由于僅刪除數據庫文件名并不能刪除與它有關的數據表,所以采用命令方式來刪除可以比較完全地進行數據庫及其數據表的刪除。命令格式如下:deletedatabase數據庫名|?[deletetables]
4.2數據表的操作在VFP中,數據表是存放數據的實體。一個表如果不屬于任何數據庫,則稱為自由表;如果一個表屬于某一個數據庫,并且至多只能屬于一個數據庫,這種表稱為數據庫的表。4.2.1自由表的創建在VFP中,創建表結構有3種方法:使用表設計器以交互方式建立表結構;使用表向導建立表結構;使用SQL命令建立表結構(第5章)。1.使用表設計器創建(菜單方式)123使用表設計器創建對應的命令命令格式:create[<表名>]在命令窗口輸入該命令就可以進入到表設計器2.使用表向導創建使用表向導創建,按照向導提示一步一步,邊學邊用。
4.2.2表的打開與關閉表的打開是指將存放在磁盤上的數據表調入到計算機內存,同時將其定為當前工作區的當前表。數據表打開后,才能完成對表的結構的修改或表記錄的操作。表的關閉與表的打開操作相反,是將表從計算機內存中釋放。不管是表的打開還是表的關閉,都與工作區(Workarea)有關。1.工作區在VFP中,允許用戶使用32767個工作區,如果用戶同時使用兩個或兩個以上的工作區進行數據表的操作,則稱為使用多重工作區。使用多重工作區應該遵循以下原則:(1)每個工作區至多只能打開一個表,即在同一工作區打開“新”表,系統會自動將“原”表關閉。(2)一個表如果需要在兩個工作區中打開,則第2次打開需要選擇Again子句。(3)正在進行數據表操作的工作區稱為當前工作區,在當前工作區打開的表稱為當前表。數據表的操作是在當前工作區的當前表上進行的,同一時刻只能有一個工作區是當前工作區。使用Select命令可以重新選擇當前工作區。(4)在當前工作區訪問當前表中的數據無需指定別名,而在當前工作區訪問其他工作區中的表時必須指定別名,使用形式:<別名>.<字段名>或<別名>-><字段名>(5)在不同工作區的表之間可以建立關聯關系,即將多個數據表的記錄指針關聯起來,這樣對當前表的記錄指針移動時,與之關聯的表的記錄指針也將隨之移動到關聯的記錄上。然而沒有關聯數據表的記錄指針則是相互獨立的。2.選擇當前工作區命令命令格式如下:select<工作區號>|<表名>
功能:將“工作區號”指定的工作區選擇為當前工作區,或將“表名”指定的已經打開的表所在的工作區選擇為當前工作區。其中,“工作區號”可以是1~32767中任意的自然數,也可以是字母或字母數字的形式:前10個工作區可以使用A~J,其他工作區W11~W32767。Select0不是表示選擇0號工作區,而是自動選擇最低可用工作區。(注意!)3.use命令命令格式如下:
use[<表名>|?][in<工作區號>|<別名>][again][alias<別名>][exclusive|shared][noupdate]
其中,不帶任何子句,即use,它是關閉當前工作區打開的數據表。“表名”表示打開指定的數據表,“?”會彈出“使用”對話框供選擇數據表。in子句指定在哪個工作區打開數據表。again子句可以在別的工作區重新打開同一個表。alias子句是打開表的同時定義表的別名,如果不定義別名,則默認數據表名為別名。exclusive表示以獨占方式打開表,默認以此方式打開;shared表示以共享方式打開。noupdate表示以只讀方式打開表。4.數據工作期數據工作期包含了一組工作區,可以在工作區中打開、關閉表和建立表間的關聯等。選擇“窗口”菜單中的“數據工作期”菜單項,打開“數據工作區”窗口。5.表的關閉關閉數據表的命令有以下幾種:(1)use:關閉當前工作區的當前表。(2)closeall:關閉所有打開的表,同時釋放所有內存變量。(3)closetables:關閉當前數據庫中所有打開的表。(4)closetablesall:關閉所有數據庫中所有打開的表及自由表。4.2.3修改表的結構如果創建或修改后的表結構還不盡合理,可以使用“表設計器”對表的結構進行修改。進入“表設計器”可以使用菜單方式,也可以使用命令方式(modifystructure)。另外,也可以使用表結構描述文件重新創建數據表。表結構描述文件使用表結構拷貝命令,可以將當前表的結構存入另一個表中,這個表的每一行就是一個字段,這個表文件稱為表結構描述文件。命令格式如下:copystructto表名extended[fields<字段名表>]
其中,如果缺省extended,則是將當前表的空結構拷貝到“表名”所指定的表文件。有了extended子句,則是將表的結構描述拷貝到“表名”所指定的標結構描述文件。
利用結構描述文件可以動態地生成表結構,命令格式如下:create表名from表結構描述文件4.2.4記錄的操作數據表打開后,可以向表中輸入數據記錄、顯示表中的記錄、定位表中的記錄、修改表中已有的記錄和刪除記錄等,這些對數據記錄進行的操作就是記錄的操作。
1.輸入記錄向數據表中添加記錄,可采用立即方式或追加方式。(1)立即方式,是表結構創建完成時立即向表中輸入記錄。(2)追加方式,是表結構定義完成后或打開已有的表在“瀏覽”或“編輯”窗口中向表中輸入數據。瀏覽與編輯
打開要輸入數據的表,再選擇“顯示”菜單中的“瀏覽”菜單項,進入表的瀏覽窗口,這時的菜單欄出現了“表”菜單;若關閉表瀏覽窗口,則“表”菜單消失。瀏覽方式有瀏覽和編輯兩種:(1)瀏覽:以電子表格的瀏覽方式,如同Excel的電子表格;(2)編輯:從上到下地一個字段接一個字段。
追加記錄在“表”菜單,可以看到其中的“追加新記錄Ctrl+Y”和“追加記錄...”,前者是在表尾追加一條新記錄,可直接按快捷鍵“Ctrl+Y”;后者是將其它數據表中的記錄追加到當前表。數據輸入注意事項數值型、字符型數據輸入比較簡單。日期型數據輸入要注意當前日期格式,譬如:月日年或年月日等。邏輯型數據輸入是:“真”輸入“t”、“y”、“T”或“Y”,“假”輸入“f”、“n”、“F”或“N”。備注型的輸入,將鼠標指針移到備注型字段的“memo”上雙擊,即進入備注型字段的編輯窗口,輸入備注內容后,單擊窗口的“關閉”按鈕,或按Ctrl+W鍵則關閉該編輯窗口并保存,如果不想保存輸入或修改的內容,按Esc鍵退出。通用型的輸入,是通過插入“對象”的方式來輸入的。備注字段輸入表示有數據還沒有數據通用型字段輸入記錄追加命令追加新記錄命令格式如下:append[blank]
其中,缺省blank,則以編輯方式在當前表的末尾一條一條地追加記錄;若選擇了blank,則直接在表尾追加一條空記錄,編程方式一般選擇blank。追加記錄命令格式如下:
appendfrom<表名>|<?>[fields字段名1[,字段名2…]][for<條件表達式>]
其功能是將其它表中的數據追加到當前表尾,可以指定字段和滿足條件的記錄。2.顯示表中的記錄(1)Browse命令browse[fields<字段名表>][for<條件表達式>](2)List/Display命令list/display[<范圍>][fields<字段名表>][for<條件表達式>][off][toprinter|file<文件名>]Browse當前記錄的記錄指針打開“顯示”菜單選擇“瀏覽”,進入“瀏覽”窗口。
從“表”菜單選擇“屬性”菜單項,打開“工作區屬性”窗口注意:“數據過濾器”和“字段篩選”的設置不具永久性,數據表關閉后即失效。List/Display命令中的<范圍>范圍短語功能說明all所有記錄全部記錄next<n>包括當前記錄在內的n條記錄一條或多條記錄record<n>第n條記錄只有一條記錄rest從當前記錄到表尾一條或多條記錄缺省不指定范圍list命令對當前表所有記錄進行操作,相當于指定了all;而display只對當前表當前記錄進行操作,相當于指定了next1。【例4.1】在屏幕上顯示表中顯示“學生信息表”的學生姓名、性別、出生日期字段,并且不顯示記錄號;顯示第3條記錄;顯示第2條記錄到第5條記錄。recno()返回表中當前記錄的記錄號。3.定位表中的記錄記錄定位的實質就是確定哪一條記錄當前記錄。數據表剛打開時,當前記錄為第一條記錄。定位表中的記錄可以有多種方法:在瀏覽窗口用鼠標指針單擊記錄中的任何一列,都可以容易地定位記錄。或選擇“表”菜單下的“轉到記錄”進行定位;也可以使用命令。記錄定位命令定位要求含義命令說明第一個定位到第一條gotop第一條并不是表頭,即BOF()不為.T.。最后一個定位到最后一條gobottom最后一條并不是表尾,即EOF()不為.T.。下一個從當前記錄移到下一條skip<n>n=1,為1時可缺省;n>1時可以移動多條。上一個從當前記錄移到上一條skip<n>n=-1;n<-1時可以移動多條。指定記錄號定位到指定的記錄號go<n>n表示記錄號條件定位查找滿足條件的第一條記錄locatecontinuelocate定位第一條滿足條件的記錄,continue與locate配合查找滿足條件的下一條記錄。編程常常使用到這兩條命令4.修改記錄(1)全屏幕修改方式在瀏覽窗口可以很方便地完成對記錄的修改,VFP中還提供了其他的全屏幕編輯命令:Edit命令和Change命令,由于它們不太常用,這里僅給出其命令格式:edit/change[<范圍>][fields<字段名表>][for<條件表達式>]譬如:editfields編號,姓名forleft(姓名,2)="林"。(2)替換修改方式替換命令是使用表達式的值替換對應的字段值,其命令格式如下:replace[<范圍>]<字段名1>with<表達式1>[,<字段名2>with<表達式2>……,<字段名n>with<表達式n>][for<條件表達式>]其中,范圍缺省時,默認只對當前記錄操作。字段類型應與表達式的值兼容或相同。【例4.3】在“學生信息表”中的“總分”字段的值等于:語文+英語+數學。使用replace命令計算每個學生的總分。use學生信息表replaceall總分with語文+數學+英語&&計算所有學生的總分從“表”菜單中選擇“替換字段”,打開“替換字段”窗口
5.刪除記錄在VFP中刪除分為:邏輯刪除和物理刪除。邏輯刪除:只是作刪除標記,記錄仍然存在,需要的時候還可以將其恢復。物理刪除:將無用的記錄徹底地從磁盤中刪除,若需刪除部分記錄,則先作邏輯刪除,再作物理刪除;若要刪除全部的記錄,可以直接使用物理刪除命令。物理刪除的記錄不能恢復。(1)邏輯刪除命令格式:
delete[<范圍>][for<條件表達式>]其中,范圍缺省時,邏輯刪除操作僅對當前記錄有效。刪除標記記錄恢復恢復命令格式:recall[<范圍>][for<條件表達式>]其中,范圍缺省時,它僅對當前記錄有效。(2)物理刪除可以分為部分物理刪除和全部物理刪除。前者使用pack命令,只是對進行邏輯刪除的記錄進行物理刪除;后者使用zap命令,對當前表的所有記錄物理刪除,而不管其是否作了邏輯刪除。命令格式:
packzap6.表的復制數據表是以文件的形式出現的,可以使用資源管理器進行文件復制。但數據表與普通的文件又有些不同,譬如:表中有備注字段或通用字段的話,復制表時千萬別忘了拷貝備注文件;另外可以從表中選擇某些字段或記錄進行拷貝。命令格式如下:copyto表名[<范圍>][fields<字段名表>][for<條件表達式>]其中,缺省范圍時表示所有的記錄。4.2.5統計命令的使用1.計算記錄的條數count[范圍][for<條件表達式>][to變量名]2.求和sum[范圍]<表達式表>[to變量名表|array數組名][for<條件表達式>]3.求平均average[范圍]<表達式表>[to變量名表|array數組名][for<條件表達式>]
4.計算命令calculate[范圍]<數值表達式表>[to變量名表|array數組名][for<條件表達式>]5.分類匯總totalto新表on表達式[范圍][fields<字段名表>][for<條件表達式>]4.2.6數據庫表的使用數據庫表的創建使用數據庫設計器,用鼠標右鍵單擊數據庫設計器的空白處,彈出快捷菜單,從中選擇“新建表”可以打開“新建表”窗口,再單擊“新建表”按鈕打開“創建”窗口,在“輸入表名”后面的文本框輸入數據表文件名,單擊“保存”按鈕后就可進入“表設計器”窗口。4.3索引數據表中的記錄按輸入的先后順序(也稱物理順序)存放,但在使用表中數據時常常不是按這種順序,而是按照邏輯順序,譬如:學號、成績高低等。為此,需要建立類似于圖書目錄的索引,方便快速地檢索到相應的記錄。4.3.1索引的概念索引是按照索引表達式的值使表中的記錄有序排列的一種技術,它不改變表中數據的物理順序,在VFP系統中,索引是借助于索引文件來實現的。索引文件包括兩個部分:索引表達式的值和物理記錄號,前者是按一定順序排列的。因為索引表達式的值是有順序的,使用折半查找,可以快速地匹配到對應的記錄號,獲得了記錄號后只需將記錄指針移到記錄號所指的記錄。索引表達式的值記錄號記錄號記錄內容10151………19042………20313………32024………32365………32436………4.3.2索引的創建在VFP中,有四種類型的索引:主索引、候選索引、普通索引和惟一索引。數據庫表可以使用所有這四種索引,自由表除了沒有主索引外,其他三種索引都可以使用。索引類型區別主索引一個表只能有一個,其索引表達式的值能夠惟一地標識每條記錄的處理順序,即值是惟一的。建立主索引的表還可以建立候選索引。候選索引一個表可以有多個。其索引表達式的值也是能夠惟一地標識每一個記錄處理順序,即值是惟一的。普通索引一個表可有多個。索引表達式的值可以相同,一個值對應的多條記錄,允許重復存儲在索引表中。惟一索引一個表可有多個。索引表達式的值相同時,則只存儲第一條記錄,不允許重復存儲。索引創建方法(表設計器)創建索引可以通過表設計器,也可以通過命令方式。索引創建方法(命令方式)命令格式:indexon索引表達式tag<索引標識名>[for<條件表達式>][ascending|descending][unique|candidate]其中:ascending:升序排列,descending:降序排列,默認為升序;unique:建立惟一索引;candidate:建立候選索引。【例4.4】給“學生信息表”建立如下索引:按“編號”升序,標識名bh;按主關鍵字“總分”和次關鍵字“性別”降序建立索引,標識名zfxb。use學生信息表indexon編號tagbhascendingindexonstr(總分,5,1)+性別tagzfxbdescending?cdx(1)&&返回索引文件名?tag(1)&&返回第一個標識名?tag(2)&&返回第二個標識名4.3.3索引的使用1.設置索引順序
索引創建后,就可以使用使用索引來對表中數據排序了。在一個結構復合索引中可能存在多個索引標識,如何確定當前使用哪個標識呢?可以使用菜單方式來指定,也可以使用命令來指定。2.索引查找3.分類匯總1.設置索引順序命令格式如下:setorderto[tag]<索引標識名>指定使用哪個索引標識名之后,重新瀏覽才能看到索引的順序效果。2.索引查找在記錄定位操作中講到了Locate…Continue…命令,它可以實現順序查找,即從前到后一條一條地匹配,顯然,這種查找效率很低。索引查找只能在索引文件中查找關鍵字表達式的值,由于索引關鍵字表達式只能是數值型、字符型和日期型字段,所以索引查找只能查找這三種類型的值。VFP提供了兩條索引查找記錄的命令:find和seek命令,前者是為了與VFP以前版本兼容而提供的,與seek命令的使用方法基本相同。seek命令格式:
seek表達式[order索引序號|[Tag]索引標記名[of復合索引文件名][Ascending]|[Desending]][in工作區|表別名]
其中:“表達式”表示索引關鍵字的值。order子句指定索引關鍵字。in子句指出進行操作的表所在工作區。舉例:在“學生信息表”查找“林波”同學的記錄,假設已經按姓名建立了索引,索引標記為xm。
use學生信息表setordertotagxm&&設置索引順序為tagxmseek"林波"?found()&&.t.表示找到了,.f.表示為找到?recno()&&返回找到記錄的記錄號3.分類匯總【例4.5】假設有一個銷售明細表(xsmx.dbf),并輸入銷售記錄。表結構:銷售明細(品種編號(C,4)、數量(N,8,2)、單價(C,8)、金額(N,10,2))。并且按品種編號建立索引,索引標識為pzbh。按品種編號分類匯總,匯總字段:數量和金額。usexsmxsetordertopzbhtotalon品種編號toflhzfields數量,金額useflhzbrowfields品種編號,數量,金額4.3.4建立表間的關聯關系方法:將表中的主索引(前面有一個鑰匙符號)拖動到要關聯表的同名字段上,兩個表就由一條連線關聯起來了。
對表間連線的選中操作:單擊表之間的連線,如果連線變粗了,則表示連線被選中。連線選中后,可以按delete鍵刪除,也可以用鼠標右鍵單擊選中的粗線彈出快捷鍵,就能進行如下操
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二級MySQL數據清理與維護技巧試題及答案
- 二級MySQL數據結構與查詢試題及答案
- 四級軟件測試考試常見誤區試題及答案
- 提升測試文檔準確性的有效方法與技巧試題及答案
- 電氣行業法律法規解讀考核試卷
- 教學地圖繪制技術考核試卷
- 專注2025年軟件測試核心試題及答案
- 網絡技術考試的準備要點與建議試題及答案
- 數據庫查詢分析試題及答案解讀
- 網絡技術在項目中的應用試題及答案
- 《三毛流浪記》作者簡介張樂平
- 2023年山西建設投資集團有限公司招聘筆試題庫及答案解析
- 鐵皮石斛的抗氧化、保濕功效研究和應用現狀
- GB/Z 18620.4-2008圓柱齒輪檢驗實施規范第4部分:表面結構和輪齒接觸斑點的檢驗
- GB/T 97.1-2002平墊圈A級
- 泊 秦 淮唐 杜牧
- GB/T 1871.1-1995磷礦石和磷精礦中五氧化二磷含量的測定磷鉬酸喹啉重量法和容量法
- GB/T 1725-2007色漆、清漆和塑料不揮發物含量的測定
- 公路工程工作總結范文
- 初中物理杠桿滑輪課件
- 課件:第七章 社會工作項目結項(《社會工作項目策劃與評估》課程)
評論
0/150
提交評論