第8章 查詢和視圖_第1頁
第8章 查詢和視圖_第2頁
第8章 查詢和視圖_第3頁
第8章 查詢和視圖_第4頁
第8章 查詢和視圖_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8章查詢和視圖

本章要點查詢的創(chuàng)建與使用方法關系數(shù)據(jù)庫查詢語言的使用視圖的創(chuàng)建與使用方法查詢與視圖的聯(lián)系與區(qū)別思考題8.1.1查詢的設計過程在創(chuàng)建查詢時,通??梢宰裱韵铝鶄€步驟來創(chuàng)建查詢。(1)用“查詢向導”或“查詢設計器”創(chuàng)建查詢。(2)選擇在查詢結果中需要的字段。(3)設置查詢記錄的條件。(4)設置排序及分組條件來組織查詢結果。(5)選擇查詢輸出類別,可以是報表、表文件、圖表、瀏覽窗口和表文件等等。(6)運行此查詢。8.1數(shù)據(jù)查詢1.利用“查詢向導”創(chuàng)建查詢利用“查詢向導”創(chuàng)建查詢的步驟如下:(1)進入“查詢向導”進入“查詢向導”可用下面3種方法:①選擇【工具】|【向導】|【查詢】命令。②選擇【文件】|【新建】命令,進入“新建”對話框,選擇“查詢”單選按鈕,單擊“向導”按鈕。③在“項目管理器”窗口中,選擇“數(shù)據(jù)”選項卡,選中“查詢”,單擊“新建”按鈕,出現(xiàn)“新建查詢”對話框,單擊“查詢向導”按鈕。(2)選擇查詢結果中需要的字段8.1.2查詢的創(chuàng)建與保存(3)設置查詢條件(4)設置排序字段(5)設置記錄輸出范圍(6)保存查詢2.查詢設計器進入“查詢設計器”窗口有二種方法,(1)選擇【文件】│【新建】命令,進入“新建”對話框,選擇“查詢”單選按鈕,單擊“新建”按鈕;(2)在“項目管理器”窗口中,選擇“數(shù)據(jù)”選項卡,選中“查詢”文件類型,單擊“新建”按鈕,出現(xiàn)“新建查詢”對話框,單擊“新建查詢”按鈕。

3.查詢設計器工具欄“查詢設計器工具欄”各按鈕的功能如下:按鈕:添加數(shù)據(jù)庫表。按鈕:移去數(shù)據(jù)庫表。按鈕:添加數(shù)據(jù)庫表間的聯(lián)接。按鈕:顯示SQL窗口。按鈕:最大化上部分窗口。按鈕:確定查詢去向。4.使用查詢設計器創(chuàng)建查詢使用“查詢設計器”創(chuàng)建前面“查詢向導”創(chuàng)建查詢例子,具體步驟如下:(1)進入“查詢設計器”窗口,添加stud表,如圖所示。(2)選擇查詢需要的字段(3)設置查詢條件(4)保存查詢1.查詢的運行運行查詢的方法有以下5種:①在“查詢設計器”窗口中,選擇【查詢】|【運行查詢】命令。②在“查詢設計器”窗口中,右擊“查詢設計器”窗口,選擇快捷菜單中的【運行查詢】命令。③選擇【程序】|【運行】命令。彈出“運行”對話框,在對話框中,選擇所要運行的查詢文件,單擊“運行”按鈕。④在“項目管理器”窗口中,選擇要運行的查詢文件,單擊右邊的“運行”按鈕。⑤在“命令”窗口中,鍵入DO<查詢文件名>。例如,DO查詢1.qpr。8.1.3查詢的運行與修改2.查詢的修改修改可以用以下3種方法:①在“項目管理器”窗口中,選擇要修改的查詢文件,單擊右邊的“修改”按鈕,進入“查詢設計器”窗口中修改。②選擇【文件】|【打開】命令,在“打開”對話框中,選擇所要修改的查詢文件,單擊“確定”按鈕,進入“查詢設計器”窗口中修改。③在命令窗口中,鍵入MODIFYQUERY<查詢文件名>。3.查詢去向的設置單擊“查詢設計器”工具欄中的“查詢去向”按鈕或在系統(tǒng)菜單中單擊【查詢】|【查詢去向】命令,彈出“查詢去向”對話框,如圖所示。其中共包含7個查詢去向,各項的含義見表5-1。1.多表查詢的創(chuàng)建2.交叉表查詢的創(chuàng)建交叉表是類似電子表格形式來表現(xiàn)二維分析數(shù)據(jù)的一種表。例如,在學生成績總表中,是由學生“姓名”和本學期的各門“課程名稱”構成了一個二維表,此表的交叉點為“成績”的分值。8.1.4復雜(多表)查詢的設計8.2關系數(shù)據(jù)庫標準語言SQLSQL語言的基本概念

SQL語言支持關系型數(shù)據(jù)庫的三級模式結構。其中外模式對應于視圖(View)和部分基本表(BaseTable),模式對應于基本表,內模式對應于存儲文件?;颈硎潜旧愍毩⒋嬖诘谋?,在SQL語言中一個關系對應一個表。一些基本表對應一個存儲文件,一個表可以帶若干索引,索引存放在存儲文件中。存儲文件的邏輯結構組成了關系型數(shù)據(jù)庫的內模式。而存儲文件的物理文件結構是任意的。

1.綜合統(tǒng)一

SQL語言集數(shù)據(jù)定義(DDL)、數(shù)據(jù)操縱(DML)、數(shù)據(jù)管理(DCL)的功能于一體,語言風格統(tǒng)一,可以獨立完成數(shù)據(jù)庫的全部操作,包括定義關系模式、錄入數(shù)據(jù)及建立數(shù)據(jù)庫、查詢、更新、維護數(shù)據(jù)、數(shù)據(jù)庫的重新構造、數(shù)據(jù)庫安全性等一系列操作的要求,為數(shù)據(jù)庫應用系統(tǒng)開發(fā)者提供了良好的環(huán)境。2.高度非過程化3.面向集合的操作方式4.以同一種語法結構提供兩種使用方式5.語言簡潔,易學易用SQL語言的特點8.2.1SQL中的數(shù)據(jù)查詢語句數(shù)據(jù)庫中的數(shù)據(jù)很多時侯是為了查詢的,因此,數(shù)據(jù)查詢是數(shù)據(jù)庫的核心操作。而在SQL語言中,查詢語言中有一條查詢命令,即SELECT語句。1基本查詢語句【格式】SELECT[ALL|DISTINCT]<字段列表>FROM<表>【功能】無條件查詢?!菊f明】ALL:表示顯示全部查詢記錄,包括重復記錄。

DISTINCT:表示顯示無重復結果的記錄。

【例8-1】顯示STUD(學生信息數(shù)據(jù)表)中的所有記錄。SELECT*;FROMSTUD命令中的*表示輸出顯示所有的字段,數(shù)據(jù)來源是STUD表,表中的內容以瀏覽方式顯示?!纠?-2】顯示STUD(學生信息數(shù)據(jù)表)中的所有的學號及與之對應的姓名,同時能去除重名。SELECTDISTINCT學號,姓名

;FROMSTUD【例8-3】顯示SC(課程成績表)中的所有記錄,并將成績一項乘以0.7。SELECT學號,課程號,成績*0.7AS成績

FROMSC2帶條件(WHERE)的查詢語句【格式】SELECT[ALL|DISTINCT]<字段列表>FROM<表>[WHERE<條件表達式>]【功能】從一個表中查詢滿足條件的數(shù)據(jù)?!菊f明】<條件表達式>由一系列用AND或OR連接的條件表達式組成,條件表達式的格式可以是以下幾種:(1)<字段名1><關系運算符><字段名2>。(2)<字段名><關系運算符><表達式>。(3)<字段名><關系運算符>ALL(<子查詢>)(4)<字段名><關系運算符>ANY|SOME(<子查詢>)(5)<字段名>[NOT]BETWEEN<起始值>AND<終止值>(6)[NOT]EXISTS(<子查詢>)(7)<字段名>[NOT]IN<值表>(8)<字段名>[NOT]IN(<子查詢>)(9)<字段名>[NOT]LINK<字符表達式>SQL支持的關系運算符如下:=、<>、?。健ⅲ?、==、>、>=、<、<=。【例8-4】顯示STUD表中所有男生記錄的學號,姓名和性別字段值。SELECT學號,姓名,性別

;FROMSTUDWHERE性別="男"【例8-5】顯示STUD表中出生日期在85年之間的學生的學號,姓名,出生日期。SELECT學號,姓名,出生日期

;FROMSTUD;WHERE出生日期

BETWEEN{01/01/85}AND{12/31/86}【例8-6】顯示STUD表中姓李的學生的學號,姓名,出生日期。SELECT學號,姓名,出生日期;FROMSTUD;WHERE姓名

LIKE“李%”2.SQL的復雜查詢(1)連接查詢

【說明】在一個數(shù)據(jù)庫中的多個表之間一般都存在著某些聯(lián)系,在一個查詢語句中同時涉及到兩個或兩個以上的表時,這種查詢稱之為連接查詢(也稱為多表查詢)。在多表之間查詢必須處理表與表之間的連接關系。

SELECT[ALL|DISTINCT]<字段列表>FROM<表1>[,表2…..]WHERE<條件表達式>【例8-7】查詢并顯示各個學生的學號,姓名,各科成績及課程名。SELECTa.學號,a.姓名,b.課程名,c.成績

;FROMSTUDa,COURSEb,SCc;WHEREa.學號=c.學號.AND.b.課程號=c.課程號或SELECT學號,a.姓名,b.課程名,c.成績;FROMSTUD,COURSE,SC;WHERESTUD.學號=SC.學號.AND.COURSE.課程號=SC.課程號【例8-8】查詢并顯示各個學生所學課程的情況。SELECTSTUD.學號,STUD.姓名,COURSE.課程名

;FROMSTUD,SC,COURSE;WHERESTUD.學號=SC.學號.AND.SC.課程號=COURSE.課程號(2)連接問題在SQL語句中,在FROM子句中提供了一種稱之為連接的子句,連接分為內連接和外連接,外連接又可分為左外連接、右外連接和全外連接。1)內連接內連接是指包括符合條件的每個表的記錄,也稱之為全記錄操作。而上面兩個例子就是內連接。【例8-9】查詢并顯示各個學生的學號,所學課程及課程成績。SELECTSC.學號,COURSE.課程名,SC.成績

;FROMSC,COURSE;WHERESC.課程號=COURSE.課程號如果采用內連接方式,則命令如下:SELECTa.學號,b.課程名,成績

;FROMSCaINNERJOINCOURSEbONa.課程號=b.課程號將會得到完全相同的結果。2)外連接外連接是指把兩個表分為左右兩個表。右外連接是指連接滿足條件右側表的全部記錄。左外連接是指連接滿足條件左側表的全部記錄。全外連接是指連接滿足條件表的全部記錄。(3)嵌套查詢在SQL語句中,一個SELECT-FROM-WHERE語句稱為一個查詢塊。將一個查詢塊嵌套在另一個查詢塊的WHERE子句或HAVING短語的條件中的查詢稱為嵌套查詢或子查詢。【例8-10】顯示“李寧”所在班級的學生名單。SELECT學號,姓名,班級名

;FROMSTUD;WHERE班級名=(SELECT班級名

FROMSTUDWHERE姓名="李寧")(4)分組與計算查詢【格式】SELECT[ALL|DISTINCT]<字段列表>FROM<表>[WHERE<條件>[GROUPBY<分類字段列表>…][HAVING<過濾條件>][ORDERBY<排序項>[ASC|DESC]

【功能】包括有排序、函數(shù)運算和謂詞演算【例8-11】按出生日期降序顯示STUD表中的學號,姓名,出生日期。SELECT學號,姓名,出生日期

;FROMSTUD;ORDERBY出生日期

DESC【例8-12】按成績升序顯示SC表中的學號,課程號,成績。SELECT學號,課程號,成績

;FROMSC;ORDERBY成績【例8-13】按班級分類顯示學生的姓名,課程名,成績,同一班級按分數(shù)排序。SELECTa.姓名,a.班級名,c.課程名,b.成績

;FROMSTUDa,SCb,COURSEc;WHEREa.學號=b.學號

ANDb.課程號=c.課程號;ORDERBYa.班級名,b.成績;【例8-14】顯示成績在80至90之間的學號,姓名,課程名和成績。SELECTa.姓名,c.課程名,b.成績

FROMSTUDa,SCb,COURSEcWHEREa.學號=b.學號

ANDb.課程號=c.課程號

ANDb.成績

BETWEEN80AND90【例8-15】顯示計算機系學生的成績。SELECTa.姓名,a.系別代號,c.課程名,b.成績

;FROMSTUDa,SCb,COURSEc;WHEREa.學號=b.學號

ANDb.課程號=c.課程號

ANDa.系別代號=“01”【例8-16】顯示各班總人數(shù)。SELECT班級名,COUNT(班級名)

AS總人數(shù)

;FROMSTUD;GROUPBY班級名【例8-17】顯示計算機系的學生及所有男學生。SELECT學號,姓名,系別代號,性別

;FROMSTUD;WHERE系別代號="01"UNION;SELECT學號,姓名,系別代號,性別

;FROMSTUD;WHERE性別="男"【例8-18】顯示選修了英語或數(shù)學科目的學生學號。SELECT學號,課程號

FROMSC;WHERE課程號=“01”UNION;SELECT學號,課程號

;FROMSC;WHERE課程號=“02”【例8-19】顯示計算機系男生的名單。SELECT學號,姓名,系別代號,性別

;FROMSTUD;WHERE系別代號=“01”AND性別=“男”【例8-20】顯示既選修了01課程又選修了02課程學生的名單。SELECT學號

;FROMSC;WHERE課程號=“01”AND學號

IN;(SELECT學號

FROMSCWHERE課程號=“02”)【例8-21】顯示計算機系非男生的名單。SELECT學號,姓名,系別代號,性別

;FROMSTUD;WHERE系別代號=“01”AND性別=“女”【例8-22】顯示選修了01課程而沒有選修02課程學生的名單。SELECT學號

;FROMSC;WHERE課程號=“01”AND學號

NOTIN;(SELECT學號

FROMSCWHERE課程號=“02”)(5)查詢去向默認情況下,查詢輸出到一個瀏覽窗口,用戶在“SELECT”語句中可使用[INTO<目標>|TOFILE<文件名>|TOSCREEN|TOPRINTER]子句選擇查詢去向:INTOARRAY數(shù)組名:將查詢結果保存到一個數(shù)組中。CURSOR<臨時表名>:將查詢結果保存到一個臨時表中。DBF|TABLE<表名>:將查詢結果保存到一個永久表中。TOFILE<文件名>[ADDITIVE]:將查詢結果保存到文本文件中。如果帶“ADDITIVE”關鍵字,查詢結果以追加方式添加到<文件名>指定的文件,否則,以新建或覆蓋方式添加到<文件名>指定的文件。TOSCREEN:將查詢結果保在屏幕上顯示。TOPRINTER:將查詢結果送打印機打印。8.3.1視圖簡介視圖是一個定制的虛擬邏輯表,視圖中只存放相應的數(shù)據(jù)邏輯關系,并不保存表的記錄內容,但可以在視圖中改變記錄的值,然后將更新記錄返回到源表。視圖與查詢在功能上有許多相似之處,但又有各自特點,主要區(qū)別如下:功能不同:視圖可以更新字段內容并返回源表,而查詢文件中的記錄數(shù)據(jù)不能被修改。從屬不同:視圖不是一個獨立的文件而從屬于某一個數(shù)據(jù)庫。查詢是一個獨立的文件,它不從屬于某一個數(shù)據(jù)庫。8.

溫馨提示

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

評論

0/150

提交評論