广告
广告
广告
前言在日常的数据分析和报表开发中,分组统计是非常常见的需求。MySQL 提供了 GROUP BY 语句用于分组统计,而 HAVING 子句则用于分组后的筛选。本文将详细讲解如何在 MySQL 中使用分组、分组的适用场景、实际案例与代码示例,并介绍分组查询如何显示其他字段以及分组后再进行筛选的方法。一、为什么要使用分组统计?当我们需要对某一字段的不同取值进行分类汇总时,就需要用到分组统计。例如,统计每个部门的员工人数、每个商品的销售总额等。二、GROUP BY 的基本用法GROUP BY 用于将查询结果按照一个或多个字段进行分组,通常与聚合函数(如 COUNT、SUM、AVG、MAX、MI...
前言在实际开发中,数据表中经常会出现重复的数据。为了保证数据的准确性和简洁性,我们常常需要对查询结果进行去重操作。MySQL为我们提供了DISTINCT关键字,帮助我们轻松实现数据去重。一、DISTINCT的基本用法DISTINCT用于SELECT语句中,可以去除查询结果中的重复记录。其基本语法如下:SELECT DISTINCT 列名1, 列名2, ... FROM 表名 WHERE 条件;如果只对一个字段去重,则只需写一个字段名。如果对多个字段去重,则只有所有字段值都相同时才会被视为重复。示例1:单字段去重假设有如下用户表users:idnamecity1张三北京2李四上海3王五北京...
前言在MySQL数据库中,SUM 和 AVG 是最常用的聚合函数之一,分别用于对某一列进行求和和求平均值。它们常用于数据统计、报表分析等场景。本文将详细介绍这两个函数的用法,并提供常见案例和示例代码。一、SUM函数——求和1. 基本语法SELECT SUM(列名) FROM 表名 WHERE 条件;2. 示例假设有一个员工表 employees,结构如下:idnamesalary1张三50002李四70003王五6000计算所有员工的工资总和SELECT SUM(salary) AS total_salary FROM employees;结果:total_salary18000按部门统...
起因在MySQL的SQL查询中,GROUP BY语句用于将结果集按照一个或多个列进行分组。早期MySQL版本对GROUP BY的实现较为宽松,允许在SELECT列表中出现未包含在GROUP BY子句中的列,且这些列的值未必唯一或确定。这种宽松的行为可能导致查询结果不可预测,尤其是在分布式或高并发环境下,容易引发数据一致性问题。为了解决这一隐患,MySQL引入了ONLY_FULL_GROUP_BY SQL模式。该模式要求SELECT列表、HAVING、ORDER BY等子句中出现的所有列,要么是GROUP BY子句中的分组列,要么是聚合函数的结果。这样可以保证查询结果的确定性和一致性。适用...
前言在MySQL数据库中,MIN和MAX是两种常用的聚合函数,分别用于获取某一列的最小值和最大值。它们在数据分析、报表统计、业务查询等场景中非常常见。一、MIN和MAX的基本用法MIN(column):返回指定列的最小值。MAX(column):返回指定列的最大值。示例假设有如下员工表employees:idnamesalary1张三80002李四120003王五10000查询最高和最低工资SELECT MIN(salary) AS min_salary, MAX(salary) AS max_salary FROM employees;结果:min_salarymax_salary80...
前言在MySQL数据库中,COUNT函数是最常用的聚合函数之一,主要用于统计表中记录的数量。无论是数据分析、报表统计还是日常开发,COUNT都扮演着不可或缺的角色。1. COUNT函数的基本用法COUNT函数有多种用法,常见的有以下几种:COUNT(*):统计表中所有行的数量(包括NULL值)。COUNT(列名):统计指定列中非NULL值的数量。COUNT(DISTINCT 列名):统计指定列中不同(去重)且非NULL值的数量。示例假设有如下用户表users:idnameemail1张三zhangsan@xx.com2李四NULL3王五wangwu@xx.com1.1 统计总行数SELE...
前言在 MySQL 数据库中,排序是一项非常常见且重要的操作。通过排序,我们可以按照指定的字段对查询结果进行升序或降序排列,从而更方便地分析和展示数据。1. 基本排序用法MySQL 提供了 ORDER BY 语句用于对查询结果进行排序。其基本语法如下:SELECT 字段1, 字段2, ... FROM 表名 ORDER BY 排序字段 [ASC|DESC];ASC:升序排列(默认)DESC:降序排列示例:按年龄升序排列假设 users 表数据如下:idnameage1张三252李四223王五284赵六22SQL 语句:SELECT id, name, age FROM users ORD...
前言MySQL 在日期和时间处理方面提供了丰富的函数和灵活的用法。1. 时间处理函数有哪些?案例与代码示例函数名作用说明示例代码及结果NOW()返回当前日期和时间SELECT NOW(); → 2024-06-01 15:30:00CURDATE()返回当前日期SELECT CURDATE(); → 2024-06-01CURTIME()返回当前时间SELECT CURTIME(); → 15:30:00DATE()提取日期部分SELECT DATE('2024-06-01 15:30:00'); → 2024-06-01TIME()提取时间部分SELECT TIME('2024-06-...
前言MySQL 中的日期和时间类型用于存储日期、时间或两者的组合。合理选择和使用这些类型对于数据的准确性和高效性至关重要。本文将介绍 MySQL 支持的主要日期类型、它们的区别、使用场景、格式化方法,以及重点讲解 TIMESTAMP 与 DATETIME 的区别。MySQL 日期类型一览类型说明DATE仅存储日期(YYYY-MM-DD),不含时间部分TIME仅存储时间(HH:MM:SS),不含日期部分YEAR存储年份(YYYY 或 YY),范围为 1901-2155 或 70-69DATETIME存储日期和时间(YYYY-MM-DD HH:MM:SS),无时区信息TIMESTAMP存储日...
前言MySQL中的SET类型是一种非常实用的数据类型,允许在单个字段中存储多个预定义的选项。它适用于需要在一列中保存多个状态、标签或权限等多选项场景。本文将详细介绍SET类型的用法、相关案例、代码示例,并重点讲解如何利用二进制进行模糊匹配及其底层原理。一、SET类型简介SET类型本质上是一个字符串对象,可以包含0个或多个值,每个值必须从事先定义好的集合中选择。每个SET列最多可以有64个不同的成员。语法示例CREATE TABLE user_tags ( id INT PRIMARY KEY AUTO_INCREMENT, tags SET('sports...
前言在MySQL数据库中,ENUM(枚举)类型是一种特殊的数据类型,用于存储一组预定义的字符串值。它非常适合用于性别、状态、类别等固定选项的数据场景。1. 什么是ENUM类型?ENUM类型允许你为某个字段定义一组可选值,插入数据时只能选择这些值之一。这样可以保证数据的规范性和一致性,防止出现拼写错误或非法数据。2. 创建带有ENUM字段的表假设我们要创建一个用户表(user),其中性别字段(gender)只有“男”、“女”、“保密”三种取值:CREATE TABLE user ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHA...
前言在MySQL中,数值类型用于存储各种数字数据。合理选择和使用数值类型对于数据的准确性、存储效率和后续运算都至关重要。本文将详细介绍MySQL中的数值类型。1. 数值类型总览MySQL的数值类型主要分为两大类:整数类型和小数类型(包括浮点数和定点数)。下表总结了常用的数值类型及其特点:类型字节数有符号范围无符号范围说明TINYINT1-128 ~ 1270 ~ 255极小整数SMALLINT2-32768 ~ 327670 ~ 65535小整数MEDIUMINT3-8388608 ~ 83886070 ~ 16777215中等整数INT/INTEGER4-2147483648 ~ 21...
前言在 MySQL 数据库中,正则表达式(Regular Expression,简称 regex)是一种强大的文本匹配工具,可以帮助我们在查询数据时实现灵活的字符串筛选。本文将介绍 MySQL 中正则表达式的基本用法和常见语法,适合新手入门。一、正则表达式的应用场景模糊查询 :比 LIKE 更灵活,可以匹配复杂的字符串模式。数据清洗 :查找或过滤出符合特定格式的数据,如手机号、邮箱等。批量替换 :配合 REGEXP_REPLACE (MySQL 8.0+)进行字符串替换。二、MySQL 中正则表达式的基本用法MySQL 提供了 REGEXP 或 RLIKE 操作符用于正则匹配。例如:SE...
字符集MySQL 常用的字符集主要有两种:utf8 (又称为 utf8mb3 )utf8mb4早期 MySQL 的 utf8 实际上是 utf8mb3 ,它最多只支持每个字符 3 个字节,无法存储部分特殊字符(如 emoji 表情等需要 4 字节的字符)。因此,推荐直接使用 utf8mb4 ,它完全兼容 utf8 ,并且支持所有 Unicode 字符,包括 emoji 和部分生僻汉字。 现在新项目建议无脑使用 utf8mb4 ,避免后续字符集兼容性问题。排序规则(Collation)如果使用 utf8mb4 ,常用的排序规则有:utf8mb4_unicode_ci :基于 Unicode...
前言最近升级了Prisma依赖后,它会在生成客户端时打印这么一句话:Warning: You did not specify an output path for your `generator` in schema.prisma. This behavior is deprecated and will no longer be supported in Prisma 7.0.0.✔ Generated Prisma Client (v6.6.0) to .\node_modules\.pnpm\@prisma+client@6.6.0_prisma_66ad65b8aa48c66bb...
简介官方介绍:“可乐云”机场成立于2020年,是一款快速稳定的网络加速器。该产品支持主流电脑端一键APP加速,免去了第三方客户端复杂配置的问题。用户可以全时段享受游戏和软件加速,以及解锁全球流媒体内容。“可乐云”机场稳定运营,持续更新,致力于提供更优质的云机场服务。官方介绍完了,现在聊聊我的故事。最近工作时,突然收到一个好友申请,打开一看,原来是广告合作邀请。这让我非常高兴,因为之前申请谷歌广告总是被拒,搞得我很郁闷。想着经济形势不好,能有点额外收入补贴网站也不错,但求助于官方论坛,得到的回复都是些没啥用的建议,真是让人失望。这次终于来了一个广告机会,了解后发现广告商提供的是梯子使用权限...
数据类型类型大小用途与特性示例CHAR0-255字节定长字符串,适合存储固定长度数据,如账号密码。VARCHAR0-65535字节变长字符串,适合存储长度不定的数据,例如用户名、邮件地址。TINYBLOB0-255字节小型二进制数据,适合存储小格式图片或图标。TINYTEXT0-255字节短文本字符串,适合存储简短消息或注释。BLOB0-65535字节中等大小二进制数据,适合存储文档或媒体文件。TEXT0-65535字节长文本数据,适合存储博客文章内容、产品描述。MEDIUMBLOB0-16777215字节中等长度二进制数据,适合存储高分辨率图像。MEDIUMTEXT0-16777215...
前言乘着年底没什么事,把axios和axios-retry的源码简单看了下,总结了下一些最佳实践。axios本身axios有个很便捷的使用方式,就是它既可以作为函数发起请求:axios(),也能通过它身上的属性,如:get、post、delete等来发起对应请求,也可以通过axios.request()来发起更加灵活配置请求,甚至还能通过axios.create()来创建自定义配置的请求实例。为什么它能有这么多请求方式?其实就是axios本身就是axios.request这个方法的bind返回值,当我们import引入这个axios的时候,引入的是request函数。import axi...
前言之前写了一篇 Github Actions 怎么将build的内容发布到 Releases 上,这次想将前端的SPA项目搞一个在线预览的站点,但是又没有经济实力提供一个服务器来进行部署,所以就参考了下一些开源项目,发现他们都是用 Github Pages 来做在线预览的,所以我也想弄一个。本篇文章就不细说基本内容了,想入门的可以看之前那篇:《使用Github Actions打包前端项目并自动上传到Releases》教程我本来的意思是,先用 Actions 打包后,再克隆一个仓库,切换到 Github Pages 的分支,将dsit目录里的内容复制到这个 Github Pages 的...
前言最近在写AI训练器的UI界面,有一个需求就是展示TOML配置,为此就需要用到代码高亮,我之前用过 highlight.js 和 PrismJS,但是在撰写VitePress项目配置时发现了一个新的代码高亮库:shiki。shiki可以省去维护css和html,并且原生就是ESM按需加载,支持多种主题等,已经满足了我对一个代码高亮的需求,为此我去尝试用了下这个,于是有了本篇文章。插件文档:Shiki语法高亮器github:shiki注意事项shiki是按需加载的,它的实现方式就是除了一个主体的js文件,在打包后会有非常多的不同代码语言的解析器脚本文件,但是不用担心,这些脚本文件只有在真...
前言最近终于将常用的设备都替换成了2.5g网口了,为了就是希望局域网看电影的时候,拖拽视频进度条能少卡顿一点,但是发现一个很蛋疼的问题,明明wifi已经是wifi6的极致了,2400mbps了,换算成文件大小怎么也可以300m每秒的文件,但是在内网传输文件的时候发现速度只有10mb,贼难受,想要测试一下速度,发现不知道怎么弄。为此写一篇文章留给有需要的人,也方便自己以后使用。首先我的路由器是ikuai爱快,或者你的路由器支持iperf3这个功能,那么也能照着这个教程来测试内网速度。教程首先我们开启爱快的内网测试功能,如果是支持iperf3的路由器,自行去开启这个功能。找到:应用工具 --...
需求想实现网络层完整的翻墙处理,除了旁路由的方式,我们还可以通过爱快的双wan口来实现,爱快本身实现了双wan口无网自动切换,我们只需要让其中一个wan口是可以翻墙的,并设置为主wan即可。当翻墙的主wan口无法访问时,爱快会切换另一条wan口,从而保持网络畅通,虽然切换的时候会有一小段时间是没有网络的。示意图功能实现[hide]安装PVE首先我们拥有一台多网口的x86设备,并且安装了pve系统,具体的操作就不多说了,基本上就是:下载pve系统iso文件,刻录到U盘,启动,安装,b站有很多教程,随便找一个照着做就行了。这里提供一个脚本,用于给pve显示设备温度和cpu功耗等信息。你需要S...
前言前端的复制功能第一次使用的时候还记忆犹新,那时根本不知道怎么操作,复制它到底是怎么实现的,该怎么去触发,百度查看了不知道多少所谓的复制功能文档,每篇都有不一样的用法,我总想着有一天能搞清楚这些,毕竟现在复制功能已经web功能开发中离不开了。execCommand API浏览器在document对象上暴露了execCommand方法,该方法允许使用者通过输入“命令”的方式来操作 可编辑内容区域 的元素。可编辑内容区域被官方认为是contenteditable="true"的html元素,但按道理,input这些应该也是算可编辑内容区域的。这些都不重要,我们这次关注的...
更改表名ALTER TABLE test RENAME tests;或者:RENAME TABLE test to tests;将test表改成tests表。更改表的字符集比如更改为gbk,不过用的很少,一般创建数据库时就已经定好了,不会再改动。ALTER TABLE tests CHARSET gbk;清空表数据DELETE FROM test;使用delete删除有的软件会提示你没有where条件,是否全部删除,有的不会,这种方式删除会比较慢。我们可以用这种方式:TRUNCATE test;删除表DROP TABLE IF EXISTS test;用if判断下表是否存在,存在则删除。...
前言最近在开发一个Chrome插件,在阅读官方文档时发现它提供的都是js的方式,完全没有工程化的概念,而且插件的版本已经到v3了,v3版本限制了非常多的东西,比如我们使用vue的template渲染,由于vue用到了eval来实现,导致插件会报错,蛋疼的很,总不能写手写render函数吧,太累了。最好的解决办法就是用vite来打包vue项目,这样既可以用vue组件的方式开发,打包时也会将template转换成render函数,从而避免了eval的报错,我们还可以使用到ts和scss这些便利的工具。为此我们搭建一个开发模板需要实现以下功能:支持vite打包支持typescript支持scs...
最近评论