当前位置: 首页 > news >正文

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

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.jsqmd.com/news/275357/

相关文章:

  • 【课程设计/毕业设计】springboot基于大数据技术的诗词信息系统基于SpringBoot的诗词学习系统的设计与实现【附源码、数据库、万字文档】
  • 【课程设计/毕业设计】基于python+django+vue的电影受众群体特征研究基于python的电影受众群体特征研究【附源码、数据库、万字文档】
  • 2025 年最喜欢的游戏
  • 大数据计算机毕设之springboot基于大数据技术数据可视化的诗词信息系统(完整前后端代码+说明文档+LW,调试定制等)
  • 0.3 view 滑动冲突
  • 1986-2024年中国500米分辨率类NPP-VIIRS人造夜间灯光栅格数据
  • 三菱FX3U步进电机换算FB块:让程序更模块化
  • 盘点2025年最值得入手的五款新型印刷机,印刷粘箱打包联动线/水墨印刷开槽机/印刷开槽模切机印刷机制造企业推荐排行
  • python(68) : 提前文件夹所有图片, 重名处理
  • 马斯克今天,开源了推特 X 的信息流推荐系统的工作代码与原理
  • 0.4 View 工作流程
  • 双向隔离DCDC仿真之Simulink探索
  • OIFC 2026省选 0120
  • 流量累计程序 博途v15编写的西门子流量累计程序,封装好的FB块直接可以拿来用,并且配有视频解说
  • qt之实现截图效果
  • 2026年广东比较好的刀塔机定制需要多少钱,Y轴/尾顶机/排刀机/数控4+4/正交Y/动力刀塔/直Y,刀塔机厂家推荐排行
  • 【毕业设计】springboot基于大数据技术的诗词信息系统(源码+文档+远程调试,全bao定制等)
  • 【Python】解决 Windows 下 pip 安装报错 OSError: [Errno 2] No such file or directory (路径过长问题)
  • 深夜调模型的工程师都懂,燃油车和电动车之间总得有个“和事佬“——增程器。今天咱们聊的这个Cruise仿真模型,就是要把这个中间商做出价值
  • 《把脉行业与技术趋势》-72-伟大的组织,不只是会收割,更要会培育土壤。“春天开荒播种是为了秋天收获果实”。
  • 【python实用小脚本-336】HR如何用Python改造敏感信息传递流程?信息安全×代码的化学反应,轻松实现音频隐写术
  • 【2026开年巨献】Gemini 3.0全面解析:从技术原理到商业落地,开发者不可错过的AI革命指南
  • 【GoFrame (GF) 】高性能、模块化、企业级的 Go 语言开发框架
  • 【计算机毕业设计案例】基于springboot+大数据技术旅游商品管理系统大数据毕设选题推荐:基于大数据技术旅游商品管理系统基于springboot+大数据技术旅游商品管理系(程序+文档+讲解+定制)
  • 【2026 深度观察】大模型战国时代:中美双极、四强争霸与生态分化
  • 同步FIFO的三种写法各有特点。计数器法直接用读写计数器差值判断空满,适合小深度场景。举个例子,当depth=1时可以直接用寄存器存储数据
  • 大数据领域 Elasticsearch 集群搭建全流程
  • 自动聊天工具尝试一(寻找方向)
  • 一个python笔试题及扩展
  • 支持付费内容与广告的社区论坛小程序商业化运营源码系统