版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、(中職)2022-2023學(xué)年第3章 數(shù)據(jù)的管理ppt課件第 3 章數(shù)據(jù)的管理存儲(chǔ)數(shù)據(jù)不是建立數(shù)據(jù)庫的唯一目的,建立數(shù)據(jù)庫的目的是為了查詢,利用數(shù)據(jù)庫管理技術(shù)訪問這些數(shù)據(jù)。在 Visual FoxPro 6.0 中有很多查詢方法,可以使用查詢向?qū)?、查詢?cè)O(shè)計(jì)器、SQL語句、多表查詢、限定條件查詢、視圖查詢等。3.1【案例 9】使用查詢向?qū)Р樵儼咐枋霎?dāng)表中有很少的幾條記錄時(shí),利用瀏覽窗口可以找到符合一定條件的記錄。但是當(dāng)表中有大量記錄時(shí),用瀏覽的方式查找某條記錄就相當(dāng)困難了,查找記錄的效率也很低。查詢是數(shù)據(jù)庫操作的核心部分,Visual FoxPro 6.0 提供的查詢功能能夠在大量的記錄中迅速
2、找到符合一定條件的記錄。接下來使用查詢向?qū)В瓿筛鶕?jù)篩選和排序后查詢記錄的操作。相關(guān)知識(shí)1查詢方式在 Visual FoxPro 6.0 中,可以利用程序查找符合記錄的數(shù)據(jù),還經(jīng)常使用標(biāo)準(zhǔn)查詢語句來查詢表中的數(shù)據(jù)。使用查詢語句可以方便地對(duì)多個(gè)表中的數(shù)據(jù)進(jìn)行整合,生成豐富的數(shù)據(jù)。建立查詢文件常有三種方式,查詢向?qū)?、查詢?cè)O(shè)計(jì)器和 SQL 語句。2查詢的設(shè)計(jì)過程確定了要查找的信息,以及這些信息存儲(chǔ)在哪些表中后,可以通過以下幾個(gè)步驟來建立查詢: 使用“查詢向?qū)А被颉安樵冊(cè)O(shè)計(jì)器”開始建立查詢。 選擇出現(xiàn)在查詢結(jié)果中的字段。 設(shè)置選擇條件來查找可給出所需結(jié)果的記錄。 設(shè)置排序或分組選項(xiàng)來組織查詢結(jié)果。利用
3、查詢向?qū)Ы⒉樵兾募亲詈?jiǎn)單、最直觀的方法。3.2【案例 10】使用查詢?cè)O(shè)計(jì)器查詢案例描述查詢的實(shí)質(zhì)是把符合條件的記錄提取出來,經(jīng)過一定的組合、統(tǒng)計(jì),最終得到一個(gè)結(jié)果,而結(jié)果可能是一條記錄,也可能有成千上萬條記錄。使用“查詢?cè)O(shè)計(jì)器”可以創(chuàng)建和修改查詢。打開“查詢?cè)O(shè)計(jì)器”,選擇包含想要信息的表后,就可定義輸出結(jié)果。至少需要選擇所需的字段,也可設(shè)置選定字段的顯示順序和設(shè)置過濾器來篩選需要顯示的記錄,以此定義輸出結(jié)果。接下來使用查詢?cè)O(shè)計(jì)器,完成根據(jù)篩選和排序后查詢記錄的操作。相關(guān)知識(shí)1查詢?cè)O(shè)計(jì)器的使用在運(yùn)行查詢之前,必須選擇表并選擇要包括在查詢結(jié)果中的字段。在某些情況下,可能需要使用表中的所有字段。
4、但在另一些情況下,也許只想使查詢與選定的部分字段相關(guān)。如果想用某些字段給查詢結(jié)果排序或分組,一定要確保在查詢輸出中包含這些字段。選定這些字段后,可以為它們?cè)O(shè)置順序作為輸出結(jié)果。 “查詢?cè)O(shè)計(jì)器”工具欄中的按鈕作用如表 3-2-1 所示。 “查詢?cè)O(shè)計(jì)器”各選項(xiàng)卡的功能: 字段:指定字段,SUM() 或 COUNT() 之類的合計(jì)函數(shù)或其他表達(dá)式。 聯(lián)接:指點(diǎn)聯(lián)接表達(dá)式,用它來匹配多個(gè)表或視圖中的記錄。 篩選:指定選擇記錄的條件,比如在字段內(nèi)指定值或在表之間定義臨時(shí)關(guān)系的連接條件。 排序依據(jù):指定查詢結(jié)構(gòu)的記錄排列順序。 分組依據(jù):指定字段,SUM() 或 COUNT() 之類的合計(jì)函數(shù),或用于把有
5、相同字段值的記錄合并為一組的其他表達(dá)式。 雜項(xiàng):指定是否要對(duì)重復(fù)記錄進(jìn)行檢索,同時(shí)是否對(duì)記錄(返回記錄的最大數(shù)目或最大百分比)進(jìn)行限制。2查詢的設(shè)計(jì)過程(1)設(shè)置輸出的字段使用“查詢?cè)O(shè)計(jì)器”的“字段”選項(xiàng)卡來選取需要包含在查詢結(jié)果中的字段。選定字段名,然后單擊“添加”按鈕,或者將字段名拖到“選定字段”列表框中,還可使用名稱或通配符選擇全部字段。如果使用名字選擇字段,查詢中要包含完整的字段名。此時(shí)如果向表中添加字段后,再運(yùn)行查詢,則輸出結(jié)果不包含新字段名。如果使用通配符,則通配符包含在查詢中,并包含當(dāng)前查詢的表中的全部字段。如果創(chuàng)建查詢后,表結(jié)構(gòu)改變了,新字段也將出現(xiàn)在查詢結(jié)果中。如果要在查詢中
6、一次添加所有可用的字段,可以單擊“全部添加”按鈕,按名字添加字段,或者將表頂部的“*”號(hào)拖到“選定字段”列表框中。(2)設(shè)置字段的別名如果要使查詢結(jié)果易于閱讀和理解,可以在輸出結(jié)果字段中添加說明標(biāo)題,顯示字段的別名。例如,可在結(jié)果列的頂部顯示 SumMaxOrd 來代替字段名或表達(dá)式 SUM(MaxOrdAmount)。當(dāng)需要給字段添加別名時(shí),可以在“函數(shù)和表達(dá)式”文本框中輸入字段名,接著輸入“AS”和別名,然后單擊“添加”按鈕,在“選定字段”列表框中放置帶有別名的字段。(3)設(shè)置輸出字段的次序在“字段”選項(xiàng)卡中,字段的出現(xiàn)順序決定了查詢輸出中信息列的順序。如果要改變查詢輸出的列順序,可以上、
7、下拖動(dòng)位于字段名左側(cè)的移動(dòng)框。(4)設(shè)置篩選的條件用“查詢?cè)O(shè)計(jì)器”中的“篩選”選項(xiàng)卡選取需要查找的記錄是決定查詢結(jié)果的關(guān)鍵。在 VisualFoxPro 6.0 中,使用“篩選”選項(xiàng)卡可以確定用于選擇記錄的字段、選擇比較準(zhǔn)則以及輸入與該字段進(jìn)行比較的示例值。“篩選”選項(xiàng)卡可以構(gòu)造一個(gè)帶有 WHERE 子句的選擇語句來通知 Visual FoxPro 6.0 想要搜索并檢索的記錄。我們定義的查詢可能需要查找一個(gè)特定的數(shù)據(jù)子集,并將其包含在報(bào)表或其他輸出形式中。如果要指定過濾器,可以從“字段名”下拉列表中選取用于選擇記錄的字段。注意,通用字段和備注字段不能用于過濾器中。然后從“條件”下拉列表中選擇
8、比較的類型,最后在“實(shí)例”文本框中輸入比較條件。僅當(dāng)字符串與查詢的表中字段名相同時(shí),才用引號(hào)括起字符串,否則無須用引號(hào)將字符串引起來,日期也不必用花括號(hào)引起來。邏輯位的前后必須使用句點(diǎn),如(.T.)。如果輸入查詢中表的字段名,Visual FoxPro 6.0 就將它識(shí)別為一個(gè)字段。在搜索字符型數(shù)據(jù)時(shí),如果想忽略大小寫匹配,請(qǐng)單擊“大小寫”下面的按鈕。3.3【案例 11】使用 SQL 語句查詢案例描述SQL 是結(jié)構(gòu)化查詢語言(structured query language)的縮寫。SQL 由查詢語言、數(shù)據(jù)定義語言 DDL、數(shù)據(jù)操作語言 DML 和數(shù)據(jù)控制語言 DCL 四個(gè)部分組成。查詢向?qū)?/p>
9、和查詢?cè)O(shè)計(jì)器最終都要生成 SQL 語句,該語句才是查詢的最終結(jié)果。向?qū)Ш筒樵冊(cè)O(shè)計(jì)器只是查詢語句的圖形化表示。接下來使用 SQL 語句,完成根據(jù)篩選和排序后查詢記錄的操作。相關(guān)知識(shí)1標(biāo)準(zhǔn) SQL 查詢命令(1)順序查找順序查找是在指定的范圍內(nèi),按照記錄號(hào)的順序查找滿足條件的記錄,并將記錄指針定位于第一個(gè)滿足條件的記錄。如果查找不成功,則記錄指針定位于指定范圍的最后一條記錄上,并且給出提示信息:LOCATE FOR lExpression1 Scope按順序搜索表,從而找到滿足指定邏輯表達(dá)式的第一條記錄。其中的 FOR lExpression1 表示讓 LOCATE 按順序搜索當(dāng)前表以找到滿足表達(dá)
10、式 lExpression1 的第一條記錄。Scope 表示指定要定位的記錄范圍,可以使用 ALL、NEXT 記錄數(shù)、RECORD 記錄號(hào)、REST 四種范圍。由于該命令只能找到滿足條件的第一條記錄,所以在發(fā)現(xiàn)了該記錄后,應(yīng)當(dāng)執(zhí)行 CONTINUE命令,在表的剩余部分尋找其他滿足條件的記錄。CONTINUE當(dāng)執(zhí)行 CONTINUE 時(shí),搜索操作從滿足條件的記錄的下一條記錄開始繼續(xù)執(zhí)行??梢灾貜?fù)執(zhí)行 CONTINUE 命令,直到到達(dá)范圍邊界或表尾。(2)判斷查找是否成功FOUND()用來判斷查找命令是否成功,該函數(shù)返回一個(gè)邏輯值,指明最近執(zhí)行的命令 LOCATE、CONTINUE是否成功。如果搜
11、索成功,該函數(shù)返回“真”(.T.)值。2SELECT 查詢命令SELECT 查詢命令是對(duì)標(biāo)準(zhǔn) SQL 查詢命令的擴(kuò)充。基本的 SELECT 命令必須制定一個(gè)表名和一個(gè)查詢輸出項(xiàng)。表名指明數(shù)據(jù)源,查詢輸出項(xiàng)指明查詢內(nèi)容。SELECT ALL|DISTINCTTOPPERCENTFROM 數(shù)據(jù)庫名!INNER|LEFTOUTER|RIGHTOUTER|FULLOUTERJOIN 數(shù)據(jù)庫名!INNER|LEFTOUTER|RIGHTOUTER|FULLOUTERJOIN 數(shù)據(jù)庫名! ONINTO|TO FILEADDITIVE|TO PRINTERPROMPT|TO SCREENWHERE ORDE
12、R BYASC|DESCGROUP BY,分組列名HAVINGUNION ALL SELECT 命令A(yù)LL|DISTINCT中,ALL 是指定查詢結(jié)果中包含所有行,該項(xiàng)為默認(rèn)選項(xiàng);DISTINCT 將去掉查詢結(jié)果中所有重復(fù)的行。TOPPERCENT是在符合查詢條件的所有記錄中,選取指定數(shù)量或百分比的記錄。TOP 參數(shù)必須與ORDER BY參數(shù)同時(shí)使用。按照ORDER BY參數(shù)排好序后,TOP 參數(shù)根據(jù)此順序從起始處選定條或%的記錄。使用ORDER BY子句對(duì)指定的字段進(jìn)行排序,會(huì)產(chǎn)生并列的情況。例如,可能有多條記錄,它們?cè)谶x定的字段上值相同。如果指定為 10,在查詢結(jié)果中可能多于 10 條記錄
13、數(shù),因?yàn)榭赡苡袔讞l記錄位置并列。如果包含 PERCENT 關(guān)鍵字指定查詢結(jié)果中的記錄數(shù),得到記錄數(shù)為小數(shù)時(shí)進(jìn)行取整。指定查詢結(jié)果的輸出項(xiàng)目,每一項(xiàng)之間用逗號(hào)分開,查詢輸出項(xiàng)包括以下幾種: FROM 參數(shù),指定表中的字段名。如果要查詢的字段名在多個(gè)表文件中出現(xiàn),則要在字段名前加上表的別名或臨時(shí)表名和連接符號(hào)“.”。該查詢輸出項(xiàng)在查詢結(jié)果記錄中的值為對(duì)應(yīng)的表文件中字段的值。 常量,可以是任何類型的常量。查詢輸出項(xiàng)在查詢結(jié)果記錄中的值都為該常量值。 表達(dá)式,可以是任何結(jié)果類型的 Visual FoxPro 6.0 表達(dá)式。表達(dá)式中可以包含表的字段名、Visual FoxPro 6.0 提供的函數(shù)和自
14、定義函數(shù)。這種查詢輸出項(xiàng)在查詢結(jié)果記錄中的值為將對(duì)應(yīng)的查詢表字段的值代替表達(dá)式字段名,然后計(jì)算表達(dá)式的值。正是因?yàn)椴樵冚敵鲰?xiàng)可以是表達(dá)式,使得 SELECT 命令具有較強(qiáng)的計(jì)算能力。對(duì)于查詢輸出項(xiàng)的個(gè)數(shù)沒有限制,此處常用的一個(gè)特殊符號(hào)是“*”,可以用來指代查詢表的所有字段名而不必逐個(gè)列出,簡(jiǎn)化了命令的書寫。每個(gè)查詢輸出項(xiàng)還可以指定一個(gè)列名,列名用做在瀏覽中顯示查詢結(jié)果時(shí)的表頭字段名,這對(duì)于字符數(shù)太多的查詢項(xiàng)(如表達(dá)式),具有十分重要的作用。列名應(yīng)該與查詢輸出項(xiàng)的實(shí)際意義相符。注意列名不可在命令的其他參數(shù)中被引用。FROM 數(shù)據(jù)庫名!指定要查詢的一個(gè)或多個(gè)表。在 FROM 子句中,表名可以帶數(shù)據(jù)
15、庫名的前綴以查詢非當(dāng)前數(shù)據(jù)庫的表。此外,每個(gè)表名還可以賦予一個(gè)在本命令中唯一的表別名。一旦指定表別名,則命令的其他參數(shù)中需要引用該表時(shí),都必須使用表別名,不可使用原表名。SELECT 命令的強(qiáng)大功能之一是多表關(guān)聯(lián)查詢。多表關(guān)聯(lián)就是將兩個(gè)或多個(gè)表文件的記錄按照關(guān)聯(lián)方式和關(guān)聯(lián)條件交叉合并,關(guān)聯(lián)之后可以得到一個(gè)新的虛擬表。多表關(guān)聯(lián)查詢的結(jié)果取自這個(gè)虛擬表。當(dāng)一個(gè)表的某條記錄與另一個(gè)表的某條記錄符合指定的關(guān)聯(lián)條件時(shí),這兩條記錄的字段值合并后便作為虛擬表的一條記錄。關(guān)聯(lián)條件可用 FROM 子句之后的 ON 子句或者 WHERE 子句的參數(shù)指定,兩個(gè)以上的表關(guān)聯(lián)需要多個(gè)關(guān)聯(lián)條件,第一個(gè)表之后的每個(gè)表都需要
16、一個(gè)關(guān)聯(lián)條件。最常用的關(guān)聯(lián)條件是一個(gè)表的字段與另一個(gè)表的字段相等。INNER | LEFT OUTER | RIGHTOUTER| FULLOUTERJOIN 設(shè)置關(guān)聯(lián)方式。多個(gè)表關(guān)聯(lián)則需要多個(gè) JOIN 參數(shù)。JOIN 參數(shù)左邊的表稱為左表,右邊的表稱為右表。多表關(guān)聯(lián)有內(nèi)部連接、左連接、右連接和完全連接等幾種關(guān)聯(lián)方式,相應(yīng)地 JOIN 子句也有四種形式。INNER JOIN 設(shè)置內(nèi)部連接,這是默認(rèn)的表關(guān)聯(lián)方式。系統(tǒng)檢查左表的每條記錄和右表的每條記錄,每當(dāng)左表的記錄與右表的某條記錄按照關(guān)聯(lián)條件匹配時(shí),就將左表與右表匹配的記錄合并,作為虛擬表的一條記錄。LEFTOUTERJOIN 設(shè)置左連接。檢
17、查左表的每條記錄和右表的每條記錄,如果左表的記錄與右表的某條記錄按照關(guān)聯(lián)條件匹配,就將左表與右表匹配的記錄合并,作為虛擬表的一條記錄;如果左表的記錄在右表中沒有匹配的記錄,左表記錄也作為虛擬表的一條記錄,不過這種虛擬表記錄中左表字段的值都取自左表,而右表字段的值全為 NULL 值??梢?,左連接的結(jié)果包含內(nèi)部連接的結(jié)果。RIGHT OUTER JOIN 設(shè)置右連接。右連接的結(jié)果與左連接正好對(duì)反,即相當(dāng)于將左表與右表位置互換之后左連接的結(jié)果,不過字段次序不同。FULL OUTER JOIN 設(shè)置完全連接。完全連接的結(jié)果是左連接的結(jié)果與右連接的結(jié)果合并后重復(fù)記錄的結(jié)果。INTO 輸出目標(biāo),SELEC
18、T 命令的查詢結(jié)果可以輸出到多種目標(biāo),例如表瀏覽窗口、內(nèi)存數(shù)組、數(shù)據(jù)庫、表、文件、打印機(jī)和屏幕。輸出目標(biāo)可以通過 INTO 子句指定,當(dāng)不使用 INTO 子句時(shí),查詢結(jié)果輸出到表瀏覽窗口。INTO ARRAY 數(shù)組名,設(shè)置輸出到數(shù)組,將查詢結(jié)果輸出到指定的二維數(shù)組。如果數(shù)組已經(jīng)存在且結(jié)構(gòu)與查詢結(jié)果相同,則將查詢結(jié)果追加到數(shù)組尾部,否則創(chuàng)建新數(shù)組。如果查詢結(jié)果不包含任何記錄(未查詢到符合條件的記錄或者查詢失敗),則不用創(chuàng)建數(shù)組。數(shù)組的列數(shù)等于查詢項(xiàng)的個(gè)數(shù),行數(shù)等于查詢結(jié)果的記錄數(shù)。每列數(shù)組元素的數(shù)據(jù)類型與查詢項(xiàng)目的結(jié)果數(shù)據(jù)類型相同。INTO DBF TABLE 表名 DATABASE 數(shù)據(jù)庫名設(shè)
19、置輸出到數(shù)據(jù)庫和表。它可以將查詢結(jié)果輸出到指定的表中,并可以添加到指定的數(shù)據(jù)庫中。如果指定的表已經(jīng)存在并且打開,而 SET SAFETY 設(shè)置為 OFF,則該表內(nèi)容被查詢結(jié)果完全覆蓋;如果 SET SAFETY設(shè)置為 ON,則 Visual FoxPro 6.0 首先提示是否覆蓋指定的表;如果指定的表不存在或者存在但未打開,則 Visual FoxPro 6.0 直接用查詢結(jié)果覆蓋該表;如果新的表名未指定路徑,則在默認(rèn)路徑下創(chuàng)建新表;如果新的表名不含擴(kuò)展名,則默認(rèn)擴(kuò)展名為.dbf。當(dāng)使用 DATABASE 子句及其參數(shù)時(shí),Visual FoxPro 6.0 將指定的表添加到指定的數(shù)據(jù)庫中。TO
20、 FILE ADDITIVE將查詢結(jié)果輸出到指定的文本文件中。如果文件名未指定路徑,則在默認(rèn)路徑下創(chuàng)建文件;如果文件名不含擴(kuò)展名,則默認(rèn)擴(kuò)展名為.txt。如果使用 ADDITIVE子句,則查詢結(jié)果添加到指定文本文件的末尾而不覆蓋原文件。TO PRINTER PROMPT設(shè)置輸出到打印機(jī),將查詢結(jié)果輸出到默認(rèn)的打印機(jī)。如果使用 PROMPT參數(shù),則打印前顯示打印對(duì)話框,可以調(diào)整打印選項(xiàng)。TO SCREEN 設(shè)置輸出到屏幕,將查詢結(jié)果輸出到 Visual FoxPro 6.0 的主窗口或者當(dāng)前的用戶活動(dòng)窗口。WHERE指定篩選記錄的條件或者多個(gè)表關(guān)聯(lián)的條件。此處常用的通配符“”(百分號(hào))表示匹配任
21、意個(gè)任何字符(包括無任何字符),通配符“_”(下畫線)表示匹配任意的單個(gè)字符。ORDER BY ASC | DESC 指定查詢結(jié)果記錄的排序方式。在 SELECT 命令中不用 ORDER BY 子句時(shí),查詢結(jié)果按照記錄的物理存儲(chǔ)次序排序。如果需要改變這種次序,則需要ORDER BY 子句。ORDER BY 子句的參數(shù)是一個(gè)或多個(gè)(用逗號(hào)分隔)排序表達(dá)式以及可選的排序方式子句 ASC 或 DESC。當(dāng) ORDER BY 子句有多個(gè)排序表達(dá)式時(shí),查詢結(jié)果記錄先按照排在前面的排序表達(dá)式排序,然后依次按照排在后面的排序表達(dá)式排序。每個(gè)排序表達(dá)式后附帶的 ASC 子句表示在按照該排序表達(dá)式排序時(shí)采用升序
22、方式;DESC 子句表示在按照該排序表達(dá)式排序時(shí)采用降序方式;不帶 ASC 和 DESC 子句時(shí),默認(rèn)按升序方式排序。GROUP BY 子句指定查詢結(jié)果記錄的分組方式。一般情況下,含有 GROUP BY 子句的 SELECT命令主要用來完成統(tǒng)計(jì)運(yùn)算。這種 SELECT 命令通常只包含兩類查詢項(xiàng):用來分組的查詢項(xiàng)和統(tǒng)計(jì)運(yùn)算表達(dá)式,其他的查詢項(xiàng)也有查詢結(jié)果,但沒有實(shí)際的意義。HAVING ,有時(shí)不希望查詢結(jié)果包含分組之后的所有記錄,而希望有條件地選擇分組之后的部分記錄,這時(shí)就要用到與 GROUP BY 子句相配合的 HAVING 子句。HAVING 子句的參數(shù)是一個(gè)邏輯表達(dá)式,指定了選擇分組記錄的
23、條件。使用 HAVING 子句的命令如果沒有使用GROUP BY 子句,則它的作用與 WHERE 子句相同。UNIONALLSELECT 命令把一個(gè) SELECT 語句的最后查詢結(jié)果同另一個(gè) SELECT 語句的最后查詢結(jié)果組合起來。默認(rèn)情況下,UNION 查詢組合的結(jié)果不含重復(fù)的記錄,如果帶 ALL 子句時(shí),輸出結(jié)果中會(huì)出現(xiàn)重復(fù)記錄。在使用 UNION 子句時(shí)參數(shù)中不可嵌套 UNION 子句,即一個(gè) SELECT命令僅可含有一個(gè) UNION 子句。兩個(gè) SELECT 命令的查詢結(jié)果中的列數(shù)必須相同。兩個(gè) SELECT查詢結(jié)果中的對(duì)應(yīng)列必須有相同的數(shù)據(jù)類型和寬度。只有最后的 SELECT 中可
24、以包含 ORDER BY子句,而且必須按編號(hào)指出所輸出的列。如果包含了一個(gè) ORDER BY 子句,將影響整個(gè)結(jié)果。3.4【案例 12】多表查詢員工信息案例描述如果查詢中有多個(gè)表,可用更新或添加連接來控制查詢選擇的記錄。添加表時(shí)會(huì)自動(dòng)顯示連接,使用“聯(lián)接條件”對(duì)話框,可改變表之間的連接類型。但是,如果相關(guān)的字段名不匹配,則必須自己創(chuàng)建表間的連接。多表查詢的創(chuàng)建過程與單表查詢的創(chuàng)建基本上相同,只是查詢中涉及多個(gè)表的內(nèi)容。用戶可以在創(chuàng)建查詢的同時(shí)將表加入到查詢中,也可以在查詢創(chuàng)建好以后再添加表。接下來使用查詢向?qū)?,完成根?jù)多表查詢記錄的操作。相關(guān)知識(shí)在使用 SELECT 查詢時(shí),可以將多個(gè)表連接到
25、一起,形成一個(gè)“新表”。向查詢中添加表或視圖時(shí),Visual FoxPro 6.0 根據(jù)匹配的字段建議一個(gè)可能的表或視圖之間的聯(lián)接。如果使用的數(shù)據(jù)庫中,表或視圖間具有永久關(guān)系,Visual FoxPro 6.0 就利用這些已有的關(guān)系作為默認(rèn)的聯(lián)接。如果要在查詢中添加數(shù)據(jù)庫表,需要先打開適當(dāng)?shù)臄?shù)據(jù)庫,運(yùn)行該數(shù)據(jù)庫。1創(chuàng)建查詢時(shí)添加表如果想添加的表不在數(shù)據(jù)庫中,則在“添加表或視圖”對(duì)話框中單擊“其他”按鈕,在“打開”對(duì)話框中選定想加入的表,單擊“確定”按鈕。在“聯(lián)接條件”對(duì)話框中,檢查建議的聯(lián)接。如果 Visual FoxPro 6.0 找不到這樣的匹配字段,則應(yīng)該由設(shè)計(jì)者在“聯(lián)接條件”對(duì)話框中選
26、擇匹配的字段。2多表查詢中的聯(lián)接在“查詢?cè)O(shè)計(jì)器”中,拖動(dòng)表中的字段與另一表中的字段聯(lián)接;或者從“查詢?cè)O(shè)計(jì)器”工具欄上單擊“添加聯(lián)接”按鈕,這時(shí)會(huì)顯示“聯(lián)接條件”對(duì)話框。添加或變更聯(lián)接時(shí),可選擇聯(lián)接類型來擴(kuò)充或縮小結(jié)果。創(chuàng)建聯(lián)接的最簡(jiǎn)單方法是使用“聯(lián)接條件”對(duì)話框。3從查詢中添加或移去表向查詢中添加兩個(gè)或多個(gè)表。在“查詢?cè)O(shè)計(jì)器”工具欄中,單擊“添加聯(lián)接”按鈕,在“聯(lián)接條件”對(duì)話框中,從兩個(gè)表中選擇相關(guān)的字段名,僅當(dāng)字段的大小相等、數(shù)據(jù)類型相同時(shí)才能聯(lián)接,最后單擊“確定”按鈕。4刪除聯(lián)接從“查詢?cè)O(shè)計(jì)器”中選中聯(lián)接行,再單擊“查詢”“移去聯(lián)接條件”菜單命令;或者在“聯(lián)接”選項(xiàng)卡中選擇聯(lián)接條件,然后單
27、擊“移去”按鈕。5修改聯(lián)接除了篩選和聯(lián)接類型外,還可通過改變聯(lián)接的條件來控制結(jié)果。聯(lián)接不必基于完全匹配的字3.5段,可基于“Like”、“=”、“”或“”條件設(shè)置不同的聯(lián)接關(guān)系。聯(lián)接條件和篩選條件類似,二者都先比較值,然后選出滿足條件的記錄。不同之處在于篩選是將字段值和篩選值進(jìn)行比較,而聯(lián)接條件是將一個(gè)表中的字段值和另一個(gè)表中的字段值進(jìn)行比較。6聯(lián)接類型在多個(gè)表的查詢中,表之間的聯(lián)接包括如下四種: 內(nèi)部聯(lián)接:兩個(gè)表中僅滿足條件的記錄,這是最普通的聯(lián)接類型。 左聯(lián)接:表中聯(lián)接條件左邊的所有記錄和表中聯(lián)接條件右邊的且滿足聯(lián)接條件的記錄。 右聯(lián)接:表中聯(lián)接條件右邊的所有記錄和表中聯(lián)接條件左邊的且滿足
28、聯(lián)接條件的記錄。 完全聯(lián)接:表中不論是否滿足條件的所有記錄?!景咐?13】限定條件查詢員工工資案例描述在查詢數(shù)據(jù)時(shí),為了更好地找到記錄行,可以指定查詢條件。當(dāng)需要對(duì)查詢所返回的結(jié)果做更多的控制或者搜索滿足兩個(gè)條件之一的記錄時(shí),都需要在“篩選”選項(xiàng)卡中加進(jìn)更多的語句。在 Visual FoxPro 6.0 中,如果在“篩選”選項(xiàng)卡中連續(xù)輸入選擇條件表達(dá)式,那么這些表達(dá)式自動(dòng)以邏輯“與”(.AND.)的方式組合起來,如果想使待查找的記錄滿足兩個(gè)以上條件中的任意一個(gè),可以使用“添加或”按鈕在這些表達(dá)式中間插入邏輯“或”(.OR.)操作符。接下來使用查詢向?qū)В瓿筛鶕?jù)限定條件查詢記錄的操作。相關(guān)知識(shí)1
29、設(shè)置篩選條件如果想使查詢檢索同時(shí)滿足一個(gè)以上條件的記錄,只需在“篩選”選項(xiàng)卡中的不同行上列出這些條件,這一系列條件自動(dòng)以“與”(AND)的方式組合起來,因此只有滿足所有這些條件的記錄才會(huì)檢索到。組合兩個(gè)過濾器,可以設(shè)置“與”(AND)條件,在“篩選”選項(xiàng)卡中輸入篩選條件,在“邏輯”列中選擇 AND。如果要使查詢檢索到的記錄滿足一系列選定條件中的任意一個(gè)時(shí),可以在這些選擇條件中間插入“或”(OR)操作符將這些條件組合起來。需要在兩個(gè)過濾器之間添加一個(gè)“或”(OR)操作符時(shí),可以選擇一個(gè)篩選條件,再在“邏輯”列中選擇“OR”??梢园选芭c”(AND)和“或”(OR)條件組合起來以選擇特定的記錄集。在
30、查詢的條件中,一般都要用到比較關(guān)系運(yùn)算,比較關(guān)系運(yùn)算符包括表 3-5-1 所示的一些內(nèi)容。2定向輸出查詢結(jié)果在完成了查詢?cè)O(shè)計(jì)并指定了輸出目的地后,可以單擊“運(yùn)行”按鈕啟動(dòng)該查詢。Visual FoxPro執(zhí)行用“查詢?cè)O(shè)計(jì)器”產(chǎn)生的 SQL SELECT 語句,并把輸出結(jié)果送到指定的目的地。如果尚未選定輸出目的地,結(jié)果將顯示在“瀏覽”窗口中。單擊“查詢”“查詢?nèi)ハ颉辈藛蚊?,或在“查詢?cè)O(shè)計(jì)器”工具欄中單擊“查詢?nèi)ハ颉卑粹o,打開“查詢?nèi)ハ颉睂?duì)話框,如圖 3-5-14 所示,可以在其中選擇將查詢結(jié)果送往何處。圖 3-5-14“查詢?nèi)ハ颉睂?duì)話框“查詢?nèi)ハ颉睂?duì)話框中的按鈕作用如表 3-5-2 所示。3查
31、詢結(jié)果設(shè)置(1)刪除重復(fù)記錄重復(fù)記錄是指其中所有字段值均相同的記錄。如果想把查詢結(jié)果中的重復(fù)記錄去掉,只需在“雜項(xiàng)”選項(xiàng)卡中選中“無重復(fù)記錄”復(fù)選框。(2)查詢極值記錄可以使用查詢返回包含指定數(shù)目或指定百分比的特定字段的記錄。例如,查詢可顯示含 10條指定字段最大值或最小值的記錄,或者顯示含有 10% 的指定字段最大值或最小值的記錄。在“雜項(xiàng)”選項(xiàng)卡中頂端可設(shè)置一定數(shù)目或一定百分比的記錄。如果要設(shè)置是否選取最大值或最小值,可設(shè)置查詢的排序順序。降序可查看最大值記錄,升序可查看最小值記錄。如果要檢索一定數(shù)目或一定百分比的極值記錄,可以在“排序依據(jù)”選項(xiàng)卡中選擇要檢索其極值的字段,接著選取“降序”
32、顯示最大值或“升序”顯示最小值。如果還要按其他字段排序,可按列表順序?qū)⑵浞旁跇O值字段的后面。在“雜項(xiàng)”選項(xiàng)卡“記錄個(gè)數(shù)”文本框中,鍵入想要檢索的最大值或最小值的數(shù)目。如果要顯示百分比,可以選中“百分比”復(fù)選框。(3)在查詢輸出中添加表達(dá)式在“字段”選項(xiàng)卡底部,可以在查詢輸出中加入函數(shù)和表達(dá)式??梢燥@示列表來查看可用的函數(shù)或者直接向組合框中鍵入表達(dá)式。如果希望字段名中包含表達(dá)式,可以添加別名。如果要在查詢輸出中添加表達(dá)式,在“字段”選項(xiàng)卡的“函數(shù)和表達(dá)式”文本框中鍵入表達(dá)式?;蛘邌螕?按鈕,打開“表達(dá)式生成器”對(duì)話框,在“表達(dá)式”文本框中鍵入表達(dá)式即可。單擊“添加”按鈕,在“選定字段”列表框中鍵
33、入表達(dá)式。需要注意的是,計(jì)算中將忽略 NULL值,有關(guān)表達(dá)式中 NULL 值的詳細(xì)內(nèi)容,請(qǐng)搜索“NULL 值”。不同于簡(jiǎn)單搜索與一個(gè)或多個(gè)字段相匹配的記錄,使用一個(gè)表達(dá)式可以組合兩個(gè)字段,或基于一個(gè)字段執(zhí)行某計(jì)算并且搜索匹配該組合或計(jì)算字段的記錄。定義查詢輸出后,可組織出現(xiàn)在結(jié)果中的記錄,方法是對(duì)輸出字段排序和分組。也可篩選出現(xiàn)在結(jié)果中的記錄組。(4)排序排序決定了查詢輸出結(jié)果中記錄或行的先后順序。在“排序依據(jù)”選項(xiàng)卡中,可以設(shè)置查詢的排序次序,排序次序決定了查詢輸出中記錄或行的排列順序。首先從“選定字段”列表框中選取要使用的字段,并把它們移到“排序條件”列表框中,然后根據(jù)查詢結(jié)果中所需的順序
34、排列這些字段。為了調(diào)整排序字段的重要性,可以在“排序條件”列表框中,將字段左側(cè)的按鈕拖到相應(yīng)的位置上。通過設(shè)置“排序選項(xiàng)”區(qū)域中的按鈕,可以確定升序或降序的排序次序。在“排序依據(jù)”選項(xiàng)卡的“排序條件”列表框中,每一個(gè)排序字段都帶有一個(gè)上箭頭或下箭頭,該箭頭表示按此字段排序時(shí),是升序排序還是降序排序。(5)分組查詢所謂分組就是將一組類似的記錄壓縮成一個(gè)結(jié)果記錄,這樣就可以完成基于一組記錄的計(jì)算。例如,想找到某一特定地區(qū)所有訂貨的總和,不用單獨(dú)查看所有的記錄,可以把來自相同地區(qū)的所有記錄合成為一個(gè)記錄,并獲得來自該地區(qū)的所有訂貨的總和。如果要控制記錄的分組,可使用“查詢?cè)O(shè)計(jì)器”中的“分組依據(jù)”選項(xiàng)
35、卡。分組在與某些合計(jì)函數(shù)聯(lián)合使用時(shí)效果最好,如 SUM、COUNT、AVG 等。要設(shè)置分組選項(xiàng),在“字段”選項(xiàng)卡中,在“函數(shù)和表達(dá)式”文本框中鍵入表達(dá)式。或者單擊按鈕,打開“表達(dá)式生成器”對(duì)話框,在“表達(dá)式”文本框中鍵入表達(dá)式。單擊“添加”按鈕,在“選定字段”列表框中放置表達(dá)式。在“分組依據(jù)”選項(xiàng)卡中,加入分組結(jié)果依據(jù)的表達(dá)式。選擇分組,如果要對(duì)已進(jìn)行過分組或壓縮的記錄而不是對(duì)單個(gè)記錄設(shè)置篩選,可在“分組依據(jù)”選項(xiàng)卡中單擊“滿足條件”單選按鈕,可使用字段名、字段名中的合計(jì)函數(shù)或者“字段名”下拉列表框中其余的表達(dá)式。若需要為一個(gè)組設(shè)置條件,可以在“分組依據(jù)”選項(xiàng)卡上,單擊“滿足條件”按鈕,打開“
36、滿足條件”對(duì)話框,選定一個(gè)函數(shù),并在“字段名”下拉列表框中選定字段名,單擊“確定”按鈕即可。3.6【案例 14】使用視圖查詢、案例描述視圖是一個(gè)定制的虛擬表定義,可以是本地的、遠(yuǎn)程的或帶參數(shù)的。視圖可引用一個(gè)或多個(gè)表,或者引用其他視圖。視圖是可更新的,它可引用遠(yuǎn)程表。視圖是數(shù)據(jù)庫中的一個(gè)特有功能,只有在包含視圖的數(shù)據(jù)庫打開時(shí),才能使用視圖。視圖建立后,可以像數(shù)據(jù)庫表一樣顯示和更改數(shù)據(jù),兼有表和查詢的特點(diǎn)。與查詢類似的地方是,可以用來從一個(gè)或多個(gè)相關(guān)聯(lián)的表中提取有用信息;與表類似的地方是,可以用來更新其中的信息,并將更新結(jié)果永久保存在磁盤上??梢杂靡晥D使數(shù)據(jù)暫時(shí)從數(shù)據(jù)庫中分離成為自由數(shù)據(jù),以便在主系統(tǒng)之外收集和修改數(shù)據(jù)。接下來使用查詢向?qū)В瓿墒褂靡晥D查詢記錄的操作。相關(guān)知識(shí)創(chuàng)建本地視圖可以使用“視圖向?qū)А薄耙晥D設(shè)計(jì)器”等完成。創(chuàng)建視圖和創(chuàng)建查詢的過程類似,主要的差別在于視圖是可更新的,而查詢則不行。查詢是一種 SQL SELECT 語句,作為文本文件以擴(kuò)展名.qpr 存儲(chǔ)。如果想從本地或遠(yuǎn)程表中提取一組可以更新的數(shù)據(jù),就需要使用視圖。1視圖設(shè)計(jì)器的使用使用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 里程節(jié)約法課程設(shè)計(jì)
- 2025年度金融產(chǎn)品售后服務(wù)保障協(xié)議范本3篇
- 2025年度森林資源保護(hù)與利用二零二五版樹木租賃合同4篇
- 二零二五年度酒店智能門鎖采購合同含智能卡片識(shí)別及管理平臺(tái)3篇
- 二零二五年度留學(xué)國際旅行保險(xiǎn)合同范本4篇
- 二零二五年生物制藥領(lǐng)域?qū)<移赣脜f(xié)議2篇
- 二零二五版教師勞動(dòng)爭(zhēng)議處理及仲裁合同范本3篇
- 2025年度新型電子產(chǎn)品買賣協(xié)議書范本4篇
- 2025年選礦廠自動(dòng)化升級(jí)承包合同模板3篇
- 2025年度馬鈴薯種植基地建設(shè)與土地流轉(zhuǎn)合作合同4篇
- 《穿越迷宮》課件
- 《C語言從入門到精通》培訓(xùn)教程課件
- 2023年中國半導(dǎo)體行業(yè)薪酬及股權(quán)激勵(lì)白皮書
- 2024年Minitab全面培訓(xùn)教程
- 社區(qū)電動(dòng)車棚新(擴(kuò))建及修建充電車棚施工方案(純方案-)
- 項(xiàng)目推進(jìn)與成果交付情況總結(jié)與評(píng)估
- 鐵路項(xiàng)目征地拆遷工作體會(huì)課件
- 醫(yī)院死亡報(bào)告年終分析報(bào)告
- 建設(shè)用地報(bào)批服務(wù)投標(biāo)方案(技術(shù)方案)
- 工會(huì)工作人年度考核個(gè)人總結(jié)
- 上海民辦楊浦實(shí)驗(yàn)學(xué)校初一新生分班(摸底)語文考試模擬試卷(10套試卷帶答案解析)
評(píng)論
0/150
提交評(píng)論