数据库实验二三交.docx
《数据库实验二三交.docx》由会员分享,可在线阅读,更多相关《数据库实验二三交.docx(13页珍藏版)》请在冰豆网上搜索。
数据库实验二三交
山东工商学院
《数据库》实验指导及报告书
2013/2014学年第2学期
姓名:
学
班级:
指导教师:
信电学院
2014
实验二表的简单查询
首先建好一个教师表(如下表)。
然后在此基础上依次进行各种简单查询。
teacher表
教工号
姓名
家庭住址
电话
职称
工资
所在教研室
2111
朱辉生
连云港市
副教授
5800
计算机软件
2112
单建魁
连云港市
讲师
4900
计算机网络
2113
赵启升
连云港市
工程师
4800
计算机网络
2114
胡云
连云港市
助教
3500
计算机软件
2115
葛庆兵
连云港市
助教
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.使用ORDERBY语句对查询的结果进行排序
使用ORDERBY语句可以对查询的结果进行排序,ASC、DESC分别是升序和降序排列的关键字,系统默认的是升序排列。
从teacher表中查询工资大于4500的教师的教工号、姓名,并按升序排列。
实验三多表查询和子查询
一、实验目的和要求
1.了解查询的概念和方法;
2.掌握查询分析器的使用方法;
3.掌握SELECT语句在单表查询中的应用;
4.掌握复杂查询的使用方法;
5.掌握多表连接的方法;
6.掌握SELECT语句在多表查询中的应用;
7.掌握子查询语句。
二、实验内容和步骤
(一)多表查询
数据库的各个表中存放着不同的数据,用户经常需要用多个表中的数据来组合提炼出所需要的信息,如果一个查询需要对多个表进行操作,就称为联表查询,联表查询的结果集或结果表称为表之间的连接。
联表查询实际上是通过各各表之间共同列的关联来查询数据的,它是关系数据库查询最基本的特征。
按照下表所示,分别在数据库test中构造student、course和student_course三张表,并写入记录。
Student表
列名称
类型
宽度
允许为空
缺省值
主键
学号
Char
8
否
是
学生姓名
Nvarchar
8
否
性别
char
2
否
年龄
Smallint
否
班级号
Char
6
否
入学时间
Smalldatetime
否
家庭住址
Nvarchar
40
是
Course表:
列名称
类型
宽度
允许为空
缺省值
主键
课程号
char
10
否
是
课程名称
Nvarchar
20
否
课程总学时
Tinyint
是
课程学分
Tinyint
是
Student_course表
列名称
类型
宽度
允许为空
缺省值
主键
课程号
Char
10
否
是
学号
Char
8
否
是
成绩
Tinyint
否
1.进行多表查询
从student、course和student_course三张表中检索选修了课程的学生的学号、姓名、课程号、课程名及成绩。
2.用GROUP子句进行查询
如果要在数据检索时对表中数据按照一定条件进行分组汇总或求平均值,就要在SELECT语句中与GROUPBY子句一起使用集合函数。
使用GROUPBY子句进行数据检索可得到数据分类的汇总统计、平均值或其他统计信息。
(1)使用不带HAVING的GROUPBY子句。
汇总出student_course表中的学生的学号及总成绩
⑵使用带HAVING的GROUPBY子句。
汇总出student_course表中总分大于450分的学生的学号及总成绩
(二)子查询
1.使用IN或NOTIN关键字
使用IN关键字查询出‘jk1’‘dx2’‘dx1’班所有男生的学号、课程号及相应的成绩
2.使用EXISTS或NOTEXISTS关键字。
使用EXISTS关键字查询出‘jk1’班选修‘数据结构’课程的学生的学号、姓名;使用NOTEXISTS查询出‘jk1’班没有选修‘数据结构’课程的学生的学号、姓名。
(2)命令:
select学号,学生姓名
fromstudent
where班级号='jk1'
andnotexists
(
select*
fromcourse,student_course
wherestudent.学号=student_course.学号andcourse.课程号=student_course.课程号and课程名称='数据结构'
)
结果: