《數(shù)據(jù)庫實(shí)驗(yàn)報(bào)告 索引和視圖》由會(huì)員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)庫實(shí)驗(yàn)報(bào)告 索引和視圖(9頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、西北師范大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院學(xué)生實(shí)驗(yàn)報(bào)告
學(xué) 號(hào)
專業(yè)
計(jì)算機(jī)科學(xué)與技術(shù)
姓名
課程名稱
數(shù)據(jù)庫應(yīng)用與開發(fā)
班級(jí)
實(shí)驗(yàn)名稱
索引和視圖
課程類型
專業(yè)限選課
實(shí)驗(yàn)?zāi)康模?
在SQL SEVER 2005中,影響其數(shù)據(jù)庫性的因素有很多,其中最重要的一項(xiàng)就是設(shè)計(jì)了有效的索引。而視圖是從一個(gè)或幾個(gè)基表(或視圖)導(dǎo)出的表,與基表不同的是,視圖是一個(gè)虛擬表,視圖包含一系列帶有名稱的列和行數(shù)據(jù)。本次實(shí)驗(yàn)主要練習(xí)它們的創(chuàng)建和使用。
實(shí)驗(yàn)內(nèi)容:
1、在course表的cname列上創(chuàng)建非聚集索引IDX-cname
SQL代碼:
create nonclus
2、tered INDEX IDX_cname ON course(cname)
實(shí)驗(yàn)結(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
實(shí)驗(yàn)結(jié)果:
3、修改UQ-stu的索引屬性,當(dāng)執(zhí)行多行插入操作時(shí)出現(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
實(shí)驗(yàn)結(jié)果:
4、創(chuàng)建一個(gè)視圖v-teacher,查詢“計(jì)算機(jī)學(xué)院”所有教師的信息
SQL代碼:
4、
USE teaching
GO
CREATE VIEW v_teacher
AS
SELECT *
FROM teacher
WHERE department='計(jì)算機(jī)學(xué)院'
GO
SELECT *
FROM v_teacher
實(shí)驗(yàn)結(jié)果:
5、創(chuàng)建一個(gè)視圖v-avgstu,查詢每個(gè)學(xué)生的學(xué)號(hào)、姓名及平均分,并且按照平均分降序排序
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
實(shí)驗(yàn)結(jié)果:
6、修改v-avgstu的視圖定義,添加WITH CHECK OPTION選項(xiàng)
SQL代碼:
USE teaching
GO
6、
ALTER VIEW v_avgstu
AS
SELECT *
FROM teacher
WHERE department='計(jì)算機(jī)學(xué)院'
WITH CHECK OPTION
GO
實(shí)驗(yàn)結(jié)果:
7、通過視圖v-avgstu向基表teacher中分別插入數(shù)據(jù)(‘05039’,‘張馨月’,‘計(jì)算機(jī)應(yīng)用’,‘講師’,‘計(jì)算機(jī)學(xué)院’)和(‘06018’,‘李誠’,‘機(jī)械制造’,‘副教授’,‘機(jī)械學(xué)院’),并查看插入數(shù)據(jù)的情況
SQL代碼:
USE teaching
GO
INSERT INTO v_teacher
VALUES('05039','張馨月','計(jì)算
7、機(jī)應(yīng)用','講師','計(jì)算機(jī)學(xué)院')
INSERT INTO v_teacher
VALUES('06018','李誠','機(jī)械制造','副教授','機(jī)械學(xué)院')
SELECT *
FROM v_teacher
SELECT *
FROM teacher
實(shí)驗(yàn)結(jié)果:
8、通過視圖v-teacher將基表teacher中教師編號(hào)為05039的教師職稱修改為“副教授”
SQL代碼:
USE teaching
GO
UPDATE v_teacher
SET prof='副教授'
WHERE teacherno='05039'
GO
SELECT *
FROM teacher
實(shí)驗(yàn)結(jié)果:
實(shí)驗(yàn)總結(jié):
通過本次實(shí)驗(yàn)掌握了索引、統(tǒng)計(jì)信息和視圖等數(shù)據(jù)庫對(duì)象的基本概念和基本操作。
實(shí)驗(yàn)評(píng)語:
實(shí)驗(yàn)成績
教師簽字
9