SQL Server经典查询语句练习题及答案

注意:在插入数据的时候,需要将zahowei改成中文,原数据是中文的,因为最近这个词不能过审,只能用拼音代替了,可能是那个人出了啥事吧,审核不通过就挺莫名其妙的

现在有一教学管理系统,具体的关系模式如下:
       Student (no, name, sex, birthday, class)
       Teacher (no, name, sex, birthday, prof, depart)
       Course (cno, cname, tno)
       Score (no, cno, degree)
其中表中包含如下数据:
Course表:
在这里插入图片描述

Score表:
在这里插入图片描述

Student表:
在这里插入图片描述

Teacher表:
在这里插入图片描述

首先创建教学管理系统数据库:

use mastercreate database Teach_manage
on primary
(
name='Teach_mange',
filename='D:\sqldata\Teach_mange.mdf',
size=4,
maxsize=30,
filegrowth=10%
)
log on
(
name='mange_log',
filename='D:\sqldata\mange_log.ldf',
size=3,
maxsize=20,
filegrowth=10%
)

DDL

1.写出上述表的建表语句

命令:

create table Student(no int,name varchar(14),sex varchar(2),birthday date,class int);
create table Teacher(no int,name varchar(14),sex varchar(2),birthday date,prof varchar(10),depart varchar(10));
create table Course(cno varchar(8),cname varchar(14),tno int);
create table Score(no int,cno varchar(8),degree int);

DML

2.给出相应的INSERT语句来完成题中给出数据的插入

命令:

insert into Student values(5001,'李勇','男','1987-7-22',95001);
insert into Student values(5002,'刘晨','女','1987-11-15',95002);
insert into Student values(5003,'王敏','女','1987-10-5',95001);
insert into Student values(5004,'李好尚','男','1987-9-25',95003);
insert into Student values(5005,'李军','男','1987-7-17',95004);
insert into Student values(5006,'范新位','女','1987-6-18',95005);
insert into Student values(5007,'张霞东','女','1987-8-29',95006);
insert into Student values(5008,'zhaowei','男','1987-6-15',95007);
insert into Student values(5009,'钱民将','女','1987-6-23',95008);
insert into Student values(5010,'孙俪','女','1987-9-24',95002);
insert into Student values(108,'赵里','男','1987-6-15',95007);
insert into Student values(109,'丘处机','男','1987-6-23',95008);
insert into Student values(107,'杨康','男','1987-9-24',95001);insert into Teacher values(1,'李卫','男','1957-11-5','教授','电子工程系');
insert into Teacher values(2,'刘备','男','1967-10-9','副教授','math');
insert into Teacher values(3,'关羽','男','1977-9-20','讲师','sc');
insert into Teacher values(4,'李修','男','1957-6-25','教授','elec');
insert into Teacher values(5,'诸葛亮','男','1977-6-15','教授','计算机系');
insert into Teacher values(6,'殷素素','女','1967-1-5','副教授','sc');
insert into Teacher values(7,'周芷若','女','1947-2-23','教授','sc');
insert into Teacher values(8,'赵云','男','1980-6-13','副教授','计算机系');
insert into Teacher values(9,'张敏','女','1985-5-5','助教','sc');
insert into Teacher values(10,'黄蓉','女','1967-3-22','副教授','sc');
insert into Teacher values(11,'张三','男','1967-3-22','副教授','sc');insert into Course values('3-101','数据库',1);
insert into Course values('5-102','数学',3);
insert into Course values('3-103','信息系统',4);
insert into Course values('3-104','操作系统',6);
insert into Course values('3-105','数据结构',4);
insert into Course values('3-106','数据处理',5);
insert into Course values('4-107','pascal语言',5);
insert into Course values('4-108','C++',7);
insert into Course values('4-109','java',8);
insert into Course values('3-245','数据挖掘',10);
insert into Course values('3-111','软件工程',11);insert into Score values(5001,'3-105',69);
insert into Score values(5001,'5-102',55);
insert into Score values(5003,'4-108',85);
insert into Score values(5004,'3-105',77);
insert into Score values(5005,'3-245',100);
insert into Score values(5006,'3-105',53);
insert into Score values(5003,'4-109',45);
insert into Score values(5008,'3-105',98);
insert into Score values(5004,'4-109',68);
insert into Score values(5010,'3-105',88);
insert into Score values(5003,'3-105',98);
insert into Score values(5005,'4-109',68);
insert into Score values(5002,'3-105',88);
insert into Score values(107,'3-105',98);
insert into Score values(108,'4-109',68);
insert into Score values(109,'3-105',88);
insert into Score values(109,'4-109',80);
insert into Score values(107,'3-111',88);
insert into Score values(5003,'3-111',80);

单表查询

3.以class降序输出student的所有记录(student表全部属性)

select *from Student
order by class DESC

在这里插入图片描述

4.列出教师所在的单位depart(不重复)

select distinct depart from Teacher

在这里插入图片描述

5.列出student表中所有记录的name、sex和class列

select name,sex,class from Student

在这里插入图片描述

6.输出student中不姓王的同学的姓名

select name
from Student
where name not like '王%'

在这里插入图片描述

7.输出成绩为85或86或88或在60-80之间的记录(no,cno,degree)

select *from Score where degree=85 or degree=86 or degree between 60 and 80

在这里插入图片描述

8.输出班级为95001或性别为‘女’ 的同学(student表全部属性)

select *from Student where class=95001 or sex='女'

在这里插入图片描述

9.以cno升序、degree降序输出score的所有记录(score表全部属性)

select *from Score order by cno , degree DESC

在这里插入图片描述

10.输出男生人数及这些男生分布在多少个班级中

select COUNT(class),COUNT(distinct class) from Student where sex='男'

在这里插入图片描述

11.列出存在有85分以上成绩的课程编号

select distinct cno from Score where degree>85

在这里插入图片描述

12.输出95001班级的学生人数

select COUNT(class) from Student where class=95001

在这里插入图片描述

13.输出‘3-105’号课程的平均分

select AVG(degree) from Score where cno='3-105'

在这里插入图片描述

14.输出student中最大和最小的birthday日期值

select MAX(birthday),MIN(birthday) from Student

在这里插入图片描述

15.显示95001和95004班全体学生的全部个人信息(不包括选课)。(student表全部属性)

select *from Student where class=95001 or class=95004

在这里插入图片描述

聚合查询

16.输出至少有5个同学选修的并以3开头的课程的课程号,课程平均分,课程最高分,课程最低分
命令:

select cno,avg(degree),MAX(degree),MIN(degree) from Score  
where cno like'3-%%%'
group by cno
having COUNT(no)>=5

在这里插入图片描述

17.输出所选修课程中最低分大于70分且最高分小于90分的学生学号及学生姓名
命令:

select Student.no,name
from Student
join Score on Student.no=Score.no
group by Student.no,Student.name
having min(Score.degree)>70 and max(Score.degree)<90

在这里插入图片描述

18.显示所教课程选修人数多于5人的教师姓名
命令:

select Teacher.name
from Teacher,Course,Score
where Teacher.no=Course.tno and Course.cno=Score.cno
group by Teacher.name
having count(Score.cno)>5

在这里插入图片描述

19.输出’95001’班级所选课程的课程号和平均分
命令:

select Score.cno,AVG(degree)
from Score,Student
where Student.no=Score.no and class='95001'
group by Score.cno

在这里插入图片描述

20.输出至少有两名男同学的班级编号
命令:

select class
from Student
where sex='男' 
group by class
having COUNT(class)>=2

在这里插入图片描述

多表查询

21.列出与108号同学同年出生的所有学生的学号、姓名和生日
命令:

select no,name,birthday
from Student
where datename(YEAR,birthday)=(select datename(YEAR,birthday) from Student where no='108')

在这里插入图片描述

22.列出存在有85分以上成绩的课程名称
命令:

select distinct cname
from Course join Score on Course.cno=Score.cno
where degree>85

在这里插入图片描述

23.列出“计算机系”教师所教课程的成绩表(课程编号,课程名,学生名,成绩)
命令:

select  Course.cno,cname,Student.name,degree
from Student,Score,Course,Teacher
where Teacher.no=Course.tno and Score.cno=Course.cno and Student.no=Score.no 
and depart='计算机系'

在这里插入图片描述

24.列出所有可能的“计算机系”与“电子工程系”不同职称的教师配对信息,要求输出每个老师的姓名(name)和(职称)
命令:

select x.name,x.prof,y.name,y.prof
from (select name,prof,depart from teacher where depart='计算机系' or depart ='电子工程系') as x 
join (select name,prof,depart from teacher where depart='计算机系' or depart='电子工程系') as y 
on not x.prof=y.prof and not x.depart=y.depart

在这里插入图片描述

25.列出所有处于不同班级中,但具有相同生日的学生,要求输出每个学生的学号和姓名。(提示:使用datediff函数,具体用法可以参考:
命令:

select table1.no,table1.name,table2.no,table2.name
from (select no,name,class,birthday from Student)as table1 join (select no,name,class,birthday from Student) as table2
on table1.birthday=table2.birthday and not table1.class=table2.class

在这里插入图片描述

26.显示‘张三’教师任课的学生姓名,课程名,成绩

select Student.name,cname,degree
from Teacher,Student,Course,Score
where Teacher.no=Course.tno and Score.cno=Course.cno and Student.no=Score.no 
and Teacher.name='张三'

在这里插入图片描述

27.列出所讲课已被选修的教师的姓名和系别

select distinct name,depart 
from teacher,course,score 
where teacher.no=course.tno and course.cno=score.cno

在这里插入图片描述

28.输出所有学生的name、no和degree。(degree为空的不输出和为空的输出两种情况)

select name,Student.no,degree
from Student left join Score on Student.no=Score.noselect name,Student.no,degree
from Student inner join Score on Student.no=Score.no

在这里插入图片描述

29.列出所有任课教师的name和depart。(从课程选修和任课两个角度考虑)

select distinct name,depart
from  Teacher,Score,Course
where Teacher .no=Course.tno and Course.cno=Score.cnoselect distinct name,depart
from Teacher inner join Course on Teacher.no=Course.tno

在这里插入图片描述

30.输出男教师所上课程名称

select cname
from Teacher join Course on Teacher.no=Course.tno
where sex='男'

在这里插入图片描述

31.输出与“李军”同性别的所有同学的name

select name
from Student
where sex=(select sex from Student where name='李军')

在这里插入图片描述

32.输出选修“数据结构”课程的男同学的成绩

select degree
from Course,Student,Score
where Course.cno=Score.cno and Student.no=Score.no  and sex='男' and cname='数据结构'

在这里插入图片描述

33.列出选修编号为‘3-105’课程并且该门课程成绩比课程 ‘3-111’的最高分要高的cno,no和degree

select Score.cno,Score.no,Score.degree
from Score,(select degree from Score where cno='3-111') as a
where Score.cno='3-105' 
group by Score.cno,Score.no,Score.degree
having Score.degree>MAX(a.degree)

在这里插入图片描述

子查询

34.输出score中成绩最高的学号和课程号

select no,cno
from Score
where degree=(select max(degree) from Score)

在这里插入图片描述

35.输出选修3-105课程,其成绩高于109号同学在此课程所得成绩的所有同学的学号,姓名

SELECT s.no,NAME FROM student s INNER JOIN score sc ON s.`no`=sc.`no` WHERE sc.`cno`='3-105' 
AND degree>(SELECT degree FROM score WHERE NO=109 AND cno='3-105');

')
在这里插入图片描述

36.列出成绩比该课程平均成绩低的同学的学号,成绩和该门课的平均成绩

select no,degree,a.avg_degree 
from score,(select cno,avg(degree)as avg_degree from score group by cno)as a(cno,avg_degree)
where score.cno=a.cno and score.degree<a.avg_degree

在这里插入图片描述

37.列出没有实际授课的教师的姓名和系别

select name,depart 
from teacher 
where name not in(select name from teacher join course on teacher.no=course.tno 
join score on score.cno=course.cno)

在这里插入图片描述

38.列出选修了编号为‘3-105’课程且其成绩高于‘4-109’课程最高成绩的同学的 课程编号,学号和成绩

select cno,no,degree 
from score where cno='3-105' and degree>(select max(degree) from score where cno='4-109')

在这里插入图片描述

39.列出符合下述条件的所有可能的同学配对(sno1,sname1,sno2,sname2,difference)。其中要求学号为sno1的sname1同学的所学课程的平均分大于学号为sno2的sname2同学的所学课程平均分,两个同学的课程平均分的差值difference为(sno1同学平均分-sno2同学平均分)

select a.no, a.name, b.no, b.name, c.avgdegree - d.avgdegree difference 
from Student as a, Student as b, (select no, avg(degree) as avgdegree from Score group by no) as c,
(select no, avg(degree) avgdegree from Score group by no) as d 
where a.no = c.no and b.no = d.no and c.avgdegree > d.avgdegree

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/565747.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何创建SpringBoot项目

对于刚刚接触SpringBoot框架的人来说一切都是未知的探索&#xff0c;我们应该如何创建一个SpringBoot项目呢&#xff1f;&#xff1f;&#xff1f; 我们可以使用Eclipse来创建我们的SpringBoot项目&#xff0c;下面就给大家讲一下创建的方法。 1.打开我们的Eclipse软件&#…

【OpenCV 例程 300 篇】106. 退化图像的逆滤波

专栏地址&#xff1a;『youcans 的 OpenCV 例程 300篇 - 总目录』 【第 7 章&#xff1a;图像复原与重建】 106. 退化图像的逆滤波 107. 退化图像的维纳滤波 108. 约束最小二乘方滤波 109. 几何均值滤波 【youcans 的 OpenCV 例程 300 篇】106. 退化图像的逆滤波 6. 退化图像复…

MySql数据类型介绍

对于刚开始学习MySql数据库的小伙伴们来说&#xff0c;MySql数据库有那些数据类型呢&#xff0c;在此我给大家总结介绍一下MySql数据库数据类型。 MySql数据类型 数据类型一共有五大类分别是&#xff1a; 整数类型&#xff1a;BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、…

【OpenCV 例程 300 篇】107. 退化图像的维纳滤波

专栏地址&#xff1a;『youcans 的 OpenCV 例程 300篇 - 总目录』 【第 7 章&#xff1a;图像复原与重建】 106. 退化图像的逆滤波 107. 退化图像的维纳滤波 108. 约束最小二乘方滤波 109. 几何均值滤波 【youcans 的 OpenCV 例程 300 篇】107. 退化图像的维纳滤波&#xff08;…

阶段项目:学生信息管理系统数据库设计

目录问题描述&#xff1a;一、后台数据库的设计1&#xff09;设计数据库2&#xff09;插入数据3&#xff09;查询数据4&#xff09;修改数据5&#xff09;管理数据1.导出数据到各种异构数据源、导出脚本2.附加和分离数据库二、前端界面的开发&#xff08;后期我们可以用dNet开发…

【OpenCV 例程 300 篇】108. 约束最小二乘方滤波

专栏地址&#xff1a;『youcans 的 OpenCV 例程 300篇 - 总目录』 【第 7 章&#xff1a;图像复原与重建】 106. 退化图像的逆滤波 107. 退化图像的维纳滤波 108. 约束最小二乘方滤波 109. 几何均值滤波 【youcans 的 OpenCV 例程 300 篇】108. 约束最小二乘方滤波 6. 退化图像…

分析设计网上书店数据库,并画E-R图

分析并设计网上书店数据库&#xff0c;绘制E-R图&#xff0c;网上书店具有如下功能&#xff1a; 1、会员的注册、登录 2、网上预订图书 3、图书信息浏览 训练技能点&#xff1a; 1、会将E-R图转换为表 2、理解数据规范化 4、将分析在SQL Server数据库中实现具体的表 Sql serv…

【OpenCV 例程 300 篇】109. 几何均值滤波

专栏地址&#xff1a;『youcans 的 OpenCV 例程 300篇 - 总目录』 【第 7 章&#xff1a;图像复原与重建】 106. 退化图像的逆滤波 107. 退化图像的维纳滤波 108. 约束最小二乘方滤波 109. 几何均值滤波 【youcans 的 OpenCV 例程 300 篇】109. 几何均值滤波 6. 退化图像复原 …

课程设计:基于SQL Server的银行ATM 存取款机系统设计与实现

目录前言一、项目背景1、项目任务2、项目技能目标3、需求概述4、开发环境5 、问题分析(1) 银行存取款业务介绍(2) 客户信息(3) 银行卡账户信息(4) 银行卡交易信息(5) 银行卡手工账户和存取款单据信息二、项目实训内容1、实训一&#xff1a;制定《数据库设计与编程规范》2、实训…

【OpenCV 例程 300 篇】110. 投影和雷登变换

专栏地址&#xff1a;『youcans 的 OpenCV 例程 300篇 - 总目录』 【第 7 章&#xff1a;图像复原与重建】 110. 投影和雷登变换 111. 雷登变换反投影重建图像 112. 滤波反投影重建图像 【youcans 的 OpenCV 例程 300 篇】110. 投影和雷登变换 7. 投影重建图像 7.1 计算机断层…

数据分析(SQL)常见面试题:开窗函数

一、什么是开窗函数 开窗函数/分析函数&#xff1a;over() 开窗函数也叫分析函数&#xff0c;有两类&#xff1a;一类是聚合开窗函数&#xff0c;一类是排序开窗函数。 开窗函数的调用格式为&#xff1a; 函数名(列名) OVER(partition by 列名 order by列名) 如果你没听…

MySql基础教程

MySql数据库简单的增删改查等基础教程。 数据库相关操作 查询所有数据库 show databases;选择(使用)数据库 use 数据库名称;查询当前正在使用的数据库名称 select database();创建数据库 create database 数据库名称;创建数据库,判断不存在,再创建: create database if …

【OpenCV 例程 300 篇】111. 雷登变换反投影重建图像

专栏地址&#xff1a;『youcans 的 OpenCV 例程 300篇 - 总目录』 【第 7 章&#xff1a;图像复原与重建】 110. 投影和雷登变换 111. 雷登变换反投影重建图像 112. 滤波反投影重建图像 【youcans 的 OpenCV 例程 300 篇】111. 雷登变换反投影重建图像 7. 投影重建图像 图像重…

SPSS操作(四):系统聚类分析

步骤如下&#xff1a;①【分析】----【分类】----【系统聚类】②x2、x3、x4、x5、x6、x7、x8添加到变量&#xff0c;x1&#xff08;即地区&#xff09;添加到个案标注依据③点击【统计】勾选【解的范围】&#xff0c;可以根据自己的需要选择最小聚类数和最大聚类数&#xff08;…

【OpenCV 例程 300 篇】112. 滤波反投影重建图像

专栏地址&#xff1a;『youcans 的 OpenCV 例程 300篇 - 总目录』 【第 7 章&#xff1a;图像复原与重建】 110. 投影和雷登变换 111. 雷登变换反投影重建图像 112. 滤波反投影重建图像 【youcans 的 OpenCV 例程 300 篇】112. 滤波反投影重建图像 7. 投影重建图像 图像重建的…

利用Python中的BeautifulSoup库爬取豆瓣读书中书本信息

利用BeautifulSoup库&#xff0c;获取前250本图书的信息&#xff0c;需要爬取的信息包括书名、书名的URL链接、作者、出版社和出版时间、书本价格、评分和评论&#xff0c;把这些信息存到txt文件&#xff0c;要求将这些信息对齐&#xff0c;排列整齐 (我是刚学习网络爬虫&#…

【youcans 的 OpenCV 学习课】10. 图像复原与重建

专栏地址&#xff1a;『youcans 的图像处理学习课』 文章目录&#xff1a;『youcans 的图像处理学习课 - 总目录』 【youcans 的 OpenCV 学习课】10. 图像复原与重建 图像复原是对图像退化过程建模&#xff0c;并以图像退化的先验知识来恢复退化的图像。 图像增强是一种主观处…

利用Python中的BeautifulSoup库爬取安居客第一页信息

题目&#xff1a; 网址为https://beijing.anjuke.com/sale/&#xff0c; 利用BeautifulSoup库&#xff0c;爬取第1页的信息&#xff0c;具体信息如下&#xff1a;进入每个房源的页面&#xff0c;爬取小区名称、参考预算、发布时间和核心卖点&#xff0c;并将它们打印出来。&…

【youcans 的 OpenCV 例程200篇】113. 形态学操作之腐蚀

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【youcans 的 OpenCV 例程 200 篇】113. 形态学操作之腐蚀 ## 1. 形态学图像处理简介 形态学是生物学的概念&#xff0c;主要研究动…

【youcans 的 OpenCV 例程200篇】114. 形态学操作之膨胀

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【youcans 的 OpenCV 例程 200 篇】114. 形态学操作之膨胀 形态学的基本思想是利用结构元素测量或提取输入图像中的形状或特征&…