MySQL数据库03 数据库查询语句汇总
DQL 查询
基础数据
CREATE TABLE `dept`(`deptno` INT(2) NOT NULL, `dname` VARCHAR(14),`loc` VARCHAR(13),CONSTRAINT pk_dept PRIMARY KEY(deptno)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO dept VALUES (10,'ACCOUNTING','NEW YORK');
INSERT INTO dept VALUES (20,'RESEARCH','DALLAS');
INSERT INTO dept VALUES (30,'SALES','CHICAGO');
INSERT INTO dept VALUES (40,'OPERATIONS','BOSTON');CREATE TABLE `emp` (`empno` int(4) NOT NULL PRIMARY KEY,`ename` VARCHAR(10), `job` VARCHAR(9), `mgr` int(4), `hiredate` DATE, `sal` float(7,2), `comm` float(7,2), `deptno` int(2),CONSTRAINT fk_deptno FOREIGN KEY(deptno) REFERENCES dept(deptno)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO EMP VALUES (7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
INSERT INTO EMP VALUES (7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
INSERT INTO EMP VALUES (7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
INSERT INTO EMP VALUES (7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);
INSERT INTO EMP VALUES (7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
INSERT INTO EMP VALUES (7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);
INSERT INTO EMP VALUES (7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);
INSERT INTO EMP VALUES (7788,'SCOTT','ANALYST',7566,'1987-07-13',3000,NULL,20);
INSERT INTO EMP VALUES (7839,'KING','PRESIDENT',NULL,'1981-11-07',5000,NULL,10);
INSERT INTO EMP VALUES (7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
INSERT INTO EMP VALUES (7876,'ADAMS','CLERK',7788,'1987-07-13',1100,NULL,20);
INSERT INTO EMP VALUES (7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);
INSERT INTO EMP VALUES (7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);
INSERT INTO EMP VALUES (7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10);CREATE TABLE `salgrade` ( `grade` int, `losal` int, `hisal` int
) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO SALGRADE VALUES (1,700,1200);
INSERT INTO SALGRADE VALUES (2,1201,1400);
INSERT INTO SALGRADE VALUES (3,1401,2000);
INSERT INTO SALGRADE VALUES (4,2001,3000);
INSERT INTO SALGRADE VALUES (5,3001,9999);
基础数据表分析
emp 员工表
字段名 employee | 解释说明 | 备注 |
---|---|---|
empno | 员工编号 | |
ename | 员工姓名 | |
job | 工作种类 |
CLERK 办事员 SALESMAN 推销员 MANAGER 经理 ANALYST 研究员 PRESIDENT 董事长 |
mgr | 经理上司 | 该字段指向的是 另外一名员工的编号 |
hiredate | 入职时间 | mysql 中的日期类型 |
sal | 工资 | |
comm | 奖金 | 有null 值存在较多的字段 |
deptno | 部门编号 | 指向另外的一些表数据 |
部门表
dept | 描述 | |
---|---|---|
deptno | 部门编号 | |
dname | 部门名称 |
ACCOUNTING 会计 RESEARCH 研究所 SALES 销售部 OPERATIONS 运营部 |
loc | 地址 |
工资等级表
salgrade | |
---|---|
grade | 等级编号 |
losal | 最低工资 |
hisal | 最高工资 |
简单查询
基础查询
select [字段] from 表名
select * from emp;
# 查询所有数据 在数据量很庞大的情况下, 效率低, 不推荐使用
# 指定查询字段 (使用逗号隔开)
select empno,ename.sal from emp;
as 子句
# 更改表头
select empno as 编号,ename as 姓名 ,sal as 工资 from emp;
# 给表起别名
select e.empno,e.ename,e.sal from emp as e;
as 可以省略不写
select empno 编号,ename 姓名 ,sal 工资 from emp;
distinct 关键字
# 查看 emp 表中的工作种类
select job 工作 from emp;
# 去除工作中重复性的数据
select distinct job 工作 from emp;
每一个字段都相同,才可以去除重复
在返回结果中使用表达式(函数)
# 所有员工的工资涨薪 10%
select ename 姓名,sal 工资 from emp;
select ename 姓名,sal*1.1 工资 from emp;
select 456*123; // 不依赖于任何一张表
条件查询
语法 select [字段] from 表名 [where 条件]
比较运算符
> < >= <= = !=
判断是否为空 is null / is not null
between and 在什么与什么之间 相当于 >= && <=
in 在集合范围内
like 像 模糊查询
基本比较
查询工资大于 2000 的所有员工
select * from emp where sal > 2000
查询工作为办事员的 所有员工
select * from emp where job = 'clerk'
查询入职时间 在1981年5月份之后入职的所有员工的姓名以及 入职时间
select ename "姓名" , hiredate "入职时间" from emp
where hiredate > '1981-05-31'
is null
查询 没有上级的 员工的编号和职位
select empno "编号" , job "职位" from emp where mgr is null;
查询 奖金不为null 的 所有员工
select * from emp where comm is not null;
between and
查询工资在1000 到2000 之间的员工的姓名和工资
select ename,sal from emp where sal between 1000 and 2000;
- 左右边界都包含在内
- 小值在前, 大值在后
in
查询工作为 办事员或者是 销售员的员工
select * from emp where job = 'CLERK' or job = 'SALESMAN';
select * from emp where job in ('CLERK','SALESMAN');
查询 20号和30号部门中的所有员工
select * from emp where deptno in (20,30);
like 模糊查询
占位符
- % 任意字符 0个或多个
- (_) 一个任意字符
查询姓名中带有 A 字符的 所有员工
select * from emp where ename like '%A%';
查询姓名中首字母为 A 字符的所有员工
select * from emp where ename like 'A%';
查询姓名中 第二个字母为A的所有员工
select * from emp where ename like '_A%';
注意
# 如果说
select * from emp where ename like 'A';
相当于
select * from emp where ename = 'A';
逻辑运算符
and &&
or ||
not !
查询入职时间早于1981 年5月, 并且职位为经理的员工
select * from emp WHERE hiredate < '1981-05-01' and job = 'MANAGER'
排序查询
语法: order by 需要排序的字段 指定规则(默认升序), 第二个需要排序的字段
- 可以根据字段名 排序
- 可以根据 字段的别名排序
- 根据字段的位置编号排序
查询所有员工信息, 按照工资升序排列
select * from emp order by sal ;
select * from emp order by sal desc;
查询所有员工信息, 按照工资升序排列,如果工资相同, 再按照入职时间降序排序
select * from emp order by sal , hiredate desc;
按照员工编号降序 查询所有员工信息
select * from emp order by 1 desc;
select empno 编号 , enamel from emp order by 编号 desc;
分页查询(限定查询)
语法 语句的最后使用 分页
limit [m ,] n 从第m条记录开始 查询, 一共返回 n条数据
如果m 项不指定, 默认为 0
查询工资最高的5 名员工
select * from emp order by sal desc limit 5;
查询工资从高到低排名第7 - 10 位的的4 名员工
select * from emp order by sal desc limit 6,4;
查询职位为 销售员的 并且总工资高于 1500 的前三名员工, 按照工资降序排列
select * from emp
where job = 'SALESMAN' and (sal + comm)> 1500
order by sal desc
limit 3
Mysql函数
统计函数/聚合函数
函数名 | 说明 |
---|---|
count() | 统计, 计数 |
sum() | 求和 |
avg() | 平均数 |
max() | 最大值 |
min() | 最小值 |
统计emp 表总数据条数
忽略 值为null 的字段
一般情况下, count() 中 统计那些非空字段 (主键)
select count(*) from emp; # 返回值为一个数字
select count(1) from emp;
SELECT COUNT(empno) FROM emp;
统计该公司所有员工的总工资
select sum(sal) from emp;
统计该公司的平均工资
select sum(sal)/count(empno) from emp;
select avg(sal) from emp;
统计最高工资和 最低工资
select max(sal), min(sal) from emp;
数学函数
abs(n)
返回n的绝对值
mod(n,m)
取模运算,返回n被m除的余数(同%操作符)
floor(n)
返回不大于n的最大整数值
ceiling(n)
返回不小于n的最小整数值
round(n,d)
返回n的四舍五入值,保留d位小数(d的默认值为0)
truncate(n,d)
保留数字n的d位小数并返回
pow(x,y)
power(x,y) 返回值x的y次幂
sqrt(n) 返回非负数n的平方根
pi() 返回圆周率
rand()
rand(n)
返回在范围0到1.0内的随机浮点值(可以使用数字n作为初始值)
计算 2的31次幂
select pow(2,31); # 不依赖于任何表 , 不需要写from
# 但是oracle 数据库需要添加虚表
# 获取随机数 0-1
select rand();
# 获取 5-10 之间的随机数
SELECT ROUND(RAND()*5+5);
字符串函数
length(str)
ascii(str)
返回字符串str的第一个字符的ascii值(str是空串时返回0)
concat(str1,str2,...)
把参数连成一个长字符串并返回(任何参数是null时返回null)
substring(str,pos,len)
substring(str from pos for len)
replace(str,from_str,to_str)
用字符串to_str替换字符串str中的子串from_str并返回
trim([[both | leading | trailing] [remstr] from] str)
返回前缀或后缀remstr被删除了的字符串str(位置参数默认both,remstr默认值为空格)
查询员工中 名字字符长度为 5 的所有员工
select * from emp where length(ename) = 5
查询员工的姓名和工资, 以如下格式显示 (XXX的工资是: 0.00)
select ename,sal from emp;
select concat(ename,'的工资是: ',sal) from emp;
把所有员工姓名中 的A字符 全部隐藏
select replace(ename,'A','') from emp;
日期函数
now()
sysdate()
current_timestamp() 以'yyyy-mm-dd hh:mm:ss'或yyyymmddhhmmss格式返回当前日期
时间(根据返回值所处上下文是字符串或数字)
curtime()
current_time() 以'hh:mm:ss'或hhmmss格式返回当前时间值(根据返回值所处上
下文是字符串或数字)
curdate()
current_date() 以'yyyy-mm-dd'或yyyymmdd格式返回当前日期值(根据返回值所
处上下文是字符串或数字)
month(date)
返回date中的月份数值
datediff(now(),hiredate) 判断两个日期之间相隔天数 (大日期在前, 小日期在后)timestampdiff(日月年等参数, 两个日期参数小日期在前, 大日期在后)判断两个日期之间相隔的 年月日 adddate(时间参数 interval 3 month) 日期累加
last_day() 当前月的最后一天
获取系统当前时间
select now();
select sysdate() ;
插入数据
insert into emp (empno,ename,hiredate,sal) values (9527,'孙继斌',now(),6000);
delete from emp where empno = 9527;
统计五月份入职的员工
select * from emp where month(hiredate) = 5;
查询所有员工入职的天数
select datediff(now(),hiredate) from emp;
#查询入职的天数大于 13000 的所有员工
select * from emp where datediff(now(),hiredate) > 13000
查看100 天之后的日期
# 加 100 天
select adddate(now(), interval 100 day);
# 加 三个 月
select adddate(now(), interval 3 month);
# 加 100 天 简写
select adddate(now(),100);
转换函数
字符串转日期 str_to_date(字符串, 日期格式)
日期转字符串 date_format(date,format) 根据format字符串格式化date值
查询当前系统时间
select now();
# 格式化 日期
select date_format(now(),'%Y年%m月%d号 %H:%i:%s');
把字符串转换为日期
select str_to_date('2008年08月08号','%Y年%m月%d号')
隐式转换
SELECT '5'+3 ; # 结果为 8
# 如果 日期的书写格式 为 '2019-07-25' 能够自动转换为 日期格式
select * from emp where hiredate > '1981-05-01'
系统函数
ifnull(字段名,如果为null 需要替换的值)
UUID() 随机字符串数 绝对不可能重复的随机字符串 通过电脑硬件编码和当前系统时间
MD5() 加密函数
给淘宝网订单表添加 随机的字符串订单号
select uuid();
行列转换函数
案例准备
create table t_score
(name varchar(20) ,subject varchar(20),score float
);
INSERT INTO `t_score` VALUES('王海', '语文', '86'),('王海', '数学', '83'),('王海', '英语', '93'),('陶俊', '语文', '88'),('陶俊', '数学', '84'),('陶俊', '英语', '94'),('刘可', '语文', '80'),('刘可', '数学', '86'),('刘可', '英语', '88'),('李春', '语文', '89'),('李春', '数学', '80'),('李春', '英语', '87');
实现效果
SELECT NAME 姓名, CASE SUBJECT WHEN '语文' THEN score END 语文,CASE SUBJECT WHEN '数学' THEN score END 数学,CASE SUBJECT WHEN '英语' THEN score END 英语
FROM t_score;
使用分组去除 重复的姓名
SELECT NAME 姓名, CASE SUBJECT WHEN '语文' THEN score END 语文,CASE SUBJECT WHEN '数学' THEN score END 数学,CASE SUBJECT WHEN '英语' THEN score END 英语
FROM t_score
group by name;
继续优化 去除null 值
SELECT NAME 姓名, max(CASE SUBJECT WHEN '语文' THEN score END) 语文,max(CASE SUBJECT WHEN '数学' THEN score END) 数学,max(CASE SUBJECT WHEN '英语' THEN score END) 英语
FROM t_score
group by name;
复杂查询
子查询
在查询语句中的WHERE条件子句中,又嵌套了另外一个查询语句
一个语句 查询条件 依赖于另外一条语句的 结果
单行单列
职位和 SMITH 先生 职位相同的所有员工
分步查询
1- 查询 SMITH 职位
select job from emp where ename = 'SMITH';
2- 查询 职位为 该职位的所有员工
select * from emp
where job = (select job from emp where ename = 'SMITH') and ename != 'SMITH'
查询入职时间 早于 JAMES 的 所有员工
select * from emp
where hiredate < (select hiredate from emp where ename = 'JAMES')
查询 和SMITH 部门相同的员工
select * from emp
where deptno = (select deptno from emp where ename = 'SMITH')
单列多行
查询和 SMITH 或者 WARD 工作部门相同的所有员工
1- SMITH 或者 WARD 工作部门
select deptno from emp where ename = 'SMITH' or ename = 'WARD'
2- 所有员工
select * from emp
where deptno in (select deptno from emp where ename = 'SMITH' or ename = 'WARD')
单行多列
查询和SMITH 工作相同 部门也相同的员工
1- 查询SMITH 工作, 部门
select job , deptno from emp where ename = 'SMITH'
2-
select * from emp
where (job,deptno) = (select job , deptno from emp where ename = 'SMITH')
多行多列
查询人数最多的部门, 有多少人
# 分组查询出每个部门的人数
select deptno,count(empno)
from emp
group by deptno
# 把以上表的查询结果 当成一张新表来查询
select max(ct)
from (SELECT deptno,COUNT(empno) ct FROM emp GROUP BY deptno ) newtable
作为一个字段来存在
(基于多表查询) 列出 员工姓名以及其 上司的姓名
select e.ename 员工,(select m.ename from emp m where e.mgr = m.empno) 上司 from emp e
分组查询
按照某些字段分组, 按照各个组, 分别统计查询
查询10 号部门的员工人数
select count(empno) from emp where deptno = 10
查询各个部门的员工人数
#先按照部门分组 每个部门多少人
select deptno,count(empno) from emp group by deptno
注意:
使用group by 分组, 不允许在select 中 随意添加字段
- 在group by 中出现的字段可以添加
- 统计函数 可以添加
统计各种工作种类的员工人数
select count(empno) from emp group by job
统计每个部门的平均工资, 最高/最低工资
select deptno, avg(sal),max(sal),min(sal) from emp group by deptno
查询语句的执行顺序
select deptno
from emp
where sal > 1000
group by deptno
order by hiredate
limit 5
查询步骤
1- from
2- where 筛选
3- group by 按照某字段分组
4- select 列出要查看的字段
5- having 在分组之后执行的 筛选条件
6- order by
7- limit
验证语句的执行顺序
按照总工资排序所有员工
select ename 员工姓名,sal+comm 总工资 from emp order by 总工资
# null 不能和 其他值做运算
征兵 先体检 你满足的当兵的基本条件 , 分配兵种
where 筛选 要在分组前执行
统计函数 , 每个分组都有自己的统计结果, 统计函数是在分组之后开始执行的
where中 一定不允许出现 统计函数
having
查询平均工资 大于2000 的部门编号
# 1- 先获取所有部门的平均工资
# 2- 查询平均工资 > 2000
select deptno , avg(sal) from emp
group by deptno having avg(sal) > 2000
having 和 where的对比
- 两者都是筛选条件
- where 在分组之前执行 having 在分组之后执行
- where 中不能出现分组函数(统计函数) , having 可以使用该函数
查询 平均工资 最高的部门编号
# 1- 先获取所有部门的平均工资
select deptno , avg(sal) from emp group by deptno
# 2- 查询出最高的平均工资
select max(asl) from (select deptno , avg(sal) asl from emp group by deptno) nt
# 3- 该平均工资的部门
select deptno from emp group by deptno
having avg(sal) = (select max(asl) from (select deptno , avg(sal) asl from emp group by deptno) nt )第二种方式
SELECT deptno ,MAX(nt.asl) FROM (SELECT deptno , AVG(sal) asl FROM emp GROUP BY deptno) nt
多表查询
员工表
部门表
工资等级表
笛卡尔积
假设集合A={a, b},集合B={0, 1, 2},
则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。
查询两个数据表数据, 查询结果是把所有的可能
通过连接条件避免出现笛卡尔积
多表查询
- 给数据库表起别名, 便于引用
- 如果要查询的字段没有重复, 可以不指定表名
查询员工所有信息,以及该员工工作的部门信息
select emp.*, dept.* from emp , dept
第一种语法格式
select emp.*, dept.* from emp , dept where emp.deptno = dept.deptno;
# 给数据库表起别名, 便于引用
# 如果要查询的字段没有重复, 可以不指定表名
select e.*, d.* from emp e, dept d where e.deptno = d.deptno;
第二种语法格式
select e.*, d.* from emp e join dept d on e.deptno = d.deptno
# 相当于
select e.*, d.* from emp e inner join dept d on e.deptno = d.deptno
分类
内连接
在表中至少一个匹配时,则返回记录
给emp 添加一条没有部门信息的员工
insert into emp (empno,ename,hiredate,sal) values (10086,'支音',now(),10000);
查询员工的所有信息以及 该员工的工资等级
select e.*,s.grade
from emp e join salgrade s
on e.sal between s.losal and s.hisal
外链接
左外连接
从左表中返回所有的记录,即便在右中没有匹配的行
select e.*, d.* from emp e left join dept d on e.deptno = d.deptno
右外连接
select e.*, d.* from emp e right join dept d on e.deptno = d.deptno
全外连接(MySql 不支持, Oracle 支持)
select e.*, d.* from emp e full join dept d on e.deptno = d.deptno
三表查询案例
查询员工的所有信息, 和所属部门的所有信息, 和工资等级
select e.*, d.* ,s.grade
from emp e
join dept d on e.deptno = d.deptno
join salgrade s on e.sal between s.losal and hisal
select e.*, d.* ,s.grade
from emp e, dept d, salgrade s
where e.deptno = d.deptno and e.sal between s.losal and hisal
自连接查询
获取emp表中 所有 员工的姓名 以及该员工上司的姓名
select e.ename,m.ename
from emp e, emp m
where e.mgr = m.empno
select concat(e.ename,'的上司是: ',m.ename)
from emp e, emp m
where e.mgr = m.empno
联合查询
# 两次的查询结果 取并集
查询20 号部门和30 号部门的所有员工
# 以前的写法
select * from emp where deptno = 20 or deptno = 30;
select * from emp where deptno in (20,30);
使用并集
select * from emp where deptno = 20
union
select * from emp where deptno = 30;
使用并集 模拟 全外连接
select e.*, d.* from emp e left join dept d on e.deptno = d.deptno
union
select e.*, d.* from emp e right join dept d on e.deptno = d.deptno;
数据库设计
学生表
姓名
年龄
性别
电话
银行卡
手机卡
银行卡
银行卡号
所属银行
卡余额
开通业务
存取款流水
手机卡
手机卡号
所属运营商
余额
充值记录
第一范式 : 每列都是不可再分的最小数据单元
第二范式: 要求每个表只描述一件事情
第三范式: 除了主键以外的其他列都直接依赖于主键列
MySQL数据库03 数据库查询语句汇总相关推荐
- MySQL数据库(三):数据库设计与查询语句
MySQL数据库:数据库设计与查询语句 1.1 目录 文章目录 1.1 目录 1.2 数据库基本概念 1.3 实体和实体之间的关系 1.3.1 一对多 1:N 1.3.2 一对一(1:1) 1.3.3 ...
- 使用oracle数据库分页查询语句,各种数据库的分页查询语句
各种数据库的分页查询语句 1.oracle数据库分页select * from (select a.*,rownum rc from 表名 where rownum=endrow) a where a ...
- mysql日期与时间查询语句:查询当年、查询本年、查询当月、查询本周
mysql日期与时间查询语句:查询当年.查询本年.查询当月.查询本周 select sum(1) as years, (select sum(1) from `表名` where date_forma ...
- MySQL数据库查询语句汇总
基础查询 select [字段] from 表名 1,select * from emp; # 查询所有数据 在数据量很庞大的情况下, 效率低, 不推荐使用 2,select empno,enam ...
- mysql数据库条件语句怎么写_Mysql数据库的条件查询语句
对于分析人员来讲,Mysql数据库应用最多的是select查询语句,此篇文章主要介绍Mysql数据库的查询语句. 一.单表查询 1.带条件的查询 基本语法:select * from +表名称 +wh ...
- MySQL数据库高级SQL查询语句(单表查询,多表联合查询)
目录 SQL查询语句 基础查询 条件查询 模糊查询 字段控制查询 排序 聚合函数 分组查询 having子句 limit分页查询 多表连接查询 SQL查询语句 数据查询语言. 数据库执行DQL语句不会 ...
- mysql 数据库连表查询语句_数据库连表查询sql语句
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- mysql 伪表查询语句_MySQL数据库之select查询语句
select查询语句 语法 select [选项] 列名 [from 表名] [where 条件] [group by 分组] [order by 排序][having 条件] [limit 限制] ...
- MySQL数据库11——子查询语句
嵌入一个SELECT的语句称为子查询语句.虽然内连接也可以代替子查询,但是内连接效率不高.而且我个人觉得子查询更好理解. 单值子查询 果子查询返回单值,则可以使用关系运算符,例如,等于(=).不等于( ...
最新文章
- Python学习【第6篇】:Python之文件操作
- 深度学习每层的通道数如何计算_深度学习基础系列(一)| 一文看懂用kersa构建模型的各层含义(掌握输出尺寸和可训练参数数量的计算方法)...
- NetBeans中文乱码解决办法
- 第四十四期:1.3万亿条数据查询如何做到毫秒级响应?
- html div bgcolor,HTML body bgcolor transparent
- 月老办事处月云开发微信小程序源码
- css伪元素选择器,first-letter、first-line
- 灵悟礼品网上专卖店——分析类似项目的优缺点
- 「docker实战篇」python的docker爬虫技术-python脚本app抓取(13)
- 判断是否为 retina屏幕
- 201809-4 再卖菜(100分)
- 游戏云服务器应该怎么选
- C语言中的if条件判断
- Scanpy(四)使用ingest和BBKNN整合数据
- 我想做产品,滴滴优步怎么优化
- Codeforces Beta Round #82 (Div. 2) C. Buns(多重背包)
- 运行时错误 '-2147467259 (80004005)'
- 白杨SEO:我们说的SEO思维到底是什么?
- [SVA]SystemVerilog Assertion(SVA)編寫經驗
- 如何使用sharemouse共享鼠标
热门文章
- 2020年中国嵌入式软件市场现状分析,国家政策大力支持行业发展「图」
- NYOJ-61 传纸条 双线动态
- 鸿蒙系统有哪些型号可以尝鲜,支持数十款机型!鸿蒙系统尝鲜计划出炉,荣耀用户要失望了...
- 概率论与数理统计(2.1-2.2)随机变量和离散型分布
- 基于Java基础-面向对象实现植物大战僵尸简易版
- USTCOJ1240 黑屋 位运算
- mongoDB1: 安装与基础操作
- warning: require(./admin.php),WordPress提示require_once() Failed opening required的解决方法
- sas统计学习笔记(四)
- 2021蓝桥c++(B组)第二场----双阶乘