SQL查询语句详解与实战 - 教程

news/2026/1/20 23:14:18/文章来源:https://www.cnblogs.com/ljbguanli/p/19509021

SQL查询语句详解与实战 - 教程

SELECT 语句使用非常灵活,功能丰富,

 语法格式为:

SELECT [ALL | DISTINCT]   字段列表

FROM  表名

[WHERE  条件表达式]

[GROUP BY 字段名]

[HAVING 条件表达式]

[ORDER BY 字段名 [ASC| DESC]

[LIMIT  [行号,] 行数 ]

*  表示所有的字段,

SELECT  *  FROM  student;

语法格式为 SELECT  字段列表  FROM  表名  WHERE  条件表达式;

【例1】查询学生2000年以后出生的学生学号、姓名。

select 学号,姓名
from student
where year(出生日期)  >2000 ;

1. 带AND的多条件查询

SELECT 字段列表  FROM 表名  WHERE 条件表达式1 AND 条件表达式2 […AND 条件N];

【例2】在学生信息表student中查询“01”班的“女”生有哪些?

SELECT 学号, 姓名, 出生日期
FROM  student
WHERE  班级编号='01'  AND  性别='女';

2.指定范围

SELECT 字段列表 FROM 表名 WHERE  字段名 [not] Between   值1 and 值2

select * from course where  not 学分=4;

方法一:SELECT  *  FROM  course
WHERE  学分 >=2 AND 学分 <=4;
方法二:SELECT  *  FROM  courseWHERE  学分 BETWEEN 2 AND 4;

3.带OR的多条件查询

SELECT 字段列表

FROM  表名

WHERE 条件表达式1 OR

               条件表达式2 […OR 条件表达式N];

SELECT 字段列表

FROM  表名

WHERE 字段名 [NOT] IN(值1,值2……值N);

【例3】在学生信息表student中查询“01”班、“03”班的学生详细信息。

方法一: select * from student where 班级编号='01' or 班级编号='03'
方法二:使用IN关键字查询
select * from student where 班级编号 in ('01','03');

4.模糊查询

模糊查询:like  

通配符:    %    -

  • “%”可以匹配一个或多个字符,可以代表任意长度的字符串,长度可以为0
  • “­_”只匹配一个字符。

字段名 [ not ]  like  模式

【例3】 查询课程信息表中课程名称包含“数据库”字符的课程名称和学分。

select 课程名称, 学分
from course
where 课程名称 like '%数据库%';


【例4】 查询学生信息表中姓名的第二字是“浅”的学生信息。

select * from student where 姓名 like '_浅%';

5.空值查询

表达式    is [ not ] NULL

is NULL用于判断表达式的值是否为空值NULL

【例5】 查询学生选课表中成绩为空的信息

select 学号,课程号,成绩  from choose where 成绩 is null;
update choose set 成绩=NULL where 学号='01640405';
select 学号,课程号,成绩  from choose where 成绩 = null

说明:不能将“score is NULL”写成“score = NULL;”,

原因是NULL是一个不确定的数,不能使用“=”、“!=”等比较运算符与NULL进行比较。

6.查询结果排序

Order by子句

排序, 根据某个字段进行升序或者降序排序。

排序可以进行多字段排序: 先根据某个字段进行排序, 然后排序好的内部再按照某个数据进行再次排序。

ORDER BY  字段名1  [ASC|DESC][ … ,字段名N  [ASC|DESC]  ]

【例6】查询学生选课表choose选修“1”号课程的成绩,并按成绩降序排列,如果成绩相同则按学号排序。

select 学号,课程号,成绩
from choose
where 课程号='1'
order by 成绩 desc,学号;

【例7】查询学生信息表studnet的学生的详细信息,按出生年月升序排列。

select 学号,姓名,性别,year(now())-year(出生日期) as 年龄, 班级编号
from student
order by 年龄;

7.使用LIMIT子句

limit   开始行号,行数

第一行的行号为 0

【例8】查询学生选课表中选修“1”号课程的前三名的成绩

select  学号,课程号,成绩
from  choose
where  课程号=1order by 成绩 desc,学号 limit 3;

8.用DISTINCT关键字去除结果中的重复行

字段列表前面加上DISTINCT关键字

select  distinct  字段名 from  表名

【例9】查询选了课的学生学号

select distinct 学号 from choose;

9.聚合函数与GROUP BY 子句

(1) COUNT()函数

统计函数:返回选择集合中所有行的数目

Count(列名)            放在select 后

【例10】查询学生信息表student中学生人数。

select count(学号) as 总人数
from student;

【例11】查询学生信息表student中学生人数以及性别数量。

select count(distinct 性别), count(学号) as 总人数
from student;


(2)MAX()函数,MIN()函数

MAX()函数可以求出表中某个字段取值的最大值。

MAX ( 列名 )  放在select 后

MIN()函数可以求出表中某个字段取值的最小值

MIN ( 列名 )    放在select 后

【例12】查询学生选课表choose中的“1”号课程成绩的最高分和最低分。

select max(成绩), min(成绩)
from choose
where 课程号='1';

(3)SUM()、AVG()函数

SUM():求和

AVG():平均值

【例13】查询订单表dingdan中总的下单数量和平均下单数量。

select sum(下单数量), avg(下单数量)
from dingdan;

(4)分组查询group by子句

group by子句将查询数据按照某个字段(或多个字段)进行分组(字段值相同的记录作为一个分组)。

SELECT  字段列表  FROM  表名

Where  条件

GROUP BY 字段列表

【例14】将学生信息表student按照“班级编号”分组,统计各班级的学生人数。

select 班级编号, count(*)
from student
group by 班级编号;

【例15】统计每个学生选修了多少门课程,以及该学生所获得的总成绩和平均成绩。

select 学号, count(课程号),sum(成绩),avg(成绩)
from choose
group by 学号;

(5)Having子句

Having与where语法格式相似;

常与GROUP BY一起使用。

用于设置分组或聚合函数的过滤条件。

SELECT   字段列表  from 表名

GROUP BY 字段名

HAVING 条件表达式;

Where是针对磁盘数据进行判断,进入到内存之后,会进行分组操作, 分组结果就需要having来处理;

Having能做where能做的几乎所有事情, 但是where却不能做having能做的很多事情;

分组统计的结果或者统计函数都只有having能够使用,Having能够使用字段别名,where不能。

【例16】统计选课门数超过2门的学号和课程门数。

select 学号, count(课程号) 课程门数
from choose
group by 学号
having count(课程号)>2;

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

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

相关文章

【课程设计/毕业设计】springboot基于大数据技术的诗词信息系统基于SpringBoot的诗词学习系统的设计与实现【附源码、数据库、万字文档】

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

【课程设计/毕业设计】基于python+django+vue的电影受众群体特征研究基于python的电影受众群体特征研究【附源码、数据库、万字文档】

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

大数据毕设选题推荐:基于Python的电影受众数据分析及可视化系统设计与实现基于python的电影受众群体特征研究【附源码、mysql、文档、调试+代码讲解+全bao等】

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

2025 年最喜欢的游戏

脚本方向 音乐方向 画风方向 角色方向

ChIP/CUT结果解读之Motif分析,充分利用组学数据

ChIP-seq&#xff08;染色质免疫沉淀测序&#xff09;和近年来大火的CUT&Tag&#xff08;靶向剪切与标记技术&#xff09;是表观遗传学研究的“黄金工具”&#xff0c;核心作用是精准定位蛋白质&#xff08;如转录因子、组蛋白修饰&#xff09;在基因组上的结合位点。而在C…

大数据计算机毕设之springboot基于大数据技术数据可视化的诗词信息系统(完整前后端代码+说明文档+LW,调试定制等)

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

1986-2024年中国500米分辨率类NPP-VIIRS人造夜间灯光栅格数据

人造夜间灯光&#xff08;NTL&#xff09;遥感是评估人类活动边界、量化人类活动强度和空间分布的重要指标。目前&#xff0c;该数据已经广泛应用于城市范围、不透水面、基础设施建设等一系列过程。为监测人类活动提供了创新性基础&#xff0c;在城市规划与管理、灾害监测、能源…

三菱FX3U步进电机换算FB块:让程序更模块化

三菱FX3U 步进电机换算FB块 FB块的使用可以使程序模块化简单化&#xff0c;进而提高了程序的稳定性和可移植性。 此例中使用FB块&#xff0c;可以实现步进电机的换算&#xff0c;已知距离求得脉冲数&#xff0c;已知速度可以求得频率。 程序中包含有FB和ST内容;移植方便&#…

盘点2025年最值得入手的五款新型印刷机,印刷粘箱打包联动线/水墨印刷开槽机/印刷开槽模切机印刷机制造企业推荐排行

随着全球包装行业对生产效率、绿色环保及智能化水平要求的不断提升,印刷机作为纸箱包装生产的核心设备,其技术迭代速度显著加快。市场不再仅仅满足于基础印刷功能,对高速、高清、低耗、智能联动的需求已成为主流趋势…

马斯克今天,开源了推特 X 的信息流推荐系统的工作代码与原理

今天下午,马斯克如约奉告。 本文的完整版原文全文地址:https://www.ccgxk.com/emlog_dev/625.html 当然,这种技术公开,其实价值就不再很大了,马斯克本人说该算法垃圾啊,估计会大改,但依然非常有趣。 不过,马斯…

python(68) : 提前文件夹所有图片, 重名处理

import os import shutil from pathlib import Path# 源目录和目标目录 SOURCE_DIR r"E:\工作台\87_牧原POC\豆包安装包" TARGET_DIR r"E:\工作台\87_牧原POC\豆包素材"# 支持的图片格式 IMAGE_EXTENSIONS {.png, .jpg, .jpeg, .gif, .bmp, .webp, .svg…

0.4 View 工作流程

自定义 View 核心要点总结与代码注释 一、核心知识点总结 1. View 的工作流程measure:确定 View 的测量宽高(onMeasure) layout:确定 View 的最终位置(onLayout,对单一 View 无作用) draw:将内容绘制到屏幕上(…

双向隔离DCDC仿真之Simulink探索

双向隔离DCDC仿真simulink在电力电子领域&#xff0c;双向隔离DC - DC变换器因其能实现能量双向流动且电气隔离的特性&#xff0c;在众多场合如电动汽车、分布式能源存储系统中有着广泛应用。而Simulink作为一款强大的系统级建模与仿真工具&#xff0c;为双向隔离DC - DC变换器…

西门子s7 200smart与3台力士乐变频器通讯程序 原创可直接用于生产的程序,程序带注释...

西门子s7 200smart与3台力士乐变频器通讯程序 原创可直接用于生产的程序&#xff0c;程序带注释&#xff0c;并附送触摸屏程序&#xff0c;有接线方式和设置&#xff0c;通讯地址说明等。 程序采用轮询&#xff0c;可以后续根据要求适当修改后扩展。 器件&#xff1a;西门子s7 …

AI 智能体全攻略:从入门到落地的实战指南

大家好我是菲菲~~如果你关注 2025 年的 AI 领域动态&#xff0c;想必会发现 “智能体&#xff08;Agents&#xff09;” 已成行业热词。这种具备自主工作能力的 AI 形态&#xff0c;既能处理日常琐事&#xff0c;也能驾驭企业级复杂多智能体工作流&#xff0c;其发展潜力不可限…

0.3 view 滑动冲突

Android 触摸事件分发与滑动冲突处理 — 完整文档 一、核心知识点总结 1. 事件分发流程(Event Flow)事件传递路径:Activity → Window (DecorView) → ViewGroup → View 若所有子 View 均未消费事件,最终会回传到…

OIFC 2026省选 0120

胜兵必骄 wars 称 \(a=1\) 为黑色,否则为白色。 注意到一次战斗本质是交换颜色,一条边被操作两次不会对颜色产生影响。最初的想法是找到一个黑点 \(u\),与白色儿子交换颜色,递归到子树处理;同色的儿子提前递归,回…

流量累计程序 博途v15编写的西门子流量累计程序,封装好的FB块直接可以拿来用,并且配有视频解说

流量累计程序 博途v15编写的西门子流量累计程序&#xff0c;封装好的FB块直接可以拿来用&#xff0c;并且配有视频解说&#xff0c;轻松学会最近在调试现场流量计项目&#xff0c;发现不少新手对累计流量功能实现总是卡壳。今天就给大家拆解一个我封装好的博途V15流量累计FB块&…

2026年广东比较好的刀塔机定制需要多少钱,Y轴/尾顶机/排刀机/数控4+4/正交Y/动力刀塔/直Y,刀塔机厂家推荐排行

近年来,随着中国制造业向高端化、智能化转型,刀塔机作为数控机床领域的核心设备,其技术迭代与定制化需求持续攀升。据行业统计,2025年国内刀塔机市场规模突破120亿元,广东作为制造业大省,占据全国35%以上的市场份…

qt之实现截图效果

以下是修改后的代码,实现鼠标滑动矩形区域截图功能: #include <QGuiApplication> #include <QScreen> #include <QPixmap> #include