《數(shù)據(jù)庫實驗報告 索引和視圖》由會員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)庫實驗報告 索引和視圖(9頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、西北師范大學(xué)計算機(jī)科學(xué)與工程學(xué)院學(xué)生實驗報告
學(xué) 號
專業(yè)
計算機(jī)科學(xué)與技術(shù)
姓名
課程名稱
數(shù)據(jù)庫應(yīng)用與開發(fā)
班級
實驗名稱
索引和視圖
課程類型
專業(yè)限選課
實驗?zāi)康模?
在SQL SEVER 2005中,影響其數(shù)據(jù)庫性的因素有很多,其中最重要的一項就是設(shè)計了有效的索引。而視圖是從一個或幾個基表(或視圖)導(dǎo)出的表,與基表不同的是,視圖是一個虛擬表,視圖包含一系列帶有名稱的列和行數(shù)據(jù)。本次實驗主要練習(xí)它們的創(chuàng)建和使用。
實驗內(nèi)容:
1、在course表的cname列上創(chuàng)建非聚集索引IDX-cname
SQL代碼:
create nonclus
2、tered INDEX IDX_cname ON course(cname)
實驗結(jié)果:
2、在student表的studentno和classno列上創(chuàng)建唯一索引UQ-stu,若該索引已存在,則刪除后重建。然后輸出student表中的記錄,查看輸出結(jié)果的順序。
SQL代碼:
USE teaching
GO
IF EXISTS(SELECT name FROM sysindexes WHERE name='UQ_stu')
DROP INDEX student.UQ_stu
GO
CREATE NONCLUSTERED INDEX UQ_stu ON stu
3、dent(studentno,classno)
GO
SELECT *
FROM student
實驗結(jié)果:
3、修改UQ-stu的索引屬性,當(dāng)執(zhí)行多行插入操作時出現(xiàn)重復(fù)鍵值,則忽略該記錄,且設(shè)置填充因子為80%
SQL代碼:
USE
teaching
GO
ALTER INDEX UQ_stu ON student REBUILD
WITH (PAD_INDEX=ON,FILEFACTOR=80,IGNORE-DUP_KEY=ON)
GO
實驗結(jié)果:
4、創(chuàng)建一個視圖v-teacher,查詢“計算機(jī)學(xué)院”所有教師的信息
SQL代碼:
4、
USE teaching
GO
CREATE VIEW v_teacher
AS
SELECT *
FROM teacher
WHERE department='計算機(jī)學(xué)院'
GO
SELECT *
FROM v_teacher
實驗結(jié)果:
5、創(chuàng)建一個視圖v-avgstu,查詢每個學(xué)生的學(xué)號、姓名及平均分,并且按照平均分降序排序
SQL代碼:
USE teaching
GO
CREATE VIEW v_avgstu
AS
SELECT TOP(100) PERCENT student.studentno,studnt.sname,AVG
5、(score.final) AS 'average'
FROM student,score
WHERE student.studentno=score.studentno
AND score.final IS NOT NULL
GROUP BY student.studentno,student.sname
ORDER BY AVG(score.final) DESC
GO
SELECT *
FROM v_avgstu
實驗結(jié)果:
6、修改v-avgstu的視圖定義,添加WITH CHECK OPTION選項
SQL代碼:
USE teaching
GO
6、
ALTER VIEW v_avgstu
AS
SELECT *
FROM teacher
WHERE department='計算機(jī)學(xué)院'
WITH CHECK OPTION
GO
實驗結(jié)果:
7、通過視圖v-avgstu向基表teacher中分別插入數(shù)據(jù)(‘05039’,‘張馨月’,‘計算機(jī)應(yīng)用’,‘講師’,‘計算機(jī)學(xué)院’)和(‘06018’,‘李誠’,‘機(jī)械制造’,‘副教授’,‘機(jī)械學(xué)院’),并查看插入數(shù)據(jù)的情況
SQL代碼:
USE teaching
GO
INSERT INTO v_teacher
VALUES('05039','張馨月','計算
7、機(jī)應(yīng)用','講師','計算機(jī)學(xué)院')
INSERT INTO v_teacher
VALUES('06018','李誠','機(jī)械制造','副教授','機(jī)械學(xué)院')
SELECT *
FROM v_teacher
SELECT *
FROM teacher
實驗結(jié)果:
8、通過視圖v-teacher將基表teacher中教師編號為05039的教師職稱修改為“副教授”
SQL代碼:
USE teaching
GO
UPDATE v_teacher
SET prof='副教授'
WHERE teacherno='05039'
GO
SELECT *
FROM teacher
實驗結(jié)果:
實驗總結(jié):
通過本次實驗掌握了索引、統(tǒng)計信息和視圖等數(shù)據(jù)庫對象的基本概念和基本操作。
實驗評語:
實驗成績
教師簽字
9