第1部分 实验内容介绍
启动查询分析器,运行下面的代码创建教材P75页习题5中的数据库及其相应表,用SQL完成下列操作。
创建SPJ数据库
(1) (2) (3) (4)
查询天津供应商的姓名和城市;
查询重量大于14的零件的名称、颜色和重量; 查询供应工程J1零件P1的供应商号码SNO;
查询供应数量大于200小于等于400的供应商姓名;
13
(5) 求供应工程J1零件为红色的供应商号码SNO
(6) 查询没有使用天津供应商生产的红色零件的工程号JNO;
(7) 查询至少用了供应商S1所供应的全部零件的工程号JNO(参考p111例47); (8) 找出使用供应商S1供应的所有零件的工程号码; (9) 找出工程项目J2使用的各种零件的名称和重量; (10) 找出上海厂商供应的所有零件号码; (11) 找出使用上海产的零件的工程名称; (12) 找出没有使用天津产的零件的工程号码; (13) 把全部红色零件的颜色改为蓝色;
(14) 由S5供给J4的零件P6改为由S3供应,请做出必要的修改。 (15) 请将(S2,J6,P4,200)插入供应情况关系表中。
(16) 从供应商关系中删除S2的记录,并从供应情况关系中删除响应的记录; 3.实验思考
(1)查询所有没有选修课程的学生信息,返回结果包括学号、姓名、性别。 (2)在student_info表和grade表之间实现交叉连接。
(3)查询每个学生的所选课程的成绩,并列出学号生成分组汇总行(总成绩)和明细行(各课成绩)。
提示:使用SELECT语句的COMPUTE选项。
(4)在查询语句中SELECT、FROM和WHERE选项分别实现什么运算?
(5)在查询的FROM子句中实现表与表之间的连接有哪几种方式?对应的关键字分 别是什么?
14
数据库原理与应用实践教程——SQL Server 2000
实验4 索引和视图(2学时)
1.实验目的
(1)掌握使用SQL Server管理平台和Transact-SQL语句CREATE INDEX创建索引的方法。
(2)掌握使用SQL Server管理平台查看索引的方法。
(3)掌握使用SQL Server管理平台和Transact-SQL语句DROP INDEX删除索引的 方法。
(4)掌握使用SQL Server管理平台和Transact-SQL语句CREATE VIEW创建视图的用法。 (5)掌握使用Transact-SQL语句ALTER VIEW修改视图的方法。 (7)了解删除视图的Transact-SQL语句DROP VIEW的用法。
2.实验内容及步骤
(1)使用Transact-SQL语句按curriculum表的课程编号列创建唯一性索引。
(2)分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的grade表的“分数”字段创建一个非聚集索引,命名为grade_index。
CREATE INDEX grade_index ON grade(分数)
(3)为studentsdb数据库的grade表的“学号”和“课程编号”字段创建一个复合唯一索引,命名为grade_id_c_ind。
CREATE UNIQUE INDEX grade_id_c_ind ON grade(学号,课程编号)
(4)使用SQL Server管理平台对grade表创建一个聚集索引和唯一索引。 (5)使用系统存储过程sp_rename将索引grade_index更名为grade_ind。
sp_rename 'grade.grade_index','grade_ind','INDEX'
(6)分别使用SQL Server管理平台和Transact-SQL语句DROP INDEX删除索引grade_ind。
DROP INDEX grade.grade_ind
(7)在studentsdb数据库中,以student_info表为基础,使用SQL Server管理平台建立名为v_stu_i的视图,使视图显示学生姓名、性别、家庭住址。
(8)在studentsdb数据库中,使用Transact-SQL语句CREATE VIEW建立一个名为v_stu_c的视图,显示学生的学号、姓名、所学课程的课程编号,并利用视图查询学号为0003的学生情况。
(9)基于student_info表、curriculum表和grade表,建立一个名为v_stu_g的视图,视图中具有所有学生的学号、姓名、课程名称、分数。使用视图v_stu_g查询学号为0001的学生的所有课程与成绩,如图1-9所示。
第1部分 实验内容介绍
15
图1-9 学号为0001的学生的视图信息
(10)分别使用SQL Server管理平台和Transact-SQL语句修改视图v_stu_c,使之显示学号、姓名、每个学生所学课程数目。
(11)使用Transact-SQL语句ALTER VIEW修改视图v_stu_i,使其具有列名学号、姓名、性别。
ALTER VIEW v_stu_i(学号,姓名,性别)
AS SELECT 学号,姓名,性别 FROM student_info
(12)使用系统存储过程sp_rename将视图v_stu_i更名为v_stu_info。
sp_rename v_stu_i,v_stu_info
(13)利用视图v_stu_i为student_info表添加一行数据:学号为0015、姓名为陈婷、性别为女。
(14)利用视图v_stu_i删除学号为0015的学生记录。
(15)利用视图v_stu_g修改姓名为刘卫平的学生的高等数学的分数为84。 (16)使用Transact-SQL语句DROP VIEW删除视图v_stu_c和v_stu_g。
3.实验思考
(1)是否可以通过视图v_stu_g修改grade表中学号列数据? (2)比较视图和基表操作表中数据的异同。 (3)可更新视图必须满足哪些条件?
(4)什么是索引?SQL Server 2000中有两种形式的索引:聚集索引和非聚集索引,简单叙述它们的区别?
(5)能否在视图上创建索引?
实验5 数据完整性(2学时)
一、实验目的
1、掌握数据完整性的基础知识;
2、学会使用约束来实施数据完整性的保护; 3、掌握使用默认值实现数据完整性的方法; 4、熟练使用规则实施数据完整性的保护; 5、能够识别违反完整性约束的数据;
16
数据库原理与应用实践教程——SQL Server 2000
二.实验内容及步骤
1、创建教材所示的 SPJ 数据库。
启动查询分析器,运行下面的代码创建数据库。 创建SPJ数据库 其中要求:
① S 表中的 Sno 为主码,Sname 取值唯一并且非空;
② P 表中的 Pno 为主码,pname 取值非空,Color 的值只能取'红','绿','蓝', weight 的值大于零;
③ J 表中的 Jno 为主码;
④ SPJ 的主码为(sno,pno,jno),sno 参照 s 表中的 sno, pno 参照 p 表中的 sno, jno 参照 j 表中的 jno。 2、验证完整整性约束: ①运行“示例数据.sql”;
②往表 S 中插入数据('S6?,?东方红?,30,?上海?,),观察运行结果; ③往表 P 中插入数据('P7?,?螺母?,?兰?,0),观察运行结果; ④往表 SPJ 中插入数据('S4?,?P5?,?J8?,),观察运行结果; ⑤为以上表设计不违反完整性规则的数据。 3、使用 T_SQL 语句实施约束
① 为 s 表的 “City”字段创建一个缺省约束,缺省值为“上海”; Alter table s Add constraint default_city Default '上海' for city
② 为 “City”字段创建一个检查约束,使得所在城市必须是'北京'、'上海'、'天津'或'重庆'之一; Alter table s Add constraint ck_S_City Check (city in ('北京','上海','天津','重庆')) ③ 为 J 表的“Jname”字段增加一个唯一性约束;
Alter table j Add constraint Unique_Jname unique (Jname)
④ 为 spj 表建立依赖于 S 表的外键约束,约束名为fk_S_P_J。
Alter table spj Add constraint fk_S_P_J Foreign key(Sno)References S(Sno) ⑤ 禁用 S 表的“City”的 CHECK 约束 ck_S_City; Alter table s Nocheck constraint ck_S_City
⑥ 启用 S 表的“City”的 CHECK 约束 ck_S_City。 Alter table s check constraint ck_S_City 4、使用 T_SQL 语句进行默认值操作
① 设定默认值:为表 P 创建一个名为 Default_wieght,值为 0 的默认值。 CREATE DEFAULT Default_wieght AS 0 ② 将默认值绑定到列
sp_bindefault Default_wieght,'p.weight' ③ 解除默认绑定
sp_unbindefault 'p.weight'

