数据库的组合查询和统计查询
一、实验目的
对数据库进行组合查询和统计查询
二、实验内容
1、加深对SQL语言查询语句的理解
2、熟练掌握数据查询中的分组统计、计算和组合操作方法。
三、实验要求
在本题下面提交基本操作效果截图。
一,组合查询简单查询。
1、查询全体学生情况,查询结果年龄降序排列
use ppp
go
select *
from 数据表
order by 年龄,学号 desc
go
2、查询表中男、女学生的人数
use ppp
go
select 性别 as '性别',COUNT(*) as '人数'
from 数据表
group by 性别
go
3、查询表中每个学生及成绩的情况
use ppp
go
select 数据表.*,成绩表.*
from 数据表 inner join 成绩表
on 数据表.学号 =成绩表.学号
go
二、带HAVING子句的分组查询
查询出选课人数超过8人的课程号
USE test
GO
SELECT CNO AS '课程号',COUNT(SNO)AS'人数'
FROM [dbo].[选修关系]
GROUP BY CNO
HAVING COUNT(SNO)>=2
GO
组合查询
带有WHERE子句的查询
一、比较大小
查询计算机科学系(CS)全体学生的名单
USE test
GO
SELECT SNAME
FROM [dbo].[学生信息]
WHERE SDEPT='CS'
GO
查询所有年龄在20岁以下的学生的姓名及其年龄
USE test
GO
SELECT SNAME,AGE
FROM [dbo].[学生信息]
WHERE AGE<20
GO
查询考试成绩有不及格的学生的学号
USE test
GO
SELECT DISTINCT SNO
FROM [dbo].[选修关系]
WHERE GRADE<60
GO
二、确定范围
查询年龄在20~23岁(包括20岁和23岁)的学生的姓名、系别和年龄
USE JXGL
GO
SELECT SNAME,SDEPT,AGE
FROM S
WHERE AGE BETWEEN 20 AND 23
GO
查询年龄不在20~23岁的学生的姓名、系别和年龄
USE test
GO
SELECT SNAME,SDEPT,AGE
FROM [dbo].[学生信息]
WHERE AGE NOT BETWEEN 20 AND 23
GO
三、确定集合
查询计算机科学系(CS)、数学系(CS)、和信息系(IS)学生的姓名和性别
USE test
GO
SELECT SNAME,SEX
FROM [dbo].[学生信息]
WHERE SDEPT IN('CS','MA','IS')
GO
四、字符匹配
查询学号为“S3”的学生的详细情况
USE test
GO
SELECT *
FROM [dbo].[学生信息]
WHERE SNO LIKE 'S3'
GO
等价于
USE test
GO
SELECT *
FROM [dbo].[学生信息]
WHERE SNO='S3'
GO
查询所有姓“刘”的学生的姓名、学号和性别
USE test
GO
SELECT SNAME,SNO,SEX
FROM [dbo].[学生信息]
WHERE SNAME LIKE '刘%'
GO
查询姓“李”且全名最多为3个汉字的学生的姓名
USE test
GO
SELECT SNAME
FROM [dbo].[学生信息]
WHERE SNAME LIKE '闫__'
GO
查询所有不姓“李”的学生的姓名
USE test
GO
SELECT SNAME
FROM [dbo].[学生信息]
WHERE SNAME NOT LIKE '李%'
GO
五、涉及空值的查询
查询所有有成绩的学生的学号和课程号
USE test
GO
SELECT SNO,CNO
FROM [dbo].[选修关系]
WHERE GRADE IS NOT NULL
GO
六、多重条件查询
查询计算机科学系(CS)中年龄在22岁以下的学生的姓名
USE test
GO
SELECT SNAME
FROM [dbo].[学生信息]
WHERE SDEPT='CS' AND AGE<22
GO