南昌大学计算机数据库实验三_查询
- 格式:doc
- 大小:1.03 MB
- 文档页数:4
实验三 查询
一. 实验目的
1.掌握select语句的基本语法
2.了解select语句中各子句的作用和特点
3.掌握select语句的统计函数的作用和用法
4.掌握子查询的用法
5.掌握连接查询的用法
二. 实验学时
6学时
三. 实验要求
要求能熟练掌握各种查询语句,并能灵活应用。
四. 实验内容
(一).简单查询
1.select 选择列
--1、选择所有列(*),查询学生表中的所有纪录。
--2、选择特定列,查询学生表中全体学生的学号,姓名,性别。
--3、计算列,查询选课表中给每个学生加了20分后的所有课号和成绩
--4、改变列标题的名称,查询所有学生的学号, 课号和成绩并将成绩改名为期末分数显示出来。
--5、删除重复行,查询一列中不重复的记录值.查询所有的学生的性别,要求不重复。
--6、限制返回行数
--top n 关键字;只显示表中前面n条记录。
--top n percent 关键字;只显示前n%条记录。
--显示学生表中的前3条记录。
--显示学生表中的前3%条记录
2 .where 子句
--1、比较运算符:(1)查询分数<80分学生的学号、成绩、课号。
(2)查询学号001学生的情况。
--2、范围运算符:查询学生分数在70-80之间的学生的学号、课号。(包括70分、80分)
--3、列表运算符: (1)查询学号为'001' 、'005'、'007' 、'008'的学生学号。
(2)查询学生成绩不在60-70之间的学生的学号、课号、成绩。
--4、匹配运算符: (1)查询姓刘学生的信息。
(2)查询姓刘单名的学生信息。
(3)查询01-03年级学生的信息。
--5、空值运算符,查询变动情况为空的学生
3 .order by 子句
--查询学生课程编号为'05'的课程的成绩,并按成绩的降序进行排列。
4.使用函数:
--1、计算学号为001的学生总分数、平均分。
--2、集合函数 avg()、count()、count(*)、max()、min()、sum() (1) 查询学期成绩表中的平均分,最大分数,最小分数,总和(前面四项为查询出的相应字段)
(2) 统计课程表中所有记录数和各个列中值的个数,要求不能重复。
5. group by 和 having 子句
--1、简单分组:
(1)按照班级进行分组,查询一下每个班级的人数。
(2)查询每门课程的平均成绩。
--2、使用having 条件
(1)查询班级为'01'的班级中学生的人数。
(2)查询各班的学生人数超过3人的班级。
(3)查询每门课程的平均成绩。
(4)查询每门课程的平均成绩<80分的课号。
6. compute 和 compute by 子句
--对不及格人数进行汇总,产生汇总行,结果中显示学号,课号, 成绩字段。
--对每门课程不及格人数的记录进行明细汇总。(对每门课程的不及格人数生成汇总行。)
7.into子句
--将不及格学生的学号和成绩保存在新表不及格学生名单中。
--将不及格学生的学号和成绩保存在临时表不及格学生中。
--查看临时表中的信息
(二).多表查询
1、列出学生的学号、姓名、课程名称、成绩。
2、列出选修了‘01’或‘05’课程代号的学生学号、姓名、课程名称、成绩
3、查询选修了’01’课程编号且该课程的成绩在90分以上的学生姓名。
4、学生表和学期成绩表进行联接.显示出所有的列.并把学生表中的信息全部显示出来.
5、学生表和学期成绩表进行联接.把两个表中的信息全部显示出来.
查询每门课程名称以及该课程的平均分数。
查询学生姓名、每个学生的平均分数
8、查询课程分数大于75分的学生学号、姓名、课程名称和成绩.
9、列出所有没有选修课程‘01’的学生清单.
10、查询选修了所有课程的学生人数。
五. 实验步骤
六. 实验总结
1.查询数据库里所有的表名
2.查询某表选择从10到15的记录
4.有医生表、号源表如下:
CREATE TABLE doctor (
id INT IDENTITY(1, 1) , --ID 自增长
docNumber NVARCHAR(50) NOT NULL , --医生编码
NAME NVARCHAR(50) NOT NULL --医生姓名
)
go
--插入测试数据
INSERT INTO doctor VALUES ( '007', 'Tom' )
INSERT INTO doctor VALUES ( '008', 'John' )
INSERT INTO doctor VALUES ( '009', 'Jim' )
--号源表(挂号表)
CREATE TABLE Nosource
(
id INT IDENTITY(1, 1) ,
docNumber NVARCHAR(50) NOT NULL , --和医生表中的医生编码对应
workTime DATETIME NOT NULL
)
go
--插入测试数据
INSERT INTO Nosource VALUES ( '007', '20120819' )
INSERT INTO Nosource VALUES ( '007', '20120820' )
INSERT INTO Nosource VALUES ( '007', '20120821' )
INSERT INTO Nosource VALUES ( '008', '20120821' )
--SELECT * FROM doctor
--SELECT * FROM Nosource
请查出每位医生的相关信息,以及该医生所拥有的号源数量。