SQL server 复杂查询
文章目录
- 1. 实验目的
- 2.实验内容
- 3.实验环境
- 实验步骤及结果
1. 实验目的
通过本次实验使学生掌握数据库中表数据的各种复杂查询操作。
2.实验内容
- 连接查询
- 嵌套查询
- 谓词查询
3.实验环境
- Windows
- SQL Server
实验步骤及结果
- 创建一个数据库,文件名为“教学”
- 打开“教学”数据库
Student 表
S# | Sname | Age | Ssex |
---|---|---|---|
S1 | WANG | 15 | 男 |
S2 | LI | 17 | 女 |
S3 | LU | 19 | 女 |
S4 | ZHAO | 13 | 女 |
S5 | YANG | 20 | 男 |
Course表
C# | Cname | T# |
---|---|---|
C1 | Maths | T1 |
C2 | DB | T2 |
C3 | English | T3 |
C4 | Computer | T2 |
C5 | Chinese | T2 |
SC表
S# | C# | Score |
---|---|---|
S1 | C1 | 50 |
S2 | C1 | 70 |
S3 | C1 | 80 |
S4 | C1 | 75 |
S5 | C1 | 87 |
S1 | C2 | |
S2 | C2 | |
S4 | C2 | 85 |
S1 | C3 | |
S5 | C4 | 60 |
S4 | C4 | 45 |
Title表
T# | Tname | Title |
---|---|---|
T1 | 吴恩达 | 教师 |
T2 | 刘晓庆 | 教授 |
T3 | 张龙 | 副教授 |
注明:表格和下面的代码可能不会一一对应,可能需要增加,删除,更改表中的数据
- 输入如下数据:
1、检索年龄小于17的女学生的学号和年龄
select S#,snamefrom Studentwhere age<17 and Ssex='女'go
2、检索男学生所学课程的课程号和成绩
select distinct Student.s#,scorefrom Student,scwhere Ssex='男'go
3、检索男学生所学课程的任课老师的工号和姓名
select distinct title.T#,Tnamefrom course,title,Student,scwhere course.t#=title.t# and Student.s#=sc.s# and course.C#=sc.c# and Student.Ssex='男'go
4、检索至少选修两门课的学生学号
select distinct a.s#from sc a,sc bwhere a.s#=b.s# and a.c#<>b.c#go
5、检索至少有学号s2和s4学生选修的课程的课程号(两种方法解决)
(1).select distinct a.c#from sc a,sc bwhere a.s#='s2' and b.s#='s4' and a.c#=b.c#go(2).select distinct C#from scwhere c# in(select c#from scwhere s#='s2' )and s#='s4'go
6、检索wang同学不学的课程的课程号
select distinct C#from cwhere C# not in ( select distinct c#from scwhere s# in(select s# from swhere sname='wang'))go
7、统计有学生选修的课程门数。
select count(distinct course.c#) 选课人数from course,Student,scwhere Student.s#=sc.s# and sc.c#=course.c#go
8、求选修C4课程的女学生的平均年龄。
select avg(AGE) 平均年龄
from Student, SC
where Student.S#=SC.S# and SC.C#='C4'
and Ssex='女'
9、求LIU老师所授课程的每门课程的学生平均成绩。
select course.c#,avg(score) 平均成绩from sc,title,coursewhere title.t#=course.t# and course.c#=sc.c# and tname='刘晓庆'group by course.c#
go
10、统计每门课程的学生选修人数(超过1人的课程才统计)。要求输出课程号和选修人数, 查询结果按人数降序排列,若人数相同,按课程号升序排列。
select c#,count (s#) 人数from scgroup by c#having COUNT(*)>1order by 2 desc ,1
order by 2 desc ,1中的“2”和“1”代表SC表中的第二列和第一列,如果写成C#,S#,编译器会报错。
11、检索学号比WANG同学大,而年龄比他小的学生姓名
select snamefrom Studentwhere s#>all(select s#from Studentwhere sname='wang')and age<all(select agefrom Studentwhere sname='wang')
go
12、在SC中检索成绩为空值的学生学号和课程号。
select s#,c#from scwhere score is null
go
13、检索姓名以L打头的所有学生的姓名和年龄。
select sname,agefrom Studentwhere sname like 'l%'
go
14、 求年龄大于女同学平均年龄的男学生姓名和年龄。
select sname,agefrom Studentwhere Ssex='男'and age >(select avg (age)from Studentwhere Ssex='女')
go
我现在也是一名大三的学生,接触SQL Server的时间并不是很长,里面的代码难免会出错误,如果是引用数据错误,请读者们自己修改一下自己的代码,如果是我的语法和引用出错误,请大家给我在评论区留言,我看到并验证成功后我会改正自己的代码,写这个的目的也是为了同行的朋友们有一个借鉴和参考。
SQL server 复杂查询相关推荐
- SQL Server 2016 查询存储性能优化小结
SQL Server 2016已经发布了有半年多,相信还有很多小伙伴还没有开始使用,今天我们来谈谈SQL Server 2016 查询存储性能优化,希望大家能够喜欢 作为一个DBA,排除SQL Ser ...
- SQL Server数据库查询速度慢的原因和解决方法
SQL Server数据库查询速度慢的原因和解决方法 参考文章: (1)SQL Server数据库查询速度慢的原因和解决方法 (2)https://www.cnblogs.com/MyChange/p ...
- 优化SQL Server数据库查询方法
本文详细介绍了优化SQL Server数据库查询方法. SQL Server数据库查询速度慢的原因有很多,常见的有以下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) ...
- SQL Server 2000查询n到m条记录
SQL Server 2000查询n到m条记录? (1)select top m * from tablename where id not in (select top n id from tabl ...
- SQL Server 2005查询处理结构-用户模式计划(UMS)
SQL Server 2005查询处理结构-用户模式计划(UMS) 在对数据库进行性能调优时,必须全面的考虑各种可能造成系统性能瓶颈的各种因素,因此深入了解SQL Server 2005的查询处理机构 ...
- SQL Server数据库查询区分大小写、全半角——排序规则的应用(转载)
SQL Server数据库查询区分大小写.全半角--排序规则的应用 因为偶然的原因,需要在INNER JOIN联表时,让对应字段进行区分大小写的比较.而默认情况下建立的Sql Server数据库是不区 ...
- SQL server management 查询所有触发器
SQL server management 查询所有触发器 SQL server management 查询所有触发器 SELECT OBJECT_NAME(a.parent_obj) AS [表名] ...
- SQL Server 语句查询手册
建表: CREATE TABLE [DB.dbo].tableName (Stud_id int CONSTRAINT constraintName1 not null primary key, ...
- Sql Server参数化查询之where in和like实现之xml和DataTable传参
在上一篇Sql Server参数化查询之where in和like实现详解中介绍了在Sql Server使用参数化查询where in的几种实现方案,遗漏了xml和表值参数,这里做一个补充 文章导读 ...
- [转]Sql Server参数化查询之where in和like实现详解
本文转自;http://www.cnblogs.com/lzrabbit/archive/2012/04/22/2465313.html 文章导读 拼SQL实现where in查询 使用CHARIND ...
最新文章
- 【Storage】localStorage 或 sessionStorage 首次加载,需要再次手动刷新页面的解决方案
- JavaScript快速学习
- sonar 质量配置 操作(质量规则)
- 搜索场景下的智能推荐演变之路
- 多迪技术总监告诉你:学习Python语言有哪些就业方向?
- CSDN Blog推出专属的离线发布工具 - CSDN剪影
- ubuntu14.04.5安装paramiko模块pip install paramiko出现一堆问题的解决过程
- 关于AutoCAD软件的PDF打印机的问题
- js base64 php,php中的base64decode 与js中的互相转换
- Java代码如何运行的?
- vue父组给子子组件传html,vue组件之间互相传值:父传子,子传父
- 淘宝代购系统、海外代购系统、代购小程序、APP的开发以及源码PHP前端源码
- C++将两个字符串合并在一起
- Kubernetes(K8s)-k8s服务安装
- 5G和WiFi6的故事
- 教程篇 | 史上最简单也最全新手Revit教程
- 作文组装计算机,学组装作文
- 可满足性问题 SAT、3SAT
- 数据库课设:机房管理系统
- Arduino框架下通过TFT_eSPI库驱动ESP32+合宙1.54“ 电子墨水屏(e-paper)显示
热门文章
- linux下远程桌面remmina安装,Linux-远程桌面连接工具remmina
- 戴尔Inspiron14加【固态硬盘】更换【内存条】装【win10+ubuntu16.04】双系统
- java程序设计清华大学出版社_清华大学出版社-图书详情-《Java程序设计基础》...
- 二叉树的中序遍历和后序遍历算法
- Java池化技术你了解多少?
- Linux中vi编辑器的使用
- mysql修行练级之mysql新手入门常用命令
- Win10电脑清除运行窗口的历史记录
- 你认为什么是LoVE?
- 基于HTC New One 802w刷机全流程说明