SQL Server 数据库系统实验报告Word文件下载.docx
《SQL Server 数据库系统实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《SQL Server 数据库系统实验报告Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。
本次实验中用到6个关系表(当前用户):
COURSE(课程)、DEPT(系)、S(学生)、PROF(教师)、PC(授课)、SC(选修)。
4.1.关系模式。
4.2.6个关系表的定义。
COURSE(课程)
字段
名称
类型
说明
CNO
课程号
VARCHAR(10)
PK,NOTNULL
CNAME
课程名
NOTNULL
PCNO
先修课程号
CREDIT
学分
REAL
DEPT(系)
DNO
系号
DNAME
系名
DEAN
系主任号
系主任作为教师的编号
S(学生)
SNO
学生号
SNAME
学生名
SEX
性别
0,女;
1,男
AGE
年龄
所在系号
FK
PROF(教师)
PNO
教师号
PNAME
教师名
SAL
工资额
FLOAT
SC(选修)
PK,
SCORE
成绩
PC(授课)
4.3.6个关系表的元组数据。
C1
数据库
C5
4
C2
离散数学
C7
2
C3
组合数学
C4
操作系统
C9
数据结构
3
C6
近世代数
高等数学
C8
C语言
数理逻辑
D1
计算机
P01
D2
数学
P04
D3
物理
P07
S1
宋江
1
59
S2
吴用
48
S3
鲁智深
42
S4
孙二娘
40
S5
林冲
51
S6
李逵
46
S7
武松
36
S8
扈三娘
30
P1
刘备
1800
P2
诸葛亮
1600
P3
关羽
1400
P4
曹操
2200
P5
司马懿
2000
61
P6
张辽
1700
P7
孙权
2100
66
P8
周瑜
1900
P9
鲁肃
1500
50
80
60
90
70
55
85
5.实验步骤
5.1.SQLServer2000数据库的安装、启动和创建新的数据库。
SQLServer2000已安装在本机,一般采用的是Windows认证方式。
因此当你以默认Windows用户administrator登陆进window操作系统之后,你就可以直接通过服务管理器启动SQLServer2000。
启动成功之后的状态如下(启动成功之后,可以关闭服务管理器):
之后可以通过打开查询分析器登陆到SQLServer2000,建立和DBMS的会话。
Windows的系统管理员默认对应SQLServer的系统管理员用户sa。
因此,当你以windows的系统管理员身份登陆到SQLServer之后,你在SQLServer中对应的用户名就是sa。
你可以对SQLServer执行任何操作了(当然你也可以创建一个新的用户,该用户最好在windows和SQLServer中以相同的名字同时创建)。
利用企业管理器创建新的数据库test。
test数据库作为本次实验用数据库,在test数据库中创建本次实验的所有数据库对象。
5.2.Create语句
利用Create语句创建以上6个关系表。
同时利用Insert语句将实验数据插入到相应的表中。
1)创建COURSE(课程)的Create语句。
表的创建SQL语句、出现的主要错误及原因:
向表插入数据的SQL语句、出现的主要错误及原因:
2)创建DEPT(系)的Create语句。
3)创建S(学生)的Create语句。
4)创建PROF(教师)的Create语句。
5)创建SC(选修)的Create语句。
6)创建PC(授课)的Create语句。
5.3.Select语句
7)给出所有老师的信息。
该查询的SQL语句、出现的错误及原因:
8)出所有老师的姓名及税后工资额(税额5%)。
9)找出所有选修课程的学生。
10)找出工资低于1500的职工的姓名、工资、系名。
11)列出教授“数学”课程的老师的教工号及姓名。
12)列出工资在500~800之间的老师姓名。
13)给出所有老师的姓名,所纳税额及税后工资额(税额5%)。
该查询的Select语句:
14)求每一课程的间接先行课(即先行课的先行课)。
15)找出工资比所在系主任工资高的老师姓名及工资。
16)求选修了C1或C2课程的学生姓名。
17)列出姓名以“张”打头的教师的所有信息。
18)列出名称中含有4个字符以上,且倒数第3个字符是“d”,倒数第2个字符是“_”的教师的所有信息。
19)按系名升序列出老师姓名,所在系名,同一系中老师按姓名降序排列。
20)求选修了C1或C2号而没有选C3号课程的学生号。
21)列出各系的老师的最高、最低、平均工资。
22)列出计算机系总分超过300分的学生的平均成绩及学号。
23)列出选修了两门课程以上的学生的平均成绩及学号。
24)求选修了课程的学生人数。
25)求各系60岁以上老师的平均工资。
26)找出年龄值为空的老师姓名。
27)列出选修了C1号和C2号课程的学生的学号。
28)找出平均成绩最高的学生号。
29)求S1号学生所选课程的课程记录。
30)列出选修了所有课程的学生名。
31)列出至少选修了S1号学生选修的所有课程的学生名。
32)找出所有只教授一门课程的老师姓名。
33)找出至少选修了两门课程的学生姓名。
34)找出平均成绩及格的学生及其平均分数。
5.4.Insert语句
35)将平均成绩大于60的学生加入到EXCELLENT中(先自行定义创建EXCELLENT表)。
该插入的SQL语句、出现的错误及原因:
5.5.Update语句
36)将老师工资上调5%。
该更新的SQL语句、出现的错误及原因:
37)将D1系系主任的工资改为该系的平均工资。
38)工资超过2000的缴纳10%所得税,其余的缴纳5%所得税。
求教师的税后工资。
39)将计算机系学生的选课成绩上调20%。
5.6.Delete语句
40)删除张辽老师所有的任课记录。
该删除的SQL语句、出现的错误及原因:
41)清除EXCELLENT表中所有记录。
42)删除低于平均工资的老师记录。
43)删除没有选课的学生记录。
5.7.Alter和Drop语句
44)自己设计利用Alter修改EXCELLENT关系表的定义(包括字段的定义和表约束的定义)。
该修改的SQL语句、出现的错误及原因:
45)利用Drop语句删除EXCELLENT关系表的定义。
5.8.Grant和Revoke语句
按以下各图创建一个用户,利用Grant和Revoke语句授予和收回表的各种权限。
根据以下几个图示进行实验。
46)授权1的Grant和Revoke语句。
该授权的SQL语句、出现的错误及原因:
47)授权2的Grant和Revoke语句。
48)授权3的Grant和Revoke语句。
49)授权4的Grant和Revoke语句。
5.9.Index
50)创建关系表COURSE(课程)基于列“CNAME”的索引的Create语句。
该索引创建的SQL语句、出现的错误及原因:
51)创建关系表DEPT(系)基于列“DNAME”的索引的Create语句。
52)创建关系表S(学生)基于列“SNAME”的索引的Create语句。
53)创建关系表PROF(教师)基于列“PNAME,DNO”的联合索引的Create语句。
54)创建关系表SC(选修)基于列“SNO”的索引和基于列“CNO”的索引的Create语句。
55)创建关系表PC(授课)基于列“PNO”的索引和基于列“CNO”的索引的Create语句。
5.10.View
56)创建工资少于2000元的教工视图(水平视图)。
该视图创建的SQL语句、出现的错误及原因:
57)创建只能访问列“PNO,PNAME,SAL”的教工视图(垂直视图)。
58)创建工资少于2000元且只能访问列“PNO,PNAME,SAL”的教工视图(行列视图)。
59)创建可以访问列“SNO,SNAME,CNAME,SCORE”的视图(连接视图)。
60)创建每个学生的平均成绩的视图(分组视图)。
实验二:
嵌入式SQL语言
1.1.熟练掌握数据库前端开发工具PowerBuilder的使用。
能利用PowerBuilder工具建立和Oracle数据库的连接,并利用PowerBuilder进行关系模式的定义。
1.2.熟练掌握PowerBuilder的各种控件的使用。
1.3.熟悉Oracle的嵌入式SQL语言。
能够利用嵌入式SQL语言实现对表数据的更新和查询。
1.4.熟悉视图的操作。
能够根据应用的需求创建视图,并实现对视图的更新和查询。
2.1.写出以下实验中的嵌入式SQL语句。
2.2.在PowerBuilder所开发的界面中执行操作,写出每次执行的结果。
实验一中的所有关系(1-6),以及USER关系表,该表用于管理用户的,USER关系表的定义和元组数据如下。
USER(用户)
USERID
用户ID
VARCHAR2(10)
USERNAME
用户名
PWD
密码
001
泰森
banana
002
马拉多纳
apple
003
萨达姆
orange
5.1.安装PowerBuilder工具软件。
5.2.启动PowerBuilder集成开发环境IDE。
开发一个纯PowerBuilder的应用程序“PBDemo1”。
包括以下两种功能,要求两种功能通过菜单进行选择。
计算圆面积。
用户输入半径的值,程序可以计算圆的面积。
给出实现该功能所用的包括嵌入式SQL的主要程序代码、出现的主要错误及原因。
计算正方形的面积。
用户选择边长的值,程序可以计算正方形的面积。
5.3.创建SQLServer2000的ODBC数据源。
该数据源命名为SQLDS。
步骤如下:
在创建数据源之前,应启动数据库服务器,并创建一个自己的数据库(如Test)。