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

6.MySQL基本查询

目录

  • 表的增删查改
    • Insert(插入)
      • 插入替换
      • 插入替换2
    • Retrieve(查找)
      • SELECT 列
        • 全列查找
        • 指定列查询
        • 查询字段为表达式
        • 为查询结果指定别名
        • 结果去重
      • WHERE 条件
      • order by子句
      • 筛选分页结果
    • Update(更新)
    • delete(删除)
      • 删除数据
      • 截断表
    • 插入查询结果
    • 聚合函数
    • 分组聚合
      • group by子句的使用(包含oracle 9i的经典测试表)

表的增删查改

表的增删查改也可简写为CRUD:Create(创建),Retrieve(读取),Update(更新),Delete(删除)

Insert(插入)

语法:

INSERT[INTO] table_name [(column [, column] ...)] VALUES (value_list) [, (value_list)]...
value_list: value, [, value] .. 

示例:
在这里插入图片描述
在这里插入图片描述
也可以多列插入

插入替换

如果插入时,已经存在了,希望能更改原来的内容,而不是直接报错拦截。

语法:

INSERT ... ON DUPLICATE KEY UPDATE column = value [, column = value] ...

示例:
在这里插入图片描述

插入成功后会返回 2 rows affected,这是什么意思呢?
0 rows affected:表中有冲突数据,但冲突数据的值和update的值相等
1 rows affected:表中没有冲突数据,数据被插入
2 rows affected:表中有冲突数据,并且数据已经被更新

插入替换2

语法:

REPLACE INTO table_name [(column [, column] ...)] VALUES (value_list) [, value_list]...

replace的特点
没有冲突,则直接插入;
如果有冲突,则删除后再插入。注意,这里与替换不同。

示例:
没有冲突,则直接插入
在这里插入图片描述
有冲突,则删除后再插入
在这里插入图片描述
可以看到他的id变了,说明不是直接替换,而是删除后再插入。

Retrieve(查找)

语法:

SELECT[DISTINCT] {* | {column [, column] ...}[FROM table_name][WHERE ...][ORDERBY column] [ASC | DESC], ...]LIMIT ...

先创建一个表
在这里插入图片描述

SELECT 列

全列查找

通常情况下不建议使用 * 进行全列查询。因为
1。查询的列越多,意味着需要传输的数据量越大;
2。可能会影响到索引的使用。

示例:
在这里插入图片描述

指定列查询

按照你的需求,从表中拿出数据

示例:
在这里插入图片描述

查询字段为表达式

select后面不仅能跟列属性,也能跟表达式。

示例:
在这里插入图片描述

为查询结果指定别名

有些时候我们查询到结果的时候,想给列名字重命名。

示例:
在这里插入图片描述

结果去重

示例:
在这里插入图片描述

WHERE 条件

有些时候我们想根据我们的需求对结果进行筛选,比如有需求筛选出成绩及格和成绩不及格的。就需要用where条件了,where可以看做我们学C/C++时的if语句。

比较运算符说明
>, >=, <, <=大于,大于等于,小于,小于等于
=等于,操作NULL时不安全,例如NULL=NULL的结果是NULL
<=>等于,NULL安全,例如NULL <=>NULL结果是TRUE(1)
!=, <>不等于
BETWEEN a0 AND a1范围匹配,[a0, a1], 如果a0 <= value <= a1, 返回TRUE(1)
IN (option, …)如果是option中的任意一个,返回TRUE(1)
IS NULL是NULL 返回TRUE(1)
IS NOT NULL不是NULL 返回TRUE(1)
LIKE模糊匹配。%表示任意多个(包括0个)任意字符;_表示任意一个字符
逻辑运算符说明
AND多个条件必须都为TRUE(1),结果才是TRUE(1)
OR任意一个条件为TRUE(1),结果为TRUE(1)
NOT条件为TRUE(1),结果为FALSE(0)

示例:
1.英语不及格的同学及英语成绩 ( < 60 )
在这里插入图片描述

2.语文成绩在[80, 90]分的同学及语文成绩
使用 AND 进行条件连接
在这里插入图片描述
使用 BETWEEN … AND …条件
在这里插入图片描述

3.数学成绩是58或者59或者98或者99分的同学及数学成绩
使用OR进行条件连接
在这里插入图片描述
使用IN条件
在这里插入图片描述

4.姓孙的同学及孙某同学
姓孙的同学

在这里插入图片描述
孙某同学
在这里插入图片描述

5.语文成绩好于英语成绩的同学
在这里插入图片描述

where后面:可以跟表达式,一个列可以和另一个列比较,也可以和常数比较,也可以和字符串比较,也可以模糊匹配。

6.总分在200分以下的同学
在这里插入图片描述
之前不是说可以对列进行重命名吗?那来试一下。
在这里插入图片描述
为什么报错了?报错显示total未找到,未知列。
这是因为select有执行顺序。select的执行顺序到底是怎么样的。
在这里插入图片描述
所以重命名并不能在where中被识别

7.语文成绩 大于 80并且不姓孙的同学
在这里插入图片描述

8.孙某同学,否则要求总成绩 大于 200 并且 语文成绩 小于 数学成绩 并且 英语成绩 大于 80
在这里插入图片描述

order by子句

语法:

--ASC 为升序(从小到大)
--DESC 为降序(从大到小)
--默认为 ASC
SELECT ... FROM table_name [WHERE ...] ORDER BY column [ASC | DESC], [...];

注意:没有ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序

示例:
1.同学及数学成绩,按数学成绩升序显示
在这里插入图片描述

2.查询同学各门成绩,依次按数学降序,英语升序,语文升序的方式显示
解析:以数学降序来排序,如果数学成绩相等则按照英语升序来排序;如果英语成绩相等则按照语文升序来排序
在这里插入图片描述

3.查询同学及总分,由高到低
在这里插入图片描述
之前讲过where后面不能使用别名,为什么这里又能使用别名了?
所以我们还需要搞清楚语句执行的顺序是怎么样的。
1.from 表名
2.where子句筛选条件
3.select筛选出需要哪些属性
4.order by排序
5.最后显示到屏幕

4.查询姓孙的同学或者姓曹的同学数学成绩,结果按数学成绩由高到低显示
在这里插入图片描述

筛选分页结果

语法

-- 起始下标为 0-- 从 0 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;-- 从 s 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;

建议:对未知表进行查询时,最好加一条 LIMIT 1,避免因为表中数据过大,查询全表数据导致数据库卡死

示例:
按 id 进行分页,每页 3 条记录, 分别显示第 1、2、3 页

第 1 页
在这里插入图片描述

第 2 页
在这里插入图片描述

第 3 页
在这里插入图片描述

我们在平时在网页上,鼠标点击页数,在数据库层面就会被转换为以上操作。

Update(更新)

update的时候,本质是先查询出数据,再修改。也就是先把select替换update操作,再进行修改。言外之意就是执行update的顺序是放在最后的。
语法:

UPDATE table_name SET column = expr [, column = expr ...] [WHERE ...] [ORDER BY ...] [LIMIT ...]

示例:
1.将孙悟空同学的数学成绩变更为 80 分
查看原数据
在这里插入图片描述
数据更新
在这里插入图片描述

2.将曹孟德同学的数学成绩变更为60分,语文成绩变更为70分
在这里插入图片描述

3.将总成绩倒数前三的 3 位同学的数学成绩加上 30 分
在这里插入图片描述
在这里插入图片描述
注意:update搭配limit使用时,只能如下操作,因为UPDATE 语句本身不支持使用 ORDER BY 和 LIMIT 来指定更新的行,因为数据库引擎不知道如何基于这些排序和限制条件来正确地应用更新。
在这里插入图片描述

4.将所有同学的语文成绩更新为原来的 2 倍
注意:如果没有where子句的筛选一定要慎用update
在这里插入图片描述

delete(删除)

语法:

DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]

删除数据

示例:
1.删除孙悟空同学的考试成绩
在这里插入图片描述

2.删除整张表的数据
注意:该操作要谨慎操作,一定是确定了这些数据不要了才能删除。
在这里插入图片描述
可以看到删除了表的内容,但表的结构还是,auto_increment没有变,仍然是4。

删除表中的数据还有一种做法:

截断表

语法:

TRUNCATE [TABLE] table_name

示例:
在这里插入图片描述
发现truncate使auto_increment重置了。

truncate的特点与delete的区别
1.只能对整表操作,不能像DELETE一样正对部分数据操作。
2.比DELETE执行执行速度更快,但是TRUNCATE在删除数据的时候,并不经过真正的事务,所以无法回滚。
3.会重置AUTO_INCREMENT项。

插入查询结果

语法:

INSERT INTO table_name [(column [, column ...])] SELECT ...

示例:删除表中的重复记录,重复的数据只能有一份

创建原数据表
在这里插入图片描述
在这里插入图片描述
这不就去重了吗?这只是查找时的去重,并没有影响原始表。

那要如何做呢?
创建一个新表,将查询到去重的结果再插入到新表中;将要去重的表备份(即重命名),再将新表重命名为要去重表的名字。
1.创建和原表结构一样的表
在这里插入图片描述
2.把select的去重数据筛出来,插入到新表
在这里插入图片描述
3.备份+重命名
在这里插入图片描述

我们在上传10G文件到A目录的时候,有两个方案:
1。直接将10G文件传到A目录,并且要保证原子性,要让整个上传文件的过程保证他是原子态的传输状态,这是非常慢的。
2。将10G文件预处理传输到临时目录下,最后一步直接mv到A目录。只需保证最后一步mv是原子态即可。
第二种方案的操作是更推荐的,因为第二种的方法更比第一种更轻量。
这也就是为什么我们数据去重的时候,使用rename的方式,而不是直接对原表进行操作,因为采用原子性的时候,rename的方式能使效率更高。

聚合函数

为什么叫聚合函数?因为每一行函数执行出来的值相同,所以能被聚合压缩。
比如:
在这里插入图片描述
如果把 1 + 1 看做一个函数,每一行执行出来的结果都为2,因为很多行的结果都是一样的,所以能被聚合压缩成一行。这就是聚合压缩。

函数说明
COUNT([DISTINCT] expr)返回查询到的数据的数量
SUM([DISTINCT] expr)返回查询到的数据的总和,不是数字没有意义
AVG([DISTINCT] expr)返回查询到的数据的平均值,不是数字没有意义
MAX([DISTINCT] expr)返回查询到的数据的最大值,不是数字没有意义
MIN([DISTINCT] expr)返回查询到的数据的最小值,不是数字没有意义

示例:
在这里插入图片描述
1.统计班级共有多少同学

使用 * 做统计
在这里插入图片描述
使用 表达式 做统计
在这里插入图片描述

2.统计数学成绩的个数
在这里插入图片描述
执行的顺序是先统计,再去重
这样才能先去重,再统计
在这里插入图片描述

3.统计数学成绩的总分
在这里插入图片描述

4.统计数学成绩平均分
在这里插入图片描述

5.统计数学平均分
在这里插入图片描述
我也想显示每个人的名字和数学成绩,和平均数学成绩对比。
在这里插入图片描述
为什么报错了?
对于每个人来说平均成绩是一样的,所以平均成绩可以聚合。但是name对于每一个来说不是一样的,所以name的记录不能够被压成一个记录,所以没办法做聚合。那具体要如何做呢?后面会讲。

分组聚合

分组是将某个属性记录相同的分为同一组。聚合函数针对的是组,不是表,组是表的划分。
分组的目的是为了进行分组之后,方便进行聚合统计

group by子句的使用(包含oracle 9i的经典测试表)

语法:

select column1, column2, ... from table group by column;

准备工作,创建一个雇员信息表(来自oracle 9i的经典测试表)

  • EMP员工表
  • DEPT部门表
  • SALGRADE工资和最高工资
DROP database IF EXISTS `scott`;
CREATE database IF NOT EXISTS `scott` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;USE `scott`;DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept` (`deptno` int(2) unsigned zerofill NOT NULL COMMENT '部门编号',`dname` varchar(14) DEFAULT NULL COMMENT '部门名称',`loc` varchar(13) DEFAULT NULL COMMENT '部门所在地点'
);DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp` (`empno` int(6) unsigned zerofill NOT NULL COMMENT '雇员编号',`ename` varchar(10) DEFAULT NULL COMMENT '雇员姓名',`job` varchar(9) DEFAULT NULL COMMENT '雇员职位',`mgr` int(4) unsigned zerofill DEFAULT NULL COMMENT '雇员领导编号',`hiredate` datetime DEFAULT NULL COMMENT '雇佣时间',`sal` decimal(7,2) DEFAULT NULL COMMENT '工资月薪',`comm` decimal(7,2) DEFAULT NULL COMMENT '奖金',`deptno` int(2) unsigned zerofill DEFAULT NULL COMMENT '部门编号'
);DROP TABLE IF EXISTS `salgrade`;
CREATE TABLE `salgrade` (`grade` int(11) DEFAULT NULL COMMENT '等级',`losal` int(11) DEFAULT NULL COMMENT '此等级最低工资',`hisal` int(11) DEFAULT NULL COMMENT '此等级最高工资'
);insert into dept (deptno, dname, loc)
values (10, 'ACCOUNTING', 'NEW YORK');
insert into dept (deptno, dname, loc)
values (20, 'RESEARCH', 'DALLAS');
insert into dept (deptno, dname, loc)
values (30, 'SALES', 'CHICAGO');
insert into dept (deptno, dname, loc)
values (40, 'OPERATIONS', 'BOSTON');insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800, null, 20);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600, 300, 30);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250, 500, 30);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975, null, 20);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250, 1400, 30);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850, null, 30);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450, null, 10);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7788, 'SCOTT', 'ANALYST', 7566, '1987-04-19', 3000, null, 20);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7839, 'KING', 'PRESIDENT', null, '1981-11-17', 5000, null, 10);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7844, 'TURNER', 'SALESMAN', 7698,'1981-09-08', 1500, 0, 30);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7876, 'ADAMS', 'CLERK', 7788, '1987-05-23', 1100, null, 20);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950, null, 30);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000, null, 20);insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300, null, 10);insert into salgrade (grade, losal, hisal) values (1, 700, 1200);
insert into salgrade (grade, losal, hisal) values (2, 1201, 1400);
insert into salgrade (grade, losal, hisal) values (3, 1401, 2000);
insert into salgrade (grade, losal, hisal) values (4, 2001, 3000);
insert into salgrade (grade, losal, hisal) values (5, 3001, 9999);

直接粘贴复制即可
在这里插入图片描述
在这里插入图片描述

示例:

1.显示每个部门的平均工资和最高工资
在这里插入图片描述
group by deptno:将相同的deptno分为了一组,组内的一定deptno一定是相同的,所以可以被聚合压缩

2.显示每个部门的每种岗位的平均工资和最低工资。
在这里插入图片描述
group by deptno, job:首先根据group by分为几个组,再根据job将这几个组分为更多的组。

显示平均工资低于2000的部门和它的平均工资
在这里插入图片描述
having是对聚合后的统计数据,再条件筛选。

having 和 where 的区别如何理解?只是执行的顺序不同。
示例:显示平均工资低于2000的部门和它的平均工资,但SMITH员工不参与统计
在这里插入图片描述
执行顺序:
1.from子句
2.where子句
3.group by子句
4.执行聚合函数,重命名
5.having子句
6.select子句,选择显示指定列

所以having和where的区别就是执行的顺序不同

总结:
不要单纯的认为,只有存入磁盘的表才叫表,中间筛选出来的,中途显示出来的表,也叫表,这些全部都是逻辑上的表。所以也可以总结出一句话“MySQL一切皆表”。

相关文章:

6.MySQL基本查询

目录 表的增删查改Insert&#xff08;插入&#xff09;插入替换插入替换2 Retrieve&#xff08;查找&#xff09;SELECT 列全列查找指定列查询查询字段为表达式为查询结果指定别名结果去重 WHERE 条件order by子句筛选分页结果 Update&#xff08;更新&#xff09;delete&#…...

Linux字符设备驱动开发

Linux 字符设备驱动开发是内核模块开发中的一个重要部分&#xff0c;主要用于处理字节流数据设备&#xff08;如串口、键盘、鼠标等&#xff09;。字符设备驱动的核心任务是定义如何与用户空间程序交互&#xff0c;通常通过一组文件操作函数进行。这些函数会映射到 open、read、…...

HTML5+JavaScript绘制闪烁的网格错觉

HTML5JavaScript绘制闪烁的网格错觉 闪烁的网格错觉&#xff08;scintillating grid illusion&#xff09;是一种视觉错觉&#xff0c;通过简单的黑白方格网格和少量的精心设计&#xff0c;能够使人眼前出现动态变化的效果。 闪烁的栅格错觉&#xff0c;是一种经典的视觉错觉…...

每日OJ题_牛客_拼三角_枚举/DFS_C++_Java

目录 牛客_拼三角_枚举/DFS 题目解析 C代码1 C代码2 Java代码 牛客_拼三角_枚举/DFS 拼三角_枚举/DFS 题目解析 简单枚举&#xff0c;不过有很多种枚举方法&#xff0c;这里直接用简单粗暴的枚举方式。 C代码1 #include <iostream> #include <algorithm> …...

[uni-app]小兔鲜-01项目起步

项目介绍 效果演示 技术架构 创建项目 HBuilderX创建 下载HBuilderX编辑器 HBuilderX/创建项目: 选择模板/选择Vue版本/创建 安装插件: 工具/插件安装/uni-app(Vue3)编译器 vue代码不能直接运行在小程序环境, 编译插件帮助我们进行代码转换 绑定微信开发者工具: 指定微信开…...

安全的价值:构建现代企业的基础

物理安全对于组织来说并不是事后才考虑的问题&#xff1a;它是关键的基础设施。零售商、医疗保健提供商、市政当局、学校和所有其他类型的组织都依赖安全系统来保障其人员和场所的安全。 随着安全技术能力的不断发展&#xff0c;许多组织正在以更广泛的视角看待他们的投资&am…...

门面(外观)模式

简介 门面模式&#xff08;Facade Pattern&#xff09;又叫作外观模式&#xff0c;提供了一个统一的接口&#xff0c;用来访问子系统中的一群接口。其主要特征是定义了一个高层接口&#xff0c;让子系统更容易使用&#xff0c;属于结构型设计模式。 通用模板 创建子系统角色类…...

kotlin flow 使用

1 创建flow 方式1 通过携程扩展函数FlowKt中的flow扩展函数可以直接构建flow&#xff0c;只需要传递FlowCollector收集器实现类就可以了 private fun create1(){val intFlow createFlow()println("创建int flow: $intFlow")runBlocking {println("开始收集&…...

vue3 实现文本内容超过N行折叠并显示“...展开”组件

1. 实现效果 组件内文字样式取决与外侧定义 组件大小发生变化时,文本仍可以省略到指定行数 文本不超过时, 无展开,收起按钮 传入文本发生改变后, 组件展示新的文本 2. 代码 文件名TextEllipsis.vue <template><div ref"compRef" class"wq-text-ellip…...

根据源码解析Vue2中对于对象的变化侦测

UI render(state) VUE的特点是数据驱动视图&#xff0c;在这里可以把数据理解为状态&#xff0c;而视图就是用户可以看到的页面&#xff0c;页面是动态变化的&#xff0c;而他的变化或是用户操作引起&#xff0c;或是后端数据变化引起&#xff0c;这些都可以说是数据的状态变…...

爬虫技术深潜:探究 JsonPath 与 XPath 的语法海洋与实战岛屿

Python爬虫中JSON与XML字符串的XPath和JsonPath过滤语法区别对比 在信息爆炸的互联网时代&#xff0c;数据抓取成为了获取宝贵信息的关键技能。对于技术爱好者&#xff0c;特别是Python程序员来说&#xff0c;熟练掌握JSON和XML数据解析方法至关重要。本文旨在深入探讨这两种格…...

纠删码参数自适应匹配问题ECP-AMP实验方案(一)

摘要 关键词&#xff1a;动态参数&#xff1b;多属性决策&#xff1b;critic权重法&#xff1b;DBSCA聚类分析 引言 云服务存储系统是一种基于互联网的数据存储服务&#xff0c;它可以为用户提供大规模、低成本、高可靠的数据存储空间。云服务存储系统的核心技术之一是数据容…...

五、人物持有武器攻击

一、手部添加预制体&#xff08;武器&#xff09; 1、骨骼&#xff08;手&#xff09; 由于人物模型有骨骼和动画&#xff0c;在添加预制体后&#xff0c;会抓握武器 建一个预制体在手部位置 二、添加武器拖尾 下载拖尾特效 赋值特效中的代码&#xff0c;直接使用 清空里面…...

mysql索引 -- 全文索引介绍(如何创建,使用),explain关键字

目录 全文索引 引入 介绍 创建 使用 表数据 简单搜索 explain关键字 使用全文索引 mysql索引结构详细介绍 -- mysql索引 -- 索引的硬件理解(磁盘,磁盘与系统),软件理解(mysql,与系统io,buffer pool),索引结构介绍和理解(page内部,page之间,为什么是b树)-CSDN博客 全文…...

Wayfair封号的常见原因及解决方案解析

近期关于Wayfair账号封禁的问题引发了广泛讨论。许多用户报告称&#xff0c;他们的Wayfair账户被突然封禁&#xff0c;这一现象不仅影响了用户的购物体验&#xff0c;也对Wayfair的品牌形象造成了一定的冲击。本文将深入探讨Wayfair封号的原因&#xff0c;并提出相应的解决方案…...

计算机视觉方面的一些模块

# __all__ 是一个可选的列表&#xff0c;定义在模块级别。当使用 from ... import * 语句时&#xff0c;如果模块中定义了 # __all__&#xff0c;则只有 __all__ 列表中的名称会被导入。这是模块作者控制哪些公开API被导入的一种方式。 # 使用 * 导入的行为 # 如果模块中有 __a…...

进阶美颜功能技术开发方案:探索视频美颜SDK

视频美颜SDK&#xff08;SoftwareDevelopmentKit&#xff09;作为提升视频质量的重要工具&#xff0c;越来越多地被开发者关注与应用。接下俩&#xff0c;笔者将深入探讨进阶美颜功能的技术开发方案&#xff0c;助力开发者更好地利用视频美颜SDK。 一、视频美颜SDK的核心功能 …...

【重学 MySQL】三十八、group by的使用

【重学 MySQL】三十八、group by的使用 基本语法示例示例 1: 计算每个部门的员工数示例 2: 计算每个部门的平均工资示例 3: 结合 WHERE 子句 WITH ROLLUP基本用法示例注意事项 注意事项 GROUP BY 是 SQL 中一个非常重要的子句&#xff0c;它通常与聚合函数&#xff08;如 COUNT…...

SSM框架VUE电影售票管理系统开发mysql数据库redis设计java编程计算机网页源码maven项目

一、源码特点 smm VUE电影售票管理系统是一套完善的完整信息管理类型系统&#xff0c;结合SSM框架和VUE、redis完成本系统&#xff0c;对理解vue java编程开发语言有帮助系统采用ssm框架&#xff08;MVC模式开发&#xff09;&#xff0c;系 统具有完整的源代码和数据库&#…...

基于Hive和Hadoop的白酒分析系统

本项目是一个基于大数据技术的白酒分析系统&#xff0c;旨在为用户提供全面的白酒市场信息和深入的价格分析。系统采用 Hadoop 平台进行大规模数据存储和处理&#xff0c;利用 MapReduce 进行数据分析和处理&#xff0c;通过 Sqoop 实现数据的导入导出&#xff0c;以 Spark 为核…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言&#xff1a;生成式AI的黎明 – Diffusion模型是什么&#xff1f; 近年来&#xff0c;生成式人工智能&#xff08;Generative AI&#xff09;领域取得了爆炸性的进展&#xff0c;模型能够根据简单的文本提示创作出逼真的图像、连贯的文本&#xff0c;乃至更多令人惊叹的…...

Spring Boot + MyBatis 集成支付宝支付流程

Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例&#xff08;电脑网站支付&#xff09; 1. 添加依赖 <!…...