SQl查询之单表查询,连接与嵌套查询

简介: SQl查询之单表查询,连接与嵌套查询

绪论:

     在前文我们已经介绍了有关数据库《SQL serve导入excel数据》的知识,接下

来我们要介绍有关查询的东西。

     查询是数据库的基本功能也是核心功能,我们介绍的查询功能千奇百怪,但是

从需求完成的角度来看,我更倾向于嵌套查询,因为它更有逻辑,利于开发人员

整理思路,以下几个例题作为基本操作例题。

对于查询例题,我总结了一个公式来进行代码编写:

***@author:令狐荣豪
1.看清题目指明的查询对象[select]
2.了解对象来自于哪张表[from]
3.观察对象的附加条件,筛选查询方式[where,having]

1. 查询课程的详细信息

select 
*
from
course

2.查询课程名包含“计算机”课程号和课程名

1.指明对象:cno,cname
2.来源表:course
3.附加条件:where cname like '%计算机%'

PS:----------------------通配符%-------------------------------------------------------------


%代表后面可以匹配任意个字符。

a% 可以表示以a开头的任意字符串,如:abca ,aaaa,acgfrrrrrr,akjgus,a,

%a% 可以表示一个有a的字符串, 如:a,sabbb,ddddda,edfg…

%a 可以表示以a结尾的字符串, 如:a,sa,aaaaa,defsa…


select
cno,course
from
course
where cname like '%计算机%'

ps:in,like和“=”的区别:

1.等号“=”

查找范围:字符串,日期,数字例如,查找名为“王静”的工作人员,可以使用等号进行匹配

WHERE name = ’王静’---姓名精确查询

2.LIKE 子句

查找范围:字符串

数字类型不能使用like子句的!!!

例如,查找名字中都包含汉字“燕”的工作人员,可以使用 LIKE 子句进行匹配

WHERE name LIKE ’%燕%’   ---包含姓氏的查询

3.IN子句

查找范围:数字,字符串,日期,多值查询

所谓多值查询就是查找内容包含多个值的比较、例子如下:

WHERE name IN(’王静’, ’王力刚’, ’王亚鹏’)

3.查询选修了”10003”号课程且成绩在80分以上的学生学号

select
sno
from
student
where sno in(
  select
  sno
  from
  sc
  where cno='10003' and score>80
)

写完上面才发现,自己用的嵌套查询,搞复杂了,仔细观察,其实有简单的方

法,不管多复杂,只要能享受那种逻辑带来的美就行了。

select
sno
from
sc
where cno='10003' and score>80

4.查询选课成绩为空的学生学号

"为空"指的是取值为空等价于is null

select
sno
from
sc
where score is null

5.查询有所系(结果不包含重复值)

sql查询有很多子句功能我后边单独进行总结,开一篇博客:

这里的"去重复"可以用distinct

select
distinct sdept
from
student

6.查询所有选课信息,结果按照课程号的升序,成绩降序排列

这个查询我们涉及到了排序的知识点。

排序的默认排序是升序,所以asc可以默认不写

知识点介绍:

order by分组
select
*
from
sc
order by cno asc and score desc

课程号的升序可以默认不写,asc可以默认不写。

7.查询男生学生总人数。

知识点:总人数------>count(*)

select
count(*)
from
student
where sex='男'

8.查询选修了课程的学生人数。

SELECT 
COUNT(DISTINCT Sno)
FROM SC

9.计算选修了“10001”号课程的学生平均成绩。

select
avg(score)
from
sc
where cno='10001'

10.查询每个专业的人数

select
sdept,count(*)
from
student
group by sdept

11.查询每门课程的最高成绩。

select
cno,max(score)
from
sc
group by cno

改进版:

select
cno,max(score) as score
from
sc
group by cno

12.查询“计算机系”和 “通信系”学生详细信息

看到查询条件是:

   查询计算机系通信系,我们应该用or连接词来连接!不是and!这里是个易错点!

select
*
from
student
where sdept='计算机系'or sdept='通信系'

不过博主可不是这么写的,博主用了并操作union all的思想!

select
*
from
student
where sdept='计算机系'
union all
select
*
from
student
where sdept='通信系'

13.查询选修了3门以上课程的学生学号

select
sno
from
sc
group by sno
having count(*)>3
---having count(cno)>3

14.查询有3门以上课程的分数大于等于60分的学生的学号及课程数。

SELECT Sno,COUNT(*)
FROM SC
WHERE Score>=60
GROUP BY Sno
HAVING COUNT(*)>3

15.查询每个学生及其选修课程的详细信息。

SELECT Student.*,SC.*
FROM Student,SC
WHERE Student.Sno=SC.Sno

16.查询选修了“数据库原理”这门课的学生学号和学生姓名

SELECT Student.Sno,Student.Sname
FROM Student,SC,Course
WHERE Student.Sno=SC.Sno AND Course.Cno=SC.Cno AND Cname='数据库原理'

17.查询选修了“数据库原理”这门课的学生学号和分数,结果按分数降序来排。

SELECT Sno,Score
FROM Course,SC
WHERE Course.Cno=SC.Cno AND Cname='数据库原理'
ORDER BY Score DESC

18.查询选修“计算机基础”这门课成绩没及格(分数小于60)的学生学号,姓名和成绩。

SELECT Student.Sno,Student.Sname,Score
FROM Student,SC,Course
WHERE Student.Sno=SC.Sno AND Course.Cno=SC.Cno AND Cname='计算机基础' AND Score<60

19.查询每门课的间接先修课

SELECT C1.Cno, C2.Cpno
FROM Course C1,Course C2
WHERE C1.cpno=C2.Cno

20.查询与“王磊”在同一个系的学生信息

SELECT S1.*
FROM Student S1,Student S2
WHERE S1.Sdept=S2.Sdept AND S2.Sname='王磊'


目录
相关文章
|
23天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
16天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
20天前
|
机器学习/深度学习 算法 大数据
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
2024“华为杯”数学建模竞赛,对ABCDEF每个题进行详细的分析,涵盖风电场功率优化、WLAN网络吞吐量、磁性元件损耗建模、地理环境问题、高速公路应急车道启用和X射线脉冲星建模等多领域问题,解析了问题类型、专业和技能的需要。
2576 22
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
|
18天前
|
人工智能 IDE 程序员
期盼已久!通义灵码 AI 程序员开启邀测,全流程开发仅用几分钟
在云栖大会上,阿里云云原生应用平台负责人丁宇宣布,「通义灵码」完成全面升级,并正式发布 AI 程序员。
|
3天前
|
JSON 自然语言处理 数据管理
阿里云百炼产品月刊【2024年9月】
阿里云百炼产品月刊【2024年9月】,涵盖本月产品和功能发布、活动,应用实践等内容,帮助您快速了解阿里云百炼产品的最新动态。
阿里云百炼产品月刊【2024年9月】
|
2天前
|
存储 人工智能 搜索推荐
数据治理,是时候打破刻板印象了
瓴羊智能数据建设与治理产品Datapin全面升级,可演进扩展的数据架构体系为企业数据治理预留发展空间,推出敏捷版用以解决企业数据量不大但需构建数据的场景问题,基于大模型打造的DataAgent更是为企业用好数据资产提供了便利。
163 2
|
20天前
|
机器学习/深度学习 算法 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
2024年中国研究生数学建模竞赛C题聚焦磁性元件磁芯损耗建模。题目背景介绍了电能变换技术的发展与应用,强调磁性元件在功率变换器中的重要性。磁芯损耗受多种因素影响,现有模型难以精确预测。题目要求通过数据分析建立高精度磁芯损耗模型。具体任务包括励磁波形分类、修正斯坦麦茨方程、分析影响因素、构建预测模型及优化设计条件。涉及数据预处理、特征提取、机器学习及优化算法等技术。适合电气、材料、计算机等多个专业学生参与。
1576 16
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
|
22天前
|
编解码 JSON 自然语言处理
通义千问重磅开源Qwen2.5,性能超越Llama
击败Meta,阿里Qwen2.5再登全球开源大模型王座
972 14
|
3天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
218 2
|
17天前
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
734 9