南昌大学计算机数据库实验三_查询

  • 格式: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

请查出每位医生的相关信息,以及该医生所拥有的号源数量。