數(shù)據(jù)庫(kù)原理實(shí)驗(yàn)報(bào)告_第1頁(yè)
數(shù)據(jù)庫(kù)原理實(shí)驗(yàn)報(bào)告_第2頁(yè)
數(shù)據(jù)庫(kù)原理實(shí)驗(yàn)報(bào)告_第3頁(yè)
數(shù)據(jù)庫(kù)原理實(shí)驗(yàn)報(bào)告_第4頁(yè)
數(shù)據(jù)庫(kù)原理實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩52頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、計(jì)算機(jī)與信息學(xué)院數(shù)據(jù)庫(kù)原理實(shí)驗(yàn)報(bào)告專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù)班 級(jí):2012級(jí)本科班學(xué) 號(hào):07173姓 名:指導(dǎo)教師:2014年 06月 18 日實(shí)驗(yàn)項(xiàng)目列表序號(hào)實(shí)驗(yàn)項(xiàng)目名稱成績(jī)1實(shí)驗(yàn)一:數(shù)據(jù)庫(kù)的創(chuàng)建管理2實(shí)驗(yàn)二、表的創(chuàng)建、管理及數(shù)據(jù)操作3實(shí)驗(yàn)三:?jiǎn)伪聿樵?實(shí)驗(yàn)四:連接查詢5實(shí)驗(yàn)五:嵌套查詢6實(shí)驗(yàn)六:視圖和索引的創(chuàng)建與管理7實(shí)驗(yàn)七:T-SQL語(yǔ)言編程基礎(chǔ)8實(shí)驗(yàn)八:存儲(chǔ)過(guò)程以下選做:9實(shí)驗(yàn)九:函數(shù)10實(shí)驗(yàn)十:觸發(fā)器11實(shí)驗(yàn)十一:系統(tǒng)安全管理計(jì)算機(jī)與信息學(xué)院實(shí)驗(yàn)報(bào)告紙實(shí)驗(yàn)一 數(shù)據(jù)庫(kù)創(chuàng)建與管理一、實(shí)驗(yàn)?zāi)康呐c要求1、熟練掌握SSMS中界面方式創(chuàng)建和管理數(shù)據(jù)庫(kù)。2、熟練掌握SSMS查詢編輯器T-SQL語(yǔ)

2、句創(chuàng)建和管理數(shù)據(jù)庫(kù)。3、熟練掌握備份和還原數(shù)據(jù)庫(kù)。二、實(shí)驗(yàn)內(nèi)容1、界面方式創(chuàng)建和管理數(shù)據(jù)庫(kù)(1)創(chuàng)建數(shù)據(jù)庫(kù)(2)修改數(shù)據(jù)庫(kù)(3)刪除數(shù)據(jù)庫(kù)2、利用企業(yè)管理器備份和還原數(shù)據(jù)庫(kù)(1)備份數(shù)據(jù)庫(kù)(2)還原數(shù)據(jù)庫(kù)3、T-SQL語(yǔ)句方式創(chuàng)建和管理數(shù)據(jù)庫(kù)(1)創(chuàng)建SPJ數(shù)據(jù)庫(kù):在SSMS中“新建查詢”,輸入以下語(yǔ)句并運(yùn)行CREATE DATABASE SPJON(NAME=SPJ_Data,FELENAME='C:Program FilesMicrosoft SQL ServerMSSQLdataSPJ_Data.MDF' , SIZE = 3, MAXSIZE = 10,FILEGROW

3、TH = 10%)LOG ON (NAME = 'SPJ_Log', FILENAME = 'C:Program FilesMicrosoft SQL ServerMSSQLdataSPJ_Log.LDF' , SIZE = 1, FILEGROWTH = 10%)(2)修改SPJ數(shù)據(jù)庫(kù):在查詢分析器中輸入以下語(yǔ)句并運(yùn)行ALTER DATABASE SPJMODIFY FILE(NAME='SPJ_Data', SIZE=4,MAXSIZE=UNLIMITED)ALTER DATABASE SPJ ADD FILE(NAME='SPJ_D

4、ata_2', FILENAME='C:Program FilesMicrosoft SQL ServerMSSQLDataSPJ_Date_2.ndf',SIZE=1, MAXSIZE=10, FILEGROWTH=10%)(3)刪除SPJ數(shù)據(jù)庫(kù):DROP DATABASE SPJ4、界面方式創(chuàng)建數(shù)據(jù)庫(kù)XSBOOK,寫出操作過(guò)程。5、T-SQL語(yǔ)句方式創(chuàng)建XSBOOK,寫出相應(yīng)T-SQL語(yǔ)句。三、實(shí)驗(yàn)步驟 1、界面方式創(chuàng)建和管理數(shù)據(jù)庫(kù)(1)創(chuàng)建數(shù)據(jù)庫(kù)1)在對(duì)象資源管理器中連接到數(shù)據(jù)庫(kù)引擎服務(wù)器;2)將數(shù)據(jù)庫(kù)引擎服務(wù)器展開,右擊"數(shù)據(jù)庫(kù)",然后單擊&

5、quot;新建數(shù)據(jù)庫(kù)"命令;3)鍵入新數(shù)據(jù)庫(kù)的名稱student,同時(shí)用指定的數(shù)據(jù)庫(kù)名student作為前綴創(chuàng)建主數(shù)據(jù)庫(kù)和事務(wù)日志文件,例如:student_Data.mdf 和 student_Log.ldf。(2)修改數(shù)據(jù)庫(kù)1)要更改數(shù)據(jù)庫(kù)文件和日志文件的參數(shù),選中“student”數(shù)據(jù)庫(kù)右擊鼠標(biāo)“屬性”,在“文件”選項(xiàng)卡中進(jìn)行修改。2)要更改文件組,選中“student”數(shù)據(jù)庫(kù),右擊鼠標(biāo)“屬性”,在“文件組”選項(xiàng)卡中進(jìn)行修改。(3)刪除數(shù)據(jù)庫(kù)選擇“student”數(shù)據(jù)庫(kù),右擊鼠標(biāo)選擇“刪除”命令即可。2、利用企業(yè)管理器備份和還原數(shù)據(jù)庫(kù)(1)備份數(shù)據(jù)庫(kù)選擇“student”數(shù)據(jù),

6、右擊鼠標(biāo)選擇“任務(wù)|備份”命令,其余默認(rèn)。(2)還原數(shù)據(jù)庫(kù)選擇“數(shù)據(jù)庫(kù)”,右擊鼠標(biāo)選擇“還原數(shù)據(jù)庫(kù)”命令,打開還原數(shù)據(jù)庫(kù)對(duì)話框,在“目標(biāo)數(shù)據(jù)庫(kù)”中輸入student,在“還原的源”中選擇源設(shè)備,打開,選擇剛備份好的student.bak文件即可。3、T-SQL語(yǔ)句方式創(chuàng)建和管理數(shù)據(jù)庫(kù)(1)創(chuàng)建SPJ數(shù)據(jù)庫(kù):在SSMS中“新建查詢”,輸入以下語(yǔ)句并運(yùn)行結(jié)果如下圖:(2)修改SPJ數(shù)據(jù)庫(kù):在查詢分析器中輸入以下語(yǔ)句并運(yùn)行結(jié)果如下圖:(3)刪除SPJ數(shù)據(jù)庫(kù)結(jié)果如下圖:4、界面方式創(chuàng)建數(shù)據(jù)庫(kù)XSBOOK,寫出操作過(guò)程。1) 在對(duì)象資源管理器中連接到數(shù)據(jù)庫(kù)引擎服務(wù)器;2) 將數(shù)據(jù)庫(kù)引擎服務(wù)器展開,右擊&

7、quot;數(shù)據(jù)庫(kù)",然后單擊"新建數(shù)據(jù)庫(kù)"命令;3) 鍵入新數(shù)據(jù)庫(kù)的名稱XSBOOK,同時(shí)用指定的數(shù)據(jù)庫(kù)名XSBOOK作為前綴創(chuàng)建主數(shù)據(jù)庫(kù)5、T-SQL語(yǔ)句方式創(chuàng)建XSBOOK,寫出相應(yīng)T-SQL語(yǔ)句。CREATE DATABASE XSBOOK ON (NAME = 'XSBOOK_Data', FILENAME='C:ProgramFilesMicrosoftSQLServerMSSQL.1MSSQLDataXSBOOK_Data.MDF' , SIZE = 3, MAXSIZE = 10, FILEGROWTH = 10%)

8、LOG ON (NAME = 'XSBOOK_Log', FILENAME='C:ProgramFilesMicrosoftSQLServerMSSQL.1MSSQLDataXSBOOK_Log.LDF' , SIZE = 1,FILEGROWTH = 10%)四、實(shí)驗(yàn)心得第一次接觸數(shù)據(jù)庫(kù)的創(chuàng)建與管理,剛開始利用界面創(chuàng)建,感覺很輕松,但是利用T-SQL語(yǔ)句創(chuàng)建的時(shí)候,由于是第一次接觸這種語(yǔ)句,老是犯錯(cuò)誤,用語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)的時(shí)候由于路徑寫錯(cuò),總是創(chuàng)建不成功,這個(gè)還是沒(méi)有用心去發(fā)現(xiàn)。所以,用心做事才能把事情做得更好。實(shí)驗(yàn)二 表的創(chuàng)建、管理及數(shù)據(jù)操作一、 實(shí)驗(yàn)?zāi)康呐c要

9、求1、 復(fù)習(xí)使用T-SQL語(yǔ)句創(chuàng)建和管理數(shù)據(jù)庫(kù)。2、 熟練掌握使用界面和T-SQL語(yǔ)句創(chuàng)建、修改和刪除表。3、 熟練掌握使用界面和T-SQL語(yǔ)句插入、修改和刪除表數(shù)據(jù)。二、 實(shí)驗(yàn)內(nèi)容1、用T-SQL語(yǔ)句創(chuàng)建產(chǎn)品銷售數(shù)據(jù)庫(kù)CPXS: 數(shù)據(jù)文件初始大小為5MB,最大大小50MB,增長(zhǎng)方式按10%比例增長(zhǎng);日志文件初始為2MB,最大可增長(zhǎng)到10MB,按2MB增長(zhǎng);其余參數(shù)取默認(rèn)值。2、用T-SQL語(yǔ)句將CPXS數(shù)據(jù)文件的增長(zhǎng)方式改為按5MB增長(zhǎng)。3、CPXS數(shù)據(jù)庫(kù)包含如下三個(gè)表:CP(產(chǎn)品編號(hào),產(chǎn)品名稱,價(jià)格,庫(kù)存量)XSS(客戶編號(hào),客戶名稱,地區(qū),負(fù)責(zé)人,電話)CPXSB(產(chǎn)品編號(hào),客戶編號(hào),銷

10、售日期,數(shù)量,銷售額)三個(gè)表結(jié)構(gòu)如圖3.1圖3.3所示,請(qǐng)寫出創(chuàng)建以上三個(gè)表的T-SQL語(yǔ)句并在查詢分析器中運(yùn)行。圖2.1 CP表結(jié)構(gòu)圖2.2 XSS表結(jié)構(gòu)圖2.3 CPXSB表結(jié)構(gòu)4、輸入如圖3.4圖3.6的CP表、XSS表和CPXSB表的樣本數(shù)據(jù)。圖2.4 CP表的樣本數(shù)據(jù)圖2.5 XSS表的樣本數(shù)據(jù)圖2.6 CPXSB表的樣本數(shù)據(jù)5、用T-SQL語(yǔ)句向CP表插入如下記錄:200001柜式空調(diào)3000200200002微波爐1000100200003抽油煙機(jī)1200506、用T-SQL語(yǔ)句向CP表中增“產(chǎn)品簡(jiǎn)列”列,varchar(50),允許為NULL。7、將CP表中每種商品的價(jià)格打8折

11、。8、將CP表中價(jià)格打9折后小于1500的商品刪除。三、 實(shí)驗(yàn)步驟 1、用T-SQL語(yǔ)句創(chuàng)建產(chǎn)品銷售數(shù)據(jù)庫(kù)CPXS:數(shù)據(jù)文件初始大小為5MB,最大大小50MB,增長(zhǎng)方式按10%比例增長(zhǎng);日志文件初始為2MB,最大可增長(zhǎng)到10MB,按2MB增長(zhǎng);其余參數(shù)取默認(rèn)值。CREATE DATABASE CPXS ON (NAME = 'CPXS_Data', FILENAME='C:ProgramFilesMicrosoftSQLServerMSSQL.1MSSQLDataCPXS_Data.MDF' , SIZE = 5MB, MAXSIZE = 50MB, FILEG

12、ROWTH = 10%) LOG ON (NAME = 'CPXS_Log', FILENAME='C:ProgramFilesMicrosoftSQLServerMSSQL.1MSSQLDataCPXS_Log.LDF' , SIZE = 2MB,MAXSIZE=10MB FILEGROWTH = 2MB)截圖如下:2、用T-SQL語(yǔ)句將CPXS數(shù)據(jù)文件的增長(zhǎng)方式改為按5MB增長(zhǎng)。ALTER DATABASE CPXSMODIFY FILE(NAME='CPXS_Data', SIZE=5)截圖如下:3、CPXS數(shù)據(jù)庫(kù)包含如下三個(gè)表:CP(產(chǎn)品

13、編號(hào),產(chǎn)品名稱,價(jià)格,庫(kù)存量)XSS(客戶編號(hào),客戶名稱,地區(qū),負(fù)責(zé)人,電話)CPXSB(產(chǎn)品編號(hào),客戶編號(hào),銷售日期,數(shù)量,銷售額)三個(gè)表結(jié)構(gòu)如圖3.1圖3.3所示,請(qǐng)寫出創(chuàng)建以上三個(gè)表的T-SQL語(yǔ)句并在查詢分析器中運(yùn)行。CREATE TABLE CP(產(chǎn)品編號(hào) CHAR(6) PRIMARY KEY NOT NULL,產(chǎn)品名稱 CHAR(30) NOT NULL,價(jià)格 FLOAT,庫(kù)存量 INT)CREATE TABLE XSS(客戶編號(hào) CHAR(6) PRIMARY KEY NOT NULL,產(chǎn)品名稱 CHAR(30) NOT NULL,地區(qū) CHAR(10),負(fù)責(zé)人 CHAR(8)

14、,電話 CHAR(12)CREATE TABLE CPXSB(產(chǎn)品編號(hào) CHAR(6),客戶編號(hào) CHAR(6),銷售日期 DATETIME,數(shù)量 INT,銷售額 FLOAT,PRIMARY KEY(產(chǎn)品編號(hào),客戶編號(hào),銷售日期)截圖如下:4、輸入如圖3.4圖3.6的CP表、XSS表和CPXSB表的樣本數(shù)據(jù)。已經(jīng)手工輸入好。4、 用T-SQL語(yǔ)句向CP表插入如下記錄:INSERT INTO CPVALUES('200001','柜式空調(diào)',3000,200)INSERT INTO CPVALUES('200002','微波爐',1

15、000,100)INSERT INTO CPVALUES('200001','抽油煙機(jī)',1200,50)截圖如下:5、 用T-SQL語(yǔ)句向CP表中增“產(chǎn)品簡(jiǎn)列”列,varchar(50),允許為NULL。ALTER TABLE CPADD 產(chǎn)品簡(jiǎn)列 VARCHAR(50)截圖如下:6、 將CP表中每種商品的價(jià)格打8折。UPDATE CPSET 價(jià)格= 價(jià)格* 0.87、將CP表中價(jià)格打9折后小于1500的商品刪除。UPDATE CPSET 價(jià)格= 價(jià)格* 0.9DELETEFROM CPWHERE 價(jià)格< 1500四、實(shí)驗(yàn)心得通過(guò)本章節(jié)的學(xué)習(xí)與試驗(yàn),了解

16、了如何使用T-SQL語(yǔ)句創(chuàng)建、修改和刪除表以及表中的數(shù)據(jù)。這算是學(xué)習(xí)數(shù)據(jù)庫(kù)這門課正式入門了。由于剛開始學(xué)習(xí)這些方面的操作,所以一些T-SQL語(yǔ)句還不是很熟,實(shí)際操作時(shí)還要借助書本才能完成,不過(guò)我相信,只要勤加練習(xí),肯定能獨(dú)立完成。試驗(yàn)三 單表查詢一、試驗(yàn)?zāi)康呐c要求1、牢記SELECT語(yǔ)句的基本語(yǔ)法格式。2、熟練掌握使用SQL語(yǔ)句進(jìn)行單表查詢,尤其要熟練掌握GROUP BY子句、HAVING字句和集函數(shù)。二、試驗(yàn)內(nèi)容對(duì)CPXS數(shù)據(jù)庫(kù),完成如下單表查詢:1、簡(jiǎn)單查詢(1)查詢各種產(chǎn)品的產(chǎn)品編號(hào)、產(chǎn)品名稱和價(jià)格。(2)查詢地區(qū)在“南京”的客戶編號(hào)和客戶名稱,結(jié)果中各列的標(biāo)題分別指定為:Custome

17、r id和Customer name。(3)查詢CP表中各種產(chǎn)品的產(chǎn)品編號(hào)、產(chǎn)品名稱和價(jià)格,對(duì)其價(jià)格按以下規(guī)則進(jìn)行轉(zhuǎn)換;若價(jià)格小于1000,替換為“廉價(jià)產(chǎn)品”,若價(jià)格在1000-2000之間,替換為“一般產(chǎn)品”,若價(jià)格大于2000小于等于3000,替換為“昂貴產(chǎn)品”,若價(jià)格大于3000,替換為“很昂貴產(chǎn)品”,列標(biāo)題更改為“評(píng)價(jià)”。(4)求各產(chǎn)品編號(hào)、名稱和產(chǎn)品總值。(5)查詢至少購(gòu)買了至少一種產(chǎn)品的客戶編號(hào)(不重復(fù))。(6)查詢價(jià)格在1000-2000的產(chǎn)品信息。(7)查詢產(chǎn)品名稱含有”冰箱_A”的產(chǎn)品情況。2、使用分組和集函數(shù)先將CPXSB表數(shù)據(jù)修改如下圖所示:圖3.1再完成如下查詢:(1)

18、計(jì)算所有產(chǎn)品總價(jià)格。(2)求各種產(chǎn)品2004年3月18日銷售額。(3)求購(gòu)買二種以上產(chǎn)品的客戶編號(hào)。三、試驗(yàn)步驟1、簡(jiǎn)單查詢(1)查詢各種產(chǎn)品的產(chǎn)品編號(hào)、產(chǎn)品名稱和價(jià)格。SELECT 產(chǎn)品編號(hào),產(chǎn)品名稱,價(jià)格FROM CP截圖如下:(2)查詢地區(qū)在“南京”的客戶編號(hào)和客戶名稱,結(jié)果中各列的標(biāo)題分別指定為:Customer id和Customer name。SELECT 客戶編號(hào) Customerid,客戶名稱 CustomernameFROM XSSWHERE 地區(qū)= '南京'截圖如下:(3)查詢CP表中各種產(chǎn)品的產(chǎn)品編號(hào)、產(chǎn)品名稱和價(jià)格,對(duì)其價(jià)格按以下規(guī)則進(jìn)行轉(zhuǎn)換;若價(jià)格小于

19、1000,替換為“廉價(jià)產(chǎn)品”,若價(jià)格在1000-2000之間,替換為“一般產(chǎn)品”,若價(jià)格大于2000小于等于3000,替換為“昂貴產(chǎn)品”,若價(jià)格大于3000,替換為“很昂貴產(chǎn)品”,列標(biāo)題更改為“評(píng)價(jià)”。SELECT 產(chǎn)品編號(hào),產(chǎn)品名稱,評(píng)價(jià)=CASEWHEN 價(jià)格<= 1000 THEN '廉價(jià)產(chǎn)品'WHEN 價(jià)格> 1000 AND 價(jià)格<= 2000 THEN '一般產(chǎn)品'WHEN 價(jià)格> 2000 AND 價(jià)格<= 3000 THEN '昂貴產(chǎn)品'ELSE '很昂貴產(chǎn)品'ENDFROM CP截圖

20、如下:(4)求各產(chǎn)品編號(hào)、名稱和產(chǎn)品總值。SELECT 產(chǎn)品編號(hào),產(chǎn)品名稱,產(chǎn)品總值 = 價(jià)格 * 庫(kù)存量FROM CP截圖如下:(5)查詢至少購(gòu)買了至少一種產(chǎn)品的客戶編號(hào)(不重復(fù))。SELECT DISTINCT 客戶編號(hào)FROM CPXSB截圖如下:(6)查詢價(jià)格在1000-2000的產(chǎn)品信息。SELECT *FROM CPWHERE 價(jià)格BETWEEN 1000 AND 2000截圖如下:(7)查詢產(chǎn)品名稱含有”冰箱_A”的產(chǎn)品情況。SELECT *FROM CPWHERE 產(chǎn)品名稱LIKE '冰箱_A' ESCAPE ''截圖如下:2、使用分組和集函數(shù)(

21、1)計(jì)算所有產(chǎn)品總價(jià)格。SELECT SUM(價(jià)格* 庫(kù)存量) 總價(jià)格FROM CP截圖如下:(2)求各種產(chǎn)品2004年3月18日銷售額。SELECT DISTINCT 產(chǎn)品編號(hào),SUM(銷售額) 銷售額FROM CPXSBWHERE 銷售日期= '2004-03-18'GROUP BY 產(chǎn)品編號(hào)截圖如下:(3)求購(gòu)買二種以上產(chǎn)品的客戶編號(hào)。SELECT 客戶編號(hào)FROM CPXSBGROUP BY 客戶編號(hào)HAVING COUNT(*) >= 2截圖如下:四、試驗(yàn)心得通過(guò)本次課程的學(xué)習(xí)與試驗(yàn),學(xué)會(huì)了如何使用T-SQL語(yǔ)句來(lái)進(jìn)行單表的查詢,仍然由于對(duì)語(yǔ)句的不熟悉,開始實(shí)驗(yàn)

22、的時(shí)候總要靠書本才能寫出完整的語(yǔ)句,不過(guò)寫了幾次后,便能獨(dú)立寫出,相比上一次試驗(yàn)有了很大的提高。試驗(yàn)四 連接查詢一、試驗(yàn)?zāi)康呐c要求熟練掌握使用SQL標(biāo)準(zhǔn)語(yǔ)句和T-SQL擴(kuò)展語(yǔ)句進(jìn)行連接查詢。二、試驗(yàn)內(nèi)容對(duì)CPXS數(shù)據(jù)庫(kù),完成如下連接查詢:1、內(nèi)連接(要求用兩種方式書寫)(1)查詢?cè)?004年3月18日有銷售的產(chǎn)品名稱(不允許重復(fù))。(2)查詢名稱為“家電市場(chǎng)”的客戶在2004年3月18日購(gòu)買的產(chǎn)品名稱和數(shù)量。2、外連接(1)查找所有產(chǎn)品情況及銷售他們的銷售日期、購(gòu)買他們的客戶編號(hào)和數(shù)量,若產(chǎn)品沒(méi)有銷售記錄,也要包括其情況。(2)查找所有購(gòu)買情況,若客戶沒(méi)有購(gòu)買產(chǎn)品,也要包括其情況。三、試驗(yàn)步驟

23、1、內(nèi)連接(要求用兩種方式書寫)(1)查詢?cè)?004年3月18日有銷售的產(chǎn)品名稱(不允許重復(fù))。SQL標(biāo)準(zhǔn)語(yǔ)句:SELECT DISTINCT CP.產(chǎn)品名稱FROM CP,CPXSBWHERE CP.產(chǎn)品編號(hào)= CPXSB.產(chǎn)品編號(hào)AND 銷售日期= '2004-03-18'T-SQL擴(kuò)展語(yǔ)句:SELECT DISTINCT CP.產(chǎn)品名稱FROM CPXSB INNER JOIN CPON (CP.產(chǎn)品編號(hào)= CPXSB.產(chǎn)品編號(hào) AND 銷售日期= '2004-03-18')截圖如下:(2)查詢名稱為“家電市場(chǎng)”的客戶在2004年3月18日購(gòu)買的產(chǎn)品名稱和

24、數(shù)量。SQL標(biāo)準(zhǔn)語(yǔ)句:SELECT CP.產(chǎn)品名稱,CPXSB.數(shù)量FROM XSS,CPXSB,CPWHERE XSS.客戶編號(hào)=CPXSB.客戶編號(hào)AND CPXSB.產(chǎn)品編號(hào)=CP.產(chǎn)品編號(hào)AND XSS.客戶名稱='家電市場(chǎng)'AND CPXSB.銷售日期='2004-03-18'T-SQL擴(kuò)展語(yǔ)句:SELECT CP.產(chǎn)品名稱,CPXSB.數(shù)量FROM XSS INNER JOIN CPXSBON XSS.客戶編號(hào)=CPXSB.客戶編號(hào)AND XSS.客戶名稱='家電市場(chǎng)'INNER JOIN CPON CPXSB.產(chǎn)品編號(hào)=CP.產(chǎn)品編

25、號(hào)AND CPXSB.銷售日期='2004-03-18'截圖如下:2、外連接(1)查找所有產(chǎn)品情況及銷售他們的銷售日期、購(gòu)買他們的客戶編號(hào)和數(shù)量,若產(chǎn)品沒(méi)有銷售記錄,也要包括其情況。SELECT CP.*,CPXSB.客戶編號(hào),銷售日期,數(shù)量FROM CP LEFT OUTER JOIN CPXSBON CP.產(chǎn)品編號(hào)=CPXSB.產(chǎn)品編號(hào)截圖如下:(2)查找所有購(gòu)買情況,若客戶沒(méi)有購(gòu)買產(chǎn)品,也要包括其情況。SELECT XSS.客戶編號(hào),CPXSB.產(chǎn)品編號(hào),銷售日期,數(shù)量,銷售額,CP.產(chǎn)品名稱FROM XSS LEFT OUTER JOIN CPXSBON XSS.客戶編

26、號(hào)=CPXSB.客戶編號(hào)LEFT OUTER JOIN CPON CPXSB.產(chǎn)品編號(hào)=CP.產(chǎn)品編號(hào)截圖如下:四、試驗(yàn)心得通過(guò)本次課程的學(xué)習(xí)與試驗(yàn),學(xué)會(huì)了使用SQL標(biāo)準(zhǔn)語(yǔ)句和T-SQL擴(kuò)展語(yǔ)句進(jìn)行表的連接查詢。剛開始的時(shí)候由于分不清SQL標(biāo)準(zhǔn)語(yǔ)句和T-SQL擴(kuò)展語(yǔ)句的區(qū)別,導(dǎo)致試驗(yàn)很難成功,但是通過(guò)向同學(xué)和老師的請(qǐng)教之后,弄清楚了二者的區(qū)別,之后做起試驗(yàn)來(lái)就覺得挺容易了。試驗(yàn)五 嵌套查詢一、試驗(yàn)?zāi)康呐c要求1、熟練掌握IN子查詢。2、熟練掌握比較子查詢(尤其要注意ANY、ALL謂詞如何用集函數(shù)代替)。3、熟悉掌握EXISTS子查詢(尤其要注意如何將全稱量詞和邏輯蘊(yùn)含用EXISTS謂詞代替)。二

27、、試驗(yàn)內(nèi)容對(duì)CPXS數(shù)據(jù)庫(kù),完成如下嵌套查詢:1、查詢?cè)?004年3月18日沒(méi)有銷售的產(chǎn)品名稱(不允許重復(fù))。(使用IN子查詢與EXISTS子查詢)2、查詢名稱為“家電市場(chǎng)”的客戶在2004年3月18日購(gòu)買的產(chǎn)品名稱。(使用IN子查詢與EXISTS子查詢)3、查詢銷售量大于所有2004年3月18日銷售的各產(chǎn)品銷售數(shù)量的產(chǎn)品編號(hào)。(使用ALL謂詞與集函數(shù))4、查詢購(gòu)買了所有產(chǎn)品的客戶的名稱。5、查詢購(gòu)買了客戶編號(hào)為“000001”的客戶購(gòu)買的所有產(chǎn)品的客戶的名稱。三、試驗(yàn)步驟1、查詢?cè)?004年3月18日沒(méi)有銷售的產(chǎn)品名稱(不允許重復(fù))。(使用IN子查詢與EXISTS子查詢)。用IN子查詢:SE

28、LECT CP.產(chǎn)品名稱FROM CPWHERE 產(chǎn)品編號(hào) IN(SELECT 產(chǎn)品編號(hào) FROM CPXSB WHERE 銷售日期!= '2004-03-18')用EXISTS子查詢:SELECT CP.產(chǎn)品名稱FROM CPWHERE EXISTS(SELECT * FROM CPXSB WHERE CP.產(chǎn)品編號(hào)= CPXSB.產(chǎn)品編號(hào)AND 銷售日期!= '2004-03-18')截圖如下:2、查詢名稱為“家電市場(chǎng)”的客戶在2004年3月18日購(gòu)買的產(chǎn)品名稱。(使用IN子查詢與EXISTS子查詢)。用IN子查詢:SELECT CP.產(chǎn)品名稱FROM CP

29、WHERE 產(chǎn)品編號(hào)IN(SELECT 產(chǎn)品編號(hào) FROM CPXSB WHERE 客戶編號(hào)IN(SELECT 客戶編號(hào) FROM XSS WHERE 客戶名稱= '家電市場(chǎng)') AND 銷售日期= '2004-03-18')用EXISTS子查詢:SELECT CP.產(chǎn)品名稱FROM CPWHERE EXISTS(SELECT * FROM CPXSB WHERE CP.產(chǎn)品編號(hào) = CPXSB.產(chǎn)品編號(hào) AND 銷售日期 = '2004-03-18' AND EXISTS(SELECT * FROM XSS WHERE CPXSB.客戶編號(hào)=

30、XSS.客戶編號(hào) AND 客戶名稱= '家電市場(chǎng)')截圖如下:3、查詢銷售量大于所有2004年3月18日銷售的各產(chǎn)品銷售數(shù)量的產(chǎn)品編號(hào)。(使用ALL謂詞與集函數(shù))。用ALL謂詞:SELECT 產(chǎn)品編號(hào)FROM CPXSBWHERE 數(shù)量> ALL(SELECT SUM(數(shù)量) FROM CPXSB WHERE 銷售日期= '2004-03-18' GROUP BY 產(chǎn)品編號(hào))用集函數(shù):SELECT 產(chǎn)品編號(hào)FROM CPXSBWHERE 數(shù)量>(SELECT MAX(數(shù)量) FROM CPXSB WHERE 銷售日期= '2004-03-18

31、' )截圖如下:4、查詢購(gòu)買了所有產(chǎn)品的客戶的名稱。SELECT 客戶名稱FROM XSSWHERE NOT EXISTS(SELECT * FROM CP WHERE NOT EXISTS(SELECT * FROM CPXSB WHERE CPXSB.產(chǎn)品編號(hào)=CP.產(chǎn)品編號(hào) AND XSS.客戶編號(hào)=CPXSB.客戶編號(hào))截圖如下:5、查詢購(gòu)買了客戶編號(hào)為“000001”的客戶購(gòu)買的所有產(chǎn)品的客戶的名稱。SELECT 客戶名稱FROM XSSWHERE NOT EXISTS(SELECT * FROM CP WHERE EXISTS(SELECT * FROM CPXSB CPX

32、SB1 WHERE CPXSB1.產(chǎn)品編號(hào)=CP.產(chǎn)品編號(hào) AND CPXSB1.客戶編號(hào)='000001') AND NOT EXISTS(SELECT * FROM CPXSB CPXSB2 WHERE CPXSB2.產(chǎn)品編號(hào)=CP.產(chǎn)品編號(hào) AND CPXSB2.客戶編號(hào)=XSS.客戶編號(hào) AND XSS.客戶編號(hào)!='000001')截圖如下:四、試驗(yàn)心得通過(guò)本次課程的學(xué)習(xí)與試驗(yàn),學(xué)會(huì)了用IN子查詢、EXISTS子查詢與集函數(shù)進(jìn)行表的嵌套查詢,只是在IN子查詢用EXISTS子查詢轉(zhuǎn)換的時(shí)候腦袋有點(diǎn)轉(zhuǎn)不過(guò)來(lái),需要想很久才能想明白這二者之間的關(guān)系,很是頭痛。

33、只有通過(guò)大量的練習(xí)與理解才能熟練使用,融會(huì)貫通。試驗(yàn)六 視圖與索引的創(chuàng)建與管理一、試驗(yàn)?zāi)康呐c要求1、熟練掌握使用界面和T-SQL語(yǔ)句創(chuàng)建、查詢、更新和刪除視圖。2、進(jìn)一步掌握視圖與基本表的聯(lián)系與區(qū)別。3、理解索引的概念和作用。4、熟練掌握索引的創(chuàng)建與刪除。二、試驗(yàn)內(nèi)容對(duì)于CPXS數(shù)據(jù)庫(kù),完成如下操作:1、創(chuàng)建視圖(1)在產(chǎn)品銷售數(shù)據(jù)庫(kù)CPXS中創(chuàng)建價(jià)格小于2000的產(chǎn)品視圖VIEW_CP_PRICE2000,要求加密并保證對(duì)該視圖的更新都要符合價(jià)格小于2000這個(gè)條件,寫出利用界面的創(chuàng)建過(guò)程和對(duì)應(yīng)的T-SQL語(yǔ)句。(2)打開查詢分析器,用T-SQL語(yǔ)句創(chuàng)建各客戶購(gòu)買產(chǎn)品的情況VIEW_GMQK

34、視圖,包括客戶編號(hào)、客戶名稱、產(chǎn)品編號(hào)、產(chǎn)品名稱、價(jià)格,購(gòu)買日期、購(gòu)買數(shù)量。(3)創(chuàng)建分區(qū)視圖:在CPXS數(shù)據(jù)庫(kù)中創(chuàng)建CP1和CP2兩個(gè)表,CP1表中為編號(hào)小于等于100010產(chǎn)品數(shù)據(jù),CP2表中為編號(hào)大于100010產(chǎn)品數(shù)據(jù),以分區(qū)列為產(chǎn)品編號(hào), 創(chuàng)建可更新的分區(qū)視圖VIEW_CP12。2、查詢視圖(1)基于VIEW_CP_PRICE2000視圖,查詢價(jià)格在2000以下產(chǎn)品的產(chǎn)品編號(hào)、名稱和價(jià)格。(2)基于VIEW_GMQK視圖,查詢各客戶在20004年3月18日購(gòu)買產(chǎn)品的情況。3、更新視圖利用T-SQL語(yǔ)句對(duì)于視圖VIEW_CP12進(jìn)行以下數(shù)據(jù)更新。(1)插入一條CP記錄(100042,數(shù)

35、碼相機(jī),3500,2)。(2)將產(chǎn)品編號(hào)為100042的價(jià)格改為3000.(3)刪除產(chǎn)品編號(hào)為100042的產(chǎn)品。4、修改視圖將VIEW_CP_PRICE2000視圖不加密。5、刪除視圖將VIEW_GMQK視圖刪除。6、索引的創(chuàng)建和刪除(1)對(duì)CP表,在產(chǎn)品名稱上定義一個(gè)唯一非聚簇的索引ind_cp。(2)先創(chuàng)建各客戶購(gòu)買產(chǎn)品的強(qiáng)情況VIEW1視圖,包括客戶編號(hào)、客戶名稱、產(chǎn)品編號(hào)、產(chǎn)品名稱、價(jià)格、購(gòu)買日期、購(gòu)買數(shù)量,然后在客戶編號(hào)+產(chǎn)品編號(hào)+購(gòu)買日期定義一個(gè)唯一聚簇索引ind_view1。7、索引的刪除刪除索引ind_view1。三、試驗(yàn)步驟1、創(chuàng)建視圖(1)在產(chǎn)品銷售數(shù)據(jù)庫(kù)CPXS中創(chuàng)建價(jià)

36、格小于2000的產(chǎn)品視圖VIEW_CP_PRICE2000,要求加密并保證對(duì)該視圖的更新都要符合價(jià)格小于2000這個(gè)條件,寫出利用界面的創(chuàng)建過(guò)程和對(duì)應(yīng)的T-SQL語(yǔ)句。CREATE VIEW VIEW_CP_PRICE2000WITH ENCRYPTIONASSELECT *FROM CPWHERE 價(jià)格<2000WITH CHECK OPTION截圖如下:(2)打開查詢分析器,用T-SQL語(yǔ)句創(chuàng)建各客戶購(gòu)買產(chǎn)品的情況VIEW_GMQK視圖,包括客戶編號(hào)、客戶名稱、產(chǎn)品編號(hào)、產(chǎn)品名稱、價(jià)格,購(gòu)買日期、購(gòu)買數(shù)量。CREATE VIEW VIEW_GMQKASSELECT XSS.客戶編號(hào),

37、客戶名稱,CP.產(chǎn)品編號(hào),產(chǎn)品名稱,價(jià)格,CPXSB.銷售日期,數(shù)量FROM XSS,CP,CPXSBWHERE XSS.客戶編號(hào)=CPXSB.客戶編號(hào)AND CPXSB.產(chǎn)品編號(hào)=CP.產(chǎn)品編號(hào)截圖如下:(3)創(chuàng)建分區(qū)視圖:在CPXS數(shù)據(jù)庫(kù)中創(chuàng)建CP1和CP2兩個(gè)表,CP1表中為編號(hào)小于等于100010產(chǎn)品數(shù)據(jù),CP2表中為編號(hào)大于100010產(chǎn)品數(shù)據(jù),以分區(qū)列為產(chǎn)品編號(hào), 創(chuàng)建可更新的分區(qū)視圖VIEW_CP12。/創(chuàng)建表CP1并插入數(shù)據(jù)CREATE TABLE CP1(產(chǎn)品編號(hào)char(6) PRIMARY KEY CHECK (產(chǎn)品編號(hào)< '100010'), 產(chǎn)品

38、名稱char(30), 價(jià)格float, 庫(kù)存量int, 產(chǎn)品簡(jiǎn)列varchar(50)INSERT INTO CP1SELECT *FROM CPWHERE 產(chǎn)品編號(hào)<'100010'/創(chuàng)建表CP2并插入數(shù)據(jù)CREATE TABLE CP2(產(chǎn)品編號(hào)char(6) PRIMARY KEY CHECK (產(chǎn)品編號(hào)> '100010'), 產(chǎn)品名稱char(30), 價(jià)格float, 庫(kù)存量int, 產(chǎn)品簡(jiǎn)列varchar(50)INSERT INTO CP2SELECT *FROM CPWHERE 產(chǎn)品編號(hào)>'100010'/創(chuàng)

39、建分區(qū)視圖CREATE VIEW VIEW_CP12ASSELECT *FROM CP1UNION ALLSELECT *FROM CP2截圖如下:2、查詢視圖(1)基于VIEW_CP_PRICE2000視圖,查詢價(jià)格在2000以下產(chǎn)品的產(chǎn)品編號(hào)、名稱和價(jià)格。SELECT 產(chǎn)品編號(hào),產(chǎn)品名稱,價(jià)格FROM VIEW_CP_PRICE2000截圖如下:(2)基于VIEW_GMQK視圖,查詢各客戶在20004年3月18日購(gòu)買產(chǎn)品的情況。SELECT *FROM VIEW_GMQKWHERE 銷售日期='2004-03-18'截圖如下:3、更新視圖利用T-SQL語(yǔ)句對(duì)于視圖VIEW_

40、CP12進(jìn)行以下數(shù)據(jù)更新。(1)插入一條CP記錄(100042,數(shù)碼相機(jī),3500,2)。INSERT INTO VIEW_CP12VALUES('100042','數(shù)碼相機(jī)',3500,2,NULL)截圖如下:(2)將產(chǎn)品編號(hào)為100042的價(jià)格改為3000.UPDATE VIEW_CP12SET 價(jià)格=3000WHERE 產(chǎn)品編號(hào)='100042'截圖如下:(3)刪除產(chǎn)品編號(hào)為100042的產(chǎn)品。DELETE FROM VIEW_CP12WHERE 產(chǎn)品編號(hào)='100042'截圖如下:4、修改視圖將VIEW_CP_PRICE2

41、000視圖不加密。ALTER VIEW VIEW_CP_PRICE2000ASSELECT *FROM CPWHERE 價(jià)格<2000WITH CHECK OPTION截圖如下:5、刪除視圖將VIEW_GMQK視圖刪除。DROP VIEW VIEW_GMQK截圖如下:6、索引的創(chuàng)建和刪除(1)對(duì)CP表,在產(chǎn)品名稱上定義一個(gè)唯一非聚簇的索引ind_cp。CREATE UNIQUE INDEX ind_cpON CP(產(chǎn)品編號(hào))截圖如下:(2)先創(chuàng)建各客戶購(gòu)買產(chǎn)品的強(qiáng)情況VIEW1視圖,包括客戶編號(hào)、客戶名稱、產(chǎn)品編號(hào)、產(chǎn)品名稱、價(jià)格、購(gòu)買日期、購(gòu)買數(shù)量,然后在客戶編號(hào)+產(chǎn)品編號(hào)+購(gòu)買日期定

42、義一個(gè)唯一聚簇索引ind_view1。/創(chuàng)建VIEW1視圖CREATE VIEW VIEW1WITH SCHEMABINDINGASSELECT XSS.客戶編號(hào),客戶名稱,CP.產(chǎn)品編號(hào),產(chǎn)品名稱,價(jià)格,CPXSB.銷售日期,數(shù)量FROM dbo.XSS,dbo.CP,dbo.CPXSBWHERE XSS.客戶編號(hào)=CPXSB.客戶編號(hào)AND CPXSB.產(chǎn)品編號(hào)=CP.產(chǎn)品編號(hào)/建立唯一聚簇索引CREATE UNIQUE CLUSTERED INDEX ind_view1ON VIEW1(客戶編號(hào),產(chǎn)品編號(hào),銷售日期)截圖如下:7、索引的刪除刪除索引ind_view1。DROP INDEX

43、 VIEW1.ind_view1四、試驗(yàn)心得通過(guò)本次課程的學(xué)習(xí)與試驗(yàn),了解了什么是視圖和索引,并掌握了如何創(chuàng)建視圖和索引。感覺用建立好的視圖進(jìn)行查詢比用表查詢要簡(jiǎn)單得多。 在索引上關(guān)于聚簇與非聚簇的概念有一點(diǎn)小迷糊,總體來(lái)說(shuō)感覺這次的試驗(yàn)做的還是挺好的。試驗(yàn)七 T-SQL語(yǔ)言編程基礎(chǔ)一、試驗(yàn)?zāi)康呐c要求1、熟練掌握變量的定義和賦值。2、熟練掌握用戶自定義數(shù)據(jù)類型定義、使用和刪除。3、熟練掌握各種運(yùn)算符。4、熟練掌握流程控制語(yǔ)句,尤其是條件語(yǔ)句和循環(huán)語(yǔ)句。5、熟練并掌握常用的系統(tǒng)函數(shù)。二、試驗(yàn)內(nèi)容1、變量的定義和賦值創(chuàng)建一名為CUSTOMER_NAME的局部變量,并在SELECT語(yǔ)句中使用該變量查

44、找“廠電公司”購(gòu)買產(chǎn)品的情況。2、用戶自定義數(shù)據(jù)類型定義、使用和刪除用SQL命令定義一名為Customer_id的用戶自定義數(shù)據(jù)類型,要求char(6),NOT NULL,并把該自定義數(shù)據(jù)類型用來(lái)定義XSS表中的客戶編號(hào),然后刪除該自定義數(shù)據(jù)類型,請(qǐng)敘述該過(guò)程,并寫出相關(guān)語(yǔ)句。3、T-SQL語(yǔ)言編程(1)用T-SQL語(yǔ)言編程輸出3-300之間能被7整除的數(shù)。(2)用T-SQL語(yǔ)言編程輸出3-100之內(nèi)的素?cái)?shù)。三、試驗(yàn)步驟1、變量的定義和賦值創(chuàng)建一名為CUSTOMER_NAME的局部變量,并在SELECT語(yǔ)句中使用該變量查找“廠電公司”購(gòu)買產(chǎn)品的情況。DECLARE CUSTOMER_NAME

45、VARCHAR(30)SELECT CUSTOMER_NAME = '廠電公司'SELECT *FROM XSSWHERE 客戶名稱=CUSTOMER_NAME截圖如下:2、用戶自定義數(shù)據(jù)類型定義、使用和刪除用SQL命令定義一名為Customer_id的用戶自定義數(shù)據(jù)類型,要求char(6),NOT NULL,并把該自定義數(shù)據(jù)類型用來(lái)定義XSS表中的客戶編號(hào),然后刪除該自定義數(shù)據(jù)類型,請(qǐng)敘述該過(guò)程,并寫出相關(guān)語(yǔ)句。/建立自定義數(shù)據(jù)類型sp_addtype 'Customer_id','char(6)','not null'/用自定

46、義數(shù)據(jù)類型來(lái)定義XSS1表CREATE TABLE XSS1(客戶編號(hào)Customer_id PRIMARY KEY NOT NULL,客戶名稱char(30) NOT NULL,地區(qū)char(10),負(fù)責(zé)人char(8),電話char(12) DROP TABLE XSS1/刪除自定義數(shù)據(jù)類型sp_droptype 'Customer_id'截圖如下:3、T-SQL語(yǔ)言編程(1)用T-SQL語(yǔ)言編程輸出3-300之間能被7整除的數(shù)。DECLARE i intSET i=3WHILE i<=300 BEGINIF i%7!=0SET i=i+1ELSEPRINT iSET

47、 i=i+1END截圖如下:(2)用T-SQL語(yǔ)言編程輸出3-100之內(nèi)的素?cái)?shù)。DECLARE a int,i intSET i=3 WHILE i<=100 BEGIN SET a=2 WHILE a<=sqrt(i) BEGIN IF (i%a=0) break SET a=a+1 END IF a>sqrt(i) PRINT i SET i=i+1 END截圖如下:四、試驗(yàn)心得通過(guò)本次課程的學(xué)習(xí)與試驗(yàn),了解了變量的定義與賦值、用戶自定義數(shù)據(jù)類型的概念以及用T-SQL語(yǔ)言編程的知識(shí)。其中關(guān)于用戶自定義數(shù)據(jù)類型的刪除,剛開始不知道為什么刪除不了,最后通過(guò)查閱課件才知道必須要

48、先把使用該自定義類型的表刪除之后才能刪除自定義的數(shù)據(jù)類型。關(guān)于T-SQL語(yǔ)言編程,我感覺總體與C語(yǔ)言相差不大,像一些條件語(yǔ)句等,但是寫法有很大不同,像變量的定義等,剛開始由于不適應(yīng),老是寫錯(cuò),這個(gè)需要大量的練習(xí)。試驗(yàn)八 存儲(chǔ)過(guò)程一、試驗(yàn)?zāi)康呐c要求熟練掌握存儲(chǔ)過(guò)程的創(chuàng)建、調(diào)用和刪除。二、試驗(yàn)內(nèi)容對(duì)于CPXS數(shù)據(jù)庫(kù),創(chuàng)建如下存儲(chǔ)過(guò)程:(1)無(wú)參存儲(chǔ)過(guò)程編寫一無(wú)存儲(chǔ)存過(guò)程用于查詢每個(gè)客戶購(gòu)買產(chǎn)品的情況(包括客戶編號(hào)、產(chǎn)品編號(hào)、客戶名稱、產(chǎn)品名稱、價(jià)格、購(gòu)買日期、購(gòu)買數(shù)量),然后調(diào)用該存儲(chǔ)過(guò)程。(2)帶有參數(shù)的存儲(chǔ)過(guò)程編寫一加密存儲(chǔ),查詢指定客戶購(gòu)買產(chǎn)品的情況。并調(diào)用該存儲(chǔ),查詢客戶編號(hào)為“00000

49、2”的客戶購(gòu)買情況。(3)帶有通配符參數(shù)的存儲(chǔ)過(guò)程編寫一存儲(chǔ),查詢指定產(chǎn)品的銷售情況。如果沒(méi)有提供參數(shù),則查詢產(chǎn)品名稱中包含有“冰箱”的產(chǎn)品銷售情況。(4)帶有OUTPUT參數(shù)的存儲(chǔ)過(guò)程編寫一存儲(chǔ),查詢指定客戶在指定時(shí)間段內(nèi)購(gòu)買指定產(chǎn)品的數(shù)量,存儲(chǔ)過(guò)程中使用了輸入和輸出參數(shù)。三、試驗(yàn)步驟(1)無(wú)參存儲(chǔ)過(guò)程編寫一無(wú)存儲(chǔ)存過(guò)程用于查詢每個(gè)客戶購(gòu)買產(chǎn)品的情況(包括客戶編號(hào)、產(chǎn)品編號(hào)、客戶名稱、產(chǎn)品名稱、價(jià)格、購(gòu)買日期、購(gòu)買數(shù)量),然后調(diào)用該存儲(chǔ)過(guò)程。CREATE PROC proc_1ASSELECT XSS.客戶編號(hào),客戶名稱,CP.產(chǎn)品編號(hào),產(chǎn)品名稱,價(jià)格,CPXSB.銷售日期,數(shù)量FROM X

50、SS,CP,CPXSBWHERE XSS.客戶編號(hào)=CPXSB.客戶編號(hào)AND CPXSB.產(chǎn)品編號(hào)=CP.產(chǎn)品編號(hào)EXEC proc_1截圖如下:(2)帶有參數(shù)的存儲(chǔ)過(guò)程編寫一加密存儲(chǔ),查詢指定客戶購(gòu)買產(chǎn)品的情況。并調(diào)用該存儲(chǔ),查詢客戶編號(hào)為“000002”的客戶購(gòu)買情況。CREATE PROC proc_2 客戶編號(hào)char(6)WITH ENCRYPTIONASSELECT *FROM CPXSBWHERE CPXSB.客戶編號(hào)=客戶編號(hào)EXEC proc_2 '000002'截圖如下:(3)帶有通配符參數(shù)的存儲(chǔ)過(guò)程編寫一存儲(chǔ),查詢指定產(chǎn)品的銷售情況。如果沒(méi)有提供參數(shù),則

51、查詢產(chǎn)品名稱中包含有“冰箱”的產(chǎn)品銷售情況。CREATE PROC proc_3 產(chǎn)品名稱char(30)='%冰箱%'ASSELECT CP.產(chǎn)品名稱,CPXSB.產(chǎn)品編號(hào),客戶編號(hào),銷售日期,數(shù)量,銷售額FROM CPXSB,CPWHERE CPXSB.產(chǎn)品編號(hào)=CP.產(chǎn)品編號(hào)AND 產(chǎn)品名稱LIKE 產(chǎn)品名稱EXEC proc_3截圖如下:(4)帶有OUTPUT參數(shù)的存儲(chǔ)過(guò)程編寫一存儲(chǔ),查詢指定客戶在指定時(shí)間段內(nèi)購(gòu)買指定產(chǎn)品的數(shù)量,存儲(chǔ)過(guò)程中使用了輸入和輸出參數(shù)。CREATE PROC proc_4 產(chǎn)品名稱char(30),銷售日期datetime OUTPUTASSE

52、LECT CP.產(chǎn)品名稱,CPXSB.產(chǎn)品編號(hào),客戶編號(hào),銷售日期,數(shù)量,銷售額FROM CPXSB,CPWHERE CPXSB.產(chǎn)品編號(hào)=CP.產(chǎn)品編號(hào)AND 產(chǎn)品名稱=產(chǎn)品名稱DECLARE 銷售日期datetimeEXEC proc_4 '洗衣機(jī)',銷售日期OUTPUT截圖如下:四、試驗(yàn)心得通過(guò)本次課程的學(xué)習(xí)與試驗(yàn),學(xué)會(huì)了存儲(chǔ)過(guò)程的創(chuàng)建、調(diào)用和刪除。感覺這次試驗(yàn)挺簡(jiǎn)單的。做了很多次試驗(yàn)了,對(duì)T-SQL語(yǔ)句越來(lái)越熟練,所以做起來(lái)更加的得心應(yīng)手了,如果在課堂上更加仔細(xì)的聽課,課下及時(shí)的練習(xí),效果會(huì)更好的。試驗(yàn)九 函數(shù)一、試驗(yàn)?zāi)康呐c要求1、理解什么是標(biāo)量函數(shù)、內(nèi)嵌表值函數(shù)及多語(yǔ)

53、句表值函數(shù)。2、熟練掌握標(biāo)量函數(shù)、內(nèi)嵌表值函數(shù)、多語(yǔ)句表值函數(shù)的定義和調(diào)用。二、試驗(yàn)內(nèi)容1、函數(shù)的定義對(duì)于CPXS數(shù)據(jù)庫(kù),定義完成如下功能的函數(shù):(1)據(jù)產(chǎn)品名稱,查詢?cè)摦a(chǎn)品的相關(guān)信息。(函數(shù)名為FU_CP)。(2)按某年某季度統(tǒng)計(jì)給定產(chǎn)品名稱的銷售數(shù)量及銷售金額,分別用名為FU1_CPXS內(nèi)嵌表值函數(shù)和名為FU2_CPXS的多語(yǔ)句表值函數(shù)。(3)根據(jù)銷售商名稱,統(tǒng)計(jì)其在某年某季度內(nèi)銷售商品名稱、數(shù)量及金額。(函數(shù)名為FU3_CPXS)。2、函數(shù)的調(diào)用(1)對(duì)函數(shù)FU_CP,查詢產(chǎn)品名稱為“MP3”的產(chǎn)品情況。(2)對(duì)函數(shù)FU1_CPXS,查詢2004年第3季度彩色電視機(jī)的銷售數(shù)量和銷售金額。

54、(3)對(duì)函數(shù)FU2_CPXS,查詢2004年第1季度洗衣機(jī)的銷售數(shù)量和銷售金額。(4)對(duì)函數(shù)FU3_CPXS,查詢廠電公司2004年第1季度銷售的產(chǎn)品名稱、銷售數(shù)量和銷售金額。三、試驗(yàn)步驟1、函數(shù)的定義對(duì)于CPXS數(shù)據(jù)庫(kù),定義完成如下功能的函數(shù):(1)據(jù)產(chǎn)品名稱,查詢?cè)摦a(chǎn)品的相關(guān)信息。(函數(shù)名為FU_CP)。CREATE FUNCTION FU_CP(產(chǎn)品名稱 char(30)RETURNS TABLEAS RETURNSELECT *FROM CPWHERE 產(chǎn)品名稱=產(chǎn)品名稱截圖如下:(2)按某年某季度統(tǒng)計(jì)給定產(chǎn)品名稱的銷售數(shù)量及銷售金額,分別用名為FU1_CPXS內(nèi)嵌表值函數(shù)和名為FU2_CPXS的多語(yǔ)句表值函數(shù)。/建立內(nèi)嵌表值函數(shù)CREATE FUNCTION FU1_CPXS(YEAR INT,QUARTER INT,產(chǎn)品名稱char(10) RETURNS TABLEAS RETURN(SELECT 產(chǎn)品名稱,SUM(數(shù)量) AS 銷售數(shù)量,SUM(銷售額)AS 銷售總額 FROM CPXSB,CP WHERE CPXSB.產(chǎn)品編號(hào)=CP.產(chǎn)品編號(hào) AND 產(chǎn)品名稱=產(chǎn)品名稱 AND DATEPART(YY,銷售日期)=YEAR AND DATEPART(QQ,銷售日期)=QUARTER GROUP BY 產(chǎn)品名稱)截圖如下:/建立多語(yǔ)句表值函

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論