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

MYSQL基础(大模型基础准备2/3)

📘 MySQL查询语句完整指南

一、条件查询

  1. 范围查询
    连续区间查询(between and)
    select * from 表名 where 列名 between 值1 and 值2;
    示例:查询价格在1000到5000之间的商品
    select * from product where price between 1000 and 5000;
    不连续区间查询(in)
    select * from 表名 where 列名 in (值1, 值2, ...);
    select * from 表名 where 列名 not in (值1, 值2, ...);
    示例:查询分类为1、3、5的商品
    select * from product where category_id in (1, 3, 5);

  2. 模糊查询(like)
    一个'':一个下划线代表任意一个字符
    一个'%':一个百分号代表任意多个字符(0个到无数个)
    select * from 表名 where 列名 like '模式';
    示例:
    -- 查询姓"张"的员工(名字两个字)
    select * from emp where name like '张
    ';
    -- 查询名字中带"小"的员工
    select * from emp where name like '%小%';
    -- 查询手机号以138开头的用户
    select * from user where phone like '138%';

  3. 逻辑运算符
    运算符 说明 示例
    and 逻辑与(且) where 条件1 and 条件2
    or 逻辑或(或) where 条件1 or 条件2
    not 逻辑非(取反) where not 条件

  4. 空值判断(重要!)
    ⚠️重点:判断空值只能用is null或is not null,不能用= null或!= null
    -- 正确写法
    select * from 表名 where 列名 is null;
    select * from 表名 where 列名 is not null;
    -- 错误写法(查不到结果)
    select * from 表名 where 列名 = null;

二、排序查询
语法
select * from 表名 order by 列名1 [asc|desc], 列名2 [asc|desc];
说明
asc:升序(从小到大),默认值
desc:降序(从大到小)
示例
-- 按价格升序排列
select * from product order by price;
-- 按价格降序排列
select * from product order by price desc;
-- 多字段排序:先按分类升序,再按价格降序
select * from product order by category_id asc, price desc;

💡 面试小知识
desc有两种用法:
1.desc 表名:查看表结构(describe的缩写)
2.order by 列名 desc:降序排列(descend的缩写)

三、聚合查询

  1. 什么是聚合函数?
    聚合函数是对某一列数据进行计算,返回一个单一的值。

  2. 常用聚合函数
    函数 说明
    count(*) 统计总行数
    sum(列名) 求和
    avg(列名) 求平均值
    max(列名) 求最大值
    min(列名) 求最小值

  3. 使用示例
    -- 统计商品总数
    select count(*) from product;
    -- 统计所有商品的总价格
    select sum(price) from product;
    -- 统计商品的平均价格
    select avg(price) from product;
    -- 查询最贵的商品价格
    select max(price) from product;

💡 面试重点:三种count的区别
写法 说明 特点
count() 统计所有行 包括null,性能最好
count(1) 统计所有行 包括null,和count(
)差不多
count(列名) 统计该列非null的行数 不包括null值
实际开发中,count(*)和count(主键)用得最多。

四、分组查询

  1. 基本语法
    select 分组字段, 聚合函数(字段)
    from 表名
    [where 条件] -- 分组前筛选
    group by 分组字段
    [having 条件] -- 分组后筛选
    [order by 字段]; -- 排序

  2. 执行顺序(重要!)
    1.先执行where筛选数据
    2.然后group by分组
    3.接着执行聚合函数
    4.再执行having筛选分组
    5.最后order by排序

  3. 示例
    -- 查询每个分类的商品数量
    select category_id, count() as 商品数量
    from product
    group by category_id;
    -- 查询商品数量大于5的分类
    select category_id, count(
    ) as 商品数量
    from product
    group by category_id
    having count(*) > 5;

  4. where vs having
    关键字 作用时机 能否使用聚合函数
    where 分组前筛选 ❌ 不能
    having 分组后筛选 ✅ 能

五、分页查询

  1. 为什么需要分页?
    ✅ 降低服务器压力
    ✅ 降低浏览器端压力
    ✅ 提高用户体验

  2. 语法
    select * from 表名 limit 起始索引, 每页条数;
    💡 小知识:表中每条数据都有自己的索引(也叫下标),从0开始。

  3. 分页四要素
    参数 计算公式
    数据总条数 select count(*) from 表名
    每页显示条数 产品经理/项目经理确定
    起始索引 (当前页 - 1) × 每页条数
    总页数 (总条数 + 每页条数 - 1) ÷ 每页条数

  4. 示例
    -- 第1页:每页10条
    select * from product limit 0, 10;
    -- 第2页:每页10条
    select * from product limit 10, 10;
    -- 第3页:每页10条
    select * from product limit 20, 10;

六、去重查询

  1. 基本语法
    select distinct 列名1, 列名2, ...
    from 表名;
  2. 使用示例
    -- 查询所有不重复的分类
    select distinct category_id from product;
    -- 查询所有不重复的(分类, 品牌)组合
    select distinct category_id, brand from product;
    ⚠️ 注意:多列去重时,多列的值都相同才算重复。
  3. 配合count使用
    -- 统计有多少个不同的分类
    select count(distinct category_id) from product;
  4. distinct vs group by
    -- distinct:简单去重
    select distinct category_id from product;
    -- group by:也能去重,但主要用于分组统计
    select category_id from product group by category_id;
  5. 关于NULL
    DISTINCT会把NULL也当作一个值,多个NULL只保留一个。

七、多表查询与外键约束

  1. 表关系的三种类型
    一对多(最常见)
    判断方法:A表一条记录对应B表多条,B表一条对应A表一条
    建表原则:在"多"的一方添加外键,指向"一"的一方的主键
    -- 分类表(一)
    create table category (
    id int primary key auto_increment,
    name varchar(50)
    );
    -- 商品表(多)
    create table product (
    id int primary key auto_increment,
    name varchar(100),
    category_id int,
    foreign key (category_id) references category(id)
    );
    多对多
    判断方法:A表一条对应B表多条,B表一条也对应A表多条
    建表原则:创建中间表,包含两个外键
    -- 中间表
    create table student_course (
    student_id int,
    course_id int,
    primary key (student_id, course_id),
    foreign key (student_id) references student(id),
    foreign key (course_id) references course(id)
    );
    一对一
    判断方法:A表一条对应B表一条,B表一条也对应A表一条
    建表原则:任意一方添加外键并加唯一约束

  2. 外键约束操作
    -- 添加外键约束
    alter table 表名 add constraint 约束名
    foreign key (外键列) references 主表(主键列);
    -- 删除外键约束
    alter table 表名 drop foreign key 约束名;

  3. 💡 扩展知识
    联合主键:多个字段共同作为主键
    伪主键:没有实际意义,只是用来唯一标识一条记录的字段(如自增id)

总结:查询语句完整格式
select [distinct] 列名
from 表名
[where 条件] -- 分组前筛选
[group by 分组字段] -- 分组
[having 条件] -- 分组后筛选
[order by 字段] -- 排序
[limit 起始索引, 条数]; -- 分页

http://www.jsqmd.com/news/442353/

相关文章:

  • 2026年质量好的医院心理科设备品牌推荐:医院心理科设备配置标准行业公司推荐 - 品牌宣传支持者
  • 读2025世界前沿技术发展报告03信息技术及产业发展(下)
  • 2026年热门的三缸雪融机厂家推荐:单缸雪融机/全自动雪融机品牌厂家推荐 - 品牌宣传支持者
  • 2026年靠谱的医院心理科设备清单品牌推荐:医院心理科设备采购/医院心理科设备功能介绍/医院心理科设备整体解决方案人气公司推荐 - 品牌宣传支持者
  • 2026年热门的雪融机厂家推荐:三缸雪融机/不锈钢雪融机厂家选择指南 - 品牌宣传支持者
  • 2026年靠谱的特殊学校心理辅导室建设仪器品牌推荐:特殊学校心理辅导室建设方案/特殊学校心理辅导室建设标准/特殊学校心理辅导室建设整体解决方案优质公司推荐 - 品牌宣传支持者
  • 2026年官方八方电子招投标平台湖北公司推荐:湖北八方电子招投标平台口碑优选公司 - 品牌宣传支持者
  • 2026年比较好的特殊学校心理辅导室建设公司推荐:特殊学校心理辅导室建设方案/特殊学校心理辅导室建设设备/特殊学校心理辅导室建设整体解决方案年度精选公司 - 品牌宣传支持者
  • 【课程设计/毕业设计】Java家政预约管理系统源码+开发文档+运行步骤+计算机专业
  • 2026年官方电子招投标平台公司推荐:八方电子招投标平台/八方电子招投标平台湖北/八方电子招投标平台湖北专区人气公司推荐 - 品牌宣传支持者
  • SQL Server数据库服务器内存问题排查
  • 2026年比较好的立式冰淇淋机品牌推荐:全自动冰淇淋机可靠供应商推荐 - 品牌宣传支持者
  • AI可以做广告吗?联系哪家公司 - 品牌2026
  • 2026年靠谱的冰淇淋机公司推荐:三色冰淇淋机/商用冰淇淋机/全自动冰淇淋机品牌厂家推荐 - 品牌宣传支持者
  • 零代码后端平台 XinServer 的结构拆解
  • 2026长沙小红书服务商实测|本地种草不踩坑,真实适配指南 - 亿仁imc
  • 2026年国内口碑好的不锈钢水箱板成型液压机生产线厂家推荐榜单,液压机生产线/水箱板冲压成型/不锈钢板压制成型/自动化生产线集成,不锈钢水箱板成型液压机制造企业有哪些 - 品牌推广师
  • 结伴练瑜伽,氛围感拉满|武汉瑜伽团课,禧悦解锁轻松集体练习新体验 - 冠顶工业设备
  • RA6E2基础-RTC时钟与日历介绍及利用
  • Mybatis控制台打印SQL执行信息(执行方法、执行SQL、执行时间)
  • 2026年口碑好的立式装盒机工厂推荐:食品装盒机/广东装盒机/全自动装盒机优质供应商推荐 - 品牌宣传支持者
  • MongoDB 读写关注设置:一致性与性能的黄金平衡法则
  • 2026年口碑好的喷胶封口装盒机厂家推荐:多功能自动装盒机直销厂家推荐 - 品牌宣传支持者
  • AI广告推广如何选择服务商?怎么联系这些公司 - 品牌2026
  • 2026长沙GEO优化公司实测|精准圈客不浪费,本地服务商真实盘点 - 亿仁imc
  • 2026年知名的猫条多列包装机工厂推荐:多列口服液包装机工厂直供推荐 - 品牌宣传支持者
  • 解决浏览器 WebSocket 认证难题:豆包语音识别的代理方案实践
  • 2026年质量好的包装机工厂推荐:背封多列包装机/多列颗粒包装机/多列粉末包装机实力工厂推荐 - 品牌宣传支持者
  • 怎么样在MySQL上使用备份恢复
  • 从“气老虎”到“智能管家”:起重机吊臂机器人弧焊节气技术实战解析