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

知名做网站哪家好/深圳博惠seo

知名做网站哪家好,深圳博惠seo,长沙网站设计认准智优营家,wordpress修改作者信息目录 需求:谁的工资比Abel高 ? 方式一: 方式二:自连接 方式三:子查询 一、子查询的基本使用 1.称谓的规范 3..注意事项 二、子查询的分类 分类方式1:单行子查询 & 多行子查询 分类方式2&…

目录

需求:谁的工资比Abel高 ?

方式一:

方式二:自连接

方式三:子查询

一、子查询的基本使用

1.称谓的规范

3..注意事项

二、子查询的分类

分类方式1:单行子查询 & 多行子查询

分类方式2:相关(或关联)子查询  & 不相关(或非关联)子查询

三、单行子查询

1.单行操作符

2.练习 

练习1:查询工资大于149号员工工资的员工的信息

#子查询的编写技巧(步骤) :

练习2:返回job_id与141号员工相同,salary比143号员工多的员工姓名,job_id和工资

练习3:返回公司工资最少的员工的last_name,job_id和salary 

练习4:查询与141号员工的manager_id和department_id相同的其他员工的employee_id,manager_id,department_id

练习5:HAVING中的子查询

查询最低工资大于50号部门最低工资的部门id和其最低工资

练习6:CASE中的子查询

7.子查询中的空值问题

8.非法使用子查询

四、多行子查询

1.多行比较操作符

2.练习

练习1:IN

练习2:ANY / ALL

练习3:查询平均工资最低的部门id 

练习4:多行子查询的空值问题

五、相关子查询

1.执行流程

2.练习

练习1:使用相关子查询 & 在FROM中声明子查询

查询员工中工资大于本部门平均工资的员工的last_name,salary和其department_id 

练习2:在ORDER BY中使用子查询

查询员工的id,salary,按照department_name 排序

3.EXISTS 与 NOT EXISTS关键字

练习1:查询公司管理者的employee_id,last_name,job_id,department_id信息 

​4.问题:谁的工资比Abel的高?


子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入。

SQL 中子查询的使用大大增强了 SELECT 查询的能力,因为很多时候查询需要从结果集中获取数据,或者需要从同一个表中先计算得出一个数据结果,然后与这个数据结果(可能是某个标量,也可能是某个集合)进行比较。

需求:谁的工资比Abel高 ?

方式一:

通过以下代码查出Abel的工资

SELECT last_name,salary
FROM employees
WHERE last_name = 'Abel';

SELECT salary,last_name
FROM employees
WHERE salary > 11000;

方式二:自连接

SELECT E2.last_name,E2.salary
FROM employees E1,employees E2
WHERE E2.salary > E1.salary   #多表的连接条件
AND E1.last_name = 'Abel';

方式三:子查询

SELECT last_name,salary
FROM employees
WHERE salary > (SELECT salaryFROM employeesWHERE last_name = 'Abel'
)

一、子查询的基本使用

1.称谓的规范

  • 外查询(主查询),内查询 (子查询)
  • 子查询(内查询)在主查询之前一次执行完成。
  • 子查询的结果被主查询(外查询)使用 。

3..注意事项

  • 子查询要包含在括号内
  • 将子查询放在比较条件的右侧
  • 单行操作符对应单行子查询,多行操作符对应多行子查询

二、子查询的分类

分类方式1:单行子查询 & 多行子查询

我们按内查询的结果返回一条还是多条记录,将子查询分为 单行子查询 、 多行子查询 。

分类方式2:相关(或关联)子查询  & 不相关(或非关联)子查询

我们按内查询是否被执行多次,将子查询划分为相关(或关联)子查询和不相关(或非关联)子查询 。

子查询从数据表中查询了数据结果,如果这个数据结果只执行一次,然后这个数据结果作为主查询的条 件进行执行,那么这样的子查询叫做不相关子查询。

如果子查询需要执行多次,即采用循环的方式,先从外部查询开始,每次都传入子查询进行查 询,然后再将结果反馈给外部,这种嵌套的执行方式就称为相关子查询。

三、单行子查询

1.单行操作符

2.练习 

练习1:查询工资大于149号员工工资的员工的信息

#子查询的编写技巧(步骤) :

1.从里向外编写

2.从外向里编写

SELECT employee_id,last_name,salary
FROM employees 
WHERE salary > (SELECT salaryFROM employeesWHERE employee_id = 149
);

练习2:返回job_id与141号员工相同,salary比143号员工多的员工姓名,job_id和工资

SELECT last_name,job_id,salary
FROM employees
WHERE job_id = (SELECT job_idFROM employeesWHERE employee_id = 141
)
AND salary > (SELECT salaryFROM employeesWHERE 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:查询与141号员工的manager_id和department_id相同的其他员工的employee_id,manager_id,department_id

#方式1
SELECT employee_id,manager_id,department_id
FROM employees
WHERE manager_id = (SELECT manager_idFROM employeesWHERE employee_id = 141
)
AND department_id = (SELECT department_idFROM employeesWHERE employee_id = 141
)#方式2
SELECT employee_id,manager_id,department_id
FROM employees
WHERE (manager_id,department_id) = (SELECT manager_id,department_idFROM employeesWHERE employee_id = 141
)
AND employee_id <> 141;

练习5:HAVING中的子查询

查询最低工资大于50号部门最低工资的部门id和其最低工资

SELECT department_id,MIN(salary)
FROM employees
WHERE department_id IS NOT NULL
GROUP BY department_id
HAVING MIN(salary) > (SELECT MIN(salary)FROM employeesWHERE department_id = 50
);

练习6:CASE中的子查询

显式员工的employee_id,last_name和location。其中,若员工department_id与location_id为1800 的department_id相同,则location为’Canada’,其余则为’USA’。

SELECT employee_id,last_name,(CASE department_id WHEN (SELECT department_id FROM departments WHERE location_id = 1800
) THEN 'Canada'ELSE 'USA' END) 'location'
FROM employees;

7.子查询中的空值问题

SELECTlast_name,job_id 
FROMemployees 
WHEREjob_id = ( SELECT job_id FROM employees WHERE last_name = 'Haas' );

 

子查询不返回任何行 

8.非法使用子查询

SELECTemployee_id,last_name 
FROMemployees 
WHEREsalary = ( SELECT MIN( salary ) FROM employees GROUP BY department_id );

多行子查询使用单行比较符 

四、多行子查询

  • 也称为集合比较子查询
  • 内查询返回多行
  • 使用多行比较操作符 

1.多行比较操作符

2.练习

练习1:IN

SELECTemployee_id,last_name 
FROMemployees 
WHEREsalary IN ( SELECT MIN( salary ) FROM employees GROUP BY department_id );

练习2:ANY / ALL

①返回其它job_id中比job_id为‘IT_PROG’部门任一工资低的员工的员工号、姓名、job_id 以及salary

SELECTemployee_id,last_name,job_id,salary 
FROMemployees 
WHEREjob_id <> 'IT_PROG' AND salary < ANY ( SELECT salary FROM employees WHERE job_id = 'IT_PROG' );

②返回其它job_id中比job_id为‘IT_PROG’部门所有工资低的员工的员工号、姓名、job_id 以及salary

SELECTemployee_id,last_name,job_id,salary 
FROMemployees 
WHEREjob_id <> 'IT_PROG' AND salary < ALL ( SELECT salary FROM employees WHERE job_id = 'IT_PROG' );

练习3:查询平均工资最低的部门id 

#方式1
SELECT department_id
FROM employees
GROUP BY department_id
HAVING AVG(salary) = (
SELECT MIN(avg_sal)
FROM (SELECT AVG(salary) avg_sal#各个部门的平均工资FROM employeesGROUP BY department_id) t_dept_avg_sql
);#方式2
SELECT department_id
FROM employees
GROUP BY department_id
HAVING AVG(salary) <= ALL(SELECT AVG(salary) avg_sal#各个部门的平均工资FROM employeesGROUP BY department_id);

练习4:多行子查询的空值问题

SELECT last_name
FROM employees
WHERE employee_id NOT IN (
SELECT manager_id
FROM employees
);

正确写法

SELECTlast_name 
FROMemployees 
WHEREemployee_id NOT IN (SELECT manager_idFROM employeesWHERE manager_id IS NOT NULL );

五、相关子查询

1.执行流程

如果子查询的执行依赖于外部查询,通常情况下都是因为子查询中的表用到了外部的表,并进行了条件关联,因此每执行一次外部查询,子查询都要重新计算一次,这样的子查询就称之为关联子查询

相关子查询按照一行接一行的顺序执行,主查询的每一行都执行一次子查询。 

2.练习

练习1:使用相关子查询 & 在FROM中声明子查询

查询员工中工资大于本部门平均工资的员工的last_name,salary和其department_id 

#回顾:查询员工中工资大于本公司平均工资的员工的last_name,salary和其department_id 
SELECT last_name,salary,department_id
FROM employees
WHERE salary > (SELECT AVG(salary)FROM employees;
)#练习1:查询员工中工资大于本部门平均工资的员工的last_name,salary和其department_id 
SELECT last_name,salary,department_id
FROM employees e1
WHERE salary > (SELECT AVG(salary)FROM employees e2WHERE department_id = e1.department_id
);#方式2:在FROM中声明子查询
SELECT e.last_name,e.salary,e.department_id
FROM employees e,(
SELECT department_id,AVG(salary) avg_sal
FROM employees
GROUP BY department_id) t_dept_avg_sal
WHERE e.department_id = t_dept_avg_sal.department_id
AND e.salary > t_dept_avg_sal.avg_sal;

练习2:在ORDER BY中使用子查询

查询员工的id,salary,按照department_name 排序

SELECT employee_id,salary
FROM employees e
ORDER BY(SELECT department_nameFROM departments dWHERE e.department_id = d.department_id
);

3.EXISTS 与 NOT EXISTS关键字

练习1:查询公司管理者的employee_id,last_name,job_id,department_id信息 

#方式1
SELECT DISTINCT mgr.employee_id,mgr.last_name,mgr.job_id,mgr.department_id
FROM employees emp JOIN employees mgr
ON emp.manager_id = mgr.employee_id;
#方式2:子查询
SELECT employee_id,last_name,job_id,department_id
FROM employees
WHERE employee_id IN (SELECT DISTINCT manager_idFROM employees
);
#方式3:使用EXISTS
SELECT employee_id,last_name,job_id,department_id
FROM employees e1
WHERE EXISTS(SELECT *FROM employees e2WHERE e1.employee_id = e2.manager_id
);

4.问题:谁的工资比Abel的高?

http://www.lbrq.cn/news/1618057.html

相关文章:

  • 网站改版做301/竞价推广托管服务
  • 1.网站建设分为哪几个阶段/网站提交入口
  • 淘客免费网站建设/品牌营销策划方案案例
  • ssm框架网站开发 参考文献/软文发稿
  • 教育类网站怎么做/石家庄疫情
  • wordpress分类加密/合肥seo搜索优化
  • wordpress关闭自适应/搜索关键词优化
  • 建e全景app/seo专员是什么职位
  • 国外网站免费dns/百度号码认证平台首页
  • 东莞专业网站制作设计/南京网站排名提升
  • 做淘宝客网站php/百度平台交易
  • iis默认网站停止/厦门百度seo排名
  • 住房和城乡建设局网站/驾校推广网络营销方案
  • 县科协微网站建设/seo标题优化的心得总结
  • 中国建筑集团有限公司排名/重庆排名seo公司
  • 青海省交通建设工程质量监督站网站/百度信息流账户搭建
  • 开个小网站要怎么做的/厦门谷歌seo公司
  • 镇江网站建设制作/大众网疫情最新消息
  • 企业网站如何做微信营销/沈阳网站关键字优化
  • wordpress制作主题/网站seo外链平台
  • 贵州成品网站/cfa一级看多久两分钟
  • 上传网站页面打不开怎么办/全国推广优化网站
  • 公务员做网站赚钱不会违规吧/google 谷歌
  • 顺德网站制作案例如何/外链link
  • 公司网站开发费怎么入账/石家庄网站建设就找
  • 镇江做网站seo/盐城seo排名
  • 什么是网站app建设/南通网络推广
  • 网站是如何盈利的/百度首页网址
  • 新闻网站运做/关键词搜索引擎工具
  • 网站建设详细报价单/百度广告联盟价格
  • TwinCAT3编程入门2
  • 为什么MCP协议是AI集成的未来API
  • Rockchip RK3568J +FPGA边缘智能系统及储能网关
  • 常见框架漏洞
  • 详解Python标准库之文件格式
  • 【暑期每日一题】洛谷 P9390 金盏花