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) #向下取整,舍去小数

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

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

相关文章

【Linux】Linux管道揭秘:匿名管道如何连接进程世界

&#x1f308;个人主页&#xff1a;Yui_ &#x1f308;Linux专栏&#xff1a;Linux &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1f308;数据结构专栏&#xff1a;数据结构 &#x1f308;C专栏&#xff1a;C 文章目录 1.什么是管道 &#xff1f;2. 管道的类型2.1 匿…

前端学习Day13 CSS盒子的定位(固定定位篇“附练习”)

一、固定定位 固定定位 &#xff08;position:fixed&#xff09;其实是绝对定位的子类别&#xff0c;一个设置了 position:fixed 的元素是相对于视窗固定的&#xff0c;就算页面文档发生了滚动&#xff0c;它也会一直待在相同的地方。 ⚠️&#xff1a;固定定位会脱离文档流。…

Linux云计算 |【第五阶段】CLOUD-DAY9

主要内容&#xff1a; Metrics资源利用率监控、存储卷管理&#xff08;临时卷ConfitMap、EmptyDir、持久卷HostPath、NFS(PV/PVC)&#xff09; 一、Metrics介绍 metrics是一个监控系统资源使用的插件&#xff0c;可以监控Node节点上的CPU、内存的使用率&#xff0c;或Pod对资…

BM25:最佳匹配 ,文本相关性评分算法

目录 BM25:最佳匹配 一、BM25算法原理 二、BM25算法的应用场景 三、BM25算法的举例说明 BM25:最佳匹配 BM25(Best Matching 25)是一种在信息检索领域中广泛使用的文本相关性评分算法。它基于概率模型,考虑了词频(Term Frequency,TF)、逆文档频率(Inverse Documen…

论文阅读笔记:Image Processing GNN: Breaking Rigidity in Super-Resolution

论文阅读笔记&#xff1a;Image Processing GNN: Breaking Rigidity in Super-Resolution 1 背景2 创新点3 方法4 模块4.1 以往SR模型的刚性4.2 图构建4.2.1 度灵活性4.2.2 像素节点灵活性4.2.3 空间灵活性 4.3 图聚合4.4 多尺度图聚合模块MGB4.5 图聚合层GAL 5 效果5.1 和SOTA…

【游戏引擎之路】登神长阶(十二)——DirectX11教程:If you‘re going through hell, keep going!

【游戏引擎之路】登神长阶&#xff08;十二&#xff09;——DirectX11教程&#xff1a;If youre going through hell, keep going! 2024年 5月20日-6月4日&#xff1a;攻克2D物理引擎。 2024年 6月4日-6月13日&#xff1a;攻克《3D数学基础》。 2024年 6月13日-6月20日&#x…

编写虚拟的GPIO控制器的驱动程序:和pinctrl的交互使用

往期内容 本专栏往期内容&#xff1a; Pinctrl子系统和其主要结构体引入Pinctrl子系统pinctrl_desc结构体进一步介绍Pinctrl子系统中client端设备树相关数据结构介绍和解析inctrl子系统中Pincontroller构造过程驱动分析&#xff1a;imx_pinctrl_soc_info结构体Pinctrl子系统中c…

toolkit二次开发学习之程序集(ProAsmcomp)和装配体组件路径对象(ProAsmcomppath)

程序集ProAsmcomp可以理解为装配体组件对象。 对象ProAssembly是ProSolid的一个实例&#xff0c;并共享相同的声明。因此&#xff0c;ProAssembly对象可以作为适用于装配体的任何ProSolid和ProMdl函数的输入。特别是&#xff0c;因为你可以使用函数ProSolidFeatVisit()来遍历特…

【启程Golang之旅】深入理解 Protocol Buffers 及其应用

如果你是 Go 语言的开发者&#xff0c;理解如何在 Go 中使用 Protobuf&#xff0c;将帮助你大幅提升数据传输的效率&#xff0c;并实现更高性能的系统设计。 本篇文章将深入探讨 Go 语言中使用 Protobuf 的基础知识、常见应用以及最佳实践&#xff0c;带你一步步了解如何在项目…

Intent介绍#1

Intent 它是Android里非常重要的角色&#xff0c;基本上是核心人物。 能做的 startActivity --> 启动activitybroadcastIntent -> BroadcastContext.startService(Intent) Context.bindService(Intent, BindServiceFlags, Executor, ServiceConnection) -> Service…

鸿蒙开发案例:七巧板

【1】引言&#xff08;完整代码在最后面&#xff09; 本文介绍的拖动七巧板游戏是一个简单的益智游戏&#xff0c;用户可以通过拖动和旋转不同形状的七巧板块来完成拼图任务。整个游戏使用鸿蒙Next框架开发&#xff0c;利用其强大的UI构建能力和数据响应机制&#xff0c;实现了…

(61)使用LMS算法估计线性预测器并计算估计误差的MATLAB仿真

文章目录 前言一、仿真说明二、仿真代码三、仿真结果1.LMS自适应滤波器权向量更新曲线2.LMS自适应滤波器算法学习曲线3.期望信号与LMS自适应滤波器输出信号 前言 本文介绍了LMS自适应滤波器对线性预测器系统权系数的估计&#xff0c;进行100次独立实验&#xff0c;计算平均估计…

313页电力集团大数据应用支撑平台技术支撑服务项目技术投标方案

▲关注智慧方案文库&#xff0c;学习9000多份最新解决方案&#xff0c;其中 PPT、WORD超过7000多份 &#xff0c;覆盖智慧城市多数领域的深度知识社区&#xff0c;稳定更新4年&#xff0c;日积月累&#xff0c;更懂行业需求。 313页Word大型电力集团大数据应用支撑平台 技术支…

6款IntelliJ IDEA插件,让Spring和Java开发如虎添翼

文章目录 1、SonarLint2、JRebel for IntelliJ3、SwaggerHub插件4、Lombok插件5、RestfulTool插件6、 Json2Pojo插件7、结论 对于任何Spring Boot开发者来说&#xff0c;两个首要的目标是最大限度地提高工作效率和确保高质量代码。IntelliJ IDEA 是目前最广泛使用的集成开发环境…

标准IO的应用

1、使用这fscanf和fprintf两个函数实现文件的拷贝。 #include<myhead.h> int main(int argc, const char *argv[]) {FILE *fp;if((fpfopen("./1.txt","w"))NULL){perror("fopen");return -1;}int num100;printf("num%d\n",num…

CPU Study - Instructions Fetch

参考来源&#xff1a;《超标量处理器设计》—— 姚永斌 N-Way CPU 取指问题 如果CPU可以在每个周期内同时解码N条指令&#xff0c;则此类CPU为N-Way超标量处理器。 N-Way超标量处理器需要每个周期从I-Cache中至少取得N条指令&#xff0c;这N条指令成为一组Fetch Group。 为了…

蓝桥杯真题——三角回文数(C语言)

问题描述 对于正整数 n, 如果存在正整数 k 使得 n123⋯kk(k1)2n123⋯kk(k1)/2​, 则 n 称为三角数。例如, 66066 是一个三角数, 因为 66066123⋯36366066123⋯363 。 如果一个整数从左到右读出所有数位上的数字, 与从右到左读出所有数位 上的数字是一样的, 则称这个数为回文数…

string模拟实现构造+析构

个人主页&#xff1a;Jason_from_China-CSDN博客 所属栏目&#xff1a;C系统性学习_Jason_from_China的博客-CSDN博客 所属栏目&#xff1a;C知识点的补充_Jason_from_China的博客-CSDN博客 string模拟实现构造 方案1&#xff08;初始化列表的实现&#xff09;&#xff1a; 这…

yolov8涨点系列之Concat模块改进

文章目录 Concat模块修改步骤(1) BiFPN_Concat3模块编辑(2)在__init_.pyconv.py中声明&#xff08;3&#xff09;在task.py中声明yolov8引入BiFPN_Concat3模块yolov8.yamlyolov8.yaml引入C2f_up模块 在YOLOv8中&#xff0c; concat模块主要用于将多个特征图连接在一起。其具体…

基于Spring Boot和Vue的电子商城系统功能设计

基于Spring Boot和Vue的电子商城系统功能设计 该系统是一个基于Spring Boot和Vue框架的电子商城平台&#xff0c;包含前台商城和后台管理系统。系统功能设计包括用户购物体验和管理员管理功能&#xff0c;支持商品的分类展示、收藏、购物车和订单管理等模块。以下是系统功能的简…