【MySQL】(7)复合查询

news2024/11/17 10:47:21

文章目录

  • 单表查询回顾与练习
  • 多表查询
  • 自连接
  • 多行子查询(单列)
    • in 运算符
    • all 关键字
    • any 关键字
  • 多列子查询
  • from 子句中的子查询
  • 合并查询

单表查询回顾与练习

注:下面的依旧基于 scott 数据库

MariaDB [scott]> select * from emp;
+--------+--------+-----------+------+---------------------+---------+---------+--------+
| empno  | ename  | job       | mgr  | hiredate            | sal     | comm    | deptno |
+--------+--------+-----------+------+---------------------+---------+---------+--------+
| 007369 | SMITH  | CLERK     | 7902 | 1980-12-17 00:00:00 |  800.00 |    NULL |     20 |
| 007499 | ALLEN  | SALESMAN  | 7698 | 1981-02-20 00:00:00 | 1600.00 |  300.00 |     30 |
| 007521 | WARD   | SALESMAN  | 7698 | 1981-02-22 00:00:00 | 1250.00 |  500.00 |     30 |
| 007566 | JONES  | MANAGER   | 7839 | 1981-04-02 00:00:00 | 2975.00 |    NULL |     20 |
| 007654 | MARTIN | SALESMAN  | 7698 | 1981-09-28 00:00:00 | 1250.00 | 1400.00 |     30 |
| 007698 | BLAKE  | MANAGER   | 7839 | 1981-05-01 00:00:00 | 2850.00 |    NULL |     30 |
| 007782 | CLARK  | MANAGER   | 7839 | 1981-06-09 00:00:00 | 2450.00 |    NULL |     10 |
| 007788 | SCOTT  | ANALYST   | 7566 | 1987-04-19 00:00:00 | 3000.00 |    NULL |     20 |
| 007839 | KING   | PRESIDENT | NULL | 1981-11-17 00:00:00 | 5000.00 |    NULL |     10 |
| 007844 | TURNER | SALESMAN  | 7698 | 1981-09-08 00:00:00 | 1500.00 |    0.00 |     30 |
| 007876 | ADAMS  | CLERK     | 7788 | 1987-05-23 00:00:00 | 1100.00 |    NULL |     20 |
| 007900 | JAMES  | CLERK     | 7698 | 1981-12-03 00:00:00 |  950.00 |    NULL |     30 |
| 007902 | FORD   | ANALYST   | 7566 | 1981-12-03 00:00:00 | 3000.00 |    NULL |     20 |
| 007934 | MILLER | CLERK     | 7782 | 1982-01-23 00:00:00 | 1300.00 |    NULL |     10 |
+--------+--------+-----------+------+---------------------+---------+---------+--------+
14 rows in set (0.00 sec)

1.查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J

select *
from emp
where (sal > 500 or job = 'MANAGER') and ename like 'J%';

查询结果:

+--------+-------+---------+------+---------------------+---------+------+--------+
| empno  | ename | job     | mgr  | hiredate            | sal     | comm | deptno |
+--------+-------+---------+------+---------------------+---------+------+--------+
| 007566 | JONES | MANAGER | 7839 | 1981-04-02 00:00:00 | 2975.00 | NULL |     20 |
| 007900 | JAMES | CLERK   | 7698 | 1981-12-03 00:00:00 |  950.00 | NULL |     30 |
+--------+-------+---------+------+---------------------+---------+------+--------+
2 rows in set (0.01 sec)

2.按照部门号升序,工资降序排序

select *
from emp
order by deptno, sal desc;

查询结果:

+--------+--------+-----------+------+---------------------+---------+---------+--------+
| empno  | ename  | job       | mgr  | hiredate            | sal     | comm    | deptno |
+--------+--------+-----------+------+---------------------+---------+---------+--------+
| 007839 | KING   | PRESIDENT | NULL | 1981-11-17 00:00:00 | 5000.00 |    NULL |     10 |
| 007782 | CLARK  | MANAGER   | 7839 | 1981-06-09 00:00:00 | 2450.00 |    NULL |     10 |
| 007934 | MILLER | CLERK     | 7782 | 1982-01-23 00:00:00 | 1300.00 |    NULL |     10 |
| 007902 | FORD   | ANALYST   | 7566 | 1981-12-03 00:00:00 | 3000.00 |    NULL |     20 |
| 007788 | SCOTT  | ANALYST   | 7566 | 1987-04-19 00:00:00 | 3000.00 |    NULL |     20 |
| 007566 | JONES  | MANAGER   | 7839 | 1981-04-02 00:00:00 | 2975.00 |    NULL |     20 |
| 007876 | ADAMS  | CLERK     | 7788 | 1987-05-23 00:00:00 | 1100.00 |    NULL |     20 |
| 007369 | SMITH  | CLERK     | 7902 | 1980-12-17 00:00:00 |  800.00 |    NULL |     20 |
| 007698 | BLAKE  | MANAGER   | 7839 | 1981-05-01 00:00:00 | 2850.00 |    NULL |     30 |
| 007499 | ALLEN  | SALESMAN  | 7698 | 1981-02-20 00:00:00 | 1600.00 |  300.00 |     30 |
| 007844 | TURNER | SALESMAN  | 7698 | 1981-09-08 00:00:00 | 1500.00 |    0.00 |     30 |
| 007654 | MARTIN | SALESMAN  | 7698 | 1981-09-28 00:00:00 | 1250.00 | 1400.00 |     30 |
| 007521 | WARD   | SALESMAN  | 7698 | 1981-02-22 00:00:00 | 1250.00 |  500.00 |     30 |
| 007900 | JAMES  | CLERK     | 7698 | 1981-12-03 00:00:00 |  950.00 |    NULL |     30 |
+--------+--------+-----------+------+---------------------+---------+---------+--------+

3.按照年薪降序排序

select ename, sal*12+ifnull(comm,0) '年薪'
from emp
order by 年薪 desc;

查询结果:

+--------+----------+
| ename  | 年薪     |
+--------+----------+
| KING   | 60000.00 |
| SCOTT  | 36000.00 |
| FORD   | 36000.00 |
| JONES  | 35700.00 |
| BLAKE  | 34200.00 |
| CLARK  | 29400.00 |
| ALLEN  | 19500.00 |
| TURNER | 18000.00 |
| MARTIN | 16400.00 |
| MILLER | 15600.00 |
| WARD   | 15500.00 |
| ADAMS  | 13200.00 |
| JAMES  | 11400.00 |
| SMITH  |  9600.00 |
+--------+----------+
14 rows in set (0.06 sec)

4.显示工资最高的员工的名字和工作岗位

答案一:

使用 order by 降序排序

select ename, job
from emp
order by sal desc
limit 1;

答案二:

子查询

select ename, job
from emp
where sal = (
	select max(sal)
    from emp
);

查询结果:

+-------+-----------+
| ename | job       |
+-------+-----------+
| KING  | PRESIDENT |
+-------+-----------+
1 row in set (0.00 sec)

5.显示工资高于平均工资的员工信息

select ename, sal
from emp
where sal > (
	select avg(sal)
    from emp
);

查询结果:

+-------+---------+
| ename | sal     |
+-------+---------+
| JONES | 2975.00 |
| BLAKE | 2850.00 |
| CLARK | 2450.00 |
| SCOTT | 3000.00 |
| KING  | 5000.00 |
| FORD  | 3000.00 |
+-------+---------+
6 rows in set (0.00 sec)

6.显示每个部门的平均工资和最高工资

select deptno, avg(sal) 平均工资, max(sal) 最高工资
from emp
group by deptno;

查询结果:

+--------+--------------+--------------+
| deptno | 平均工资     | 最高工资     |
+--------+--------------+--------------+
|     10 |  2916.666667 |      5000.00 |
|     20 |  2175.000000 |      3000.00 |
|     30 |  1566.666667 |      2850.00 |
+--------+--------------+--------------+
3 rows in set (0.00 sec)

7.显示平均工资低于2000的部门号及其平均工资

select deptno, avg(sal) 平均工资
from emp
group by deptno
having avg(sal) < 2000;

查询结果:

+--------+--------------+
| deptno | 平均工资     |
+--------+--------------+
|     30 |  1566.666667 |
+--------+--------------+
1 row in set (0.00 sec)

8.显示每种岗位的雇员数量和平均工资

select job, count(distinct empno) 雇员数量, avg(sal) 平均工资
from emp
group by job;

查询结果:

+-----------+--------------+--------------+
| job       | 雇员数量     | 平均工资     |
+-----------+--------------+--------------+
| ANALYST   |            2 |  3000.000000 |
| CLERK     |            4 |  1037.500000 |
| MANAGER   |            3 |  2758.333333 |
| PRESIDENT |            1 |  5000.000000 |
| SALESMAN  |            4 |  1400.000000 |
+-----------+--------------+--------------+
5 rows in set (0.00 sec)

多表查询

其实,from 后面可以跟多张表

我们不妨尝试执行这个语句:

select * from emp, dept;

查询结果:

img

一共 56 行,而 emp 表是 14 行, dept 表是 4 行。一共 11 列,其中 8 列是 emp 表的,3 列的 dept 表的。

我们发现,这张大表的行数等于两个小表行数的乘积。

其实,这里的大表是两张小表作笛卡尔积的结果,也就是将一张表中的每一条记录都与另一张表中的所有记录进行组合。这本质上就是一种穷举

但是,这张表中有大量记录是没有意义的,比如第一条记录,将部门 20 的 SMITH 和部门 10 的信息组合,没有意义。所以我们需要筛选条件

select * 
from emp, dept 
where emp.deptno = dept.deptno;

注意

使用 表名.字段名 来区分不同表中的相同字段

查询结果:

img

题目

1.显示雇员名,雇员工资以及所在部门的名字

我们直接从这张组合好的表里面拿就可以了

select ename, sal, dname
from emp, dept
where emp.deptno = dept.deptno;

查询结果:

+--------+---------+------------+
| ename  | sal     | dname      |
+--------+---------+------------+
| SMITH  |  800.00 | RESEARCH   |
| ALLEN  | 1600.00 | SALES      |
| WARD   | 1250.00 | SALES      |
| JONES  | 2975.00 | RESEARCH   |
| MARTIN | 1250.00 | SALES      |
| BLAKE  | 2850.00 | SALES      |
| CLARK  | 2450.00 | ACCOUNTING |
| SCOTT  | 3000.00 | RESEARCH   |
| KING   | 5000.00 | ACCOUNTING |
| TURNER | 1500.00 | SALES      |
| ADAMS  | 1100.00 | RESEARCH   |
| JAMES  |  950.00 | SALES      |
| FORD   | 3000.00 | RESEARCH   |
| MILLER | 1300.00 | ACCOUNTING |
+--------+---------+------------+
14 rows in set (0.00 sec)

总结

多表查询,其实就是先将多表组合成一张表,然后进行单表查询。注意读题时确定需要的数据和哪些表有关。

2.显示部门号为 10 的部门名,员工名和工资

select dname, ename, sal
from emp, dept
where emp.deptno = dept.deptno and emp.deptno = 10;

查询结果:

+------------+--------+---------+
| dname      | ename  | sal     |
+------------+--------+---------+
| ACCOUNTING | CLARK  | 2450.00 |
| ACCOUNTING | KING   | 5000.00 |
| ACCOUNTING | MILLER | 1300.00 |
+------------+--------+---------+
3 rows in set (0.00 sec)

3.显示各个员工的姓名,工资,工资级别

select ename, sal, grade
from emp, salgrade
where sal between losal and hisal;

查询结果:

+--------+---------+-------+
| ename  | sal     | grade |
+--------+---------+-------+
| SMITH  |  800.00 |     1 |
| ALLEN  | 1600.00 |     3 |
| WARD   | 1250.00 |     2 |
| JONES  | 2975.00 |     4 |
| MARTIN | 1250.00 |     2 |
| BLAKE  | 2850.00 |     4 |
| CLARK  | 2450.00 |     4 |
| SCOTT  | 3000.00 |     4 |
| KING   | 5000.00 |     5 |
| TURNER | 1500.00 |     3 |
| ADAMS  | 1100.00 |     1 |
| JAMES  |  950.00 |     1 |
| FORD   | 3000.00 |     4 |
| MILLER | 1300.00 |     2 |
+--------+---------+-------+
14 rows in set (0.00 sec)

自连接

自连接(self-join)是指在一个表中将其不同的行之间建立关联关系的查询操作。即,将一个表自己与自己连接

自连接通常用于需要在同一张表中进行比较和分析的情况,例如查找同一部门中的员工之间的关系、查找某个节点的所有子节点等。

1.显示员工FORD的上级领导的编号和姓名

  1. 使用子查询
select empno, ename
from emp
where empno = (
    select mgr
    from emp
    where ename = 'FORD'
);

查询结果:

+--------+-------+
| empno  | ename |
+--------+-------+
| 007566 | JONES |
+--------+-------+
1 row in set (0.01 sec)
  1. 自连接

实现自连接的常用方法有两种,一是使用自身表格名和别名,二是使用 INNER JOIN,这里先用第一种方法。

select m.empno, m.ename
from emp e, emp m
where e.mgr = m.empno and e.ename = 'FORD';

在这个例子中,表格 emp 使用别名 em 来表示不同的表格,然后通过连接条件 e.mgr = m.empno 来建立关联关系。

查询结果:

+--------+-------+
| empno  | ename |
+--------+-------+
| 007566 | JONES |
+--------+-------+
1 row in set (0.00 sec)

from emp emp 这种写法是错误的,因为自连接后每个字段都有重名,会导致条件筛选和查询时都无法区分

多行子查询(单列)

我们上面用到的都是单行子查询,即只返回一行结果的子查询

多行子查询(multi-row subquery)是指返回多行结果的子查询。多行子查询通常用于比较子查询结果与某个范围、集合或列表中的值,或者用于在 WHEREHAVING 语句中过滤数据。

in 运算符

in 运算符用于测试某个值是否与指定值集合中的任何一个值相等,如果相等,则返回 true,否则返回 false。该运算符通常与子查询一起使用,以便在外部查询中比较内部查询返回的结果。

1.查询和10号部门的工作岗位相同的雇员的名字,岗位,工资,部门号,但是不包含10号部门自己的

select ename, job, sal, deptno
from emp
where job in (
    select distinct job
    from emp
    where deptno = 10
) and deptno != 10;

查询结果:

+-------+---------+---------+--------+
| ename | job     | sal     | deptno |
+-------+---------+---------+--------+
| SMITH | CLERK   |  800.00 |     20 |
| JONES | MANAGER | 2975.00 |     20 |
| BLAKE | MANAGER | 2850.00 |     30 |
| ADAMS | CLERK   | 1100.00 |     20 |
| JAMES | CLERK   |  950.00 |     30 |
+-------+---------+---------+--------+
5 rows in set (0.01 sec)

all 关键字

all 关键字,用于指定比较运算符(例如 =><>=<= 等)与子查询返回的所有值进行比较。all 关键字可以用于 wherehaving 语句中,放在子查询的前面,用于筛选出符合指定条件的记录。

使用 all关键字时,比较运算符将与子查询返回的所有值进行比较,并返回 truefalse。如果比较运算符与所有值都匹配,则 all 返回 true,否则返回 false。如果子查询返回的结果为空,则 all 返回 true

显示工资比部门30的所有员工的工资高的员工的姓名,工资,部门号

  1. 使用 all 关键字
select ename, sal, deptno
from emp
where sal > all (
    select distinct sal
    from emp
    where deptno = 30
);

查询结果:

+-------+---------+--------+
| ename | sal     | deptno |
+-------+---------+--------+
| JONES | 2975.00 |     20 |
| SCOTT | 3000.00 |     20 |
| KING  | 5000.00 |     10 |
| FORD  | 3000.00 |     20 |
+-------+---------+--------+
4 rows in set (0.00 sec)
  1. 使用 max()

比10部门所有人工资高,就是比10部门最高工资高

使用 max 聚合函数,转换为单行子查询

select ename, sal, deptno
from emp
where sal > (
    select max(sal)
    from emp
    where deptno = 30
);

查询结果:

+-------+---------+--------+
| ename | sal     | deptno |
+-------+---------+--------+
| JONES | 2975.00 |     20 |
| SCOTT | 3000.00 |     20 |
| KING  | 5000.00 |     10 |
| FORD  | 3000.00 |     20 |
+-------+---------+--------+
4 rows in set (0.00 sec)

any 关键字

all 关键字的区别:

all 关键字表示与子查询中所有值比较,全为 true 返回 true,否则返回 false

any 关键字表示与子查询中所有值比较,有 true 则返回 true,全为 false 返回 false

显示工资比部门30的任意员工的工资高的员工的姓名,工资,部门号(包含部门30的员工)

  1. 使用 any
select ename, sal, deptno
from emp
where sal > any (
    select distinct sal
    from emp
    where deptno = 30
);

查询结果:

+--------+---------+--------+
| ename  | sal     | deptno |
+--------+---------+--------+
| ALLEN  | 1600.00 |     30 |
| WARD   | 1250.00 |     30 |
| JONES  | 2975.00 |     20 |
| MARTIN | 1250.00 |     30 |
| BLAKE  | 2850.00 |     30 |
| CLARK  | 2450.00 |     10 |
| SCOTT  | 3000.00 |     20 |
| KING   | 5000.00 |     10 |
| TURNER | 1500.00 |     30 |
| ADAMS  | 1100.00 |     20 |
| FORD   | 3000.00 |     20 |
| MILLER | 1300.00 |     10 |
+--------+---------+--------+
12 rows in set (0.00 sec)
  1. 使用 min
select ename, sal, deptno
from emp
where sal > (
    select min(sal)
    from emp
    where deptno = 30
);

查询结果:

+--------+---------+--------+
| ename  | sal     | deptno |
+--------+---------+--------+
| ALLEN  | 1600.00 |     30 |
| WARD   | 1250.00 |     30 |
| JONES  | 2975.00 |     20 |
| MARTIN | 1250.00 |     30 |
| BLAKE  | 2850.00 |     30 |
| CLARK  | 2450.00 |     10 |
| SCOTT  | 3000.00 |     20 |
| KING   | 5000.00 |     10 |
| TURNER | 1500.00 |     30 |
| ADAMS  | 1100.00 |     20 |
| FORD   | 3000.00 |     20 |
| MILLER | 1300.00 |     10 |
+--------+---------+--------+
12 rows in set (0.00 sec)

多列子查询

我们已经学会了单行单列和多行单列的子查询。

多列子查询(也称为多值子查询)是指返回多个列作为结果的子查询,这些值通常是作为一个整体被传递给外部查询。多列子查询可以在 SELECTWHEREFROMHAVING 语句中使用,用于返回多个值以进行进一步处理或过滤。

查询和SMITH的部门和岗位完全相同的所有雇员,不含SMITH本人

select *
from emp
where (deptno, job) = (
    select deptno, job
    from emp
    where ename = 'SMITH'
) and ename != 'SMITH';

查询结果:

+--------+-------+-------+------+---------------------+---------+------+--------+
| empno  | ename | job   | mgr  | hiredate            | sal     | comm | deptno |
+--------+-------+-------+------+---------------------+---------+------+--------+
| 007876 | ADAMS | CLERK | 7788 | 1987-05-23 00:00:00 | 1100.00 | NULL |     20 |
+--------+-------+-------+------+---------------------+---------+------+--------+
1 row in set (0.00 sec)

注意

由于多列子查询返回的是多个值,所以需要将这些值用括号括起来,以便在 WHERE 子句中使用。

from 子句中的子查询

form 子句中使用子查询可以帮助我们从嵌套查询的结果集中检索数据,并将其用作外部查询的表格或视图。这对于需要根据特定的条件筛选或连接数据的查询非常有用。

1.显示每个高于自己部门平均工资的员工姓名、部门、工资、平均工资

select ename, e.deptno, sal, avgsal
from emp e, (
    select deptno, avg(sal) avgsal
    from emp
    group by deptno
) s
where e.deptno = s.deptno and sal > avgsal;

上述查询语句先用子查询查询各部门的平均工资,然后与 emp 表连接。

查询结果:

+-------+--------+---------+-------------+
| ename | deptno | sal     | avgsal      |
+-------+--------+---------+-------------+
| ALLEN |     30 | 1600.00 | 1566.666667 |
| JONES |     20 | 2975.00 | 2175.000000 |
| BLAKE |     30 | 2850.00 | 1566.666667 |
| SCOTT |     20 | 3000.00 | 2175.000000 |
| KING  |     10 | 5000.00 | 2916.666667 |
| FORD  |     20 | 3000.00 | 2175.000000 |
+-------+--------+---------+-------------+
6 rows in set (0.00 sec)

2.查找每个部门工资最高的人的姓名、工资、部门、最高工资

select ename, sal, s.deptno, msal
from emp e, (
    select deptno, max(sal) msal
    from emp
    group by deptno
) s
where e.deptno = s.deptno and sal = msal;

查询结果:

+-------+---------+--------+---------+
| ename | sal     | deptno | msal    |
+-------+---------+--------+---------+
| BLAKE | 2850.00 |     30 | 2850.00 |
| SCOTT | 3000.00 |     20 | 3000.00 |
| KING  | 5000.00 |     10 | 5000.00 |
| FORD  | 3000.00 |     20 | 3000.00 |
+-------+---------+--------+---------+
4 rows in set (0.00 sec)

3.显示每个部门的信息(部门名,编号,地址)和人员数量

  1. 使用子查询
select dname, tmp.deptno, loc, dept_size
from dept, (
    select deptno, count(*) dept_size
    from emp
    group by deptno
) tmp
where dept.deptno = tmp.deptno;

查询结果:

+------------+--------+----------+-----------+
| dname      | deptno | loc      | dept_size |
+------------+--------+----------+-----------+
| ACCOUNTING |     10 | NEW YORK |         3 |
| RESEARCH   |     20 | DALLAS   |         5 |
| SALES      |     30 | CHICAGO  |         6 |
+------------+--------+----------+-----------+
3 rows in set (0.00 sec)
  1. 不使用子查询
select dname, emp.deptno, loc, count(*) dept_size
from dept, emp
where dept.deptno = emp.deptno
group by emp.deptno, dname, loc;

上述查询中 group by 后面的 dname, loc 已经没有实际意义,只是为了这两个字段可以在查询结果中显示

查询结果:

+------------+--------+----------+-----------+
| dname      | deptno | loc      | dept_size |
+------------+--------+----------+-----------+
| ACCOUNTING |     10 | NEW YORK |         3 |
| RESEARCH   |     20 | DALLAS   |         5 |
| SALES      |     30 | CHICAGO  |         6 |
+------------+--------+----------+-----------+
3 rows in set (0.00 sec)

合并查询

合并查询(Union Query)是指将两个或多个 SELECT 查询的结果合并成一个结果集的操作。合并查询的结果集中不包含重复的行。

在 SQL 中,使用 UNION 关键字来执行合并查询。UNION 可以连接两个 SELECT 查询的结果集,返回一个包含两个结果集的集合,并且不包含重复行。如果需要包含重复的行,则可以使用 UNION ALL 关键字。

将工资大于2500或职位是MANAGER的人找出来

  1. 使用 union
select ename, sal, job
from emp
where sal > 2500
union
select ename, sal, job
from emp
where job = 'MANAGER';

查询结果:

+-------+---------+-----------+
| ename | sal     | job       |
+-------+---------+-----------+
| JONES | 2975.00 | MANAGER   |
| BLAKE | 2850.00 | MANAGER   |
| SCOTT | 3000.00 | ANALYST   |
| KING  | 5000.00 | PRESIDENT |
| FORD  | 3000.00 | ANALYST   |
| CLARK | 2450.00 | MANAGER   |
+-------+---------+-----------+
6 rows in set (0.00 sec)
  1. 使用 or
select ename, sal, job
from emp
where sal > 2500 or job = 'MANAGER';

查询结果:

+-------+---------+-----------+
| ename | sal     | job       |
+-------+---------+-----------+
| JONES | 2975.00 | MANAGER   |
| BLAKE | 2850.00 | MANAGER   |
| CLARK | 2450.00 | MANAGER   |
| SCOTT | 3000.00 | ANALYST   |
| KING  | 5000.00 | PRESIDENT |
| FORD  | 3000.00 | ANALYST   |
+-------+---------+-----------+
6 rows in set (0.00 sec)

注意

在进行合并查询时,每个 SELECT 查询必须包含相同数量的列,并且这些列必须具有相同的数据类型和顺序。否则,合并查询可能会失败或返回不正确的结果。

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

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

相关文章

【历史上的今天】4 月 23 日:YouTube 上传第一个视频;数字音频播放器的发明者出生

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 4 月 23 日&#xff0c;世界读书日。在 1564 年的这一天&#xff0c;全世界最卓越的文学家之一莎士比亚出生&#xff1b;1616 年的这一天&#xff0c;莎士比亚…

ubuntu22.04普通用户配置cuda

ubuntu22.04普通用户配置cuda 1. 问题描述2. 解决方法2.1 查看安装cuda版本2.2 修改普通用户自己的环境变量2.3 重新执行初始化文档2.4 查看nvcc版本&#xff0c;测试是否成功 1. 问题描述 在ubuntu22.04服务器上使用root用户安装了cuda&#xff0c;普通用户登录时仍然没办法直…

中国社科院与美国杜兰大学金融管理硕士项目——你永远可以,成为想要的自己

有人说过&#xff0c;世界上最好的保鲜就是不断进步&#xff0c;每一次改变都是新生的开始&#xff0c;让自己成为更好的更值得爱的人。你要相信&#xff0c;不论任何时候&#xff0c;你都可以成为想要的自己。就像我们在职攻读硕士学位&#xff0c;经过在社科院与杜兰大学金融…

聚观早报|周鸿祎360员工不会被GPT淘汰;蚂蚁集团再捐1亿种树治沙

今日要闻&#xff1a;周鸿祎称360员工不会被GPT淘汰&#xff1b;特斯拉ModelS/X美国售价全系上涨&#xff1b;蚂蚁集团再捐1亿支持种树治沙&#xff1b;复旦大学MOSS大模型正式开源&#xff1b;电影《灌篮高手》票房突破2亿元 周鸿祎称360员工不会被GPT淘汰 4 月 21 日下午&am…

链表中的递归算法C语言带你看看

25. K 个一组翻转链表 难度困难1998收藏分享切换为英文接收动态反馈 给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么…

Redis实现分布式锁的正确姿势 | Spring Cloud 36

一、分布式锁 1.1 什么是分布式锁 分布式锁&#xff0c;即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题&#xff0c;而分布式锁&#xff0c;就是解决了分布式系统中控制共享资源访问的问题。与单体应用不同的是&#xff0c;分布式系统中竞争共享…

【网络安全】SSRF漏洞

ssfr ssrf产生的原因原理展示使用不当可能出现ssrf漏洞函数漏洞检测(靶场一)代码curl是什么检测服务器是否可以从其他服务器获取数据使用file协议获取远端服务器的内容利用dict协议探测端口 漏洞检测&#xff08;靶场二&#xff09;代码file_get_contents()利用file协议读取服务…

过来人(江苏)专转本考试后的感悟和经验,真的很受用

过来人转本考试后的感悟和经验&#xff0c;真的很受用&#xff01; 转本不仅是分数的较量&#xff0c;也是信息收集、时间管理、学习能力、毅力等等的较量。 同学们在转本中难免会遇见一些困难&#xff0c;为了避免走弯路&#xff0c;一起来看看过来人的感悟和经验吧&#xf…

Android音频使用webrtc降噪处理、回声消除

Android音频使用webrtc降噪处理、回声消除 介绍音频处理在Android应用中的重要性和应用场景 音频处理在Android应用中扮演着重要的角色&#xff0c;它能够改善用户体验&#xff0c;提升应用的功能性和吸引力。下面将介绍音频处理在Android应用中的广泛应用以及音频处理对用户体…

深度学习--基础(一)pytorch安装--cpu

在线安装 无GPU的时候&#xff0c;只能安装CPU版本&#xff0c;打开官网 https://pytorch.org/ 直接Pip安装即可 国内访问这些下载安装会出现超时的情况&#xff0c;可以-i指定国内安装源&#xff1a; pip3.11 install torch torchvision torchaudio -i https://pypi.tuna.ts…

【架构】微前端

文章目录 概述优劣优点缺点 微前端的整体架构微前端部署平台微前端运行时基于 SPA 的微前端架构 应用生命周期 方案qiankun 主应用qiankun微应用Vue 2 微应用 来源 概述 微前端不是单纯的前端框架或者工具&#xff0c;而是一套架构体系&#xff0c;这个概念最早在 2016 年底被…

[C++]内存管理

目录 内存管理&#xff1a;&#xff1a; 1.C/C内存分布 2.C语言中动态内存管理方式 3.C中动态内存管理 4.operator new与operator delete函数 5.new和delete的实现原理 6.定位new表达式 7.内存泄漏 内存管理&#xff1a;&#xff1a; 1.C/C内存分布 int globalVar 1; stati…

第11届蓝桥杯省赛真题剖析-2020年6月21日Scratch编程初中级组

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第125讲。 第11届蓝桥杯省赛&#xff0c;这是2020年6月21日举办的省赛Scratch考试真题&#xff0c;原定于2020年3月7日…

速度和可靠性是可以两全其美的

通过采用整体方法并利用工程原理和实践&#xff0c;我们可以两全其美——速度和可靠性。 当涉及到在线服务时&#xff0c;正常运行时间是至关重要的&#xff0c;但这并不是唯一需要考虑的事情。想象一下&#xff0c;经营一家网上商店——让你的网站99.9%的时间都可用听起来不错…

10个很少人知道的 JavaScript 控制台方法

您肯定听说过 console.log() 并且可能一直在使用它。它非常流行&#xff0c;像 Visual Studio Intellicode 这样的工具通常会在 IDE 中输入时在任何其他控制台方法之前推荐它&#xff1a; 在今天这篇文章中&#xff0c;我们将探讨一些最有用的控制台方法及其在数据可视化、调试…

服装产业数字化升级,低代码赋能企业柔性生产

一、前言 随着消费者个性化需求不断增加&#xff0c;我国服装行业正面临着前所未有的挑战。此外&#xff0c;电商渠道占比不断提高&#xff0c;订单碎片化程度进一步放大&#xff0c;传统计划性生产的供应链流程已无法适应不断变化的着衣需求&#xff0c;使得服装品牌商在供应…

6.MapReduce的框架原理

本章节将分为InputFormat,split,OutputFormat三个小章节来介绍框架原理 1.InputFormat 1.1 切片: 将输入数据分成几份,每份交给一个MapTask去处理(getSplit方法) 对于MapRedcue,切片发生在客户端,任务提交的时候 机制:MapTask并行度决定机制 切了多少片,就开启多少个M…

记录一次heap.bin文件分析

背景&#xff1a;生产服务运行OA系统服务&#xff0c;用户使用过程中&#xff0c;突然发现服务不能访问&#xff0c;接到用户反馈后&#xff0c;第一时间登陆服务器&#xff0c;发现东方通进程在、端口在&#xff0c;服务器CPU使用率并不高&#xff0c;为不影响用户正常开展业务…

记录bingAI解答pyjwt参数和头部的问题

python jwt.encode()函数的参数是哪些 正在搜索: python jwt.encode()函数的参数 正在为你生成答案… 已收到消息. 在Python中&#xff0c;jwt.encode()函数的参数有三个&#xff1a;第一个是payload&#xff0c;主要用来存放有效的信息&#xff0c;例如用户名&#xff0c;过期…

去后厂村开游戏厅吧!基于PP-TinyPose的简易体感游戏开发框架

‍ 项目简介 近年来&#xff0c;随着虚拟现实技术和计算机图形学技术的迅猛发展&#xff0c;越来越多的体感游戏在市场上出现并受到欢迎。要让体感游戏具备良好的表现&#xff0c;就需要使用大量的传感器&#xff0c;甚至需要使用高性能的计算机和图形处理器。这不仅会增加游戏…