数据库实验二.三--交
山东工商学院
《数据库》实验指导及报告书 2013 / 2014 学年第 2 学期
姓名:
学
班级:
指导教师:
信电学院
2014
实验二表的简单查询
首先建好一个教师表(如下表)。
然后在此基础上依次进行各种简单查询。
teach er表
教工号姓名家庭
住址
电话职
称
工资所在
教研
室
211 1 朱辉
生
连云
港市
58176
93
副
教
授
5800 计算
机软
件
211 2 单建
魁
连云
港市
58176
92
讲
师
4900 计算
机网
络
211 3 赵启
升
连云
港市
58176
93
工
程
师
4800 计算
机网
络
211 4 胡云连云
港市
58176
92
助
教
3500 计算
机软
件
211 5 葛庆
兵
连云
港市
58176
94
助
教
3500 计算
机体
系结
构
1.基本查询
(1)打开查询分析器,从teacher表中分别检索出教师的所有信息
(2)查询teacher表中教工号、姓名和职称。
2.查询时改变列标题的显示
从teacher表中分别检索出教师教工号、姓名、家庭住址信息并分别加上‘教师姓名’、‘教工号’、‘家庭住址’等标题信息
3.基于WHERE语句进行数据查询
⑴基于比较条件。
从teacher表中查询出教工号小于2130的教师资料。
⑵基于BETWEEN语句。
从teacher表中查询出教工号界于2100和2130之间的教师资料。
⑶基于IN子句的数据查询。
从teacher表中查询出职称为“教授”或“副教授”的教师的教工号、教师姓名、职称及家庭住址。
语句如下:
⑷基于LIKE子句的查询。
从teacher表中分别检索出姓赵的教师的资料
4.使用TOP关键字查询。
分别从teacher中检索出前2条及前面67%的教师的信息。
5.使用DISTINCT关键字查询。
从teacher表中检索出教师的职称并且要求显示的职称不重
复。
6.用计算列查询。
将teacher表中各教师的姓名、教工号及工资按95%发放的信息,将工资按95%发放后列名该为‘预发工资’。
7.使用ORDER BY语句对查询的结果进行排序
使用ORDER BY语句可以对查询的结果进行排序,ASC、DESC分别是升序和降序排列的关键字,系统默认的是升序排列。
从teacher表中查询工资大于4500的教师的教工号、姓名,并按升序排列。
实验三多表查询和子查询
一、实验目的和要求
1.了解查询的概念和方法;
2.掌握查询分析器的使用方法;
3.掌握SELECT语句在单表查询中的应用;4.掌握复杂查询的使用方法;
5.掌握多表连接的方法;
6.掌握SELECT语句在多表查询中的应用;7.掌握子查询语句。
二、实验内容和步骤
(一)多表查询
数据库的各个表中存放着不同的数据,用户经常需要用多个表中的数据来组合提炼出所需要的信息,如果一个查询需要对多个表进行操作,就称为联表查询,联表查询的结果集或结果表称为表之间的连接。
联表查询实际上是通过各各表之间共同列的关联来查询数据的,它是关系数据库查询最基本的特征。
按照下表所示,分别在数据库test中构造student、course和student_course三张表,并写
入记录。
Student表
列名称类型宽度允许
为空
缺省
值
主键
学号Char 8 否是
学生姓名Nvarc
har
8 否
性别char 2 否年龄Smalli
nt
否
班级
号
Char 6 否
入学时间Smalld
atetim
e
否
家庭住址Nvarc
har
40 是
Course表:
列名称类型宽度允许
为空
缺省值主键
课程
号
char 10 否是
课程名称Nvarc
har
20 否
课程总学时Tinyin
t
是
课程学分Tinyin
t
是
Student_course表
列名称类型宽度允许
为空
缺省值主键
课程
号
Char 10 否是
学号Char 8 否是
成绩Tinyin
t
否
1.进行多表查询
从student、course和student_course三张表中检索选修了课程的学生的学号、姓名、课程号、课程名及成绩。
2.用GROUP子句进行查询
如果要在数据检索时对表中数据按照一定条件进行分组汇总或求平均值,就要在SELECT语句中与GROUP BY子句一起使用集合函数。
使用GROUP BY子句进行数据检索可得到数据分类的汇总统计、平均值或其他统计信息。
(1)使用不带HAVING的GROUP BY子句。
汇总出student_course表中的学生的学号及总成绩
⑵使用带HAVING 的GROUP BY子句。
汇总出student_course表中总分大于450分的学生的学号及总成绩
(二)子查询
1.使用IN或NOT IN关键字
使用IN关键字查询出‘jk1’‘dx2’‘dx1’班所有男生的学号、课程号及相应的成绩
2. 使用EXISTS 或NOT EXISTS关键字。
使用EXISTS关键字查询出‘jk1’班选修‘数据结构’课程的学生的学号、姓名;使用NOT EXISTS查询出‘jk1’班没有选修‘数据结构’课程的学
生的学号、姓名。
(2)命令:
select 学号,学生姓名
from student
where 班级号='jk1'
and not exists
(
select *
from course,student_course
where student.学号=student_course.学号and course.课程号=student_course.课程号and 课程名称='数据结构'
)
结果:。