当前位置:

首页 > 编程开发 > MySQL高级查询语法是什么

MySQL高级查询语法是什么

一、排序排序查询语法:select*from表名orderby列1asc/desc[,列2asc/desc,...]语法说明:先按照列1进行排序,如果列1的值相同时,则按照列2排序asc:升序排序(从小到大)desc:降序排序(从大到小)默认是升序排序(asc)查询未删除男生信息,按学号降序:select*fromstudentswhereis_del=0andsex='男'orderbyiddesc;显示所有学生信息,先按年龄从大到小排序,年龄相同时按身高由高到低排序:select*fr

本文目录

    一、排序

    排序查询语法:

    select * from 表名 order by 列1 asc/desc [,列2 asc/desc,...]

    语法说明:

    先按照列1进行排序,如果列1的值相同时,则按照列2排序asc:升序排序(从小到大)desc:降序排序(从大到小)默认是升序排序(asc)

    查询未删除男生信息,按学号降序:

    select * from students where is_del = 0 and sex = '男' order by id desc;

    MySQL高级查询语法是什么

    显示所有学生信息,先按年龄从大到小排序,年龄相同时按身高由高到低排序:

    select * from students order by age desc,height desc;

    MySQL高级查询语法是什么

    二、分页查询

    在网上购物时,浏览商品列表的时候,由于数据特别多,一页显示不完,一页一页的进行显示,这就是分页查询

    select * from 表名 limit start,count

    说明:

    limit 是分页查询关键字start 表示开始行索引,默认是0count 表示查询条数

    查询前三行男生的信息:

    select * from students where sex='男' limit 0,3;

    可以简写为

    select * from students where sex='男' limit 3;

    MySQL高级查询语法是什么

    MySQL高级查询语法是什么

    每页显示m条数据,求第n页显示的数据(关键是求每页的开始行索引)

    select * from students limit (n-1)*m,m;

    三、聚合函数

    聚合函数又叫组函数,通常是对表中的数据进行统计和计算,一般结合分组(group by)来使用,用于统计和计算分组数据

    常用的聚合函数:

    count(col):表示求指定列的总行数max(col):表示求指定列的最大值min(col):表示求指定列的最小值sum(col):表示求指定列的和avg(col):表示指定列的平均值

    求总行数:

    返回非null数据的总行数
    select count(height) from students;
    返回总行数,包含null值记录
    select count(*) from students;

    MySQL高级查询语法是什么

    MySQL高级查询语法是什么

    求最大值:

    查询男生编号的最大值
    select max(id) from students where sex='男';

    MySQL高级查询语法是什么

    求最小值:

    查询未删除的学生最小编号
    select min(id) from students where is_del=0;

    MySQL高级查询语法是什么

    求和:

    查询男生的总身高
    select sum(height) from students where sex='男';
    查询男生的平均身高
    select sum(height) / count(*) from students where sex='男';

    MySQL高级查询语法是什么

    求平均值:

    求男生的平均身高,聚合函数不统计null值
    select avg(height) from students where sex='男';
    求男生的平均身高,包含身高为null的值
    select avg(ifnull(height,0)) from students where sex='男';

    说明:

    ifnull函数:表示判断指定字段的值是否为null,如果为空则使用自己提供的值

    MySQL高级查询语法是什么

    聚合函数特点:

    聚合函数默认忽略字段为null的记录,要想列值为null的记录也参与计算,必须使用ifnull函数对null值做替换

    四、分组查询

    分组查询就是将查询结果按照指定字段进行分组,字段中数据相等的分为一组

    分组查询基本的语法格式:

    group by 列名 [having 条件表达式] [with rollup]

    说明:

    列名:是指按照指定字段的值进行分组having 条件表达式:用来过滤分组后的数据with rollup:在所有记录的最后加上一条记录,显示select查询时聚合函数的统计和计算结果

    group by 的使用:

    group by可用于单个字段分组,也可用于多个字段分组

    根据sex字段来分组
    select gender from students group by sex;
    根据name和sex字段来分组
    select name,sex from students group by name,sex;

    MySQL高级查询语法是什么

    group by + group_concat()的使用:

    group_concat(字段名):统计每个分组指定字段的信息集合,每个信息之间用逗号分割

    根据sex字段进行分组,查询sex字段和分组的name字段信息
    select sex,group_concat(name) from students group by sex;

    MySQL高级查询语法是什么

    group by + 聚合函数的使用:

    统计不同性别的人的平均年龄
    select sex,avg(age) from students group by sex;
    统计不同性别的人的个数
    select sex,count(*) from students group by sex;

    MySQL高级查询语法是什么

    group by + having的使用:

    having作用和where类似都是过滤数据的,但having是过滤分组数据的,只能用于group by

    根据sex字段进行分组,统计分组条数大于2的
    select sex,count(*) from students group by sex having count(*)>2;

    MySQL高级查询语法是什么

    group by + with rollup的使用:

    with rollup的作用是:在最后记录后面新增一行,显示select查询时聚合函数的统计和计算结果

    根据sex字段进行分组,汇总总人数
    select sex,count(*) from students group by sex with rollup;
    根据sex字段进行分组,汇总所有人年龄
    select sex,group_concat(age) from students group by sex with rollup;

    MySQL高级查询语法是什么

    MySQL高级查询语法是什么

    小结:

    group by 根据指定的一个或者多个字段对数据进行分组group_concat(字段名)函数是统计每个分组指定字段的信息集合聚合函数在和group by 结合使用时,聚合函数统计和计算的是每个分组的数据having 是对分组数据进行条件过滤with rollup 在最后记录后面新增一行,显示select查询时聚合函数的统计和计算结果

    五、连接查询

    连接查询可以实现多个表的查询,当查询的字段数据来自不同的表就可以使用连接查询来完成

    连接查询分为:

    内连接查询左连接查询右连接查询自连接查询

    1. 内连接查询

    查询两个表中符合条件的共有记录(取交集)

    内连接查询语法格式:

    select 字段 from 表1 inner join 表2 on 表1.字段1 = 表2.字段2

    说明:

    inner join 就是内连接查询关键字on 就是连接查询条件

    使用内连接查询学生表与班级表:

    select * from students s inner join classes c on s.c_id = c.id;

    原本两个表的内容:

    MySQL高级查询语法是什么

    MySQL高级查询语法是什么

    使用内连接:

    MySQL高级查询语法是什么

    MySQL高级查询语法是什么

    2. 左连接查询

    以左表为主根据条件查询右表数据,如果根据条件查询右表数据不存在则使用null值填充

    左连接查询语法格式:

    select 字段 from 表1 left join 表2 on 表1.字段1 = 表2.字段2

    说明:

    left join 就是左连接查询关键字on 就是连接查询条件表1 是左表表2 是右表

    使用左连接查询学生表与班级表:

    select * from students s left join classes c on s.c_id = c.id;

    MySQL高级查询语法是什么

    3. 右连接查询

    以右表为主根据条件查询左表数据,如果根据条件查询左表数据不存在则使用null值填充

    右连接查询语法格式:

    select 字段 from 表1 right join 表2 on 表1.字段1 = 表2.字段2;

    说明:

    right join 就是右连接查询关键字on 就是连接查询条件表1 是左表表2 是右表

    使用右连接查询学生表与班级表:

    select * from students s right join classes c on s.c_id = c.id;

    MySQL高级查询语法是什么

    MySQL高级查询语法是什么

    4. 自连接查询

    左表和右表是同一个表,根据连接查询条件查询两个表中的数据

    MySQL高级查询语法是什么

    创建areas表:

    create table areas(
    id varchar(20) not null primary key,
    title varchar(30) not null,
    pid varchar(20)
    );

    执行sql文件给areas表导入数据:

    source areas.sql;

    sql文件内容:

    insert into areas values('11000', '北京市', null);
    insert into areas values('11001', '北京市', '11000');
    insert into areas values('11002', '东城区', '11001');
    insert into areas values('11003', '西城区', '11001');
    insert into areas values('11004', '朝阳区', '11001');
    insert into areas values('11005', '丰台区', '11001');
    insert into areas values('11006', '海淀区', '11001');
    insert into areas values('12000', '河北省', null);
    insert into areas values('12001', '石家庄市', '12000');
    insert into areas values('12002', '长安区', '12001');
    insert into areas values('12003', '桥东区', '12001');
    insert into areas values('12004', '桥西区', '12001');
    insert into areas values('12005', '新华区', '12001');

    说明:

    source 表示执行的sql文件

    自连接查询的用法:

    select c.id, c.title, c.pid, p.title from areas c inner join areas p on c.pid = p.id;

    说明:

    自连接查询必须对表起别名

    MySQL高级查询语法是什么

    六、子查询

    在一个select语句中,嵌入了另外一个select语句,那么被嵌入的select语句称之为子查询语句,外部的那个select语句则称为主查询

    主查询和子查询的关系:

    子查询是嵌入到主查询中子查询是辅助主查询的,要么充当条件,要么充当数据源子查询是可以独立存在的语句,是一条完整的select语句

    查询大于平均年龄的学生:

    select * from students where age > (select avg(age) from students);

    MySQL高级查询语法是什么

    查询学生在班的所有班级名字:

    select name from classes where id in (select c_id from students where c_id is not null);

    MySQL高级查询语法是什么

    查找年龄最大,身高最高的学生:

    select * from students where age=(select max(age) from students) and height=(select max(height) from students);
    可以简写为:
    select * from students where (age,height) = (select max(age), max(height) from students);

    MySQL高级查询语法是什么

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 MySQL
    相关文章 更多
    navicat导入数据库步骤详解及常见问题处理教程
    navicat导入数据库步骤详解及常见问题处理教程

    详解Navicat导入数据库的标准步骤,涵盖SQL脚本执行与CSV数据导入两种核心场景。针对导入过程中常见的字符集乱码、主键冲突及外键约束错误,提供具体的设置方法与修复建议,确保数据迁移准确无误。

    SQL主键约束和唯一约束有什么区别
    SQL主键约束和唯一约束有什么区别

    深入理解SQL PRIMARY KEY与UNIQUE约束的区别。文章从行标识与重复限制的目标出发,详解主键的非空特性、外键引用角色以及多数据库对NULL值的处理差异。结合users表实战示例,指导开发者如何根据字段稳定性与业务语义合理选择约束类型,避免设计误区。

    SQL约束有哪些类型及作用
    SQL约束有哪些类型及作用

    刚开始设计关系型数据库?了解PRIMARY KEY、FOREIGN KEY、UNIQUE、NOT NULL、CHECK、DEFAULT等约束的作用、语法和排错方法。本文以PostgreSQL语法为主,结合用户订单场景,清晰展示如何防止脏数据并处理常见约束冲突。

    SQL游标常见错误排查:死锁与资源未释放问题
    SQL游标常见错误排查:死锁与资源未释放问题

    深入解析SQL游标导致的死锁与资源未释放问题。通过PostgreSQL与MySQL语法对比,展示如何识别长事务持锁、分析锁等待链,并提供短事务提交、异常清理及批量处理的最佳实践,确保数据库连接与锁资源及时释放。

    SQL中怎么创建和删除约束
    SQL中怎么创建和删除约束

    后端开发者在维护数据库时,常需对现有表添加主键、唯一或外键约束。若直接执行ADD CONSTRAINT,往往因存量数据不合规导致报错。本文详解操作前的数据清洗步骤、标准SQL语法及MySQL等特殊写法,帮助你在生产环境安全完成结构变更。

    SQL分组统计查询:GROUP BY与HAVING子句用法示例
    SQL分组统计查询:GROUP BY与HAVING子句用法示例

    针对 SQL 初学者的分组统计实战指南。深入解析 GROUP BY 分组机制、WHERE 与 HAVING 的执行时机差异,以及 COUNT 函数对 NULL 值的处理逻辑。通过具体代码示例演示如何正确筛选聚合结果,并排查因 JOIN 连接导致的统计数据异常,提升报表准确性。

    SQL Server与MySQL游标基本语法及完整代码示例
    SQL Server与MySQL游标基本语法及完整代码示例

    本文详细对比SQL Server和MySQL中游标的基本用法。从DECLARE声明到FETCH遍历,再到CLOSE关闭与DEALLOCATE/Handler清理,解析两者在语法结构、变量接收及异常处理上的核心差异。通过标准代码示例展示如何安全使用游标,避免资源泄漏,适用于需要进行数据库存储过程开发或跨平台迁移的开发者。

    SQL多表连接区别:INNER JOIN与LEFT JOIN的使用场景
    SQL多表连接区别:INNER JOIN与LEFT JOIN的使用场景

    深入解析SQL中INNER JOIN与LEFT JOIN的核心区别。通过users和orders表实例,展示匹配行保留与NULL补位机制,重点讲解ON与WHERE子句中放置右表过滤条件的不同后果,提供防止LEFT JOIN退化的实战技巧及行数异常排查步骤。

    SQL CHECK约束的用法与取值范围限制
    SQL CHECK约束的用法与取值范围限制

    深入理解 SQL CHECK 约束在 PostgreSQL、MySQL 等数据库中的实现差异。文章通过订单业务场景,讲解如何定义单列范围与多列逻辑约束,分析 NULL 值对布尔条件的影响,并提供修改已有表结构时的安全操作建议,帮助开发者构建更健壮的数据完整性防线。

    SQL外键约束怎么用及级联操作说明
    SQL外键约束怎么用及级联操作说明

    后端开发中,如何正确使用 SQL 外键约束来维护订单与明细表的关系?本文通过 PostgreSQL 示例,深入讲解外键的创建语法、插入顺序要求,以及 ON DELETE CASCADE、RESTRICT、SET NULL 等策略的实际影响与风险控制,助你构建健壮的数据库结构。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。