基础MySQL的语法练习

news2024/11/19 2:33:27

在这里插入图片描述

基础MySQL的语法练习

create table DEPT(
  DEPTNO int(2) not null,
  DNAME  VARCHAR(14),
  LOC    VARCHAR(13)
);

alter table DEPT
  add constraint PK_DEPT primary key (DEPTNO);

create table EMP
(
  EMPNO    int(4) primary key,
  ENAME    VARCHAR(10),
  JOB      VARCHAR(9),
  MGR      int(4),
  HIREDATE DATE,
  SAL      double(7,2),
  COMM     double(7,2),
  DEPTNO   int(2)
);

alter table EMP
  add constraint FK_DEPTNO foreign key (DEPTNO)
  references DEPT (DEPTNO);

create table SALGRADE
(
  GRADE int primary key,
  LOSAL double(7,2),
  HISAL double(7,2)
);

create table BONUS
(
  ENAME VARCHAR(10),
  JOB   VARCHAR(9),
  SAL   double(7,2),
  COMM  double(7,2)
);

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);

select * from dept;
EXPLAIN select * from dept;
EXPLAIN select DEPTNO from dept;

select * from emp;
EXPLAIN select * from emp;
EXPLAIN select EMPNO from emp;

select * from salgrade;
EXPLAIN select * from salgrade;
EXPLAIN select GRADE from salgrade;


select * from bonus;
EXPLAIN select * from bonus;
EXPLAIN select ENAME from bonus;

-- 对emp表查询
select * from emp;

EXPLAIN select empno,ename,sal from emp;

EXPLAIN select * from emp where sal > 2000;

select empno,ename,job,mgr from emp where sal > 2000;

-- 起别名:
select empno 员工编号,ename 姓名,sal 工资 from emp;

select empno as 员工编号,ename as 姓名,sal as 工资 from emp;

select empno as '员工编号',ename as "姓名",sal as 工资 from emp;

-- 算术运算符:
select empno,ename,sal,sal+1000 as '涨薪后',deptno from emp where sal < 2500;

select empno,ename,sal,comm,sal+comm from emp;

-- 去重操作
select job from emp;

select distinct job from emp;

select job,deptno from emp;

select distinct job,deptno from emp; -- 对后面的所有列组合 去重 ,而不是单独的某一列去重

-- 排序:
select * from emp order by sal; -- 默认情况下是按照升序排列的

select * from emp order by sal asc; -- asc 升序,可以默认不写

select * from emp order by sal desc; -- desc 降序

select * from emp order by sal asc ,deptno desc; -- 在工资升序的情况下,deptno按照降序排列

-- 查看emp表:
select * from emp;

-- where子句:将过滤条件放在where子句的后面,可以筛选/过滤出我们想要的符合条件的数据:
-- where 子句 + 关系运算符
select * from emp where deptno = 10;

select * from emp where deptno > 10;

select * from emp where deptno >= 10;

select * from emp where deptno < 10;

select * from emp where deptno <= 10;

select * from emp where deptno <> 10;

select * from emp where deptno != 10;

select * from emp where job = 'CLERK';

select * from emp where job = 'clerk';

select * from emp where binary job = 'clerk'; -- binary区分大小写

select * from emp where hiredate < '1981-12-25';

-- where 子句 + 逻辑运算符:and
select * from emp where sal > 1500 and sal < 3000;  -- (1500,3000)

select * from emp where sal > 1500 && sal < 3000;

select * from emp where sal > 1500 and sal < 3000 order by sal;

select * from emp where sal between 1500 and 3000; -- [1500,3000]

-- where 子句 + 逻辑运算符:or
select * from emp where deptno = 10 or deptno = 20;
select * from emp where deptno = 10 || deptno = 20;
select * from emp where deptno in (10,20);
select * from emp where job in ('MANAGER','CLERK','ANALYST');

-- where子句 + 模糊查询:
-- 查询名字中带A的员工  -- %代表任意多个字符 0,1,2.....
select * from emp where ename like '%A%' ;

-- -任意一个字符
select * from emp where ename like '__A%';

-- 关于null的判断:
select * from emp where comm is null;
select * from emp where comm is not null;

-- 小括号的使用  :因为不同的运算符的优先级别不同,加括号为了可读性
select * from emp where job = 'SALESMAN' or job = 'CLERK' and sal >=1500; -- 先and再or  and > or

select * from emp where job = 'SALESMAN' or (job = 'CLERK' and sal >=1500);

select * from emp where (job = 'SALESMAN' or job = 'CLERK') and sal >=1500;

-- 函数举例:
select empno,ename,lower(ename),upper(ename),sal from emp;

-- 函数的功能:封装了特定的一些功能,我们直接拿过来使用,可以实现对应的功能
-- 函数作用:为了提高select的能力
-- 注意:函数没有改变数据自身的值,而是在真实数据的上面进行加工处理,展示新的结果而已。
select max(sal),min(sal),count(sal),sum(sal),avg(sal) from emp;
-- 函数的分类:
-- lower(ename),upper(ename) :改变每一条结果,每一条数据对应一条结果  -- 单行函数
-- max(sal),min(sal),count(sal),sum(sal),avg(sal):多条数据,最终展示一个结果  -- 多行函数

-- 单行函数包含:
-- 1.字符串函数
-- substring字符串截取,2:从字符下标为2开始,3:截取长度3    (下标从1开始)
select ename,length(ename),substring(ename,2,3) from emp;

-- 2.数值函数
select abs(-5),ceil(5.3),floor(5.9),round(3.14) from dual; -- dual实际就是一个伪表

select abs(-5) 绝对值,ceil(5.3) 向上取整,floor(5.9) 向下取整,round(3.14) 四舍五入;  -- 如果没有where条件的话,from dual可以省略不写

select ceil(sal) from emp;

select 10/3,10%3,mod(10,3);

-- 3.日期与时间函数
select * from emp;

select curdate(),curtime() ; -- curdate()年月日 curtime()时分秒

select now(),sysdate(),sleep(3),now(),sysdate() from dual; -- now(),sysdate() 年月日时分秒

insert into emp values (999,'lili','SALASMAN',7698,now(),1000,null,30);

-- 4.流程函数
-- if相关
select empno,ename,sal,if(sal>=2500,'高薪','低薪') as '薪资等级' from emp; -- if-else 双分支结构

select empno,ename,sal,comm,sal+ifnull(comm,0) from emp; -- 如果comm是null,那么取值为0 -- 单分支

select nullif(1,1),nullif(1,2) from dual; --  如果value1等于value2,则返回null,否则返回value1

-- case相关:
-- case等值判断
select empno,ename,job,
case job
 when 'CLERK' then '店员'
 when 'SALESMAN'  then '销售'
 when 'MANAGER' then '经理'
 else '其他'
end '岗位',
sal from emp;

-- case区间判断:
select empno,ename,sal,
case
 when sal<=1000 then 'A'
 when sal<=2000 then 'B'
 when sal<=3000 then 'C'
 else 'D'
end '工资等级',
deptno from emp;

-- 6.其他函数
select database(),user(),version() from dual;

-- 多行函数:
select max(sal),min(sal),count(sal),sum(sal),sum(sal)/count(sal),avg(sal) from emp;

select * from emp;

-- 多行函数自动忽略null值
select max(comm),min(comm),count(comm),sum(comm),sum(comm)/count(comm),avg(comm) from emp;

-- max(),min(),count()针对所有类型   sum(),avg() 只针对数值型类型有效
select max(ename),min(ename),count(ename),sum(ename),avg(ename) from emp;

-- count --计数
-- 统计表的记录数:方式1:
select * from emp;
select count(ename) from emp;
select count(*) from emp;

-- 统计表的记录数:方式2
select 1 from dual;
select 1 from emp;
select count(1) from emp;

select * from emp;

-- 统计各个部门的平均工资
select deptno,avg(sal) from emp; -- 字段和多行函数不可以同时使用

select deptno,avg(sal) from emp group by deptno; -- 字段和多行函数不可以同时使用,除非这个字段属于分组

select deptno,avg(sal) from emp group by deptno order by deptno desc;

-- 统计各个岗位的平均工资
select job,avg(sal) from emp group by job;
select job,lower(job),avg(sal) from emp group by job;


-- 统计各个部门的平均工资 ,只显示平均工资2000以上的  - 分组以后进行二次筛选 having
select deptno,avg(sal) from emp group by deptno having avg(sal) > 2000;

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

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

-- 统计各个岗位的平均工资,除了MANAGER
-- 方法1:
select job,avg(sal) from emp where job != 'MANAGER' group by job;

-- 方法2:
select job,avg(sal) from emp group by job having job != 'MANAGER'

# 单表查询总结
# 【1】select语句总结
# select column, group_function(column)
# from table
# [where condition]
# [group by group_by_expression]
# [having group_condition]
# [order by column];
# 注意:顺序固定,不可以改变顺序

# 【2】select语句的执行顺序
# from--where -- group by– select-having-order by

-- 单表查询练习:
-- 列出工资最小值小于2000的职位
select job,min(sal)
from emp
group by job
having min(sal) < 2000 ;


-- 列出平均工资大于1200元的部门和工作搭配组合
select deptno,job,avg(sal)
from emp
group by deptno,job
having avg(sal) > 1200
order by deptno;

-- 统计[人数小于4]部门的平均工资。
select deptno,count(1),avg(sal)
from emp
group by deptno
having count(1) < 4;

-- 统计各部门的最高工资,排除最高工资小于3000的部门。
select deptno,max(sal)
from emp
group by deptno
having max(sal) < 3000;

-- 查询员工的编号,姓名,部门编号:
select * from emp;
select empno,ename,deptno from emp;

-- 查询员工的编号,姓名,部门编号,部门名称:
select * from emp; -- 14条记录
select * from dept; -- 4条记录

-- 多表查询 :
-- 交叉连接:cross join
select *
from emp
cross join dept; -- 14*4 = 56条 笛卡尔乘积 : 没有实际意义,有理论意义

select *
from emp
join dept; -- cross 可以省略不写,mysql中可以,oracle中不可以

-- 自然连接:natural join
-- 优点:自动匹配所有的同名列 ,同名列只展示一次 ,简单
select *
from emp
natural join dept;

select empno,ename,sal,dname,loc
from emp
natural join dept;

-- 缺点: 查询字段的时候,没有指定字段所属的数据库表,效率低
-- 解决: 指定表名:
select emp.empno,emp.ename,emp.sal,dept.dname,dept.loc,dept.deptno
from emp
natural join dept;

-- 缺点:表名太长
-- 解决:表起别名
select e.empno,e.ename,e.sal,d.dname,d.loc,d.deptno
from emp e
natural join dept d;

-- 自然连接 natural join 缺点:自动匹配表中所有的同名列,但是有时候我们希望只匹配部分同名列:
-- 解决: 内连接 - using子句:
select *
from emp e
inner join dept d -- inner可以不写
using(deptno) -- 这里不能写natural join了 ,这里是内连接

-- using缺点:关联的字段,必须是同名的
-- 解决: 内连接 - on子句:
select *
from emp e
inner join dept d
on (e.deptno = d.deptno);

-- 多表连接查询的类型: 1.交叉连接  cross join  2. 自然连接  natural join
-- 3. 内连接 - using子句   4.内连接 - on子句
-- 综合看:内连接 - on子句

select *
from emp e
inner join dept d
on (e.deptno = d.deptno)
where sal > 3500;

-- 条件:
-- 1.筛选条件  where  having
-- 2.连接条件 on,using,natural
-- SQL99语法 :筛选条件和连接条件是分开的

-- 外连接查询


-- inner join - on子句: 显示的是所有匹配的信息
select *
from emp e
inner join dept d
on e.deptno = d.deptno;

select * from emp;
select * from dept;
-- 问题:
-- 1.40号部分没有员工,没有显示在查询结果中
-- 2.员工scott没有部门,没有显示在查询结果中

-- 外连接:除了显示匹配的数据之外,还可以显示不匹配的数据

-- 左外连接: left outer join   -- 左面的那个表的信息,即使不匹配也可以查看出效果
select *
from emp e
left outer join dept d
on e.deptno = d.deptno;

-- 右外连接: right outer join   -- 右面的那个表的信息,即使不匹配也可以查看出效果
select *
from emp e
right outer join dept d
on e.deptno = d.deptno;

-- 全外连接  full outer join -- 这个语法在mysql中不支持,在oracle中支持 -- 展示左,右表全部不匹配的数据
-- scott ,40号部门都可以看到
# select *
# from emp e
# full outer join dept d
# on e.deptno = d.deptno;


-- 解决mysql中不支持全外连接的问题:

select *
from emp e
left outer join dept d
on e.deptno = d.deptno
union -- 并集 去重 效率低
select *
from emp e
right outer join dept d
on e.deptno = d.deptno;

select *
from emp e
left outer join dept d
on e.deptno = d.deptno
union all-- 并集 不去重 效率高
select *
from emp e
right outer join dept d
on e.deptno = d.deptno;

-- mysql中对集合操作支持比较弱,只支持并集操作,交集,差集不支持(oracle中支持)
-- outer可以省略不写

-- 三表连接查询

-- 查询员工的编号、姓名、薪水、部门编号、部门名称、薪水等级
select * from emp;
select * from dept;
select * from salgrade;

select e.ename,e.sal,e.empno,e.deptno,d.dname,s.*
from emp e
right outer join dept d
on e.deptno = d.deptno
inner join salgrade s
on e.sal between s.losal and s.hisal

-- 自连接查询

-- 查询员工的编号、姓名、上级编号,上级的姓名
select * from emp;

select e1.empno 员工编号,e1.ename 员工姓名,e1.mgr 领导编号,e2.ename 员工领导姓名
from emp e1
inner join emp e2
on e1.mgr = e2.empno;

-- 左外连接:
select e1.empno 员工编号,e1.ename 员工姓名,e1.mgr 领导编号,e2.ename 员工领导姓名
from emp e1
left outer join emp e2
on e1.mgr = e2.empno;

-- 92语法:多表查询
-- 查询员工的编号,员工姓名,薪水,员工部门编号,部门名称:
select e.empno,e.ename,e.sal,e.deptno,d.dname
from emp e,dept d;
-- 相当于99语法中的cross join ,出现笛卡尔积,没有意义
select e.empno,e.ename,e.sal,e.deptno,d.dname
from emp e,dept d
where e.deptno = d.deptno;
-- 相当于99语法中的natural join


-- 查询员工的编号,员工姓名,薪水,员工部门编号,部门名称,查询出工资大于2000的员工
select e.empno,e.ename,e.sal,e.deptno,d.dname
from emp e,dept d
where e.deptno = d.deptno and e.sal > 2000;

-- 查询员工的名字,岗位,上级编号,上级名称(自连接):
select e1.ename,e1.job,e1.mgr ,e2.ename
from emp e1,emp e2
where e1.mgr = e2.empno;

-- 查询员工的编号、姓名、薪水、部门编号、部门名称、薪水等级
select e.empno,e.ename,e.sal,e.deptno,d.dname,s.grade
from emp e,dept d,salgrade s
where e.deptno = d.deptno and e.sal >= s.losal and e.sal <= s.hisal;

-- 总结:
-- 1.92语法麻烦
-- 2.92语法中 表的连接条件 和  筛选条件  是放在一起的没有分开
-- 3.99语法中提供了更多的查询连接类型:cross,natural,inner,outer



-- 引入子查询:
-- 查询所有比“CLARK”工资高的员工的信息
-- 步骤1:“CLARK”工资
select sal from emp where ename = 'CLARK'; -- 2450
-- 步骤2:查询所有工资比2450高的员工的信息
select * from emp where sal > 2450;
-- 两次命令解决问题 --》效率低 ,第二个命令依托于第一个命令,第一个命令的结果给第二个命令使用,但是
-- 因为第一个命令的结果可能不确定要改,所以第二个命令也会导致修改

-- 将步骤1和步骤2合并 --》子查询:
select * from emp where sal > (select sal from emp where ename = 'CLARK');
-- 一个命令解决问题 --》效率高

# 【2】执行顺序:
# 先执行子查询,再执行外查询;
# 【3】不相关子查询:
# 子查询可以独立运行,称为不相关子查询。
# 【4】不相关子查询分类:
# 根据子查询的结果行数,可以分为单行子查询和多行子查询。

-- 单行子查询:
-- 查询工资高于平均工资的雇员名字和工资。
select ename,sal
from emp
where sal > (select avg(sal) from emp);

-- 查询和CLARK同一部门且比他工资低的雇员名字和工资。
select ename,sal
from emp
where deptno = (select deptno from emp where ename = 'CLARK')
      and
      sal < (select sal from emp where ename = 'CLARK');

-- 查询职务和SCOTT相同,比SCOTT雇佣时间早的雇员信息
select * 
from emp
where job = (select job from emp where ename = 'SCOTT')
      and
      hiredate < (select hiredate from emp where ename = 'SCOTT')

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

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

相关文章

react配置 axios

配置步骤&#xff08;基本配置&#xff09;&#xff1a; 1.安装 axios cnpm install axios --save2.src/utils 新建一个 request.js文件(没有utils就新建一个目录然后再建一个request.js) 3.request代码如下&#xff1a; 这个是最简单的配置了&#xff0c;你可以根据自己的需…

【试题029】C语言Switch case语句小例题

1.题目&#xff1a; #include <stdio.h> void main(){ int i11,j; ji%3; switch(j){ case1: case2:printf("%d\n",j); break; default:printf("%d\n",i); } } 该段代码的输出结果是&#xff1f; 2.代码分析&#xff1a; int i 11, j;j …

切水果游戏开发1

多数无益&#xff0c;上代码&#xff1a; import pygame import random# 初始化pygame pygame.init()# 设置窗口尺寸 window_width 800 window_height 600 window_size (window_width, window_height) window pygame.display.set_mode(window_size)# 设置窗口标题 pygame.…

Leetcode—260.只出现一次的数字III【中等】

2023每日刷题&#xff08;三&#xff09; Leetcode—260.只出现一次的数字III 借助lowbit的解题思想 参考的灵茶山艾府大神的题解 实现代码 /*** Note: The returned array must be malloced, assume caller calls free().*/ int* singleNumber(int* nums, int numsSize, in…

python安装gdal

下载whl https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal 安装 pip install GDAL-3.1.4-cp36-cp36m-win_amd64.whl

uniapp 小程序优惠劵样式

先看效果图 上代码 <view class"coupon"><view class"tickets" v-for"(item,index) in 10" :key"item"><view class"l-tickets"><view class"name">10元优惠劵</view><view cl…

SLAM中相机姿态估计算法推导基础数学总结

相机模型 基本模型 内参 外参 对极几何 对极约束 外积符号 基础矩阵F和本质矩阵E 相机姿态估计问题分为如下两步: 本质矩阵 E t ∧ R Et^{\wedge}R Et∧R因为 t ∧ t^{\wedge} t∧其实就是个3x3的反对称矩阵&#xff0c;所以 E E E也是一个3x3的矩阵 用八点法估计E…

C语言求 n 阶勒让德多项式的值

完整代码&#xff1a; // 用递归法求 n 阶勒让德多项式的值 // 递归公式为&#xff1a; // n0,P(n)(x)1 // n1,P(n)(x)x // n>1,P(n)(x)((2*n-1)*x - P(n-1)(x) - (n-1)*P(n-2)(x)) / n #include<stdio.h>double func(int n,int x){if (n0){return 1;}if (n1){return…

爬虫基础 JS逆向

爬虫核心 1. HTTP协议与WEB开发 1. 什么是请求头请求体&#xff0c;响应头响应体 2. URL地址包括什么 3. get请求和post请求到底是什么 4. Content-Type是什么 &#xff08;1&#xff09;简介 HTTP协议是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;…

行列转换:MySQL中的数据变形魔法

行转列 使用CASE函数聚合函数 SELECTMAX(CASE WHEN salesperson John THEN sales_amount END) AS John_Sales,MAX(CASE WHEN salesperson Alice THEN sales_amount END) AS Alice_Sales FROM sales_data;列转行 使用UNIO连接每列数据 SELECT product_id,store1 store,sto…

什么是SSL证书

SSL 证书&#xff08;也称为公钥证书&#xff09;是安装在 Web 服务器上的加密文件&#xff0c;可帮助建立安全、加密的在线通信&#xff0c;SSL 证书有两个主要用途&#xff1a; 提供加密&#xff1a;当访问者的浏览器通过SSL连接到您的网站时&#xff0c;信息交换是加密的&a…

Openssl数据安全传输平台003:Protobuf - 部署

文章目录 一、Windows环境二、Linux Centos环境三、protobuf测试3.1 新建.proto文件生成相应的类3.2 .proto生成相应的类的使用3.3 配置VS3.4 test代码 一、Windows环境 在windows下配置&#xff0c;无论protobuf是什么版本&#xff0c;IDE和编译器的版本都要保持一致。 比如…

Day4力扣打卡

打卡记录 同积元组&#xff08;哈希表 排列组合&#xff09; 链接 思路&#xff1a;用哈希表将数组中出现的两不同数乘积依次记录&#xff0c;将出现两次以上的乘积组通过排列组合计算总情况个数。 class Solution { public:int tupleSameProduct(vector<int>& num…

Redis设计与实现笔记 - 数据结构篇

Redis设计与实现笔记 - 数据结构篇 相信在我们日常使用中&#xff0c;会经常跟 Redis 打交道。数据结构 String、Hash、List、Set 和 ZSet 都是常用的数据类型。对于使用场景&#xff0c;我们可以滔滔不绝地说很多&#xff0c;但是我们从来就没有关心过它们的底层实现&#xf…

智慧矿山:煤流量检测AI算法——等级还是百分比显示,哪种更适合现场

智慧矿山作为矿山工业的重要发展方向&#xff0c;AI算法的应用正逐渐改变传统的矿山生产方式。在智慧矿山中&#xff0c;煤流量检测是其中一项重要的任务。然而&#xff0c;在煤流量检测中&#xff0c;是采用等级显示还是百分比显示更适合现场呢&#xff1f; 煤流量检测作为煤矿…

【试题022】C语言算数表达式例题

1.题目&#xff1a;设int a12&#xff0c;b10;&#xff0c;则表达式a%b/a*b的值为&#xff1f; 2.代码分析&#xff1a; #include <stdio.h> int main() {//设int a12&#xff0c;b10;&#xff0c;则表达式a%b/a*b的值为&#xff1f;int a 12,b 10;printf("%d\n…

Python 面向对象进阶

目录 1 面向对象三大特征介绍2 继承2.1 语法格式2.2 类成员的继承和重写2.3 查看类的继承层次结构 3 object根类3.1 dir()查看对象属性3.2 重写__str__()方法 4 多重继承5 MRO()6 super()获得父类定义7 多态8 特殊方法和运算符重载9 特殊属性10 对象的浅拷贝和深拷贝11 组合12 …

CSP赛前复习总结

文章目录 时空复杂度分析算法回顾基础算法贪心删数问题题目描述输入格式输出格式样例输入样例输出 贪心问题的具体应用双指针二分例题 分治 数据结构做题经历&#xff08;低级错误&#xff09;先从周考题说起FirstSecond 还有一两天就CSP了&#xff0c;特此为近期的复习进行总结…

运机集团-001288 基本面分析(20231019)

运机集团-001288 基本面分析 基本情况 公司名称&#xff1a;四川省自贡运输机械集团股份有限公司 A股简称&#xff1a;运机集团 成立日期&#xff1a;2003-09-28 上市日期&#xff1a;2021-11-01 所属行业&#xff1a;通用设备制造业 主营业务&#xff1a;以带式输送机为主的节…

计算机操作系统-第十一天

目录 1、进程的状态 创建态与就绪态 运行态 终止态 新建态 结束态 进程状态的转换 进程的组织方式 链接方式&#xff08;常见&#xff09; 索引方式&#xff08;少见&#xff09; 本节思维导图 1、进程的状态 创建态与就绪态 1、进程正在被创建时&#xff0c;处于…