数据库系统原理 实验34.docx
- 文档编号:3868002
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:25
- 大小:301.31KB
数据库系统原理 实验34.docx
《数据库系统原理 实验34.docx》由会员分享,可在线阅读,更多相关《数据库系统原理 实验34.docx(25页珍藏版)》请在冰点文库上搜索。
数据库系统原理实验34
实验报告
课程名称:
数据库系统原理
实验项目:
实验时间:
实验班级:
总份数:
指导教师:
学院实验室
二〇〇年月日
广东技术师范学院实验报告
学院:
计科院
专业:
10计本
班级:
2
成绩:
姓名:
黄山
学号:
2010034243123
组别:
组员:
实验地点:
实验日期:
指导教师签名:
预习情况
操作情况
考勤情况
数据处理情况
实验(序号)项目名称:
P84习题2&3
2.设有学生选课数据库:
S(S#,SNAME,AGE,SEX,DEPARTMENT,ADDRESS)
SC(S#,C#,GRADE)
C(C#,CNAME,TEACHER)
试用SQL语言查询下列问题。
1,李老师所教的课程号,课程名称。
SelectC#,CNAME;
FromC;
WhereTEACHERlike“李%”
2,年龄大于23岁的女学生的学号和姓名。
SelectS#,SNAME;
FromS;
Where(AGE>23).and.(SEX=”女”)
3,“李小波”所选修的全部课程名称。
SelectCNAME;
FromC;
WhereC#in;
(selectC#;
FromCjoinS;
On选修.学号=学生.学号;
Where姓名=”李小波”)
4,所有成绩都在80分以上的学生姓名及所在系。
Select姓名,系别;
From学生;
Where学号notin;
(select学号;
From选修;
Where成绩<=80)
5,没有选修“操作系统”课的学生姓名。
Select姓名;
From学生;
Where学号notin;
(select学号;
From选修join课程;
On选修.课程号=课程.课程号;
Where课程名称=”操作系统”)
6,英语成绩比数学成绩号的学生。
Select*
FromS,SC,C
WhereS.S#=SC.S#andSC.C#=C.C#and英语成绩>数学成绩
7,至少选修两门以上课程的学生姓名,性别。
Select姓名,性别;
From学生;
Where学号in;
(Select学号;
From选修;
Groupby学号;
Havingcount(学号)>=2)
8,选修了李老师所讲课程的学生。
Selectcount(学号);
From选修;
Where课程号in;
(select课程号;
From课程;
where教师like“李%”)
9,没有选修李老师所讲课程的学生。
Select*;
From学生;
Where学号notin;
(select学号;
From选修join课程;
On选修.课程号=课程.课程号;
Whereleft(教师,2)=”李”)
10,“操作系统”课程得最高分的学生姓名,性别,所在系。
Select姓名,性别,系别,成绩;
From学生,选修;
Where课程号in;
(select课程号;
From课程;
Where课程名称=”操作系统”);
.and.(学生.学号=选修.学号);
3.建立2中的数据表
实验3数据库的查询
目的与要求
(1)掌握SELECT语句的基本语法。
(2)掌握子查询的表示。
(3)掌握连接查询的表示。
(4)掌握数据汇总的方法。
(5)掌握SELECT语句的GROUPBY子句的作用和使用方法。
(6)掌握SELECT语句的ORDERBY子句的作用和使用方法。
实验准备
(1)了解SELECT语句的基本语法格式。
(2)了解SELECE语句的执行方法。
(3)了解子查询的表示方法。
(4)了解连接查询的表示。
(5)了解数据汇总的方法。
(6)了解SELECT语句的GROUPBY子句的作用和使用方法。
(7)了解SELECT语句的ORDERBY子句的作用。
实验内容
【思考与练习】
1.SELECT语句的基本使用
(1)对于实验2给出的数据库表结构,查询每个雇员所有数据。
在查询编辑窗口中输入如下语句并执行:
USEYGGL
SELECT*
FROMEmployees
GO
用SELECT语句查询Departments和Salary表的所有记录。
(2)查询每个雇员的电话号码和电子邮件地址。
在查询编辑窗口中输入如下语句并执行:
USEYGGL
SELECTPhoneNumber,EmailAddress
FROMEmployees
GO
用SELECT语句查询Departments和Salary表的一列或若干列。
(3)查询EmployeeID为300380的雇员的电话和电子邮件。
在查询编辑窗口中输入如下语句并执行:
USEYGGL
SELECTPhoneNumber,EmailAddress
FROMEmployees
WHEREEmployeeID='300380'
GO
用SELECT语句查询Departmens和Salary表中满足指定条件的1列或若干列。
(4)查询Employees表中女雇员的电话和电子邮件地址,使用AS子句将结果中各列的标题分别指定为电话、邮箱。
在查询编辑窗口中输入如下语句并执行:
USEYGGL
SELECTPhoneNumberAS电话,EmailAddressAS邮箱
FROMEmployees
WHEREsex=0
GO
注意:
使用AS子句可指定目标列的标题。
(5)计算每个员工的实际收入。
在查询编辑窗口中输入如下语句并执行:
USEYGGL
SELECTEmployeeID,实际收入=InCome-OutCome
FROMSalary
GO
(6)找出所有姓王的员工的部门号。
在查询编辑窗口中输入如下语句并执行:
USEYGGL
SELECTDepartmentID
FROMEmployees
WHEREnameLIKE'王%'
GO
找出所有使用“东海”邮箱的员工的号码和部门号。
(7)找出所有收入在1500~2500元之间的员工号码。
在查询编辑窗口中输入如下语句并执行:
USEYGGL
SELECTEmployeeID
FROMSalary
WHEREInComeBETWEEN0AND2500
GO
找出所有在部门“1”或“3”工作的员工的号码。
注意:
在SELECT语句中LIKE、BETWEEN…AND、IN、NOT及CONTAIN谓词的作用。
2.子查询的使用
查找在营销部工作的员工的情况。
在查询编辑窗口中输入如下语句并执行:
USEYGGL
SELECT*
FROMEmployees
WHEREDepartmentID=
(SELECTDepartmentID
FROMDepartments
WHEREDepartmentName='营销部')
GO
用子查询的方法查找所有收入在2000元以下的员工的情况。
3.连接查询的使用
查询每个员工的情况以及薪水的情况。
在查询编辑窗口中输入如下语句并执行:
USEYGGL
SELECTEmployees.*,Salary.*
FROMEmployees,Salary
WHEREEmployees.EmployeeID=Salary.EmployeeID
GO
查询每个员工的情况以及其工作部门的情况。
4.数据汇总
(1)求研发部员工的平均收入。
在查询编辑窗口中输入如下语句并执行:
USEYGGL
SELECTAVG(InCome)AS'研发部平均收入'
FROMSalary
WHEREEmployeeIDIN
(SELECTEmployeeID
FROMEmployees
WHEREDepartmentID=
(SELECTDepartmentID
FROMDepartments
WHEREDepartmentName='研发部'))
GO
查询001员工的最高和最低收入。
(2)求研发部员工的平均实际收入。
在查询编辑窗口中输入如下语句并执行:
USEYGGL
SELECTAVG(InCome-OutCome)AS'研发部平均实际收入'
FROMSalary
WHEREEmployeeIDIN
(SELECTEmployeeID
FROMEmployees
WHEREDepartmentID=
(SELECTDepartmentID
FROMDepartments
WHEREDepartmentName='研发部'))
GO
查询研发部员工的最高和最低实际收入。
(3)求研发部的总人数。
在查询编辑窗口中输入如下语句并执行:
USEYGGL
SELECTCOUNT(EmployeeID)
FROMEmployees
WHEREDepartmentID=
(SELECTDepartmentID
FROMDepartments
WHEREDepartmentName='研发部')
GO
统计红心海贼团收入在2000元以上员工的人数。
5.GROUPBY,ORDERBY子句的使用
(1)求各部门的员工数。
在查询编辑窗口中输入如下语句并执行:
USEYGGL
SELECTCOUNT(EmployeeID)
FROMEmployees
GROUPBYDepartmentID
GO
统计各部门收入在2500元以上的员工的人数。
(2)将各员工的情况按收入由高到低排列。
在查询编辑窗口中输入如下语句并执行:
USEYGGL
SELECTEmployees.*,Salary.*
FROMEmployees,Salary
WHEREEmployees.EmployeeID=Salary.EmployeeID
ORDERBYInComeDESC
GO
将各员工的情况按员工编号排列。
实验4数据库的更新
目的和要求
(1)学会在SQLServerManagementStudio中对数据库表进行插入、修改和删除数据操作。
(2)学会使用T-SQL语句对数据库表进行插入、修改和删除数据操作。
(3)了解数据更新操作时要注意数据完整性。
(4)了解T-SQL语句对表数据操作的灵活控制功能。
实验准备
(1)了解对表数据的插入、修改和删除都属于表数据的更新操作。
对表数据的操作都可以在SQLServerManagementStudio中进行,也可以由T-SQL语句实现。
(2)掌握T-SQL中用于对表数据进行插入、修改和删除的命令分别是INSERT、UPDATE和DELETE(或TRUNCATETABLE)。
要特别注意在执行插入、删除、修改等数据更新操作时,必须保证数据完整性。
(3)了解使用T-SQL语句在对表数据进行插入、修改和删除时,比通过SQLServerManagementStudio图形工具操作表数据更为灵活,功能更强大。
实验内容
1.实验题目
分别通过SQLServerManagementStudio和T-SQL语句,按照以下实验步骤向建立的数据库YGGL的3个表Employees,Departments和Salary中插入多行数据记录,然后修改和删除一些记录。
使用T-SQL语句进行有限制的修改和删除。
2.实验步骤
(1)在SQLServerManagementStudio中向数据库YGGL表加入数据
①在SQLServerManagementStudio中向表Employees中加入如表T4.1所示的记录。
表T4.1Employees数据记录
编号
姓名
电话
电子邮件
部门号
性别
100592
赵伟
28749607
zhaowei@
3
1
101825
孙磊
29864802
sunlei@
2
1
201783
李伟
83636928
liwei@
2
0
203586
周超
68539470
zhaochao@
1
0
202897
吴盟
65417698
NULL
2
1
300380
张明
27309781
zhangming@
4
0
305684
王浩
87323475
NULL
5
1
在SQLServerManagementStudio中依次展开“数据库”→“YGGL”→“表”节点,在子节点“dbo.Employees”上单击鼠标右键,选择“打开表”命令,逐字段输入各记录值,输入完后,关闭该选项卡窗格。
②在SQLServerManagementStudio中向表Departments中加入如表T4.2所示的记录。
表T4.2Departments数据记录
编号
部门名称
备注
1
研发部
NULL
2
营销部
NULL
3
后勤处
NULL
4
人事部
NULL
5
保卫处
NULL
③在SQLServerManagementStudio中向表Salary中加入如表T4.3所示的记录。
表T4.3Salary数据记录
编号
收入
支出
201783
1874.32
345.36
100592
1987.35
254.92
203586
1367.76
213.89
300380
2569.22
688.91
101825
1690.08
409.8
202897
3028.55
955.4
305684
2000.74
199.84
(2)在SQLServerManagementStudio中修改数据库YGGL表的数据
①在SQLServerManagementStudio中删除表Employees的第7行和Salary的第7行。
注意进行删除操作时,作为两表主键的EmployeeID的值,以保持数据的完整性。
在节点“dbo.Employees”上单击鼠标右键,选择“打开表”命令,选择要删除的行,单击鼠标右键,选择“删除”命令,单击“是”按钮。
②在SQLServerManagementStudio中删除表Departments的第4行,同时也要删除表Employees的第6行。
操作方法同①。
③在SQLServerManagementStudio中将表Employees中编号为202897的记录的部门编号改为4。
在节点“dbo.Employees”上单击鼠标右键,选择“打开表”命令,将光标定位至编号为202897的记录的DepartmentID字段,将值2改为4。
(3)使用T-SQL命令修改数据库YGGL表数据
①使用T-SQL命令分别向YGGL数据库Employees,Departments和Salary表中插入1行记录。
点击工具栏中的“新建查询”按钮,在编辑窗口中输入以下T-SQL语句:
USEYGGL
INSERTINTOEmployees
VALUES('102427','刘涛',1,'89324852',NULL,'4')
GO
INSERTINTODepartments
VALUES('6','管理部',NULL)
GO
INSERTINTOSalary
VALUES('102427',1321.37,79)
GO
点击工具栏中的“执行”按钮,执行上述语句,在SQLServerManagementStudio中分别打开YGGL数据库的Employees,Departments和Salary表,观察数据的变化。
②使用T-SQL命令修改Salary表中的某个记录的字段值。
点击工具栏中的“新建查询”按钮,在编辑窗口中输入以下T-SQL语句:
USEYGGL
UPDATESalary
SETInCome=2367.76
WHEREEmployeeID='203586'
GO
点击工具栏中的“执行”按钮,执行上述语句,在SQLServerManagementStudio中打开YGGL数据库的Salary表,观察数据的变化。
③修改表Employees和Departments的记录值,仍然要注意完整性。
操作过程同②。
④使用T-SQL命令修改Salary表中的所有记录的字段值。
点击工具栏中的“新建查询”按钮,在编辑窗口中输入以下T-SQL语句:
USEYGGL
UPDATESalary
SETInCome=InCome+200
GO
点击工具栏中的“执行”按钮,执行上述语句,将所有职工的收入都增加200。
可见,使用T-SQL语句操作表数据比通过SQLServerManagementStudio图形工具更为灵活。
⑤使用TRUNCATETABLE语句删除表中所有行。
点击工具栏中的“新建查询”按钮,在编辑窗口中输入以下T-SQL语句:
USEYGGL
TRUNCATETABLESalary
GO
点击工具栏中的“执行”按钮,执行上述语句,将删除Salary表中所有行。
注意:
实验时一般不轻易做这个操作,后面的实验还要用到这些数据,因此可见一个临时表,输入少量数据后进行。
广东技术师范学院实验预习报告
学院:
专业:
班级:
姓名:
学号:
组别:
组员:
实验地点:
实验日期:
指导教师签名:
实验(序号)项目名称:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库系统原理 实验34 数据库 系统 原理 实验 34