MySQL精讲系列文章(更新完毕)
《MySQL入门必看知识》
《MySQL精讲(一) | DQL数据查询语句全解析》
《MySQL精讲(二) | DML数据操作语句全解析》
《MySQL精讲(三) | DDL数据定义语句全解析 |数据类型和约束》
《MySQL精讲(四) | TCL事务控制语句全解析|视图》
《MySQL精讲(五) | 存储过程和函数》
《MySQL精讲(六) | 流程控制》
                                                                                               – by 凡尘阿凉

文章目录

  • 一、基础查询
  • 二、条件查询
  • 三、排序查询
  • 四、常见函数
  • 五、分组查询
  • 六、连接查询
  • 七、子查询
  • 八、分页查询
  • 九、联合查询


样本数据准备

进行DQL查询语句实验前,首先准备对应的数据,作为样本以供查询使用:

样本表链接:https://pan.baidu.com/s/1Qp81tD4htQaK5bO0k1sxQQ
提取码:0v6l

使用SQLyog中导入该SQL脚本,可以看到准备好的样本表:
在这里插入图片描述
在这里插入图片描述

该样本是某跨国企业员工管理的4张表,下图对每张表的各个字段做了介绍:
在这里插入图片描述

一、基础查询

语法:select 查询列表 from 表名;

特点:
查询列表可以是:表中的字段、常量值、表达式、函数。
查询的结果是一个虚拟的表格。

执行顺序:from > select (先找到表,再开始查询)

注意:`是着重号,当某张表中的字段与关键字冲突时,可以在该字段两边加上着重号,以标明其是一个字段,而不是关键字(如`name`)。
【基础查询】# 选中样本库
USER myemployees;# 1.查询表中的单个字段
SELECT last_name FROM employees;# 2.查询表中的多个字段
SELECT last_name,salary,email FROM employees;# 3.查询表中所有的字段
SELECT * FROM employees;# 4. 查询常量值
SELECT 'Tom';# 5.查询表达式
SELECT 7%6;# 6. 查询函数
SELECT VERSION();# 7.起别名(mysql中建议将起别名使用双引号引起来"别名")
/*
优点:便于理解;连接查询时,如果要查询的字段有重名情况,可以使用起别名来区分
*/
# 方式一,使用as
SELECT 7%6 AS 结果;
SELECT last_name AS,first_name ASFROM employees;
# 方式二,使用空格
SELECT 7%6 结果;
SELECT last_name 姓,first_name 名 FROM employees;
# 查询员工号为176的员工的姓名、部门、nianxin
SELECT last_name,department_id,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪 FROM employees; # 8.去重
SELECT DISTINCT department_id FROM employees;# 9.+号的作用
/*
select 13+21; 两个操作数都是数值型,自动做加法运算
其中一个为字符型,则将字符型转换为数值型select '13'+1; 	   转换成功,做加法运算select 'hello'+1;  转换失败,将字符型转换为0
select null+10; 只要其中一方为null,结果就为null补充ifnull函数:SELECT IFNULL(commission_pct,0) AS 奖金率,commission_pct FROM employees;
mysql中用来拼接的不是+号,而是concat函数
*/
SELECT CONCAT(last_name,first_name) AS "姓名" FROM employees;
基础查询总结 说明
1.查询表中的单个字段 select 字段1 from 表;
2.查询表中的多个字段 select 字段1,字段2,...字段n from 表;
3.查询表中的所有字段 select * from 表;
4.查询常量值 select '常量值;'
5.查询表达式 select 数值1 表达式 数值2;
6.查询函数 select f();
7.起别名 as
8.去重 distinct
9.拼接使用concat函数,而不是"+" concat(last_name,first_name)

学完了基础查询,尝试完成下面的练习题
在这里插入图片描述
答案:
1.正确
2.正确
3.应在英文状态下使用引号
4.DESC departments;SELECT * FROM departments;
5.SELECT CONCAT(first_name,',',last_name,',',IFNULL(email,0)) AS "out_put" FROM employees;

二、条件查询

语法:select 查询列表 from 表名 where 筛选条件;

执行顺序:from > where > select (先定位到表,然后开始筛选,最后走查询)

分类:

(1)按条件运算符筛选

条件运算符有: >  <    =   >=   <=   !=(或<>)

(2)按逻辑表达式筛选

支持&& || !,但推荐使用and or not 
逻辑表达式作用:用于连接条件表达式
&&或and: 两个都为true,结果为true,反之为false
||或or : 只要有一个条件为true,结果即为true,反之为false
!或not : 取反

(3)模糊查询

模糊查关键字:like、between and、in、is null
(1)like关键字可以判断字符型或数值型like一般和通配符搭配使用,通配符有%:代表任意多个字符,包含0个_:代表任意单个字符
(2)between...and关键字可以提高语句简洁度包含临界值两个临界值不能调换顺序
(3)in关键字可以提高语句简洁度in列表的值类型必须一致
(4)is null取反是 is not null  
【条件查询】(1)按条件运算符筛选# 1.查询工资>12000的员工
SELECT * FROM employees WHERE salary > 12000 ;# 2.查询部门编号不等于90的员工名和部门编号
SELECT department_name, department_id FROM departments WHERE department_id<>90;---------------------------------------------------------------------------------------------------------------------
(2)按逻辑表达式筛选# 1.查询工资在10000到20000之间的员工名、工资以及奖金率
SELECT last_name,salary,commission_pct FROM employees WHERE salary>=10000 AND salary<=20000;# 2.查询部门编号不是在90到110之间的,或工资高于15000的员工信息
SELECT * FROM employees WHERE NOT(department_id>=90 AND department_id<=110) OR salary>15000;---------------------------------------------------------------------------------------------------------------------
(3)模糊查询# (1)like关键字# 1.查询员工名中包含字符a的员工的信息
SELECT * FROM employees WHERE last_name LIKE '%a%';
# 2.查询员工名中第三个字符为n,第五个字符为l的员工名和工资
SELECT last_name,salary FROM employees WHERE last_name LIKE '__n_l%';
# 3.查询员工名中第二个字符为_的员工名(转义)
SELECT last_name FROM employees WHERE last_name LIKE '_$_%' ESCAPE '$';# (2)between...and关键字# 1.查询员工编号在100到120的员工信息
SELECT * FROM employees WHERE employee_id BETWEEN 100 AND 120;# (3)in关键字
# 1.查询员工的工种编号是IT_PROG、AD_VP、AD_PRES中的员工名和工种编号
SELECT last_name,job_id FROM employees WHERE job_id IN('IT_PROG','AD_VP','AD_PRES');# (4)is null
# 1.查询没有奖金的员工名和奖金率
SELECT last_name,commission_pct FROM employees WHERE commission_pct IS NULL;# is null仅仅可以用来判断null值;安全等于<=>既可以用来判断null值,又可以用来判断普通值
# is null的可读性高于<=>,建议使用is null
SELECT last_name,commission_pct FROM employees WHERE commission_pct <=> NULL;
条件查询总结 说明
(1)按条件运算符筛选 > < = >= <= !=(或<>)
(2)按逻辑表达式筛选 && || !或and or not
(3)模糊查询 关键字:like、between...and、in、is null

学完了条件查询,尝试完成下面的练习题这里是引用
答案:
一、SELECT salary,last_name FROM employees WHERE commission_pct IS NULL AND salary < 18000;
二、SELECT * FROM employees WHERE job_id <> 'IT' OR salary=12000;
三、DESC departments;
四、SELECT DISTINCT location_id FROM departments;
五、不一定,考虑字段有null的情况.

三、排序查询

语法:select 查询列表 from 表 where 筛选条件 order by 排序列表 asc|desc

特点:

  • 1.asc代表升序,esc代表降序,不写默认是升序。
  • 2.order by子句支持单个字段、多个字段、表达式、函数、别名

执行顺序:from > where > select > order by (order by一般放在查询语句的最后面,limit子句除外(后面会讲到))

【排序查询】
# 1.查询员工信息,要求工资从高到低排序
SELECT * FROM employees ORDER BY salary DESC;# 2.查询部门编号>=90的员工信息,按入职时间的先后进行排序【添加筛选条件】
SELECT * FROM employees WHERE department_id>=90 ORDER BY hiredate ASC;# 3.按照年薪的高低显示员工的信息和年薪【添加表达式排序】
SELECT * ,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪 FROM employees ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;
SELECT * ,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪 FROM employees ORDER BY 年薪 DESC; # ORDER BY后支持别名# 4.按照姓名的长度,显示员工的姓名和工资【按函数排序】
SELECT LENGTH(last_name) AS 字节长度, last_name,salary FROM employees ORDER BY 字节长度 DESC;# 5.查询员工信息,先按工资升序,再按员工编号降序
SELECT * FROM employees ORDER BY salary ASC ,employee_id DESC;

学完了排序查询,尝试完成下面的练习题这里是引用
答案:
1、SELECT last_name,department_id,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪 FROM employees ORDER BY 年薪 DESC,last_name ASC;
2、SELECT last_name,salary FROM employees WHERE salary NOT BETWEEN 8000 AND 17000 ORDER BY salary DESC;
3、SELECT * FROM employees WHERE email LIKE '%e%' ORDER BY LENGTH(email) DESC,department_id ASC;

排序查询总结 说明
升序 order by asc
降序 order by desc

四、常见函数

调用语法:select 函数名(实参列表) from 表;

概念:类似于Java中的方法,将一组逻辑语句封装在方法体中,对外暴露接口。

好处:
1.隐藏了实现细节
2.提高代码重用性

分类:分为单行函数和分组函数。其中单行函数又分为:字符函数、数学函数、日期函数、系统函数、流程控制函数。;分组函数用来做统计功能,又称为统计函数、聚合函数、组函数。

单行函数 说明
(1)字符函数 参数类型为字符型
获取参数值的字节个数 select length('字符串')
拼接 concat(字段1,字段2)
大小写转换 upper、lower
截取 substr(index,end)
查找 instr(主串,子串)
清除两边空格 trim(a from'aaaa字符串1aa')
左右填充 lpad('字符串1',左填充个数n,填充字符'a')lpad('字符串1',右填充个数n,填充字符'a')
替换 replace('字符串1','被更换的字符串','新的字符串')
(2)数学函数 参数类型为数值
四舍五入 round(小数,保留位数)
截取 truncate(小数,保留位数)
向上取整 ceil(被向上取整的数值)
向下取整 floor(被向下取整的数值)
取余 mod(n,m);结果的正负和被取余数n相同
随机数 rand();返回0-1之间的小数
(3)日期函数 参数为日期
返回当前完整日期 select now();
返回当前年月日 select curdate();
返回当前时分秒 select curtime();
截取指定部分 select YEAR(now()) as 年,MONTH(now()) as 月,DAY(now()) as 日;
字符串→日期 STR_TO_DATE('2020-7-7','%Y-%m-%d')
日期→字符串 DATE_FORMAT(NOW(),'%Y年%m月%d日')
返回两个日期相差的天数 datediff(日期1,日期2)
(4)系统函数 系统自带
查看当前版本 select version();
查看当前数据库 select database();
查看当前用户 select user();
自动加密 password('字符');或md5('字符');
(5)流程控制函数 类比Java
if if(奖金 IS NULL,'没奖金','有奖金')
case 在这里插入图片描述
分组函数 说明
sum 求和
avg 平均值
max 最大值
min 最小值
count 计算个数
【单行函数】# (1)字符函数-[参数类型为字符型]# 1.length 获取参数值的字节个数
SELECT LENGTH('john');
SELECT LENGTH('张三丰');
SHOW VARIABLES LIKE '%char%' # 查看字符集# 2.concat拼接字符串
SELECT CONCAT(last_name,'_',first_name) 姓名 from employees;# 3.upper、lower 大小写转换
SELECT UPPER('tom');
SELECT LOWER('TOM')
# 将姓变大写,名变小写,然后拼接
SELECT CONCAT(UPPER(last_name),LOWER(first_name))姓名 FROM employees;# 4.substr 拼接函数
# mysql中的索引从1开始
SELECT SUBSTR('若负平生意,何名作莫愁',7) AS out_put;
SELECT SUBSTR('若负平生意,何名作莫愁',1,3) AS out_put;
# 案例:姓名中首字符大写,其他字符小写,用_拼接并显示出来
SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)),'_',LOWER(SUBSTR(last_name,2))) oup_put FROM employees; # 5.instr 字符查找函数
# 返回子串在主串中的起始索引,没有返回零
SELECT INSTR('凡尘阿凉','阿凉') AS out_put;# 6.trim 清除空格函数
# 将字符两边的空格移除
SELECT LENGTH(TRIM('    凡尘    ')) AS out_put;
SELECT TRIM('a' FROM  'aaaaaa凡aaa尘aaaa') AS out_put;# 7.lpad 左填充函数
# 用指定的字符实现左填充指定长度
SELECT LPAD('凡尘',10,'*') AS out_put;# 8.rpad 右填充函数
# 用指定的字符实现右填充指定长度
SELECT RPAD('凡尘',10,'*') AS out_put;# 9.replace 替换函数
SELECT REPLACE('我的偶像是鲁迅','鲁迅','周冬雨') AS oup_put;---------------------------------------------------------------------------------------------------------
# (2)数学函数-[参数类型为数值]# 1.round 四舍五入函数
SELECT ROUND(1.65);
SELECT ROUND(1.567,2);# 2.ceil 向上取整函数
# 返回>=该参数的最小整数
SELECT CEIL(1.00);# 3.floor 向下取整函数
# 返回<=该参数的最大整数
SELECT FLOOR(-9.99);# 4.truncate 截取函数 
# 保留小数点后几位
SELECT TRUNCATE(1.65,1);# 5,mod 取余函数
# 结果的正负和被除数相同:a-a/b*b
SELECT MOD(10,-3);---------------------------------------------------------------------------------------------------------
# (3)日期函数-[参数为日期]
# 1.now 返回当前完整日期
SELECT NOW();# 2.curdate 返回当前年月日
SELECT CURDATE();# 3.curtime 返回当前时分秒
SELECT CURTIME();# 4.获取指定的部分
SELECT YEAR(NOW()) AS;
SELECT YEAR('1998-12-12') AS;
SELECT YEAR(hiredate)FROM employees;
SELECT MONTH(NOW());
SELECT MONTHNAME(NOW());# 5.str_to_date 将日期格式的字符转换为指定格式的日期
SELECT STR_TO_DATE('2020-7-7','%Y-%m-%d') AS out_put;
# 查询入职日期为1992-4-3的员工信息
SELECT * FROM employees WHERE hiredate = STR_TO_DATE('4-3 1992','%m-%d %Y');
# 6.date_format 将日期转换为字符
SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日');
# 查询有奖金的员工和入职日期(xx月/xx日 xx年)
SELECT last_name,DATE_FORMAT(hiredate,'%m月/%d日 %Y年') 入职日期 FROM employees WHERE commission_pct IS NOT NULL;---------------------------------------------------------------------------------------------------------
# (4)系统函数
# 1.查看当前版本
SELECT VERSION()
# 2.查看当前数据库
SELECT DATABASE();
# 3.查看当前用户
SELECT USER();---------------------------------------------------------------------------------------------------------
# (5)流程控制函数
# 1.if函数
SELECT IF(10>5,'大于','小于');
SELECT last_name,commission_pct, IF(commission_pct IS NULL,'没奖金','有奖金') AS out_put FROM employees;# 2.case函数
/*
方式一:类似于Java中的switch-case:
案例:查询员工工资,要求
部门号=30,显示的工资为1.1倍
部门号=40,显示的工资为1.2倍
部门号=50,显示的工资为1.3倍
其他部门,显示的工资为原工资
*/
SELECT salary 原始工资,department_id,
CASE department_id
WHEN 30 THEN salary*1.1
WHEN 40 THEN salary*1.2
WHEN 50 THEN salary*1.3
ELSE salary
END AS 新工资
FROM employees;/*
方式二:类似于Java中的多重if:
案例:查询员工的工资情况
工资>20000,显示A级别
工资>15000,显示B级别
工资>10000,显示C级别
否则,显示D级别
*/
SELECT salary,
CASE
WHEN salary>20000 THEN 'A'
WHEN salary>15000 THEN 'B'
WHEN salary>10000 THEN 'C'
ELSE 'D'
END AS 工资级别
FROM employees;
【分组函数】
/*SUM 求和AVG 平均值MAX 最大值MIN 最小值COUNT 计算个数
*/
# 综合使用
SELECT SUM(salary) "和",AVG(salary) "平均数",MAX(salary) "最大值",MIN(salary) "最小值",COUNT(salary) "总个数" 
FROM employees;/*
分组函数的特点:1.sum、avg一般用于处理数值型;max、min、count可以处理任何类型2.分组函数都忽略null值,都可以和distinct搭配去重3.和分组函数一同查询的字段要求是group by后的字段4.count函数经常用来统计行数,使用count(*)或count(1)或count(常量)
效率问题:MYISAM存储引擎下,count(*)效率高INNODB存储引擎下,count(*)和count(1)效率差不多,但比count(字段)要高
*/

学完了单行函数,尝试完成下面的练习题这里是引用
答案:
1、SELECT NOW();
2、SELECT employee_id,last_name,salary*1.2 "new salary" FROM employees;
3、SELECT LENGTH(last_name) "长度",SUBSTR(last_name,1) "首字符",last_name FROM employees ORDER BY 首字符;
4、SELECT CONCAT(last_name,' earns '),salary,' monthly but wants ',salary*3 AS "Dream Salary" FROM employees WHERE salary=24000;
5、
SELECT last_name,job_id AS job,
CASE job_id
WHEN ‘AD_PRES’ THEN ‘A’
WHEN ‘ST_MAN’ THEN ‘B’
WHEN ‘IT_PROG’ THEN ‘C’
WHEN ‘SA_PRE’ THEN ‘D’
WHEN ‘ST_CLERK’ THEN ‘E’
END AS “Grade”
FROM employees
WHERE job_id =“AD_PRES”;

学完了分组函数,尝试完成下面的练习题:
在这里插入图片描述
答案:
1.SELECT ROUND(MAX(salary),2) "最大值",ROUND(MIN(salary),2) "最小值",ROUND(AVG(salary),2) "平均值",ROUND(SUM(salary),2) "总和" FROM employees;
2.SELECT DATEDIFF(MAX(hiredate),MIN(hiredate)) "DIFFERNCE" FROM employees;
3.SELECT COUNT(*) AS "员工个数" FROM employees WHERE department_id=90;

五、分组查询

语法:
select 分组函数,查询列表(要求出现在group by的后面)
from 表
【where 筛选条件】
group by 分组的列表
【having 分组后的筛选】
【order by 子句】

执行顺序:from > where > group by > having > select > order by

分类 筛选源 位置 关键字
分组前筛选 原始表 group by where
分组后筛选 分组后的结果集 group by having

注意:
1.查询列表必须是分组函数和group by后出现的字段。
2.分组函数做条件一定放在having子句中。
3.能用分组前筛选的优先使用分组前筛选。
4.group by子句支持单个字段分组、多个字段分组(多个字段之间用逗号隔开,没有顺序要求)、表达式或函数。
5.可以添加排序(排序放在整个分组查询最后)
6.一般不在group by和having后使用别名。


# 1.查询每个工种的最高工资
SELECT MAX(salary) "最高工资",job_id "工种" FROM employees GROUP BY job_id;# 2.查询每个位置上的部门个数
SELECT COUNT(*) "部门个数",location_id "位置id" FROM departments GROUP BY location_id;# 3.查询邮箱中包含a字符的,每个部门的平均工资
SELECT AVG(salary) "平均工资",department_id "部门id" FROM employees WHERE email LIKE '%a%' GROUP BY department_id;# 4.查询每个领导手下的有奖金的员工的最高工资
SELECT MAX(salary) "最高工资",manager_id "领导编号" FROM employees WHERE NOT ISNULL(commission_pct)  GROUP BY manager_id;# 5.查询哪个部门的员工个数>2
# 思路:查询每个部门的个数,再根据结果哪个部门的员工个数>2
SELECT COUNT(*),department_id FROM employees GROUP BY department_id HAVING COUNT(*)>2;# 6.查询每个工种有奖金的员工的最高工资>12000的工种编号和最高工资
SELECT MAX(salary) "最高工资",job_id "工种" FROM employees WHERE NOT ISNULL(commission_pct) GROUP BY job_id HAVING MAX(salary)>12000;# 7.查询领导编号>102的每个领导手下员工的最低工资>5000的领导编号是哪个,以及其最低工资
SELECT MIN(salary) "最低工资",manager_id "领导编号" FROM employees WHERE manager_id>102 GROUP BY manager_id HAVING MIN(salary)>5000;# 8.按员工姓名的长度分组,查询每一组的员工个数,筛选员工个数>5的有哪些
SELECT COUNT(*) "员工个数",LENGTH(last_name) "姓名长度" FROM employees GROUP BY LENGTH (last_name) HAVING COUNT(*)>5;# 9.查询每个部门每个工种的员工的平均工资
SELECT AVG(salary) "平均工资",department_id "部门",job_id "工种" FROM employees GROUP BY department_id,job_id; # 10.查询每个部门每个工种的员工的平均工资,并按平均工资的高低显示
SELECT AVG(salary) "平均工资",department_id "部门",job_id "工种" FROM employees GROUP BY department_id,job_id ORDER BY AVG(salary) DESC;  

学完了分组查询,尝试完成下面的练习题这里是引用
答案:
1、SELECT MAX(salary),MIN(salary),AVG(salary),SUM(salary),job_id FROM employees GROUP BY job_id ORDER BY job_id ASC;
2、SELECT MAX(salary)-MIN(salary) "DIFFERENCE" FROM employees;
3、SELECT MIN(salary) ,manager_id FROM employees WHERE NOT ISNULL(manager_id) GROUP BY manager_id HAVING MIN(salary)>=6000;
4、SELECT department_id,COUNT(*),AVG(salary) FROM employees GROUP BY department_name ORDER BY AVG(salary) DESC;
5、SELECT COUNT(*) "个数",job_id FROM employees GROUP BY job_id;

六、连接查询

概念:查询的字段来自多个表。

分类:安装年代可以分为sql92sq99,按照功能分为内连接(交集)外连接(一个表中有,另一个表中没有)交叉连接;其中sql92仅支持内连接sql99除全外连接其他全都支持

注意:
1.如果为表起了别名,则查询的字段就不能使用原来的表名去限定。
2.当涉及到多表查询时,为表起别名可以有效提高语句简洁度,方便区分多个重名的字段。

连接查询分为下面三类:
(1)内连接inner

  • 等值连接
  • 非等值连接
  • 自连接

(2)外连接

  • 左外连接left outer
  • 右外连接right outer
  • 全外连接full outer

(3)交叉连接cross

【sql92标准】
# 1.等值连接
# 查询女神名和对应的男朋友名
# SELECT NAME,boyName FROM boys,beauty WHERE beauty.boyfriend_id=boys.id;# 1.查询员工名和对应的部门名
SELECT last_name "员工名",department_name "部门名" FROM employees,departments 
WHERE employees.department_id=departments.department_id;# 2.查询员工名、工种号、工种名
SELECT last_name,e.job_id,job_title FROM employees e,jobs j WHERE e.`job_id`=j.`job_id`;# 3.查询有奖金的员工名、部门名
SELECT last_name,department_name,commission_pct FROM employees e,departments d 
WHERE e.`department_id`=d.`department_id` AND e.`commission_pct` IS NOT NULL;# 等值连接+筛选
# 4.查询城市中第二个字符为o的部门名和城市名
SELECT department_name "部门名",city "城市名" FROM departments d,locations l 
WHERE d.`location_id`=l.`location_id` AND city LIKE '_o%'; # 等值连接+分组
# 5.查询每个城市的部门个数
SELECT COUNT(*) "部门个数",city "城市" FROM departments d,locations l 
WHERE d.`location_id`=l.`location_id` GROUP BY city;# 6.查询有奖金的每个部门的部门名、部门的领导编号、该部门最低工资
SELECT department_name,d.manager_id,MIN(salary) FROM departments d,employees e 
WHERE d.`department_id`=e.`department_id` AND commission_pct IS NOT NULL GROUP BY department_name,d.manager_id;# 7.查询每个工种的工种名、员工的个数并按员工的个数降序
SELECT job_title,COUNT(*) FROM employees e,jobs j WHERE e.`job_id`=j.`job_id` 
GOUP BY job_title ORDER BY COUNT(*) DESC;# 8.支持三表连接
# 查询员工名、部门名、所在的城市
SELECT last_name,department_name,city FROM employees e,departments d,locations l 
WHERE e.`department_id`=d.`department_id` AND d.`location_id`=l.`location_id`;# (2)非等值连接/*
先执行下面的语句,在myemployees数据库中创建新的job_grades表。CREATE TABLE job_grades
(grade_level VARCHAR(3),lowest_sal  INT,highest_sal INT);INSERT INTO job_grades
VALUES ('A', 1000, 2999);INSERT INTO job_grades
VALUES ('B', 3000, 5999);INSERT INTO job_grades
VALUES('C', 6000, 9999);INSERT INTO job_grades
VALUES('D', 10000, 14999);INSERT INTO job_grades
VALUES('E', 15000, 24999);INSERT INTO job_grades
VALUES('F', 25000, 40000);
*/
# 1.查询员工的工资和工资级别
SELECT salary,grade_level FROM employees e,job_grades j WHERE salary BETWEEN j.`lowest_sal` AND j.`highest_sal`;# (3)自连接
# 1.查询员工名和其上级的名称.
SELECT e.employee_id "员工id",e.last_name "员工姓名",m.employee_id "经理id",m.last_name "经理姓名" 
FROM employees e,employees m WHERE e.`manager_id`=m.`employee_id`;

学完了sql92标准的连接查询,尝试完成下面的练习题在这里插入图片描述
答案:
1、
SELECT last_name,d.department_id,department_name
FROM employees e,departments d
WHERE e.department_id=d.department_id;
2、
SELECT e.job_id,d.location_id FROM employees e,departments d
WHERE d.department_id=e.department_id
AND e.department_id=90;
3、
SELECT last_name , department_name , l.location_id , city
FROM employees e,departments d,locations l
WHERE e.department_id=d.department_id AND d.location_id=l.location_id AND e.commission_pct IS NOT NULL;
4、
SELECT last_name , job_id , d.department_id , department_name
FROM employees e,departments d,locations l
WHERE e.department_id=d.department_id AND d.location_id=l.location_id AND l.city=‘Toronto’;
5、
SELECT department_name,job_title,MIN(salary)
FROM departments d,employees e,jobs j
WHERE d.department_id=e.department_id AND e.job_id = j.job_id
GROUP BY job_title,department_name;
6、
SELECT COUNT(),country_id FROM departments d,locations l
WHERE d.location_id=l.location_id
GROUP BY country_id
HAVING COUNT(
)>2;
7、
SELECT e1.last_name “employees”,e1.employee_id “Emp#”,e2.last_name “manager”,e2.employee_id “Mgr#”
FROM employees e1,employees e2
WHERE e1.manager_id=e2.employee_id AND e1.last_name=‘kochhar’;

【sql99标准】
# (1)等值连接
# 1.查询员工名,部门名
SELECT last_name,department_name 
FROM employees e
INNER JOIN departments d
ON e.department_id=d.department_id;# 2.查询名字中包含e的员工名和工种名(添加筛选)
SELECT last_name,job_title
FROM employees e
INNER JOIN jobs j
ON e.job_id=j.job_id
WHERE last_name LIKE '%e%' OR job_title LIKE '%e%';# 3.查询部门个数>3的城市名和部门个数(分组+筛选)
SELECT city,COUNT(*) "部门个数"
FROM departments d
INNER JOIN locations l
ON d.location_id=l.location_id
GROUP BY city
HAVING COUNT(*)>3;# 4.查询哪个部门的部门员工个数>3的部门名和员工个数,并按个数降序(排序)
SELECT department_name "部门名",COUNT(*) "员工个数"
FROM departments d
INNER JOIN employees e
ON d.department_id=e.department_id
GROUP BY department_name
HAVING COUNT(*)>3
ORDER BY COUNT(*) DESC;# 5.查询员工名、部门名、工种名、并按部门名排序
SELECT last_name "员工名",department_name "部门名",job_title "工种名"
FROM employees e
INNER JOIN departments d ON d.department_id=e.department_id
INNER JOIN jobs j ON e.job_id=j.job_id
ORDER BY department_name ;# (2)非等值连接
# 查询员工工资级别
SELECT salary,grade_level
FROM employees e
JOIN job_grades j ON e.`salary` BETWEEN j.lowest_sal AND j.highest_sal;# 查询每个工资级别的个数>20的个数,并且按照工资级别降序排列
SELECT COUNT(*),grade_level
FROM employees e
JOIN job_grades j ON e.`salary` BETWEEN j.lowest_sal AND j.highest_sal
GROUP BY grade_level
HAVING COUNT(*)>20
ORDER BY grade_level DESC;# (3)自连接
# 查询员工的名字、上级的名字
SELECT e1.last_name "员工名",e2.last_name "上级名"
FROM employees e1
JOIN employees e2 ON e1.manager_id=e2.employee_id;
--------------------------------------------------------------------------------------------------------------# 二、外连接
# 1.查询男朋友不在男神表的女神名
# 左外连接
SELECT NAME 
FROM beauty LEFT OUTER JOIN boys ON beauty.boyfriend_id=boys.id
WHERE boys.id IS NULL;
# 右外连接
SELECT NAME
FROM boys RIGHT OUTER JOIN beauty ON beauty.boyfriend_id=boys.id
WHERE boys.id IS NULL;# 2.查询没有员工的部门
SELECT d.department_name,e.employee_id
FROM departments d LEFT JOIN employees e ON d.department_id=e.department_id
WHERE e.manager_id IS NULL;
SELECT * FROM employees WHERE employee_id=100;# 3.全外连接(不支持)
# 全外连接就是就并集
USE girls;
SELECT b.*,bo.*
FROM beauty b
FULL JOIN boys bo
ON b.boyfriend_id=bo.id;# 三.交叉连接
# 使用99标准实现的笛卡尔乘积,使用cross代替了92中的,
SELECT b.*,bo.*
FROM beauty b
CROSS JOIN boys bo

在这里插入图片描述

学完了sql99标准的连接查询,尝试完成下面的练习题这里是引用
答案:
一、
SELECT b.name,bo.*
FROM beauty b LEFT JOIN boys bo
ON b.boyfriend_id=bo.id
WHERE b.id>3;
二、
SELECT city “城市”,department_name “城市名”
FROM departments d RIGHT JOIN locations l
ON d.location_id=l.location_id
WHERE d.department_id IS NULL;
三、
SELECT d.department_name,e.*
FROM departments d LEFT JOIN employees e
ON d.department_id=e.department_id
WHERE d.department_name IN (‘SAL’,‘IT’);

七、子查询

含义:出现在其他语句中的select语句,称为子查询或内查询;外部的查询语句,称为主查询或外查询。

子查询出现的位置分类:

  • select后面 (仅支持标量子查询)
  • from后面 (支持表子查询)
  • where或having后面 (支持标量、行、列子查询)☆☆☆
  • exists后面 (又叫相关子查询,支持表子查询)

结果集的行列数分类:

  • 标量子查询(结果集只有一行一列)
  • 列子查询(结果集只有一列多行)
  • 行子查询(结果集有一行多列)
  • 表子查询(结果集一般为多行多列)
wherehaving后的子查询】(支持标量、行、列子查询)# 1.单个标量子查询
# 查询工资比Abel工资高的员工名
SELECT last_name,salary 
FROM employees 
WHERE salary>(SELECT salary FROM employees WHERE last_name='Abel');# 2。多个标量子查询
# 返回job_id与141号相同,salary比143号员工多的员工的姓名、job_id、工资。
SELECT last_name,job_id,salary 
FROM employees
WHERE job_id=(SELECT job_id FROM employees WHERE employee_id=141) AND salary>(SELECT salary FROM employees WHERE employee_id=143
);# 3。标量子查询+分组函数
# 返回工资最少的员工的last_name、job_id和salary
SELECT last_name,job_id,salary 
FROM employees 
WHERE salary=(SELECT MIN(salary) FROM employees);# 4。标量子查询+having子句
# 查询最低工资 >50号部门最低工资的 部门id和其最低工资
SELECT department_id,MIN(salary) 
FROM employees GROUP BY department_id
HAVING MIN(salary)>(SELECT MIN(salary) 
FROM employees WHERE department_id=50);# 5.列子查询(多行子查询)
# 返回location_id是1400或1700的部门中的所有员工姓名.
SELECT last_name FROM employees 
WHERE department_id IN (SELECT DISTINCT department_id FROM departments WHERE location_id IN(1400,1700)
);# 返回其它工种中比job_id为'IT_PROG'工种中任一工资低的员工的工号、姓名、job_id、以及salary
SELECT employee_id,last_name,job_id,salary FROM employees
WHERE salary<ANY(SELECT  DISTINCT salary FROM employees WHERE job_id='IT_PROG') AND job_id <>'IT_PROG';# 返回其它工种中比job_id为'IT_PROG'工种中所有工资低的员工的工号、姓名、job_id、以及salary
SELECT employee_id,last_name,job_id,salary FROM employees
WHERE salary<ALL(SELECT  DISTINCT salary FROM employees WHERE job_id='IT_PROG') AND job_id <>'IT_PROG';# 6.行子查询(一行多列或多列多行子查询)
# 查询出员工编号最小并且工资最高的员工信息
# 方式一
SELECT * FROM employees WHERE (employee_id,salary)=(SELECT MIN(employee_id),MAX(salary) FROM employees);
# 方式二
SELECT * FROM employees 
WHERE employee_id=(SELECT MIN(employee_id) FROM employees)
AND salary=(SELECT MAX(salary) FROM employees)
select后的子查询】:(仅支持标量子查询)# 1.查询每个部门的员工个数
SELECT d.*,(SELECT COUNT(*) FROM employees e WHERE e.department_id=d.department_id) "员工个数"
FROM departments d;# 2.查询员工号=102的部门名
SELECT (SELECT department_nameFROM departments dINNER JOIN employees eON d.department_id=e.department_idWHERE e.employee_id=102
) 部门名;
from后面的子查询】(支持表子查询)# 1.查询每个部门的平均工资的工资等级,即将子查询后的结果充当一张表,要求必须起别名
SELECT a.*,g.grade_level "工资等级"
FROM (SELECT AVG(salary) ag,department_idFROM employeesGROUP BY department_id
) a
INNER JOIN job_grades g
ON a.ag BETWEEN lowest_sal AND highest_sal;
【existts后面的子查询】(又叫相关子查询,可以用in代替)# exists结果只会是1或0 :SELECT EXISTS(SELECT * FROM employees);# 1.查询有员工名的部门名
SELECT department_name
FROM departments d
WHERE EXISTS(SELECT * FROM employees e WHERE d.department_id=e.department_id);

学完了子查询,尝试完成下面的习题
在这里插入图片描述
答案:
1、思路:①查询Zlotkey的部门②查询部门号=①的员工姓名和工资
SELECT last_name,salary
FROM employees
WHERE department_id=(
SELECT department_id
FROM employees
WHERE last_name=‘Zlotkey’
)
2、思路:①查询平均工资②查询工资比①高的员工的工号、姓名、工资
SELECT employee_id,last_name,salary
FROM employees
WHERE salary>(SELECT AVG(salary) FROM employees);
3、思路:①查询各部门平均工资②查询各部门工资比①高的员工的员工号、姓名、工资
SELECT employee_id,last_name,salary,e.department_id
FROM (
SELECT AVG(salary) ag,department_id
FROM employees e
GROUP BY department_id
)a INNER JOIN employees e
ON a.department_id=e.department_id
WHERE e.salary>a.ag
4、思路:①查询姓名中包含字母u的员工的部门②查询部门号=①中任意一个的员工的工号和姓名
SELECT employee_id “员工号”,last_name “姓名”
FROM employees
WHERE department_id IN(
SELECT DISTINCT department_id
FROM employees
WHERE last_name LIKE ‘%u%’
);
5、思路:①查询location_id=1700的部门②查询在①部门中工作的员工的员工号
SELECT employee_id
FROM employees
WHERE department_id IN(
SELECT DISTINCT department_id
FROM departments
WHERE location_id=1700
);
6、思路:①查询姓名为K_ing的员工编号②查询manager_id=①的姓名和工资
SELECT last_name “员工姓名”,salary “工资”
FROM employees
WHERE manager_id IN(
SELECT employee_id
FROM employees
WHERE last_name=‘K_ing’
);
7、思路:①查询最高工资②查询工资=①的姓.名
SELECT CONCAT(first_name,last_name) “姓.名”
FROM employees
WHERE salary=(SELECT MAX(salary) FROM employees);

如果觉得做得不过瘾,可以继续挑战下面的子查询经典案例:
在这里插入图片描述
答案:
1、思路:①查询最低工资②查询工资=①的last_name, salary
SELECT last_name, salary
FROM employees
WHERE salary=(SELECT MIN(salary) FROM employees)
2、思路一:①查询各部门的平均工资;②查询①结果上的最低平均工资③查询哪个部门的平均工资=②;④查询部门信息
SELECT d.*
FROM departments d
WHERE d.department_id=(
SELECT department_id
FROM employees
GROUP BY department_id
HAVING AVG(salary)=(
SELECT MIN(ag)
FROM (
SELECT AVG(salary) ag,department_id
FROM employees
GROUP BY department_id
) a
)
);
思路二:①使用排序求出最低平均工资的部门编号②查询部门信息
SELECT * FROM departments
WHERE department_id=(
SELECT department_id
FROM employees
GROUP BY department_id
ORDER BY AVG(salary) ASC
LIMIT 1
);
3、思路:①查询各部门平均工资;②查询最低平均工资的部门编号
SELECT d.* ,ag
FROM departments d
JOIN (
SELECT AVG(salary) ag,department_id
FROM employees
GROUP BY department_id
ORDER BY AVG(salary) ASC
LIMIT 1
) a
ON d.department_id=a.department_id;
4、思路:①查询job的平均工资最高的job_id;②查询job信息
SELECT *
FROM jobs
WHERE job_id=(
SELECT job_id
FROM employees
GROUP BY job_id
ORDER BY AVG(salary) DESC
LIMIT 1
);
5、思路:①查询公司平均工资;②查询每个部门的平均工资;最后筛选②中平均工资 > ①
SELECT AVG(salary),department_id
FROM employees
GROUP BY department_id
HAVING AVG(salary)>(
SELECT AVG(salary)
FROM employees
);
6、思路:①查询有manager的员工编号;②查询编号在①中的详细信息
SELECT * FROM employees
WHERE employee_id IN (SELECT DISTINCT manager_id FROM employees);
7、思路:①查询各部门最高工资中最低的那个部门id;②查询①部门的最低工资
SELECT MIN(salary) FROM employees WHERE department_id=(
SELECT department_id
FROM employees
GROUP BY department_id
ORDER BY MAX(salary) ASC
LIMIT 1
);
8、思路:①查询平均工资最高的部门编号;②将employees和departments连接查询,筛选条件是①
SELECT last_name, d.department_id, email,salary
FROM employees e
INNER JOIN departments d ON d.manager_id=e.employee_id
WHERE d.department_id=(
SELECT department_id
FROM employees
GROUP BY department_id
ORDER BY AVG(salary) DESC
LIMIT 1
)

八、分页查询

应用场景:当要显示的数据一页显示不全,需要分页提交sql请求。

语法:
select 查询列表
from 表
[join type join 表2
on 连接条件
where 筛选条件
group by 分组字段
having 分组后的筛选
order by]
limit offset,size;

offset:从0开始的起始索引,若省略默认从第一条开始
size:要显示的条目个数

执行顺序:from > join > on > where > group by > having > select > order by > limit (limit语法和执行都在最后)

limit分页公式:

select * from 表 limit (page-1)*size,size;(要显示的页数为page,每页的条目数为size)

# 1.查询前五条员工信息
SELECT * FROM employees LIMIT 5;# 2.查询第11条到第25条
SELECT * FROM employees LIMIT 10,15# 3.有奖金的员工信息,并且显示出工资较高的前10名
SELECT * 
FROM employees
WHERE commission_pct IS NOT NULL
ORDER BY salary
LIMIT 10;

九、联合查询

定义:将多条查询语句的结果合并成一个结果。

语法:查询语句1 union 查询语句2 unin ... 查询语句n

应用场景:当要查询的结果来自多个没有连接关系的表,但查询的信息一致时,最适合使用union。

注意事项:

  • 要求多条查询语句的查询列数是一致的
  • 要求多条查询语句查询的每一列的类型和顺序最好一致.
  • union默认去重,如果使用union all可以关闭去重
  • 大多数情况下,union的查询效率比or高。
# 1.查询部门编号>90或邮箱包含a的员工信息
SELECT * FROM employees WHERE department_id>90 OR email LIKE '%a%';SELECT * FROM employees WHERE department_id>90 
UNION  SELECT * FROM employees WHERE email LIKE '%a%';
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 文件批量下载工具(自己用QT编写)

    自己用QT编写的工具,小伙伴们随意使用。之前因为需要从网络上下载一些图片,不想一个一个的下载,就在网上找一些可以批量下载的工具。 找了一大圈,不是收费,就是一大堆的广告。 一怒之下,决定自己搞一个下载程序,还是自己动手,丰衣足食。于是乎 就有了这个绿色版无广告的…...

    2024/4/18 12:55:10
  2. arm学习笔记007之uboot的配置和烧写nandflash的步骤

    1. 先将移植好的uboot烧到norflash中(此步省略不讲) 2. 要烧写的程序必须放在虚拟机的/tftpboot目录下(没有这个目录的话可以自己创建) 3.设置ip、网关等等 setenv serverip202.38.214.161;setenv ipaddr 202.38.214.163;setenv ethaddr00:0c:29:4d:e4:f4;setenv gatewayip…...

    2024/4/15 3:18:27
  3. jquery获取dropdownlist的显示值

    <span style="font-family:SimHei;font-size:14px;"> var username = $("#yourdropdownlist option:selected").text(); </span>...

    2024/4/15 3:18:47
  4. python_web 使用django框架完成个人博客管理系统(前端+后台)

    python_web 使用django框架完成个人博客管理系统(前端+后台) 三月、四月可谓多事之秋,说好的互联网行业的金三银四,博主裸辞之后,发现失业了妈蛋。博客也不想写,所幸修养几个月,这是以前做的一个小系统了,很早了,仅供入门。很多我记不清了,需要的自己摸索。 运行环境…...

    2024/4/19 4:31:58
  5. Inno Setup教程

    一、简介 Inno Setup是一款免费的安装制作软件,小巧、简便、精美是其最大特点,支持pascal脚本,能快速制作出标准Windows2000风格的安装界面,足以完成一般安装任务。该软件用Delphi写成,其官方网站同时也提供源程序免费下载。 安装软件可以从网上随便一搜,都能下载的到。 …...

    2024/4/15 3:18:22
  6. 昨晚看Python的入门教程,花了五六个小时

    从晚上八九点开始,一直持续到凌晨1点半,看完了Python的官方入门教程(中译版),其中的小例子大部分也都逐一运行过了。还好,比较顺利。其实早在一年之前,就开始尝试接触Python,还买了一本小书(后来知道此书“抄”的不好)。大概是因为当时类C语言(C/C++/Java)的语法对…...

    2024/4/15 3:18:37
  7. PHP个人博客系统开发历程

    声明: Author:GenialX GenialXs QQ:2252065614 GenialXs URL:胡旭博客 - www.ihuxu.com 一年多以前的某一天,我在上交实验报告时,偶然看到随意放到老师办公室里角落处的一本书。当时,仅仅记得书上三个大写的字母 - PHP。那时,仅仅感觉PHP很好看,很干净,并不知道它能做…...

    2024/4/19 9:39:27
  8. MVC实现多选下拉框

    借助Chosen Plugin可以实现多选下拉框。 选择多项: 设置选项数量,比如设置最多允许2个选项: 考虑到多选下拉<select multiple="multiple"...></select>选中项是string数组,Model应该这样设计: using System.Collections.Generic; using Sy…...

    2024/3/18 7:23:24
  9. 1行Python代码制作动态二维码

    目录1、普通二维码2、艺术二维码3、动态二维码在GitHub上发现了一个比较有意思的项目,只需要一行Python代码就可以快捷方便生成普通二维码、艺术二维码(黑白/彩色)和动态GIF二维码。GitHub网站参见:https://github.com/sylnsfar/qrcode用法比较简单,直接通过pip安装即可。pi…...

    2024/4/15 3:18:52
  10. 【ARM学习笔记】四、微控制单元器MCU、ARM及SDRAM简介

    很多人不知道,其实世界上第一台电子计算机是“阿塔纳索夫-贝瑞计算机”(Atanasoff-Berry Computer,简称ABC)。它是美国爱荷华州立大学的约翰文森特阿塔纳索夫(John Vincent Atanasoff)教授和他的研究生克利福特贝瑞(Clifford Berry)在1937年设计的。遗憾的是当时仅仅用…...

    2024/4/14 21:05:37
  11. MySQL\SQL基础

    本单元目标 一、为什么要学习数据库 二、数据库的相关概念 DBMS、DB、SQL 三、数据库存储数据的特点 四、初始MySQLMySQL产品的介绍 MySQL产品的安装 ★ MySQL服务的启动和停止 ★MySQL服务的登录和退出 ★ MySQL的常见命令和语法规范…...

    2024/4/14 21:05:36
  12. SSD:Single Shot MultiBox Detector 配置问题一览

    1.使用cuda8编译时出错:/usr/include/boost/property_tree/detail/json_parser_read.hpp:257:264: error: ‘type name’ declared as function returning an array方法:因为gcc版本太低了,升级到5.3即可解决 sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-…...

    2024/4/19 16:57:52
  13. Node.js博客系统--12.普通用户和管理员功能的实现

    首先新增加一个字段在数据库中增加一个管理员用户添加后结果为是否是管理员不能放在cookie中,这样做不安全,我们需要实时的去验证,可以在入口文件中这样写首先引入User然后html中可以这样写测试一下...

    2024/4/20 3:25:16
  14. 用DropDownList实现的省市级三级联动

    这是一个用DropDownList 实现的省市级三级联动,记录一下<asp:ScriptManager ID="ScriptManager1" runat="server">/asp:ScriptManager><asp:UpdatePanel ID="UpdatePanel1" runat="server"><ContentTemplate>&l…...

    2024/4/15 3:19:29
  15. 给大家推荐一款冰点文档下载器(免登陆,免积分)下载百度,豆丁,畅享网,mbalib,hp009,mab.book118文库文档

    给大家推荐一款冰点文档下载器(免登陆,免积分) 下载百度,豆丁,畅享网,mbalib,hp009,mab.book118文库文档; 下载链接在我的资源里面(资源也是免积分的); 资源链接:http://download.csdn.net/detail/jerry_bj/4064587官网已经更新到2.6啦,地址是:http://www.hongbaoshu…...

    2024/3/21 4:47:34
  16. arm学习笔记020之mov pc,lr的解释

    2014.01.03mov pc,lr的解释:1、参考http://blog.163.com/cmdbat@126/blog/static/17029212320114238281688/异常的发生会导致程序正常运行的被打断, 并将控制流转移到相应的异常处理(异常响应),有些异常(fiq、irq)事件处理后,系统还希望能回到当初异常发生时被打断的源…...

    2024/4/15 3:19:23
  17. 数据库语言学习(文章暂未完成)

    文章目录前言相关脚本一、DQL语言的学习1. 基础查询1.1 语法1.2 特点1.3 分类1.3.1 查询表中的单个字段1.3.2 查询表中的多个字段1.3.3 快捷查询表中的所有字段1.3.3.1 方式一1.3.3.2 方式二1.3.4 查询常量值1.3.5 查询表达式1.3.6 函数1.3.7 起别名1.3.7.1 方式一:AS1.3.7.2 …...

    2024/4/15 3:19:19
  18. 再分享一个零成本做文库代下载赚钱项目

    你见过吗,当你高兴并准备去银行贷款买房时,银行要求你出示各种文件。例如,工作证明、收入证明等等,但事实上,在大多数情况下,我们很少接触这些东西,此时我们只能求助于互联网。互联网毕竟是个好东西。我们只需要搜索合适的模板,但是当我们想下载这个模板范本时,我们发…...

    2024/4/15 3:19:13
  19. ASP.NET MVC4使用Html.DropDownList和Html.BeginForm

    要在页面显示下拉列表,可以直接使用Html的<select>元素呈现,如下: <select id="selectedArea"><option value="-1">--请选择--</option><option value="1">北京</option><option value="2"…...

    2024/4/15 15:42:29
  20. springboot实现个人博客系统 并打包部署到Linux服务器

    技术架构:Springboot2.x + Shiro + Mybatis Plus,网站前端采用模板zbolg。 后台功能模块:一个完整的shiro权限系统(用户管理、角色管理、菜单管理、字典管理、参数设置、操作日志、登录日志), 网站管理模块(网站基础信息配置、网站主题管理、友情链接管理、评论管理),…...

    2024/4/18 17:32:20

最新文章

  1. 增强现实(AR)开发框架

    增强现实&#xff08;AR&#xff09;开发框架为开发者提供了构建AR应用程序所需的基本工具和功能。它们通常包括3D引擎、场景图、输入系统、音频系统和网络功能。以下是一些流行的AR开发框架。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流…...

    2024/4/20 18:03:12
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. C++ //练习 11.14 扩展你在11.2.1节练习(第378页)中编写的孩子姓到名的map,添加一个pair的vector,保存孩子的名和生日。

    C Primer&#xff08;第5版&#xff09; 练习 11.14 练习 11.14 扩展你在11.2.1节练习&#xff08;第378页&#xff09;中编写的孩子姓到名的map&#xff0c;添加一个pair的vector&#xff0c;保存孩子的名和生日。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#x…...

    2024/4/16 12:31:26
  4. Django实现的登录注册功能

    1 前言 在Web开发中&#xff0c;用户登录和注册是最基本且必不可少的功能。Django&#xff0c;作为一个高级的Python Web框架&#xff0c;为我们提供了强大的工具和库来快速实现这些功能。下面&#xff0c;我将详细介绍如何使用Django来实现用户登录和注册功能。 2 功能介绍 …...

    2024/4/20 5:00:56
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/19 14:24:02
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/19 18:20:22
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/19 11:57:31
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/19 11:57:31
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/19 11:57:52
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/19 11:57:53
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/19 11:58:14
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/19 11:58:20
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/20 7:40:48
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/19 11:58:39
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/19 11:58:51
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/20 3:12:02
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/19 11:59:15
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/19 11:59:23
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/19 11:59:44
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/19 11:59:48
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/19 12:00:06
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/19 16:57:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/19 12:00:25
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/19 12:00:40
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57