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

MySQL基础-单表查询

语法

select [distinct] 列名1,列名2 as 别名...
from数据表名
where组前筛选
group by分组字段
having组后筛选
order by排序的列 [asc | desc]
limit 起始索引,数据条数

测试数据

# 建测试表
create table products
(id          int primary key auto_increment, -- 商品idname        varchar(24)    not null,        -- 商品名称price       decimal(10, 2) not null,        -- 商品价格score       decimal(5, 2),                  -- 商品评分,可以为空is_self     varchar(8),                     -- 是否自营category_id int                             -- 商品类别id
);create table category
(id   int primary key auto_increment, -- 商品类别idname varchar(24) not null            -- 类别名称
);# 添加测试数据
insert into category
values (1, '手机'),(2, '电脑'),(3, '美妆'),(4, '家居');insert into products
values (1, '华为mate50', 5499.00, 9.70, '自营', 1),(2, '荣耀80', 2399.00, 9.50, '自营', 1),(3, '荣耀80', 2199.00, 9.30, '非自营', 1),(4, '红米note 11', 999.00, 9.00, '非自营', 1),(5, '联想小新14', 4199.00, 9.20, '自营', 2),(6, '惠普战66', 4499.90, 9.30, '自营', 2),(7, '苹果air13', 6198.00, 9.10, '非自营', 2),(8, '华为matebook14', 5599.00, 9.30, '非自营', 2),(9, '兰蔻小黑瓶', 1100.00, 9.60, '自营', 3),(10, '雅诗兰黛粉底液', 920.00, 9.40, '自营', 3),(11, '阿玛尼红管405', 350.00, null, '非自营', 3),(12, '迪奥996', 330.00, 9.70, '非自营', 3);

简单查询

-- ---------------------- 案例1: 简单查询 ----------------------
-- 1. 查看表中所有的数据.
select id, name, price, score, is_self, category_id from products;
select * from products;     # 效果同上-- 2. 查看指定列, 例如: 商品名, 价格
select name, price from products;-- 3. 给列, 表起别名.
select name as 商品名, price as 商品单价, is_self from products as p;
select name as 商品名, price 商品单价, is_self from products  p;  # 细节1: as可以省略不写
select name as 商品名, price 商品单价, is_self from products  p;  # 细节2: 别名和关键字重名要加反引号``
select name as `desc`, price 商品单价, is_self from products  p;  # 细节2: 别名和关键字重名要加反引号``-- 4. 去重查询. distinct,  查看所有商品的类别.
select distinct category_id from products;
select distinct category_id, is_self from products;     # 细节: distinct后边有多列, 则是把多列作为1个整体来去重的.

条件查询

条件运算符:

  1. 比较运算符:=、>、=、

select * from products where price > 4199; -- 查询价格大于4199的手机

select * from products where price != 4199; -- 查询价格不等于4199的手机信息

select * from products where price <> 4199; -- 查询价格不等于4199的手机信息

  1. 逻辑运算符:AND(并且)、OR(或者)、NOT(非、取反)

select * from products where price > 2000 and price

select * from products where price =4000; -- 查询价格在2000之下的手机信息和4000之上的手机信息

select * from products where not (price =4000); -- 查询价格在2000到4000的手机信息

not的意思是给条件取反

  1. LIKE模糊查询

select * from products where name like '荣耀%' ; -- 查询名称以荣耀开头的手机信息

select * from products where name like '%mate%'; -- 查询名称包含mate的手机信息

select * from products where name like '%1_'; -- 查询名称倒数第二位是1的手机信息

  1. 范围查询

select * from products where price between 2000 and 4000;-- 查询价格在2000到4000的手机信息

select * from products where price in (2199, 2399); -- 查询价格2199, 2399的手机信息

  1. 空值判断:IS NULL 和 IS NOT NULL

注意:空值的判断一定不能使用 = 或 !=

select * from products where score is null; -- 查询score为null的手机信息

select * from products where score is not null; -- 查询score不为null的手机信息

常用的聚合函数

注意:聚合函数的计算会忽略NULL值

COUNT(col):求指定列的总记录数

count:计数;

select count(*) from products; -- 查询总共有多少行

面试题:count(*),count(1),count(列) 区别

却别1:count(列)不会统计null值,count(*),count(1) 会统计null值

却别2:效率问题,count(主键列)> count(1)>count(*)>count(列)

MAX(col):求指定列的最大值

maximum:最大值;

注意:如果统计的是字符串,则返回字符串长度最大的列

MIN(col):求指定列的最小值

minimum:最小值;

SUM(col):求指定列的和

sum:总和;

AVG(col):求指定列的平均值

average:平均数;

注意:平均数小数比较多,需要保留特定位数,可以使用round(1234.12,2)

select round(avg(price),2) as round2_avg_price from table_name;

select max(price), min(price),round(avg(price),2),sum(price) from products; -- 依次查询最高价格,最低价格,价格平均值,价格总量

排序

  • asc 升序排序
  • desc 降序排序

select * from products order by score desc , price asc ; # 按score 降序,price 升序

select * from products order by price asc; --按价格升序排列

select * from products order by price desc; --按价格降序排列

select * from products order by category_id asc, score desc; --先按category_id升序排列,如果category_id相同则安score降序排列

分组查询

注意:分组查询的查询列,只能出现:分组字段,聚合函数

select

分组字段1,分组字段2, ... ... ,

聚合函数1,聚合函数2, ... ...

from table_name

group by 分组字段1,分组字段2, ... ...

select category_id,count(*) as '每组个数' from products group by category_id ; -- 分组查询,综管有三组,并显示出每组的个数

再强调下,select 后面跟的列只能是后面group by 用的列,与聚合函数。

select

count(*) as '每组个数',

round(avg(price),2) as '每组价格平均数',

max(price) as '每组最高价格',

min(price) as '每组最低价格'

from products group by category_id ;

-- 这个查询是不是就有意义了。

having 和 where 有什么区别

having 是对分组聚合之后的结果进行过滤,where是在对分组前的数据进行过滤

where -> group by ->聚合 -> habing

having 后面可以使用聚合函数(统计函数),where后面不可以使用聚合函数

select

count(*) as '每组个数',

round(avg(price),2) as '每组价格平均数',

max(price) as '每组最高价格',

min(price) as '每组最低价格'

from products group by category_id having max(price) < 3000; --这里的max(price) 可以写成 【每组最高价格】不能写成 【'每组最高价格'】

-- 查询出每组最高价格小于3000 的统计信息

limit

1、起始索引默认是从0开始,如果你写的代码起始索引为0,则可以不写

 select * from products limit 2; -- 查询前两行数据

select * from products limit 1,1; -- 查询跳过第一行后的一个数据

这个分页自己学习试试,有什么不明白的可以留言

查询某也数据:limit (页数-1)*页条数,页条数

求总页数:

方法一:(总条数+页条数-1) / 页条数

方法二:

总行数%页条数>0 总行数/条数+1

总行数%页条数=0 总行数/条数

方法三:ceil (总条数/总行数)

常用函数

round(1234.1234,12,2) #四舍五入,保留2位小数

ceil(123.111) #向下取整,舍去小数

相关文章:

MySQL基础-单表查询

语法 select [distinct] 列名1&#xff0c;列名2 as 别名... from数据表名 where组前筛选 group by分组字段 having组后筛选 order by排序的列 [asc | desc] limit 起始索引&#xff0c;数据条数 测试数据 # 建测试表 create table products (id int primary key a…...

Web安全之SQL注入---基础

文章目录 SQL注入简介SQL注入基础SQL注入分类SQL注入流程 SQL注入简介 什么是SQL注入&#xff1f; SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严&#xff0c;攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句&#xff0c;在管理…...

MongoDB笔记03-MongoDB索引

文章目录 一、前言1.1 概述1.2 MongoDB索引使用B-Tree还是BTree&#xff1f;1.3 B 树和 B 树的对比1.4 总结 二、索引的类型2.1 单字段索引2.2 复合索引2.3 其他索引 三、索引的管理操作3.1 索引的查看3.2 索引的创建3.2.1 单字段索引3.2.2 复合索引 3.3 索引的移除3.3.1 指定索…...

Docker基础(一)

Docker 简介 常用命令 镜像 #搜索镜像 docker search nginx #下载镜像 docker pull nginx #下载指定版本镜像 docker pull nginx:1.26.0 #查看所有镜像 docker images #删除指定id的镜像 docker rmi e784f4560448 # 删除多个镜像 docker rmi bde7d154a67f 94543a6c1aef e784…...

解决 IntelliJ IDEA Maven 项目 JDK 版本自动变为 1.5 的问题

一、问题描述 在使用 IntelliJ IDEA 创建 Maven 项目时&#xff0c;经常会遇到一个问题&#xff1a;项目的默认编译版本被设置为 JDK 1.5&#xff0c;即使系统中安装的是更高版本的 JDK。这不仅会导致编译时出现警告&#xff0c;还可能引起兼容性问题。每次手动修改编译版本后…...

SDL事件相关

文章目录 事件相关的函数和数据结构用户自定义事件代码相关&#xff1a; 事件相关的函数和数据结构 SDL_WaitEvent :等待一个事件SDL_PushEvent 发送一个事件SDL_PumpEvents(): 将硬件设备产生的时间放入事件队列 &#xff0c;用于读取事件&#xff0c;在调用该函数之前&#…...

探索App Intents:让你的应用与Siri无缝互动的新方式

苹果推出了一个新框架——App Intents&#xff0c;使开发者可以在iOS 18.2、macOS 15.2等平台上集成Siri和Apple Intelligence&#xff0c;实现对应用内容的读取和操作。 App Intents使应用的功能和内容能无缝融入系统体验中&#xff0c;例如Siri、Spotlight搜索、快捷指令和小…...

冒泡排序法

编写程序实现冒泡排序。 相关知识 为了完成本关任务&#xff0c;要了解冒泡法排序的算法思想&#xff1a; 对所有相邻记录的关键字值进行比较&#xff0c;如果是逆序则将其交换&#xff0c;最终达到有序化&#xff0c;其处理过程为&#xff1a; 将整个待排序的记录序列划分成…...

MATLAB 将fig格式另存为可编辑的eps格式,但乱码问题解决

fig格式图像正常&#xff0c;但通过手动导出后的eps格式图像导入到AI中会乱码&#xff0c;如下图所示 一、主要问题应该是: 文件名中的字符和格式受到了操作系统和文件系统的限制&#xff0c;具体而言是 figure 的Name 属性中包含了特殊字体或字符&#xff08;如逗号&#xff…...

Hadoop:单节点配置YARN

目录 一、Hadoop YARN介绍 二、单节点配置YARN 2.1 配置yarn-site.xml 文件 2.2 配置 mapred-site.xml 文件 2.3 启动 Hadoop 和 YARN 2.4 浏览器访问 三、YARN的常用命令 3.1 启动和停止 YARN 3.2 查看和管理应用程序 3.3 查看和管理节点 3.4 查看和管理队列 3.5 …...

【前端】Svelte:组件间通信

在 Svelte 中&#xff0c;组件间的通信主要通过 props 和事件机制来实现。父组件可以向子组件传递数据&#xff0c;子组件也可以通过事件将信息反馈给父组件。在本教程中&#xff0c;我们将深入了解 Svelte 的组件通信机制&#xff0c;包括 props 和事件的使用方法、事件监听、…...

数学建模-----假设性检验引入+三个经典应用场景(三种不同的假设性检验类型)

文章目录 1.假设检验的过程1.1问题的提出1.2证据的引入1.4做出结论 2.案例二&#xff1a;汽车引擎排放2.1进行假设2.2假设检验的类型2.3抽样分布的类型2.4单尾&#xff08;双尾&#xff09;检验2.5t检验 3.案例三&#xff1a;特鲁普效应3.1统计显著和效果显著3.2心理学现象3.3进…...

Unity——对RectTransform进行操作

文章目录 前言在Unity中对RectTransform进行操作是处理UI布局和动画的关键部分。下面是一些常见的操作及其代码示例&#xff0c;可以帮助你在脚本中灵活地控制UI元素的位置、大小和锚点。 一、获取和设置位置二、获取和设置大小1.设置大小&#xff08;Size Delta&#xff09; 三…...

使用jmeter查询项目数据库信息,保存至本地txt或excel文件1108

知识点1&#xff1a;使用jmeter把项目数据库的数据导出&#xff0c;并使用jmeter导出数据库的数据 步骤1&#xff1a;使用jmeter把项目数据库的数据导出 &#xff08;1&#xff09;测试计划-添加- 线程组setUp线程组 setUp线程组&#xff1a;添加-配置元件-JDBC Connection …...

ubuntu 22.04 server 安装 mysql 5.7.40 更改 datadir 目录 LTS

ubuntu 22.04 server 安装 mysql 5.7.40 更改 datadir 目录 LTS 参考 ubuntu 22.04 server 安装 mysql 5.7.40 LTS https://blog.csdn.net/wowocpp/article/details/143564015 vip Ubuntu中修改MySQL5.7数据存储路径 https://www.cnblogs.com/jiaojiner/p/15236639.html u…...

网站架构知识之Ansible进阶2(day023)

1.include文件 应用场景: 1个ansible剧本内容过多,涉及到多个play(- host:web),可读性变弱&#xff0c;不方便调试。 于是人们想出把单个大的剧本拆分为多个小的剧本&#xff0c; 多个小的剧本可以通过include功能合并使用。 使用方法&#xff0c;书写好对应的剧本文件&#…...

Java 中的 Function:让转换逻辑更灵活

文章目录 1. Function 基础&#xff1a;简化转换逻辑2. 组合 Function&#xff1a;实现多步转换3. 配合 Stream 使用&#xff1a;简化数据转换4. 自定义 Function&#xff0c;封装复杂转换5. 使用 identity() 提供默认转换6. 结合 Optional&#xff0c;实现动态数据转换7. 用于…...

10. java基础知识(下)

文章目录 一、一带而过二、字符串类型String1. 简单了解2. 关于结束符\03. 自动类型转换与强制类型转换 三、API文档与import导包1. API文档2. import导包 四、java中的数组1. 创建2. 遍历3. 补充4. Arrays类① 简单介绍② 练习 五、方法的重载六、规范约束七、内容出处 一、一…...

kafka 在Linux安上的装部署

一、前言 Kafka 是一个分布式流处理平台&#xff0c;在大数据领域有着广泛的应用。在 Linux 系统上安装部署 Kafka 可以为我们搭建高效的数据处理环境。本教程将详细介绍在 Linux 中安装和部署 Kafka 的步骤。 二、准备工作 2.1 系统要求 确保你的 Linux 系统已经安装并配置…...

kill-start系统进程的研究

kill/start系统进程的研究 声明&#xff1a;内容的只是方便各位师傅学习知识&#xff0c;以下网站只涉及学习内容&#xff0c;其他的都与本人无关&#xff0c;切莫逾越法律红线&#xff0c;否则后果自负。 目录 kill/start系统进程的研究Windows系统进程简介特点系统进程 tas…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

GitHub 趋势日报 (2025年06月06日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...