數(shù)據(jù)庫原理實驗指導(dǎo)書_第1頁
數(shù)據(jù)庫原理實驗指導(dǎo)書_第2頁
數(shù)據(jù)庫原理實驗指導(dǎo)書_第3頁
數(shù)據(jù)庫原理實驗指導(dǎo)書_第4頁
數(shù)據(jù)庫原理實驗指導(dǎo)書_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)庫原理與應(yīng)用實驗指導(dǎo)書信息管理與信息系統(tǒng)教研室遼寧工業(yè)大學(xué)2010年3月目 錄實驗1 數(shù)據(jù)庫管理工具的使用及數(shù)據(jù)庫的管理1實驗2 數(shù)據(jù)表的管理4實驗3 數(shù)據(jù)查詢6實驗4 索引和視圖及數(shù)據(jù)完整性9實驗5 Transact-SQL程序設(shè)計15實驗6 存儲過程和觸發(fā)器18實驗7 數(shù)據(jù)庫的安全管理、備份恢復(fù)、導(dǎo)入導(dǎo)出22 文檔可自由編輯打印實驗1 數(shù)據(jù)庫管理工具的使用及數(shù)據(jù)庫的管理項目1 數(shù)據(jù)庫管理工具的使用一、實驗?zāi)康?了解 SQL Server 2000安裝對軟、硬件的要求,學(xué)會安裝方法。 2了解 SQL Server的注冊和配置方法。 3了解SQL Server 2000包含的主要組件及其功

2、能。 4熟悉企業(yè)管理器和查詢分析器的界面及基本使用方法。 5對數(shù)據(jù)庫及其對象有一個基本了解。二、實驗準備 1了解安裝 SQL Server 2000的軟、硬件要求。 2了解 SQL Server 2000支持的身份驗證模式。Windows的兩種服務(wù)賬戶:本地系統(tǒng)賬戶和域用戶賬戶。 3了解 SQL Server各組件的主要功能。 4對數(shù)據(jù)庫、表和數(shù)據(jù)庫對象有一個基本了解。 5了解在查詢分析器中執(zhí)行SQL語句的方法。三、實驗內(nèi)容及步驟 1根據(jù)軟、硬件環(huán)境的要求,安裝 SQL Server 2000。 2通過“開始”“程序”Microsoft SQL Server“服務(wù)管理器”,打開“SQL Ser

3、ver 服務(wù)管理器”窗口,選擇 SQL Server服務(wù)。并且通過該窗口“啟動”和“停止”SQL Server 服務(wù)。 3通過“開始”“程序”Microsoft SQL Server“企業(yè)管理器”打開企業(yè)管理器窗口。 4在企業(yè)管理器中、使用“注冊向?qū)А弊苑?wù)器。查看本地已住冊的 SQL Server。 搜索網(wǎng)絡(luò)上另一臺計算機,并且注冊該機上的 SQL Server,注冊時使用“Windows認證模 式”或“用我的 SQL Server賬戶信息自動登錄”的連接方式。 5從 SQL企業(yè)管理器中注銷網(wǎng)絡(luò) SQL Server。 6打開本地服務(wù)器的屬性對話框,查看以下信息:產(chǎn)品名稱、主機操作系統(tǒng)、產(chǎn)

4、品的版本、操作平臺、主機內(nèi)存等。 7利用企業(yè)管理器訪問系統(tǒng)自帶的pubs數(shù)據(jù)庫。 (1)以系統(tǒng)管理員身份登錄到企業(yè)管理器。(2)在企業(yè)管理器的樹形目錄中找到pubs數(shù)據(jù)庫并展開,查看該數(shù)據(jù)庫的所有對象,如表、視圖、存儲過程、默認和規(guī)則等。 (3)選擇pubs數(shù)據(jù)庫的“表”選項,在右窗格中將列出pubs數(shù)據(jù)庫的所有表(包括系統(tǒng)表和用戶表),選擇用戶表titles,右擊,彈出快捷菜單,從中選擇“打開表”“返回所有行”菜單項,打開titles表,查看其內(nèi)容。 8利用查詢分析器訪問pubs數(shù)據(jù)庫的表。 (l)通過“開始”“程序”Microsoft SQL Server“查詢分析器”方式運行SQL Se

5、rver查詢分析器,或者在企業(yè)管理器中,選擇“工具”“SQL查詢分析器”菜單項,運行SQL Server查詢分析器。 (2)在查詢分析器窗口中,選擇“查詢”“更改數(shù)據(jù)庫”菜單項,或者單擊常用工具欄中的更改數(shù)據(jù)庫下拉框的下拉按鈕,選擇要操作的pubs數(shù)據(jù)庫。 (3)在查詢分析器的編輯窗口中,輸入以下代碼: SELECT type,avg(price) FROM titles WHERE royalty10 GROUP BY type (4)選擇查詢分析器的“查詢”“分析”菜單項,或者單擊常用工具欄上“分析查詢”按鈕,查詢分析器將對輸入的代碼進行語法分析,并由消息窗格給出分析結(jié)果報告。(5)選擇查

6、詢分析器的“查詢”“執(zhí)行”菜單項,或者單擊常用工具欄上“執(zhí)行查詢”按鈕,SQL Server將編譯窗口中的代碼,并在結(jié)果窗格中顯示查詢結(jié)果,如圖1所示。圖1 查詢分析器的編輯窗口四、實驗思考 1查詢分析器的作用是什么?可以有幾種啟動查詢分析器的方法?2改變查詢分析器的當(dāng)前數(shù)據(jù)庫,使用什么方法?項目2 數(shù)據(jù)庫的管理一、實驗?zāi)康?1了解SQL Server數(shù)據(jù)庫的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)的特點。 2學(xué)會使用企業(yè)管理器對數(shù)據(jù)庫進行管理。 3學(xué)會使用TransactSQL 語句對數(shù)據(jù)庫進行管理。二、實驗準備 1確定能夠創(chuàng)建數(shù)據(jù)庫的用戶是系統(tǒng)管理員,或是被授權(quán)使用CREATE DATABASE語句的用戶。 2

7、確定要創(chuàng)建的數(shù)據(jù)庫名、所有者(即創(chuàng)建數(shù)據(jù)庫的用戶)、數(shù)據(jù)庫大小(最初的大小、最大的大小、是否允許增長及增長的方式)和存儲數(shù)據(jù)的文件。 3了解常用的創(chuàng)建數(shù)據(jù)庫方法。三、實驗內(nèi)容及步驟 1在企業(yè)管理器中創(chuàng)建studentsdb數(shù)據(jù)庫。 (1)運行SQL Server管理器,啟動企業(yè)管理器,展開服務(wù)器“(LOCAL)(Windows NT)”。 (2)右擊“數(shù)據(jù)庫”項,在快捷菜單中選擇“新建數(shù)據(jù)庫”菜單項。在新建數(shù)據(jù)庫對話框的名稱文本框中輸入學(xué)生管理數(shù)據(jù)庫名studentsdb。 2選擇studentsdb數(shù)據(jù)庫,在其快捷菜單中選擇“屬性”菜單項,查看“常規(guī)”、“數(shù)據(jù)文件”、“事務(wù)日志”、“文件組”

8、、“選項”和“權(quán)限”頁面。3打開studentsdb數(shù)據(jù)庫的“屬性”對話框,在“數(shù)據(jù)文件”選項卡中修改studentsdb數(shù)據(jù)文件的“分配的空間”大小為2MB。指定“最大文件大小”為5MB。在“事務(wù)日志”選項卡中修改studentsdb數(shù)據(jù)庫的日志文件的大小在每次填滿時自動遞增5。4在企業(yè)管理器中刪除studentsdb數(shù)據(jù)庫。5啟動查詢分析器,在查詢分析器中使用Transact-SQL語句CREATE DATABASE創(chuàng)建studb數(shù)據(jù)庫。然后通過系統(tǒng)存儲過程sp_helpdb查看系統(tǒng)中的數(shù)據(jù)庫信息。 6在查詢分析器中使用 Transact-SQL語句ALTER DATABASE修改stud

9、b數(shù)據(jù)庫的設(shè)置,指定數(shù)據(jù)文件大小為5MB,最大文件大小為20MB,自動遞增大小為1MB。 7在查詢分析器中為Studb數(shù)據(jù)庫增加一個日志文件,命名為Studb_Log2,大小為5MB,最大文件大小為10MB。 8使用企業(yè)管理器將studb數(shù)據(jù)庫的名稱更改為student_db。9使用 TransactSQL語句 DROP DATABASE刪除student_db數(shù)據(jù)庫。10創(chuàng)建一個Company數(shù)據(jù)庫,所有文件存放到D盤的SQL目錄下。該數(shù)據(jù)庫的主數(shù)據(jù)文件邏輯名稱為Company_data,物理文件名為Company.mdf,初始大小為10MB,最大尺寸為無限大,增長速度為10%;數(shù)據(jù)庫的日志

10、文件邏輯名稱為Company_log,物理文件名為Company.ldf,初始大小為1MB,最大尺寸為5MB,增長速度為1MB。11添加一個包含兩個數(shù)據(jù)文件的文件組和一個事務(wù)日志文件到Company數(shù)據(jù)庫中。12刪除Company數(shù)據(jù)庫中的一個數(shù)據(jù)文件,然后刪除此數(shù)據(jù)庫。四、實驗思考新數(shù)據(jù)庫是否包含SQL Server在主設(shè)備中生成的模型數(shù)據(jù)庫內(nèi)的所有對象?實驗2 數(shù)據(jù)表的管理一、實驗?zāi)康?學(xué)會使用企業(yè)管理器和TransactSQL語句 CREATE TABLE和ALTER TABLE創(chuàng)建和修改表。2學(xué)會在企業(yè)管理器中對表進行插入、修改和刪除數(shù)據(jù)操作。3學(xué)會使用TransactSQL語句對表進

11、行插入、修改和刪除數(shù)據(jù)操作。4了解SQL Server的常用數(shù)據(jù)類型。二、實驗準備1了解在企業(yè)管理器中實現(xiàn)表數(shù)據(jù)的操作,如插入、修改和刪除等。2掌握用TransactSQL語句對表數(shù)據(jù)進行插入(INSERT)、修改(UPDATE)和刪除(DELETE或 TRANCATE TABLE)操作。三、實驗內(nèi)容1啟動企業(yè)管理器,展開studentsdb數(shù)據(jù)庫文件夾。2在 studentsdb數(shù)據(jù)庫中包含有數(shù)據(jù)表student_info、curriculum、grade,這些表的數(shù)據(jù)結(jié)構(gòu)如圖1、圖2和圖3所示。 圖1學(xué)生基本情況表student_info 圖2課程信息表curriculum 圖3學(xué)生成績表

12、 grade3在企業(yè)管理器中創(chuàng)建 student_info、curriculum表。4在企業(yè)管理器中,將student_info表的學(xué)號列設(shè)置為主鍵,非空。5使用 TransactSQL 語句 CREATE TABLE在 studentsdb數(shù)據(jù)庫中創(chuàng)建grade表。6student_info、curriculum、grade表中的數(shù)據(jù)如圖4、圖5和圖6所示。圖4 student_info的數(shù)據(jù)圖5 curriculum的數(shù)據(jù) 圖6 grade的數(shù)據(jù) 7在企業(yè)管理器中為student_info、curriculum、grade表添加數(shù)據(jù)。 8使用 TransactSQL 語句INSERT IN

13、TOVALUES向studentsdb數(shù)據(jù)庫的grade表插入以下數(shù)據(jù): 學(xué)號 課程編號 分數(shù) 0004 0001 80 9使用 TransactSQL 語句ALTER TABLE修改curriculum表的“課程編號”列,使之為非空。 10使用 TransactSQ L語句ALTER TABLE修改grade表的“分數(shù)”列,使其數(shù)據(jù)類型為real。11使用 TransactSQL語句ALTER TABLE修改student_info表的“姓名”列,使其列名為“學(xué)生姓名”,數(shù)據(jù)類型為varchar(10),非空。sp_rename 'student_info.姓名','

14、學(xué)生姓名' ALTER TABLE student_infoALTER column 學(xué)生姓名 varchar(10) not null 12分別使用企業(yè)管理器和TransactSQL語句DELETE刪除studentsdb數(shù)據(jù)庫的grade表中學(xué)號為0004的成績記錄。 DELETE grade WHERE學(xué)號=0004 13使用TransactSQL語句UPDATE修改studentsdb數(shù)據(jù)庫的grade表中學(xué)號為0003、課程編號為0005、分數(shù)為90的成績記錄。 UPDATE grade SET分數(shù)=90 WHERE學(xué)號=0003 and課程編號= 0005 14使用Tran

15、sact-SQL語句ALTERADD為studentsdb數(shù)據(jù)庫的grade表添加一個名為“備注”的數(shù)據(jù)列,其數(shù)據(jù)類型為VARCHAR(20)。 ALTER TABLE grade ADD備注 VARCHAR(20)NULL 15分別使用企業(yè)管理器和TransactSQL語句 DROP TABLE刪除studentsdb數(shù)據(jù)庫中g(shù)rade表。四、實驗思考 1使用TSQL語句刪除在studentsdb數(shù)據(jù)庫的grade表添加的“備注”數(shù)據(jù)列。 2在企業(yè)管理器中,studentsdb數(shù)據(jù)庫的student_info表的數(shù)據(jù)輸入時,如果輸入相同學(xué)號有什么現(xiàn)象?怎樣避免該情況的發(fā)生?實驗3 數(shù)據(jù)查詢一

16、、實驗?zāi)康?1掌握使用Transact-SQL的SELECT語句進行基本查詢的方法。 2掌握使用SELECT語句進行條件查詢的方法。 3掌握嵌套查詢的方法。 4掌握多表查詢的方法。 5掌握SELECT語句的GROUP BY和ORDER BY子句的作用和使用方法; 6掌握聯(lián)合查詢的操作方法。 7掌握數(shù)據(jù)更新語句 INSERT INTO、UPDATE、DELETE的使用方法。二、實驗準備 1了解SELECT語句的基本語法格式和執(zhí)行方法。 2了解嵌套查詢的表示方法。 3了解UNION運算符的用法。 4了解SELECT語句的GROUP BY和ORDER BY子句的作用。 5了解IN、JOIN等子查詢的

17、格式。 6了解 INSERT INTO、UPDATE、DELETE的格式與作用。三、實驗內(nèi)容和步驟 1在studentsdb數(shù)據(jù)庫中,使用下列SQL語句將輸出什么? (1) SELECT COUNT(*)FROM grade (2)SELECT SUBSTRING(姓名,1,2)FROM student_info (3)SELECT UPPER(kelly) (4)SELECT Replicate(kelly,3) (5)SELECT SQRT(分數(shù))FROM grade WHERE分數(shù)>=85 (6)SELECT 2,3,POWER(2,3) (7)SELECT YEAR(GETDAT

18、E(),MONTH(GETDATE(),DAY(GETDATE() 2在studentsdb數(shù)據(jù)庫中使用SELECT語句進行基本查詢。 (1)在student_info表中,查詢每個學(xué)生的學(xué)號、姓名、出生日期信息。 (2)查詢學(xué)號為0002的學(xué)生的姓名和家庭住址。(3)找出所有男同學(xué)的學(xué)號和姓名。3使用SELECT語句進行條件查詢(1)在grade表中查找分數(shù)在8090范圍內(nèi)的學(xué)生的學(xué)號和分數(shù)。(2)在grade表中查詢課程編號為0003的學(xué)生的平均分。(3)在grade表中查詢學(xué)習(xí)各門課程的人數(shù)。(4)將學(xué)生按出生日期由大到小排序。(5)查詢所有姓“張”的學(xué)生的學(xué)號和姓名。SELECT學(xué)號,

19、姓名 FROM student_lnfo WHERE姓名LIKE張4嵌套查詢(1)在student_lnfo表中查找與“劉衛(wèi)平”性別相同的所有學(xué)生的姓名、出生日期。 SELECT 姓名,出生日期 FROM student_lnfo WHERE性別= (SELECT性別 FROM student_lnfo WHERE姓名=劉衛(wèi)平)(2)使用IN子查詢查找所修課程編號為0002、0005的學(xué)生學(xué)號、姓名、性別。 SELECT學(xué)號,姓名,性別 FROM student_info WHERE student_info學(xué)號 IN (SELECT學(xué)號 FROM grade WHERE課程編號IN(0002

20、,0005)(3)列出學(xué)號為0001的學(xué)生的分數(shù)比0002的學(xué)生的最低分數(shù)高的課程編號和分數(shù)。 SELECT 課程編號,分數(shù) FROM grade WHERE學(xué)號=0001AND分數(shù)ANY (SELECT分數(shù) FROM grade WHERE學(xué)號=0002)(4)列出學(xué)號為0001的學(xué)生的分數(shù)比學(xué)號為0002的學(xué)生的最高成績還要高的課程編號和分數(shù)。5多表查詢(1)查詢分數(shù)在8090范圍內(nèi)的學(xué)生的學(xué)號、姓名、分數(shù)。 SELECT student_info學(xué)號,姓名,分數(shù) FROM student_info,grade WHERE student_info學(xué)號=grade學(xué)號 AND分數(shù) BETW

21、EEN 80 AND 90(2)查詢學(xué)習(xí)“ C語言程序設(shè)計”課程的學(xué)生的學(xué)號、姓名、分數(shù)。 SELECT student_info學(xué)號,姓名,分數(shù) FROM student_info INNER JOIN grade ON student_info學(xué)號=grade學(xué)號 INNER JOIN curriculum ON課程名稱=C語言程序設(shè)計(3)查詢所有男同學(xué)的選課情況,要求列出學(xué)號、姓名、課程名稱、分數(shù)。(4)查詢每個學(xué)生的所選課程的最高成績,要求列出學(xué)號、姓名、課程編號、分數(shù)。(5)查詢所有學(xué)生的總成績,要求列出學(xué)號、總成績,沒有選修課程的學(xué)生的總成績?yōu)榭铡L崾荆菏褂米笸膺B接。(6)為gr

22、ade表添加數(shù)據(jù)行:學(xué)號0004、課程編號為0006、分數(shù)為76。查詢所有課程的選修情況,要求列出課程編號、課程名稱、選修人數(shù),curriculum 表中沒有的課程列值為空。提示:使用右外連接。6、使用UNION運算符將student_lnfo表中姓“張”的學(xué)生的學(xué)號、姓名與curriculum 表的課程編號、課程名稱返回在一個表中,且列名為u_編號、u_名稱。7數(shù)據(jù)更新(1)創(chuàng)建totalgrade表,具有數(shù)據(jù)列:學(xué)號、姓名、總成績。 CREATE TABLE totalgrade (學(xué)號 char(4)NOT NULL, 姓名 varchar(8)Null, 總成績 decimal(5,2

23、)NULL)(2)使用INSERT INTO語句通過student_lnfo表更新totalgrade表的學(xué)號、姓名列數(shù)據(jù)。 INSERT INTO totalgrade SELECT學(xué)號,姓名,總成績=0 FROM student_info(3)使用UPDATE語句通過grade表更新totalgrade表的總成績列數(shù)據(jù),使totalgrade表中每個學(xué)生的總成績?yōu)間rade表中該學(xué)生各成績之和。UPDATE totalgrade SET總成績=(SELECT SUM(分數(shù))FROM grade WHERE totalgrade學(xué)號=grade學(xué)號)FROM grade(4)刪除totalg

24、rade表中沒有總成績的學(xué)生記錄。四、實驗思考1查詢所有沒有選修課程的學(xué)生信息,返回結(jié)果包括學(xué)號、姓名、性別。2在student_lnfo表和grade表之間實現(xiàn)交叉連接。3查詢每個學(xué)生的所選課程的成績,并列出學(xué)號生成分組匯總行(總成績)和明細行(各課成績)。提示:使用 SELECT語句的 COMPUTE選項。實驗4 索引和視圖及數(shù)據(jù)完整性項目1 索引和視圖一、實驗?zāi)康?學(xué)會使用企業(yè)管理器和 Transact-SQL語句CREATE INDEX創(chuàng)建索引。 2學(xué)會使用企業(yè)管理器查看索引。3學(xué)會使用企業(yè)管理器和Transact-SQL語句DROP INDEX刪除索引。4掌握使用企業(yè)管理器、向?qū)У葎?chuàng)

25、建、管理和刪除全文索引,并使用全文索引查詢信息的方法。5掌握使用企業(yè)管理器和Transact-SQL語句CREATE VIEW創(chuàng)建視圖的用法。6掌握系統(tǒng)存儲過程sp_rename的用法。7掌握使用Transact-SQL語句ALTER VIEW修改視圖的方法。二、實驗準備1了解聚集索引和非聚集索引的概念。2了解使用Transact-SQL語句CREATE INDEX創(chuàng)建索引的語法。3了解使用企業(yè)管理器創(chuàng)建索引的步驟。4了解Transact-SQL語句 DROP INDEX刪除索引的用法。5了解創(chuàng)建視圖的Transact-SQL語句CREATE VIEW的語法格式及用法。6了解修改視圖的Tran

26、sact-SQL語句ALTER VIEW的語法格式。7了解視圖更名的系統(tǒng)存儲過程sp_rename的用法。8了解刪除視圖的Transact-SQL語句DROP VIEW的用法。三、實驗內(nèi)容l分別使用企業(yè)管理器和Transact-SQL語句為studentsdb數(shù)據(jù)庫的student_info表和curriculum表創(chuàng)建主鍵索引。2使用企業(yè)管理器按curriculum表的課程編號列創(chuàng)建唯一性索引。3分別使用企業(yè)管理器和Transact-SQL語句為studentsdb數(shù)據(jù)庫的grade表的“分數(shù)”字段創(chuàng)建一個非聚集索引,命名為grade_index。 CREATE INDEX grade_ln

27、dex ON grade(分數(shù))4為studentsdb數(shù)據(jù)庫的grade表的“學(xué)號”和“課程編號”字段創(chuàng)建一個復(fù)合唯一索引,命名為grade_id_c_ind。 CREATE UNIQUE INDEX grade_id_c_ind ON grade(學(xué)號,課程編號)5分別使用企業(yè)管理器和系統(tǒng)存儲過程sp_helpindex查看grade表和student_info表上的索引信息。 sp_helpindex grade6使用企業(yè)管理器的向?qū)А惫ぞ邔rade表創(chuàng)建一個聚集索引和唯一索引。7使用系統(tǒng)存儲過程sp_rename將索引grade_index更名為grade_ind。 sp_renam

28、e gradegrade_index, grade_ind,INDEX 8分別使用企業(yè)管理器和Transact-SQL語句 DROP INDEX刪除索引grade_ind。再次使用系統(tǒng)存儲過程sp_helpindex查看grade表上的索引信息。 DROP INDEX gradegrade_ind 9分別使用企業(yè)管理器和系統(tǒng)存儲過程sp_fulltext_database為studentsdb數(shù)據(jù)庫啟用全文檢索。10分別使用企業(yè)管理器和系統(tǒng)存儲過程sp_fulltext_catalog為studentsdb數(shù)據(jù)庫建立全文目錄,命名為FT_stu。為student_info表建立全文索引數(shù)據(jù)元。

29、 execute sp_fulltext_catalog FT_stu,create exec sp_fulltext_table student_info,create,F(xiàn)T_stu,PK_ student_info 在建立全文索引數(shù)據(jù)元之前保證已為student_info表建立了PK_ student_info索引。11為student_info表設(shè)置全文索引列名為家庭住址。在全文目錄中注冊該表,激活表的全文檢索能力。 column student_info,家庭住址,add execute sp_fulltext_ table student_info,activate12填充全文目錄,

30、檢查全文目錄填充情況。 execute sp_fulltext_catalogFT_stu,start_full While(fulltextcatalogproperty(FT_stu,populateStatus)<>0) BEGIN waitfor delay,0:0:30如果全文目錄正處于填充狀態(tài),則等待30s后再檢測一次 END13在student_info表中,分別使用CONTAINS和FREETEXT函數(shù)通過全文目錄檢索家庭住址包含25號的記錄。 SELECT姓名,家庭住址 FROM student_info WHERE CONTAINS(家庭住址,25號)14使用系

31、統(tǒng)存儲過程從studentsdb數(shù)據(jù)庫中禁用全文檢索。15在studentsdb數(shù)據(jù)庫中,以student_info表為基礎(chǔ),使用企業(yè)管理器建立名為v_stu_i的視圖,使視圖顯示學(xué)生姓名、性別、家庭住址。16在 studentsdb數(shù)據(jù)庫中,使用Transact-SQL語句 CREATE VIEW建立一個名為v_stu_c的視圖,顯示學(xué)生的學(xué)號、姓名、所學(xué)課程的課程編號,并利用視圖查詢學(xué)號為0003的學(xué)生情況。17基于student_info表、curriculum表和grade表,建立一個名為v_stu_g的視圖,視圖中具有所有學(xué)生的學(xué)號、姓名、課程名稱、分數(shù)。使用視圖v_stu_g查詢學(xué)

32、號為0001的學(xué)生的所有課程與成績。 18分別使用企業(yè)管理器和Transact-SQL語句修改視圖v_stu_c,使之顯示學(xué)號、姓名、每個學(xué)生所學(xué)課程數(shù)目。19使用Transact-SQL語句 ALTER VIEW修改視圖v_stu_i,使其具有列名學(xué)號、姓名、性別。 ALTER VIEW v_stu_i(學(xué)號,姓名,性別) AS SELECT學(xué)號,姓名,性別 FROM student_info 20使用系統(tǒng)存儲過程sp_rename將視圖v_stu_i更名為v_stu_info。 sp_rename v_stu_i,v_stu_info21利用視圖v_stu_i為student_info表添

33、加一行數(shù)據(jù):學(xué)號為0015、姓名為陳婷、性別為女。22利用視圖v_stu_i刪除學(xué)號為0015的學(xué)生記錄。23利用視圖v_stu_g修改姓名為劉衛(wèi)平的學(xué)生的高等數(shù)學(xué)的分數(shù)為84。24使用Transact-SQL語句 DROP VIEW刪除視圖v_stu_c和v_stu_g。四、實驗思考1是否可以通過視圖v_stu_g修改grade表中學(xué)號列數(shù)據(jù)?2通過對視圖上的操作,比較通過視圖和基表操作數(shù)據(jù)的異同。項目2 數(shù)據(jù)完整性一、實驗?zāi)康?掌握企業(yè)管理器和Transact-SQL語句(CREATE RULE、DROP RULE)創(chuàng)建和刪除規(guī)則的方法。2掌握系統(tǒng)存儲過程sp_bindrule、sp_un

34、bindrule綁定和解除綁定規(guī)則的操作方法,以及sp_help、sp_helptext查詢規(guī)則信息、sp_rename更名規(guī)則的方法。3掌握企業(yè)管理器和Transact-SQL語句(CREATE DEFAULT、DROP DEFAULT)創(chuàng)建和刪除默認對象的方法。4掌握系統(tǒng)存儲過程sp_bindefault、sp_unbindefault綁定和解除綁定默認對象的操作方法,以及sp_help、sp_helptext查詢規(guī)則信息、sp_rename更名規(guī)則的方法。5掌握企業(yè)管理器和Transact-SQL語句(CREATE TABLE、ALTER TABLE)定義和刪除約束的方法,并了解約束的類

35、型。二、實驗準備1了解數(shù)據(jù)完整性概念。2了解創(chuàng)建規(guī)則和刪除規(guī)則的語法,了解綁定規(guī)則和解除綁定規(guī)則的語法。3了解創(chuàng)建默認對象和刪除默認對象的語法,了解綁定和解除綁定默認對象的語法。4了解約束的類型、創(chuàng)建約束和刪除約束的語法。三、實驗內(nèi)容和步驟1為studentdb數(shù)據(jù)庫創(chuàng)建一個規(guī)則,限制所輸入的數(shù)據(jù)為7位09的數(shù)字。 (1)復(fù)制student_info表命名為stu_phone,在stu_phone表中插入一列,列名為“電話號碼”。完成以下代碼實現(xiàn)該操作。 SELECT * INTO stu_phone FROM student_info ALTER TABLE stu_phone ADD_ C

36、HAR(7)NULL stu_phone表結(jié)構(gòu)如圖1所示。 圖1 stu_phone表結(jié)構(gòu)(2)創(chuàng)建一個規(guī)則phone_rule,限制所輸入的數(shù)據(jù)為7位09的數(shù)字。實現(xiàn)該規(guī)則的代碼為 CREATE_ phone_rule AS Phone LIKE 0-90-90-90-90-90-90-9 (3)使用系統(tǒng)存儲過程sp_bindrule將phone_rule規(guī)則綁定到stu_phone表的“電話號碼”列上。實現(xiàn)該操作的代碼為 sp_bindrule_,stu_phone電話號碼 (4)輸入以下代碼,進行一次插入操作: INSERT INTO stu_phone(學(xué)號,姓名,電話號碼)VALUE

37、S(0009,王國強,1234yyy) 產(chǎn)生以下出錯信息: 服務(wù)器:消息513,級別16,狀態(tài)1,行1列的插入或更新與先前的 CREATE RULE語句所強制的規(guī)則沖突。該語句己終止。沖突發(fā)生于數(shù)據(jù)庫studentsdb。表stu_phone,列電話號碼試分析:為什么會產(chǎn)生該出錯信息?如果要實現(xiàn)插入操作,應(yīng)修改INSERT INTO語句中的哪個值?phone_rule規(guī)則能否對其他操作(如 DELETE)進行規(guī)則檢查?2使用企業(yè)管理器實現(xiàn)實驗內(nèi)容1的每個操作。3創(chuàng)建一個規(guī)則stusex_rule,將其綁定到stu_phone表的“性別”列上,保證輸入的性別值只能是“男”或“女”。4使用系統(tǒng)存儲

38、過程sp_help查詢stusex_rule規(guī)則列表,使用sp_helptext查詢stusex_rule規(guī)則的文本,使用sp_rename將stusex_rule規(guī)則更名為stu_s_rule。5刪除stu_s_rule規(guī)則。 注意:stu_s_rule為stusex_rule更名后規(guī)則名,是否仍然綁定在stu_phone表的“性別”列上,應(yīng)如何操作才能刪除它。6在 studentdb數(shù)據(jù)庫中,建立日期、貨幣和字符等數(shù)據(jù)類型的默認對象。 (1)在查詢分析器中,完成以下代碼,創(chuàng)建默認對象df_date、df_char、df_money。 一創(chuàng)建日期型默認對象df_date CREATE_df_

39、date AS2006-4-12 GO 一創(chuàng)建字符型默認對象df_char CREATE DEFAULT df_char _unknown GO 一創(chuàng)建貨幣型默認對象df_money CREATE DEFAULT_ AS 100 GO(2)輸人以下代碼,在studentsdb數(shù)據(jù)庫中創(chuàng)建stu_fee數(shù)據(jù)表。 CREATE TABLE stu_fee (學(xué)號 char(10)NOT NULL, 姓名 char(8) NOT NULL, 學(xué)費money , 交費日期 datetime, 電話號碼 char(7)(3)使用系統(tǒng)存儲過程sp_bindefault將默認對象df_date、df_cha

40、r、df_money分別綁定在stu_fee表的“學(xué)費”、“交費日期”、“電話號碼”列上。 _df_money,stu_fee學(xué)費 GO sp_bindefault_,stu_fee交費日期 GO sp_bindefault df_char, stu_fee電話號碼 GO (4)輸人以下代碼,在stu_fee表進行插入操作: INSERT INTO stu_fee(學(xué)號,姓名)values(0001,劉衛(wèi)平) INSERT INTO stu_fee(學(xué)號,姓名,學(xué)費)values(0001,張衛(wèi)民,120) INSERT INTO stu_fee(學(xué)號,姓名,學(xué)費,交費日期) VALUES(0

41、001,馬東,110,2006-5-12) 分析stu_fee表中插入記錄的各列的值是什么? (5)完成以下代碼解除默認對象 df_char的綁定,并刪除之。 _stu_fee電話號碼 _DEFAULT df _Char 按同樣的方式,刪除默認對象df_date、df_money。7使用企業(yè)管理器創(chuàng)建默認對象df_date、df_money,并將它們分別綁定到stu_fee表的“學(xué)費”、“交費日期”、“電話號碼”列上,在插入操作中觀察stu_fee表的數(shù)據(jù)變化情況,操作完成后,刪除這些默認對象。8為student_info表添加一列,命名為“院系”,創(chuàng)建一個默認對象stu_d_df,將其綁定到

42、student_info表的“院系”列上,使其默認值為“信息院”,對student_info表進行插入操作,操作完成后,刪除該默認對象。分別使用企業(yè)管理器和查詢分析器實現(xiàn)。9在studentsdb數(shù)據(jù)庫中用CREATE TABLE語句創(chuàng)建表stu_con,并同時創(chuàng)建約束。 (l)創(chuàng)建表的同時創(chuàng)建約束。 表結(jié)構(gòu)如圖2所示。 約束要求如下:將學(xué)號設(shè)置為主鍵(PRIMARY KEY), 圖2 要創(chuàng)建的表的結(jié)構(gòu)主鍵名為pk_sid. 為姓名添加唯一約束(UNIQUE),約束名為uk_name. 為性別添加默認約束(DEFAULT),默認名稱為df_sex,其值為“男”。 為出生日期添加屬性值約束(CH

43、ECK,約束名為ck_bday,其檢查條件為:出生日期>1988-1-l(2)在stu_con表中插入如表1-1所示的數(shù)據(jù)記錄。表1-1在stu_con表中插入的數(shù)據(jù) 學(xué)號 姓名 性別 出生日期 家庭住址 0009 張小東 1989-4-6 0010 李梅 女 1983-8-5 0011 王強 1988-9-10 0012 王強 1989-6 -3 分析各約束在插入記錄時所起的作用,查看插入記錄后表中數(shù)據(jù)與所插入的數(shù)據(jù)是否一致?(3)使用ALTER TABLE語句的DROP CONSTRAINT參數(shù)項在查詢分析器中刪除為stu_con表所建的約束。10用企業(yè)管理器完成實驗內(nèi)容9的所有設(shè)置

44、。11在查詢分析器中,為studentsdb數(shù)據(jù)庫的grade表添加外鍵約束(FOREIGNKEY),要求將“學(xué)號”設(shè)置為外鍵,參照表為studentinfo,外鍵名稱為fk_sid。 使用系統(tǒng)存儲過程sp_help查看grade表的外鍵信息。 在grade表中插入以下記錄,觀察SQL Server會做何處理,為什么?如何解決所產(chǎn)生的問題? 學(xué)號課程編號分數(shù) 0100000178 使用查詢分析器刪除grade表的外鍵fk_sid。四、實驗思考 1在SQL Server 2000中??刹捎媚男┓椒▽崿F(xiàn)數(shù)據(jù)完整性? 2比較默認對象和默認約束的異同。實驗5 Transact-SQL程序設(shè)計一、實驗?zāi)?/p>

45、的1掌握Transact-SQL的數(shù)據(jù)類型、常量變量、表達式等概念。2掌握程序中注釋的基本概念和使用方法。3掌握程序中的流程控制語句。4掌握SQL Server 2000中常用函數(shù)的用法。5掌握游標的概念和聲明方法,以及使用游標進行數(shù)據(jù)的查詢、修改、刪除操作等。二、實驗準備1了解程序中注釋的語法格式。2了解程序中的流程控制語句:IFELSE、CASE、WHILE等控制流語句。3了解系統(tǒng)提供的常用數(shù)學(xué)函數(shù)、日期和時間函數(shù)、字符串函數(shù)和數(shù)據(jù)類型轉(zhuǎn)換函數(shù)的用法。4了解函數(shù)的使用方法。5了解游標的使用方法。三、實驗內(nèi)容和步驟1在查詢分析器中,選擇studentsdb數(shù)據(jù)庫,輸入以下代碼。 DECLAR

46、E stu_ name varchar(l0) SELECTstu_ name =姓名 FROM student_ info WHERE姓名 LIKE張 SELECT stu_ name 觀察顯示的結(jié)果,與student_ info表中數(shù)據(jù)進行比較,stu_ name賦值的是SELECT結(jié)果集中的哪個數(shù)據(jù)?2定義int型局部變量grademax、grademin、gradesum,在 grade表中查找最高分、最低分和總分,分別賦給grademax、grademin、gradesum,并顯示。DECLAREgrademax int,grademin int,gradesum intSELECT

47、grademax=max(分數(shù)),grademin=min(分數(shù)),gradesum=sum(分數(shù))FROM gradeSELECT grademax,grademin ,gradesum 3使用SET命令將查詢的結(jié)果數(shù)目賦值給int型局部變量row。給下面代碼中的劃線處填上適當(dāng)?shù)膬?nèi)容,以完成上述操作。 DECLARE rows SET_(SELECT COUNT(*)FROM grade) _rows 一顯示rows的值4以下代碼在 curriculum表中插入新記錄: DECLARE intCId int,intErrorCode int INSERT INTO curriculum(課程

48、編號,課程名稱,學(xué)分) VALUES(0006,VB程序設(shè)計,2) SELECT intCId=identity,intErrorCode=error SELECT intCId,intErrorCode將該代碼段連續(xù)執(zhí)行兩次,觀察兩次顯示的信息及curriculum表中數(shù)據(jù)的變化,為什么前后兩次執(zhí)行時顯示的信息會不同?5在 studentsdb數(shù)據(jù)庫的student_info表中,以“性別”為分組條件,分別統(tǒng)計男生和女生人數(shù)。6在grade表中,使用適當(dāng)函數(shù)找出“高等數(shù)學(xué)”課程的最高分、最低分和平均分。7定義一個 datetime型局部變量studate,以存儲當(dāng)前日期。計算 student

49、_info表中的學(xué)生的年齡,并顯示學(xué)生的姓名、年齡。在以下代碼的劃線部分填入適當(dāng)內(nèi)容,以實現(xiàn)上述功能。 DECLARE_datetime SETstudate=_ 一給studate賦值為當(dāng)前日期 SELECT姓名,_(studate)year(出生日期)AS年齡 FROM student_info8運行以下代碼,寫出運行結(jié)果。 DECLARE a nit,b nit SET a168 SET b=73 SELECT a b,ab,ab9在局部變量stu_id中存儲了學(xué)號值。編寫代碼查詢學(xué)號為0001的學(xué)生的各科平均成績,如果平均分=60則顯示“你的成績及格了,恭賀你!”,否則顯示“你的成績不

50、及格”。 IF(SELECT AVG(分數(shù))FROM grade where學(xué)號=0001)<60) PRINT你的成績不及格 ELSE PRINT 你的成績及格了,恭賀你!10運行以下代碼段,寫出運行的結(jié)果。 DECLAREcounter int SETcounter=1 WHILE counter<10 BEGIN SELECT counter的值現(xiàn)在為:+CONVERT(CHAR(2),counter) SETcounter =counter+1 END 11查詢 grade表。如果分數(shù)大于等于90顯示A;如果分數(shù)大于等于80小于90,顯示B;如果分數(shù)大于等于70小于80,顯示C;如果分數(shù)大于等于60小于70,顯示D;其他顯示E。在以下代碼的劃線部分填入適當(dāng)內(nèi)容

溫馨提示

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

評論

0/150

提交評論