金陵科技学院实验报告
2、理解视图的基本概念、种类及利用视图修改数据时的限制,掌握视图的创建方法。 3、理解索引的基本概念及其优缺点,掌握创建索引的方法。
二、实验设备、环境
设备:奔腾Ⅳ或奔腾Ⅳ以上计算机
环境:WINDOWS 2000 SERVER或WINDOWS 2003 SERVER、SQL Server2005中文版。
三、实验步骤
1、根据题目要求熟悉SQL Server2005的各种管理工具。 2、分析题意,重点分析题目要求并给出解决方法。
3、按题目要求完成实际操作任务,并将相关文档资料保存在以自己学号命名的文件夹中。 4、提交完成的实验结果。
四、实验内容
1、创建关系图
根据实际情况,为MyDB数据库创建关系图。其中包括:Student、Course、Grade、Class四张表格,选择表中相应的属性建立表间的关联。 2、视图的创建、查询、修改和删除。
(1)创建一个名为V_Student以显示学生的学号、姓名、性别和出生年月等基本信息。 (2)创建一个名为创建一个视图V_grade,以显示“001”号课程的学生成绩信息,如学号、姓名、课程名称、成绩和学分等。
(3)分别利用视图V_Student和V_grade作查询和更新操作。
(4)修改V_Student视图的定义,为其增加一个条件,使得该视图只显示“CS01”班的学生的基本信息。
(5)删除名为V_Student的视图。 3、索引的创建、查看和删除。
(1)为Student表创建一个基于总学分和学号的索引idex_total_xh,其中总学分按降序排列,当总学分相同时,按学号升序排列,填充因子为80%。
(2)学生表创建一个基于班级和姓名的索引idex_clas_name,其中按班号按升序、学生姓名按降序排列,填充因子为70%。 (3)利用索引管理器查看索引。
(4)删除索引idex_total_xh。再利用索引管理器查看索引。
注:以上3题除了第一题,其余各题均需要使用工具和SQL语言两种方法来完成。并将SQL语句按题号保存在自己的文件夹下的实验四目录中。
五、问题解答及实验结果
2、视图的创建、查询、修改和删除
()create view V_Student
as select SNO,SName,Sex,Birthday from Student
(2)create view V_Grade
16
金陵科技学院实验报告
as SELECT dbo.Student.SNO, dbo.Student.SName, dbo.Grade.Grade, dbo.Course.CName, dbo.Grade.CNO FROM dbo.Grade INNER JOIN
dbo.Course ON dbo.Grade.CNO = dbo.Course.CNO INNER JOIN
dbo.Student ON dbo.Grade.SNO = dbo.Student.SNO WHERE (dbo.Grade.CNO = '0001')
(3)select * from dbo.V_Grade where SNO='19920101' update V_Grade set Grade=8 where SNO='19920101' select * from V_Student where SName='李杰' (4)alter view V_Student
as select SNO,SName,Sex,Birthday from Student where ClsNo =' CS01 ' (5)drop view dbo.V_ Student
六、实验体会和收获
实验项目名称: T-SQL程序设计 实验学时: 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:
实验5 T-SQL程序设计
一、实验目的和要求
1、掌握T-SQL中运算符和表达式的使用。
2、通过对Select的使用,掌握Select语句的结构及其应用。 3、掌握T-SQL中几个常用流程控制语句的使用。 4、掌握系统内置函数的概念及其应用。
5、通过定义和使用用户自定义函数,掌握自定义函数的概念及其应用
二、实验设备、环境
设备:奔腾Ⅳ或奔腾Ⅳ以上计算机
17
金陵科技学院实验报告
环境:WINDOWS 2000 SERVER或WINDOWS 2003 SERVER、SQL Server2005中文版。
三、实验步骤
1、根据题目要求熟悉SQL Server2005的各种管理工具。 2、分析题意,重点分析题目要求并给出解决方法。
3、按题目要求完成实际操作任务,并将相关文档资料保存在以自己学号命名的文件夹中。 4、提交完成的实验结果。
四、实验内容
一、SQL查询(*使用SQL Server样例数据库pubs完成) 1、简单查询
(1)查询所有作者的作者号、姓名信息;(authors表)
(2)查询所有作者的姓名和作者号信息,并在每个作者的作者号前面显示字符串“身份证号:”表明显示信息是身份证信息;(authors表)
(3)改变显示列名。显示所有作者的姓名信息和作者号信息,要求用“名”和“姓”来区别fname和lname,“作者编号”来区分作者号;(authors表) (4)查询所有书在价格提高10%后的价格和书名信息;(titles表) (5)查询所有书的书号和税后价格。(titles表,royalty列表示税率);
(6)查询所有作者的姓和“名的第一个字符”以及作者号;(authors表,SUBSTRING函数) (7)查询邮政编码大于9000的作者姓名和电话信息;(authors表) (8)查询在CA州的作者姓名和城市;(authors表)
(9)查询出版日期在1/1/1991到12/31/1991之间的书名(书名限制为38个字符)和出版日期;(titles表,SUBSTRING函数)
(10)查询书的类型是mod_cook或trad_cook的书名和它的类型;(titles表) (11)查询店名中包含Book的店的信息;(stores表); (12)查询所有无价格的图书;(titles表)
(13)查询书名以T开头或者出版号为0877,且价格大于16美元的书的信息;(titles表) (14)查询所有作者的所在城市和州名,要求没有重复信息;(authors表) (15)按照类型的升序和价格的降序显示书的信息;(titles表) 2、生成汇总数据
(1)计算多少种书已被定价;(titles表)
(2)计算每本书的书号及它的售书总量;(sales表) (3)求销售量大于30的书号及销售数量;(sales表)
(4)显示在1994年1月1日到1994年10月31日间,每本书的销售总额;(sales表,titles表) 3、连接查询
(1)求每本杂志上刊登的文章;(titles, publishers表)
18
金陵科技学院实验报告
(2)求某书店销售某书的数量;(titles, stores, sales表) (3)查询所有合著的书及其作者。 (4)显示所有已销售的书名。 4、子查询
(1)查询有销售记录的所有书信息,包括书的编号、书名、类型和价格; (2)求已销售的书的信息; 二、函数
1、自定义一个名为Sage_func函数,按出生年月计算年龄。然后从Student表中检索出含有年龄的学生信息。
2、定义一个名为grade_func的自定义函数,将成绩从百分制转化为五级记分制。将该用户定义函数用在查询每个学生的成绩中,给出五级记分制的成绩。 三、流程控制
1、Student表中若存在学号为“19920101”的学生,则显示已存在的信息,否则插入该学生的记录。然后从student表中删除学号为“19920101”的学生记录,重新执行该程序,观察与上次有何不同。
2、使用While语句求1到100之间的累加和,输出结果。
五、问题解答及实验结果
1、简单查询
(1) select au_id,au_lname,au_fname from authors
(2) select au_lname,au_fname,'身份证号:',au_id from authors
(3) select au_id '作者编号',au_lname '姓',au_fname '名' from authors (4) select title,price*1.1 newprice from titles
(5) select title_id,price*(1+royalty) newprice from titles (6) select au_id,au_lname,SUBSTRING(au_fname,1,1) au_fname from
authors (7) select au_id,au_lname,au_fname,phone from authors where zip>9000 (8) select au_id,au_lname,au_fname from authors where state='CA' (9) select substring(title,1,38) title,pubdate from titles where pubdate
between '1/1/1991' and '12/31/1991'
(10)select title,[type] from titles where [type] in
('mod_cook','trad_cook')
(11)select distinct(city),state from authors (12)select * from titles where price is null
(13)select * from titles where (title like 'T%' or pub_id='0877') and
price>16 (14)select * from stores where stor_name like '%Book%'
2、生成汇总数据
(1) select titles.title_id, sum(sales.qty)*titles.price totalmoney
from sales,titles
where titles.pubdate between '1994/1/1' and '1994/10/31'
19