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