文章目录

  • 1. 实验目的
  • 2.实验内容
  • 3.实验环境
  • 实验步骤及结果

1. 实验目的

通过本次实验使学生掌握数据库中表数据的各种复杂查询操作。

2.实验内容

  1. 连接查询
  2. 嵌套查询
  3. 谓词查询

3.实验环境

  1. Windows
  2. SQL Server

实验步骤及结果

  1. 创建一个数据库,文件名为“教学”
  2. 打开“教学”数据库

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. 输入如下数据:

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 复杂查询相关推荐

  1. SQL Server 2016 查询存储性能优化小结

    SQL Server 2016已经发布了有半年多,相信还有很多小伙伴还没有开始使用,今天我们来谈谈SQL Server 2016 查询存储性能优化,希望大家能够喜欢 作为一个DBA,排除SQL Ser ...

  2. SQL Server数据库查询速度慢的原因和解决方法

    SQL Server数据库查询速度慢的原因和解决方法 参考文章: (1)SQL Server数据库查询速度慢的原因和解决方法 (2)https://www.cnblogs.com/MyChange/p ...

  3. 优化SQL Server数据库查询方法

    本文详细介绍了优化SQL Server数据库查询方法. SQL Server数据库查询速度慢的原因有很多,常见的有以下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) ...

  4. 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 ...

  5. SQL Server 2005查询处理结构-用户模式计划(UMS)

    SQL Server 2005查询处理结构-用户模式计划(UMS) 在对数据库进行性能调优时,必须全面的考虑各种可能造成系统性能瓶颈的各种因素,因此深入了解SQL Server 2005的查询处理机构 ...

  6. SQL Server数据库查询区分大小写、全半角——排序规则的应用(转载)

    SQL Server数据库查询区分大小写.全半角--排序规则的应用 因为偶然的原因,需要在INNER JOIN联表时,让对应字段进行区分大小写的比较.而默认情况下建立的Sql Server数据库是不区 ...

  7. SQL server management 查询所有触发器

    SQL server management 查询所有触发器 SQL server management 查询所有触发器 SELECT OBJECT_NAME(a.parent_obj) AS [表名] ...

  8. SQL Server 语句查询手册

    建表: CREATE TABLE  [DB.dbo].tableName (Stud_id int CONSTRAINT  constraintName1  not null primary key, ...

  9. Sql Server参数化查询之where in和like实现之xml和DataTable传参

    在上一篇Sql Server参数化查询之where in和like实现详解中介绍了在Sql Server使用参数化查询where in的几种实现方案,遗漏了xml和表值参数,这里做一个补充 文章导读 ...

  10. [转]Sql Server参数化查询之where in和like实现详解

    本文转自;http://www.cnblogs.com/lzrabbit/archive/2012/04/22/2465313.html 文章导读 拼SQL实现where in查询 使用CHARIND ...

最新文章

  1. 【Storage】localStorage 或 sessionStorage 首次加载,需要再次手动刷新页面的解决方案
  2. JavaScript快速学习
  3. sonar 质量配置 操作(质量规则)
  4. 搜索场景下的智能推荐演变之路
  5. 多迪技术总监告诉你:学习Python语言有哪些就业方向?
  6. CSDN Blog推出专属的离线发布工具 - CSDN剪影
  7. ubuntu14.04.5安装paramiko模块pip install paramiko出现一堆问题的解决过程
  8. 关于AutoCAD软件的PDF打印机的问题
  9. js base64 php,php中的base64decode 与js中的互相转换
  10. Java代码如何运行的?
  11. vue父组给子子组件传html,vue组件之间互相传值:父传子,子传父
  12. 淘宝代购系统、海外代购系统、代购小程序、APP的开发以及源码PHP前端源码
  13. C++将两个字符串合并在一起
  14. Kubernetes(K8s)-k8s服务安装
  15. 5G和WiFi6的故事
  16. 教程篇 | 史上最简单也最全新手Revit教程
  17. 作文组装计算机,学组装作文
  18. 可满足性问题 SAT、3SAT
  19. 数据库课设:机房管理系统
  20. Arduino框架下通过TFT_eSPI库驱动ESP32+合宙1.54“ 电子墨水屏(e-paper)显示

热门文章

  1. linux下远程桌面remmina安装,Linux-远程桌面连接工具remmina
  2. 戴尔Inspiron14加【固态硬盘】更换【内存条】装【win10+ubuntu16.04】双系统
  3. java程序设计清华大学出版社_清华大学出版社-图书详情-《Java程序设计基础》...
  4. 二叉树的中序遍历和后序遍历算法
  5. Java池化技术你了解多少?
  6. Linux中vi编辑器的使用
  7. mysql修行练级之mysql新手入门常用命令
  8. Win10电脑清除运行窗口的历史记录
  9. 你认为什么是LoVE?
  10. 基于HTC New One 802w刷机全流程说明