視圖與SQL.ppt_第1頁
視圖與SQL.ppt_第2頁
視圖與SQL.ppt_第3頁
視圖與SQL.ppt_第4頁
視圖與SQL.ppt_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第五章 查詢、視圖與SQL,51 創(chuàng)建查詢,5.1.1 用查詢設(shè)計器創(chuàng)建查詢 創(chuàng)建單表查詢文件的命令是:CREATE QUERY , 系統(tǒng)會自動將擴展名“.qpr”加上。 修改查詢文件的命令是:MODIFY QUERY 利用查詢設(shè)計器不僅可以創(chuàng)建單表查詢,還可以創(chuàng)建多表查詢, 其操作方法分別舉例說明。,選擇查詢的表或視圖,對應(yīng)于from 短語。還可從“查詢”菜單或工具欄中選擇“添加表”或選擇“移去表”重新指定設(shè)計查詢的表。 “字段”選項卡對應(yīng)于select 短語,指定所要查詢的數(shù)據(jù),這時可單擊“ 全部添加”選擇所有字段,也可逐個選擇字段“添加”;在“函數(shù)和表達(dá)式”編輯框中可輸入或編輯計算表達(dá)式

2、。 “聯(lián)接”選項卡對應(yīng)于join on 短語,用于編輯聯(lián)接條件。 “篩選”選項卡對應(yīng)于where短語,用于指定查詢條件。 “排序依據(jù)”選項卡對應(yīng)于order by 短語,用于指定排序的 字段 和排序方式。 “雜項”選項卡可指定是否要重復(fù)記錄(對應(yīng)于distinct)及列在前面的記錄(對應(yīng)于top 短語等)。,5.1.2 用查詢向?qū)?chuàng)建查詢 利用查詢向?qū)?chuàng)建查詢: 啟動查詢向?qū)Х椒? 通過【文件】菜單下【新建】命令,打開“新建”對話框,選擇“查詢”,單擊【向?qū)А堪粹o,彈出“向?qū)нx取”對話框.,5.1.3 查詢結(jié)果的輸出 在VFP中,根據(jù)目的需要可將查詢結(jié)果按以下幾種格式輸出: (1)瀏覽將查詢結(jié)

3、果輸出到瀏覽窗口(此為默認(rèn)輸出)。 (2)臨時表將查詢結(jié)果保存于一個臨時表(只讀)中。 (3)表將查詢結(jié)果保存于一個數(shù)據(jù)表中,用戶可隨意處理這個表。 (4)圖形將查詢結(jié)果用圖形方式輸出。 (5)屏幕將查詢結(jié)果輸出到屏幕上。 (6)報表將查詢結(jié)果輸出到一個報表文件(.frx)。 (7)標(biāo)簽將查詢結(jié)果輸出到一個標(biāo)簽文件(.lbx)。,5.2 創(chuàng)建視圖,視圖與查詢相似,它們都可以從一個或多個相關(guān)聯(lián)的表中提取信息,但查詢是以只讀方式訪問表文件,而視圖卻是以讀寫方式訪問表文件,因此可以通過修改視圖中記錄的值來實現(xiàn)對源表的數(shù)據(jù)更新。視圖可以看成是從一個或多個數(shù)據(jù)表中導(dǎo)出的一張“虛擬表”,因為其中并不存放真

4、正的數(shù)據(jù),即視圖中的數(shù)據(jù)取自源表,每次打開視圖時,都要從源表中重新提取數(shù)據(jù)。視圖是不能單獨存在的,它依賴于數(shù)據(jù)庫,是數(shù)據(jù)庫的一部分,只有在打開數(shù)據(jù)庫時才能創(chuàng)建和使用視圖。 根據(jù)數(shù)據(jù)庫中數(shù)據(jù)的來源,視圖可以分為本地視圖和遠(yuǎn)程視圖。其中,本地視圖指由本地表而生成的視圖。遠(yuǎn)程視圖指通過開放式數(shù)據(jù)庫連接性從遠(yuǎn)程數(shù)據(jù)源所建立的視圖。 創(chuàng)建視圖的過程與創(chuàng)建查詢的過程類似,即可通過視圖設(shè)計器創(chuàng)建,又可以利用視圖向?qū)?chuàng)建。,5.2.1利用視圖設(shè)計器創(chuàng)建視圖 創(chuàng)建視圖的命令是:CREATE VIEW ,系統(tǒng)會自動將擴展名“.vue”加上。 利用視圖設(shè)計器創(chuàng)建視圖 5.2.2利用視圖向?qū)?chuàng)建視圖 利用視圖向?qū)Э梢?/p>

5、創(chuàng)建本地視圖,SQL語言具有以下的特點: 1一體化的語言 SQL(Structured Query Language,結(jié)構(gòu)化查詢語言)語言集數(shù)據(jù)定義(DDL)、數(shù)據(jù)操縱(DML)、數(shù)據(jù)管理(DCL)的功能于一體,語言風(fēng)格統(tǒng)一,可以獨立完成數(shù)據(jù)庫的全部操作,包括定義關(guān)系模式、錄入數(shù)據(jù)及建立數(shù)據(jù)庫、查詢、更新、維護(hù)數(shù)據(jù)、數(shù)據(jù)庫的重新構(gòu)造、數(shù)據(jù)庫安全性等一系列操作的要求,為數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)者提供了良好的環(huán)境。 2一種高度非過程化的語言 3以同一種語法結(jié)構(gòu)提供兩種使用方式:命令交互使用和程序方式使用 4語言簡潔,易學(xué)易用,5.3 SQL語言,SQL命令動詞,5.3.2 使用SQL語句定義表 SQL語

6、句可以進(jìn)行表的定義,即表結(jié)構(gòu)的創(chuàng)建、修改和刪除,從而實現(xiàn)對表結(jié)構(gòu)的設(shè)計及維護(hù)等操作。 1、創(chuàng)建表 表結(jié)構(gòu)可以通過表設(shè)計器建立,也可以通過SQL的CREATE TABLE命令建立。 格式: CREATE TABLE|DBF FREE ( (寬度,小數(shù)位數(shù)) , (寬度,小數(shù)位數(shù)) nullnot nulldefault primary key ),【例 5.7】建立表dab2.dbf(結(jié)構(gòu)和表dab.dbf類似)。 CREATE TABLE dab2 (學(xué)號 C(8) NOT NULL PRIMARY KEY; ,姓名 C(8),性別 C(2),出生日期 D;,2、 修改表結(jié)構(gòu) 用SQL語句修改

7、表結(jié)構(gòu),無須用USE命令打開表。 修改表結(jié)構(gòu)的命令均是以ALTER TABLE開頭。 (1) 修改字段屬性 格式: ALTER TABLE ALTER (寬度,小數(shù)位數(shù)) ; ALTER (寬度,小數(shù)位數(shù)) 【例 5.9】把表dab2.dbf中的學(xué)號字段寬度改為10,專業(yè)班級字段改為30 ALTER TABLE dab2 ALTER 學(xué)號 C(10) ALTER 專業(yè)班級 C(30),(2) 增加字段 格式: ALTER TABLE ADD (寬度,小數(shù)位數(shù)) ; ADD (寬度,小數(shù)位數(shù)) (3)字段改名 格式: ALTER TABLE 表名 RENAME TO 新字段名1; RENAME

8、TO 新字段名2 (4)刪除字段 格式:ALTER TABLE 表名 DROP DROP ,3、刪除表 刪除表的SQL格式: DROP TABLE 表名 5.3.3 使用SQL語句查詢表數(shù)據(jù) SQL語句最主要的功能就是查詢,即把數(shù)據(jù)表中的數(shù)據(jù)查找出來,以便用戶瀏覽和使用。SQL語句中查詢表數(shù)據(jù)使用的是 SELECT語句。SELECT語句的基本形式分為三部分:查什么數(shù)據(jù)、由哪兒查數(shù)據(jù)、查的條件是什么,即SELECT-FROM-WHERE。 1、基本的SELECT語句 格式: SELECT , FROM 數(shù)據(jù)庫名稱!,2、唯一性查詢 唯一性查詢指對于要顯示的結(jié)果,若有重復(fù)出現(xiàn)時,則只顯示重復(fù)行中的

9、一行。這可通過在基本SELECT語句中加入DISTINCT關(guān)鍵字的方法實現(xiàn)。若不加此關(guān)鍵字,則顯示全部行。 3、帶條件的查詢 在SELECT語句中,可以通過WHERE子句為查詢規(guī)定條件。 WHERE子句的格式: WHERE AND 功能:查詢指定表或視圖中滿足查詢條件的記錄。其中可以是關(guān)系表達(dá)式,也可以是邏輯表達(dá)式,4、排序查詢 通過ORDER BY子句可以實現(xiàn)查詢結(jié)果的排序輸出,允許按一列或多列排序。 ORDER BY子句的格式: ORDER BY ASC|DESC,ASC|DESC 其中,ASC表示升序排序(缺省方式),DESC表示降序排序。 5、帶計算函數(shù)的查詢 在SELECT語句中,使

10、用SQL語言提供的一些查詢計算函數(shù),可以增強查詢功能?;镜牟樵冇嬎愫瘮?shù)的格式及功能如下表所示。,6、用別名輸出列標(biāo)題(字段名) 將列名用含義更明確的別名輸出,便于人們理解,可以通過AS關(guān)鍵字實現(xiàn)。 格式:AS 7、分組查詢 通過GROUP BY子句可以實現(xiàn)分組查詢。 格式:GROUP BY , HAVING 其中,可以是表的字段名、字段函數(shù)名或標(biāo)識列的數(shù)值型表達(dá)式;HAVING 子句進(jìn)一步限定分組的條件。 注意,若只有HAVING子句而無GROUP BY子句,則HAVING子句相當(dāng)于WHERE子句。,8、多表聯(lián)接查詢 SELECT語句可以實現(xiàn)對Visual FoxPro 6.0的4種聯(lián)接類型

11、的查詢: 內(nèi)部聯(lián)接(Inner Join):只有兩個表的字段都滿足聯(lián)接條件時,才將此記錄選入查詢結(jié)果中。 左聯(lián)接(Left Outer Join):聯(lián)接條件左邊表中的記錄都包含在查詢結(jié)果中,而右邊表中的記錄只有滿足聯(lián)接條件時,才選入查詢結(jié)果中。 右聯(lián)接(Right Outer Join):與左聯(lián)接正好相反。 完全聯(lián)接(Full Join):無論兩個表中的記錄是否滿足聯(lián)接條件,都將全部記錄選入查詢結(jié)果中。,通常有三種方法實現(xiàn)多表聯(lián)接查詢,一是在查詢命令中顯示地指定聯(lián)接類型;二是在查詢命令中使用WHERE子句;三是使用嵌套查詢。 (1)指定聯(lián)接類型實現(xiàn)多表間的聯(lián)接查詢 格式:SELECT FROM

12、 INNER|LEFT|RIGHT|FULL JOIN ON WHERE (2)用WHERE子句實現(xiàn)多表間的聯(lián)接查詢 用WHERE子句實現(xiàn)多表間的聯(lián)接查詢時,無須直接指明聯(lián)接類型(隱含是內(nèi)部聯(lián)接),只須把聯(lián)接條件直接寫入WHERE子句即可。 (3)使用嵌套查詢實現(xiàn)多表間的聯(lián)接查詢 在SQL語言中,由SELECT、FROM、WHERE語句組成一個查詢塊。嵌套查詢就是將第2個查詢塊放在第1個查詢塊的WHERE條件中,形成外層(第1個)查詢包含內(nèi)層(第2個查詢的嵌套查詢。外層查詢也稱為主查詢、父查詢,內(nèi)層查詢也稱為下層查詢、子查詢。系統(tǒng)對嵌套查詢的處理過程是先做子查詢,在子查詢的基礎(chǔ)上再做主查詢。

13、在子查詢中還可以再包含更下層的查詢,從而形成層嵌套查詢。,9查詢中的幾個特殊選項 使用TOP PERCENT短語顯示部分結(jié)果 【例 5.35】 顯示學(xué)分較高的兩門課程的信息。 SELECT * TOP 2 FROM KCB ORDER BY 學(xué)分 DESC 注意:TOP短語要ORDER BY短語同時使用才有效。 【例 5.36】 顯示學(xué)分最低的那20%課程的信息。 SELECT * TOP 20 PERCENT FROM KCB ORDER BY 學(xué)分 使用INTO ARRAY 將查詢結(jié)果存放到數(shù)組中 【例 5.37】 查詢學(xué)生檔案信息并將結(jié)果放入數(shù)組TEMP中。 SELECT * FROM

14、DAB INTO ARRAY TEMP 使用INTO CURSOR 將查詢結(jié)果存放到臨時表中 【例 5.38】 查詢課程表信息并將結(jié)果放入臨時表TEMP中。 SELECT * FROM KCB INTO CURSOR TEMP 使用INTO DBF|TABLE 將查詢結(jié)果存放到永久表中 【例 5.39】 查詢課程表信息并將結(jié)果放入永入表TEMP中。 SELECT * FROM KCB INTO DBF TEMP,5.3.4 使用SQL語句更新表 1、插入記錄 格式:INSERT INTO(,); VALUES(,) 功能:在指定表末尾添加一條新記錄。 2、更新記錄 格式: UPDATE SET = ,=; WHERE 功能:更新表中滿足條件記錄的字段值,即用的值替換對應(yīng)的的值。,3、刪除記錄 格式:

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論