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

【数据库】sql函数和多表关联查询

目录

一,SQL函数

1,聚合函数

1, count函数

2, AVG函数

3, SUM函数

4, MAX函数

5, MIN函数

6,数据分组——GROUP BY

7,限定组的结果,HAVING

8, HAVING与WHERE的区别

9,对结果集排序:order by

 10,MySQL多行数据合并:GROUP_CONCAT

11,查询结果限定

2,数值型函数

3,字符串函数

 示例:

4,日期和时间函数

 示例

5,流程控制函数

1,IF(expr,v1,v2)

2,IFNULL(v1,v2) 

3,CASE value WHEN

4,CASE WHEN

二,多表关联查询

 1,inner join:内连接

 2,leftjoin:左连接

 3,rightjoin:右连接

 4,自连接

 5,​交叉连接


一,SQL函数

1聚合函数

聚合函数对一组值进行运算,并返回单个值。也叫分组函数。

COUNT(*|列名) 统计行数,*表示所有记录都不忽略,指定列名时会忽略null

AVG(数值类型列名) 平均值,忽略null

SUM (数值类型列名) 求和,忽略null

MAX(列名) 最大值,忽略null

MIN(列名) 最小值,忽略null

  

t1的所有记录如下图所示:

 

1, count函数

COUNT(*|列名) 统计行数,*表示所有记录都不忽略,指定列名时会忽略null

(1)统计t1表有多少行

select count(*) from t1;

 

 

(2)统计t1表中的performance 列有多少行,不统计null

select count(performance) from t1;

 

 

2, AVG函数

AVG(数值类型列名) 平均值,忽略null

统计t1表中salary的平均值

select avg(salary) from t1;

 

3, SUM函数

SUM(数值类型列名) 求和,忽略null

统计t1表中salary的和

select sum(salary) from t1;

 

 

4, MAX函数

MAX(列名) 最大值,忽略null

MIN统计t1表中salary的最大值

select max(salary) from t1;

 

 

 

5, MIN函数

 MIN(列名) 最小值,忽略null

统计t1表中salary的最小值

select min(salary) from t1;

 

 

6,数据分组——GROUP BY

GROUP BY子句的真正作用在于与各种聚合函数配合使用。它用来对查询出来的数据进行分组。

分组的含义是:把该列具有相同值的多条记录当成一组记录处理,最后只输出一条记录。

 

 数据分组--GROUP BY

语法:SELECT column,group_function FROM table[WHEREcondition]

 [GROUP BY group_by_expression]

查看dept表下的所有信息:

select * from dept;

 

  查看表employee的所有信息:

select * from employee;

 

 (1)每个部门的平均工资

select dept_id,avg(salary) from employee group by dept_id;

 

(2)出现在select后的字段都,它必须出现在GROUP BY子句中

select dept_id,d_name,avg(salary) from employee group by dept_id,d_name;

(3)出现在group by子句的字段可以不出现在select的列表当中

select dept_id,avg(salary) from employee group by dept_id,d_name;

7,限定组的结果,HAVING

限定组的结果:HAVING子句,HAVING子句用来对分组后的结果再进行条件过滤。

语法:SELECT column, group_function FROM table [WHEREcondition] [GROUP BY group_by_expression]  [HAVING group_condition] [ORDER BY column];

(1)查询部门平均工资大于400部门

select d_name,avg(salary) from employee group by d_name having avg(salary) >400;

 

 

8, HAVING与WHERE的区别

HAVING与WHERE的区别:WHERE是在分组前进行条件过滤, HAVING子句是在分组后进行条件过滤,WHERE子句中不能使用聚合函数,HAVING子句可以使用聚合函数。

 

(1)查找employee表中dept_id>1d_nameavg(salary)

方法一:where

select d_name,avg(salary) from employee where dept_id>1 group by d_name;

方法二:having

select d_name,avg(salary) from employee group by d_name,dept_id having dept_id>1;

9,对结果集排序:order by

对结果集排序:查询语句执行的查询结果默认是按数据插入顺序排列,实际上可能需要按某列的值大小排列,按某列排序采用order by 列名[desc],列名…;设定排序列的时候可采用列名、列别名。

(1)查找employee表中dept_id>1d_nameavg(salary),并对平均工资进行升序排序

select d_name,avg(salary) asalary from employee group by d_name,dept_id having deept_id>1 order by asalary;

(2)查找employee表中按照d_name分组的dept_id>1avg(salary)>=300d_nameavg(salary)并按升序排序

select d_name,avg(salary) asalary from employee where dept_id>1 group by d_name having asalary >=300 order by asalary;

 

 

 10,MySQL多行数据合并:GROUP_CONCAT

 (1)查找employee表中按照组dept_idd_name分组的dept_id,d_name,avg(salary),e_id并把属于一组的e_id合并输出在一行

select dept_id,d_name,avg(salary),group_concat(e_id) from employee group by dept_id,d_name;

(2)查找employee表中dept_idd_name,avg(salary),e_id,name,并把属于一组的e_id与name合并输出在一行

select dept_id,d_name,avg(salary),group_concat(e_id),group_concat(name) from emplloyee

注意:使用 GROUP_CONCAT()函数必须对源数据进行分组,否则所有数据会被合并成一行

(3)查找dept表中的部门名称并将查到的多行结果合并一行

select group_concat(d_name) from dept;

11,查询结果限定

查询结果限定,在SELECT语句最后可以用LIMLT来限定查询结果返回的起始记录和总数量。MySQL特有。

语法:SELECT … LIMIToffset_start,row_count;

offset_start:第一个返回记录行的偏移量。默认为0。

row_count:要返回记录行的最大数目。

dept表有5行数据

select * from dept;

 

 

(1)显示表dep前t三行数据

select * from dept limit 3;

 

 

(2)从第3行开始,显示3行内容(n,m从n+1行开始,显示m行内容)

select * from dept limit 2,3;

 

 

 

 

 

 

2,数值型函数

函数名称

作用

ABS

求绝对值

SQRT

求平方根

POW 和 POWER

两个函数的功能相同,返回参数的幂次方

MOD

求余数

CEIL 和 CEILING

两个函数功能相同,都是返回不小于参数的最小整数,即向上取整

FLOOR

向下取整,返回值转化为一个BIGINT

RAND

生成一个0~1之间的随机数,传入整数参数时,用来产生重复序列

ROUND

对所传参数进行四舍五入

SIGN

返回参数的符号

 

 

3,字符串函数

函数名称

作用

LENGTH

计算字符串长度函数,返回字符串的字节长度

CHAR_LENGTH

计算字符串长度函数,返回字符串的字符长度,注意两者的区别

CONCAT

合并字符串函数,返回结果为连接参数产生的字符串,参数可以是一个或多个

INSERT(str,pos,len,newstr)

替换字符串函数

LOWER

将字符串中的字母转换为小写

UPPER

将字符串中的字母转换为大写

LEFT(str,len)

从左侧字截取符串,返回字符串左边的若干个字符

RIGHT

从右侧字截取符串,返回字符串右边的若干个字符

TRIM

删除字符串左右两侧的空格

REPLACE(s,s1,s2)

字符串替换函数,返回替换后的新字符串

SUBSTRING(s,n,len)

截取字符串,返回从指定位置开始的指定长度的字符换

REVERSE

字符串反转(逆序)函数,返回与原始字符串顺序相反的字符串

STRCMP(expr1,expr2)

比较两个表达式的顺序。若expr1 小于 expr2 ,则返回 -1,0相等,1则相反

LOCATE(substr,str [,pos])

返回第一次出现子串的位置

INSTR(str,substr)

返回第一次出现子串的位置

 

 示例:

统计dept表中d_name的长度

select length(d_name) from dept;

 

 

 

4,日期和时间函数

函数名称

作用

CURDATE() CURRENT_DATE() CURRENT_DATE

两个函数作用相同,返回当前系统的日期值

CURTIME CURRENT_TIME() CURRENT_TIME

两个函数作用相同,返回当前系统的时间值

NOW()

返回当前系统的日期和时间值

SYSDATE

返回当前系统的日期和时间值

DATE

获取指定日期时间的日期部分

TIME

获取指定日期时间的时间部分

MONTH

获取指定日期中的月份

MONTHNAME

获取指定曰期对应的月份的英文名称

DAYNAME

获取指定曰期对应的星期几的英文名称

YEAR

获取年份,返回值范围是 1970〜2069

DAYOFWEEK

获取指定日期对应的一周的索引位置值,也就是星期数,注意周日是开始日,为1

WEEK

获取指定日期是一年中的第几周,返回值的范围是否为 0〜52 或 1 〜53

DAYOFYEAR

获取指定曰期是一年中的第几天,返回值范围是1~366

DAYOFMONTH 和 DAY

两个函数作用相同,获取指定日期是一个月中是第几天,返回值范围是1~31

DATEDIFF(expr1,expr2)

返回两个日期之间的相差天数,如 SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');

SEC_TO_TIME

将秒数转换为时间,与TIME_TO_SEC 互为反函数

TIME_TO_SEC

将时间参数转换为秒数,是指将传入的时间转换成距离当天00:00:00的秒数,00:00:00为基数,等于 0 秒

 

 示例

查看当前时间:

select CURRENT_DATE;

 

 

 

 

5,流程控制函数

函数名称

作用

IF(expr,v1,v2)

判断,流程控制,当expr = true时,或者为1时返回 v1,当expr = false、null 、0时返回v2

IFNULL(v1,v2)

判断是否为空,如果 v1 不为 NULL,则 IFNULL 函数返回 v1,否则返回 v2

CASE

搜索语句

 

 

1,IF(expr,v1,v2)

判断,流程控制,当expr = true时,或者为1时返回 v1,当expr = false、null 、0, ' '时返回v2

(1)使用IF()函数进行条件判断

如果表达式12>3成立,返回yes,否则返回no;

select if(12>3,'yes','no');

(2)分别显示emp表有奖金和没奖金的员工信息。

在数据库chap04下创建emp表,包含id int primary,name char(30) nut null,comm int三个字段

create table emp(id int primary key,name char(30) not null,comm int);

给表emp中插入数据

insert into emp values (1,'xioaming',2000),(2,'xiaohong',300),(3,'xiaohei',3200);

insert into emp (id,name) values (4,'xiaobai'),(5,'xiaolan');

查看表emp的所有信息

select * from emp;

分别显示emp表有奖金和没奖金的员工信息。

select id,name,if(comm is null,'没奖金','有奖金') '备注' from emp;

2,IFNULL(v1,v2) 

IFNULL(v1,v2)  判断是否为空,如果 v1 不为 NULL,则 IFNULL 函数返回 v1,否则返回 v2

IFNULL() 函数语法格式为:IFNULL(expression, alt_value)

IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为NULL 则返回第一个参数的值。

select ifnull(null,2);

3,CASE value WHEN

使用CASE value WHEN语句执行分支操作

语法:CASE  <表达式>

   WHEN<值1> THEN<操作>

   WHEN<值2> THEN<操作>

   ...

   ELSE<操作>

END

 

将 <表达式> 的值逐一和每个 when的 <值> 进行比较,如果跟某个<值>相等,则执行它后面的 <操作> ,如果所有 when的值都不匹配,则执行 else的操作,如果 when的值都不匹配,且没写 else,则会报错。

(1)判断输入的值是否为3,如果是3,输出three;

select case 3 when 1 then 'one' when 2 then 'two' when 3 then 'three' else 'other' end;

(2)

employee的所有信息如下

查找employee表下的dept_id,name,部门,当dept_id等于1,部门为boss,当dept_id等于2,部门为'finamce' ,3 ,'sale'; 4, 'tech'

select dept_id,name,case dept_id when 1 then 'boss' when 2 then 'finamce' when 3 then 'sale' when 4 then 'tech' end '部门' from employee;

4,CASE WHEN

使用CASE WHEN语句执行分支操作

判断条件放到when后面

select name,salary,casewhen salary<=300 then '[0,300]'when salary<=500 then '(300,500]'when salary<=1000 then '(500,1000]'end'salary level'from employee;

 

 

 

二,多表关联查询

1,inner join:内连接

inner join:内连接,只取得键值一致的部分,代表选择的是两个表键值交叉的部分。

语法如下:

SELECT列名1,列名2... FROM表1 INNER JOIN 表2 ON表1.列=表2.列 [and条件表达式 ][ WhERE条件语句 ] [ orderby列 [desc] ];

查看dept表的所有信息

select * from dept;

查看employee表的所有信息

select * from employee;

employee表中的dept_id是dept表中d_id的外键

(1)查找employeedept_id中和dept表中d_id相等的所有记录

select * from employee e inner join dept d on e.dept_id=d.d_id;

(2)查找职员的部门

select e.name,d_name from employee e inner join dept d on e.dept_id=d.d_id;

(3)查找销售部门的职员姓名

select e.name,d_name from employee e inner join dept d on e.dept_id=d.d_id where d.d_name='sale';

(4)查找工资大于等于300的职员信息

方法一:

select e.name,d_name,e.salary from employee e inner join dept d on e.dept_id=d.d_id and salary>=300;

方法二:

select e.name,d_name,e.salary from employee e inner join dept d on e.dept_id=d.d_id where salary>=300;

2,leftjoin:左连接

leftjoin:左连接,代表选择的是前面一个表的全部。左连接是以左表为标准,只查询在左边表中存在的数据。语法如下:

SELECT列名1 FROM表1 LEFTOUTERJOIN表2 ON表1.列=表2.列 WhERE条件语句;

employee表中的所有记录如下所示:

select * from employee;

dept表中的所有记录如下所示

select * from dept;

显示所有员工的信息,包括没有部门的员工

select * from employee e left join dept d on e.dept_id=d.d_id;

显示所有部门的信息,包括没有员工的部门

select * from dept d left join employee e on e.dept_id=d.d_id;

工资大于等于300的信息

select * from employee e left join dept d on e.dept_id=d.d_id where salary>=300;

工资大于等于300的信息按升序排序

select * from employee e left join dept d on e.dept_id=d.d_id where salary>=300 order by salary;

 

 

3,rightjoin:右连接

3.rightjoin:右连接,代表选择的是后面一个表的全部。右连接将会以右边作为基准,进行检索。语法如下:

SELECT列名1 FROM表1 RIGHTOUTERJOIN表2 ON表1.列=表2.列 WhERE条件语句;

显示所有部门的信息,包括没有员工的部门

select * from employee e right join dept d on e.dept_id=d.d_id;​

 

 

显示所有员工的信息,包括没有部门的员工

select * from dept d right join employee e on e.dept_id=d.d_id;

 

 4,自连接

自连接,自连接顾名思义就是自己跟自己连接,参与连接的表都是同一张表。(通过给表取别名虚拟出)

查找比自己mgr岁数大的员工和mgr的姓名和年龄

(1)创建表t4

create table t4(name char(30),age int,mgr char(20));

 

(2)向表t4中插入数据:

insert into t4 values ('xiaoming',29,'xiao'),('xiaohong',26,'xiao'),('zhouyi',19,'zhou'),('xiao',28,'booss'),('zhou',30,'boss');

 

 (3)查看t4表的所有信息

select * from t4;

 

 (4)查找比自己mgr岁数大的员工和mgr的姓名和年龄(两张表之间的逗号也可以换为join)

select e.name,e.age,m.name mgr,m.age mgr_age from t4 e,t4 m where e.mgr=m.name and e.age > m.age;

5,​交叉连接

交叉连接:不适用任何匹配条件。生成笛卡尔积

表t1的信息如下:

select * from t1;

表dept的信息如下:

select * from dept;

查询表t1与表table的交叉连接

select * from dept,t1;

相关文章:

【数据库】sql函数和多表关联查询

目录 一&#xff0c;SQL函数 1&#xff0c;聚合函数 1&#xff0c; count函数 2&#xff0c; AVG函数 3&#xff0c; SUM函数 4&#xff0c; MAX函数 5&#xff0c; MIN函数 6&#xff0c;数据分组——GROUP BY 7&#xff0c;限定组的结果&#xff0c;HAVING 8&#x…...

6-周赛332总结

6-周赛332总结 过了Q1和Q2&#xff0c;Q2知道用二分但是边界处理的不是很好&#xff0c;迷迷糊糊过的&#xff08;手动再移动了下返回值…&#xff09; Q3知道将子字符串的值取出来&#xff0c;将最短位置放在哈希表中&#xff0c;然后异或在哈希表中找值。但是我这个猪头脑袋…...

嵌入式Qt 开发一个音乐播放器

上篇文章&#xff1a;RK3568源码编译与交叉编译环境搭建&#xff0c;进行了OK3568开发板软件开发环境搭建&#xff0c;通过编译RK3568的源码&#xff0c;可以得到Qt开发的交叉编译相关工具。 本篇&#xff0c;就来在搭建好的软件开发中&#xff0c;进行Qt软件的开发测试。由于…...

2023秋招万得集团AI算法岗面经分享

本专栏分享 计算机小伙伴秋招春招找工作的面试经验和面试的详情知识点 专栏首页:秋招算法类面经分享 主要分享计算机算法类在面试互联网公司时候一些真实的经验 2022年 11.22下午AI算法岗面试 (1)一面35min 1、自我介绍 2、科研:长文本MRC...

RoI Transformer论文翻译详解

Learning RoI Transformer for Oriented Object Detection in Aerial Images 0.摘要 航空图像中的目标检测是计算机视觉中一个活跃而又具有挑战性的任务&#xff0c;因为它具有鸟瞰视角、高度复杂的背景和变化的物体外观。特别是在航空图像中检测密集的目标时&#xff0c;基于…...

Prometheus 自动发现监控AWS EC2实例

本文章简述对接自动发现AWS云EC2实例 前提环境&#xff1a; PromethuesGrafanaAWS IAM权限 涉及参考文档&#xff1a; AWS EC2Grafana 通用监控模板 一、IAM 用户创建 1、创建Prometheus 策略 策略规则&#xff1a; {"Version": "2012-10-17",&quo…...

从recat源码角度看setState流程

setState setState() 将对组件 state 的更改排入队列批量推迟更新&#xff0c;并通知 React 需要使用更新后的 state 重新渲染此组件及其子组件。其实setState实际上不是异步&#xff0c;只是代码执行顺序不同&#xff0c;有了异步的感觉。 使用方法 setState(stateChange | u…...

【Java|golang】1234. 替换子串得到平衡字符串---双指针

有一个只含有 ‘Q’, ‘W’, ‘E’, ‘R’ 四种字符&#xff0c;且长度为 n 的字符串。 假如在该字符串中&#xff0c;这四个字符都恰好出现 n/4 次&#xff0c;那么它就是一个「平衡字符串」。 给你一个这样的字符串 s&#xff0c;请通过「替换一个子串」的方式&#xff0c;…...

自监督表征学习方法——BYOL(Bootstrap Your Own Latent)

自监督表征学习方法——BYOL(Bootstrap Your Own Latent) 参考文献&#xff1a;《Bootstrap Your Own Latent A New Approach to Self-Supervised Learning》 1.前言背景 学习良好的图像表示是计算机视觉中的一个关键挑战&#xff0c;因为它允许对下游任务进行有效的训练。许…...

均衡负载集群(LBC)-1

均衡负载集群&#xff08;LBC&#xff09; 客户–>通过Internet—>负载调度器—>n台真实服务器 负载调度器&#xff1a; 软件&#xff1a;LVS&#xff1b;Nginx&#xff1b;Haproxy硬件&#xff1a;F5&#xff1b; LVS架构&#xff1a; 使用到C/S&#xff08;B/S…...

WebSocket

关于WebSocket&#xff1a; WebSocket 协议在2008年诞生&#xff0c;2011年成为国际标准。现在所有浏览器都已经支持了。 WebSocket 的最大特点就是&#xff0c;服务器可以主动向客户端推送信息&#xff0c;客户端也可以主动向服务器发送信息&#xff0c;是真正的双向平等对话…...

GA-PEG-GA,Glutaric Acid-PEG-Glutaric Acid,戊二酸-聚乙二醇-戊二酸供应

英文名称&#xff1a;Glutaric Acid-PEG-Glutaric Acid&#xff0c;GA-PEG-GA 中文名称&#xff1a;戊二酸-聚乙二醇-戊二酸 GA-PEG-GA是一种线性双功能PEG羧酸试剂。PEG和羧基COOH之间存在C4酯键。PEG羧酸可用于与氨基反应&#xff0c;与NHS和DCC、EDC等肽偶联试剂反应。 P…...

使用sqlmap + burpsuite sql工具注入拿flag

使用sqlmap burpsuite sql工具注入拿flag 记录一下自己重新开始学习web安全之路③。 目标网站&#xff1a;http://mashang.eicp.vip:1651/7WOY59OBj74nTwKzs3aftsh1MDELK2cG/ 首先判断网站是否存在SQL注入漏洞 1.找交互点 发现只有url这一个交互点&#xff0c;搜索框和登录…...

替代AG9300|替代NCS8823|CS5260 Type-C转VGA视频转换方案

替代AG9300|替代NCS8823|CS5260 Type-C转VGA视频转换方案 CS5260是一款是一款实现USB TYPE-C到VGA视频转换的单片机解决方案转换器。CS5260支持USB Type-C显示端口交替模式&#xff0c;CS5260可以将视频和音频流从USB Type-C接口传输到VGA端口。在CS5260芯片中&#xff0c;显示…...

乐鑫特权隔离机制的 OTA 固件升级

固件空中升级 (OTA, Over-The-Air) 是任何联网设备的重要功能之一&#xff0c;支持开发人员通过远程更新固件&#xff0c;以发布新功能或修复错误。乐鑫特权隔离框架中包含两类应用程序&#xff1a;受保护的应用程序 (protected_app) 和用户应用程序 (user_app) &#xff0c;这…...

C++数据结构 —— 二叉搜索树

目录 1.二叉搜索树的基本概念 1.1二叉搜索树的基本特征 2.二叉搜索树的实现 2.1数据的插入(迭代实现) 2.2数据的搜索(迭代实现) 2.3中序遍历(递归实现) 2.4数据的删除(迭代实现) 2.5数据的搜索(递归实现) 2.6数据的插入(递归实现) 2.7数据的删除(递归实现) 2.8类的完…...

Maven面试题及答案

1、Maven有哪些优点和缺点 优点&#xff1a; 1、简化项目依赖管理 2、方便与持续集成工具(Jenkins)整合 3、有助于多模块项目开发&#xff0c;比如一个模块开发好后发布到仓库&#xff0c;依赖该模块时可以直接从远程仓库更新&#xff0c;不用自己手动去编译 4、有很多插件&am…...

WebRTC系列-Qos系列之接收放RTX处理

文章目录 1. RTX详解1.1 RTX包头解析1.2 RTX包中的OSN2. RTX在WebRTC中处理2.1 组包2.2 解包2.3 发送及接收处理流程2.3.1 发送流程2.3.2 rtx标记的设置流程2.3.3 解析流程2.3.4 RTX解包在上一篇 WebRTC系列-Qos系列之接收NACK文章中分析了接收到nack后解析的主要流程。在WebR…...

国内能否炒伦敦金,2023国际十大正规伦敦金交易平台排名

在目前的投资市场环境中&#xff0c;现货黄金是一种屡见不鲜的投资选择&#xff0c;它依靠国际化的投资环境&#xff0c;成为了世界范围内投资者的重要选择对象。进行现货黄金投资&#xff0c;人们除了要认识市场发展基本现状之外&#xff0c;更要做好基本面和技术面分析工作&a…...

react路由 - react-router-dom

react路由 现代的前端应用大多都是 SPA&#xff08;单页应用程序&#xff09;&#xff0c;也就是只有一个 HTML 页面的应用程序。因为它的用户体验更好、对服务器的压力更小&#xff0c;所以更受欢迎。为了有效的使用单个页面来管理原来多页面的功能&#xff0c;前端路由应运而…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...