数据库中的复合查询

一、基本查询回顾

1、查询工资高于500或岗位为manager的员工,并且名字首字母是J

2、按部门编号升序,工资降序排序

3、用年薪降序排序

4、显示工资最高的员工名字和岗位(使用了子查询)

5、查询工资高于平均工资的员工

6、按部门查询最高工资和平均工资

7、显示平均工资低于2000的部门和他的平均工资

8、显示每种岗位员工数,平均工资

二、多表查询

两表结合语法

select * from table1, table2;        这一步是把两表中的行数据进行自由组合拼接,也叫笛卡尔积

select * from table1, table2 where table1.column=table2.column      这一步是用两个表中相同的值进行筛选,来获得有效的合并数据。

举例

(1)显示部门是10号的部门名,员工名和工资

(2)显示各个员工姓名,工资和工资级别

三、自连接

对同一张表进行笛卡尔积,但是要注意要重命名。

找FORD的领导

四、在where子句中的子查询

指嵌套在其他sql语句中的select语句

1、单列子查询

显示SMITH同一部门的员工

2、多行子查询

(1)查询和10号部门的工作岗位相同的员工名字,岗位工资部门号,不包括10号部门

in 判断一个列值是否在一个集合中

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

all 比集合中所有数据都....

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

any 比集合中任意一个....

3、多列子查询

查询和SMITH部门岗位完全相同的员工,不包括SMITH

五、在from子句中的子查询

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

思路:先拿到每个部门平均工资和员工表笛卡尔积,通过比较即可。

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

思路:先拿到最高工资表和员工表笛卡尔积,通过比较即可。

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

思路:先拿到部门的人员数和部门表笛卡尔积,通过比较即可。

注意

1、进行子查询就要取别名。

2、可以把临时表进行取别名。

六、合并查询

工资大于2500或职位是MANAGER的员工

union   取两个结果的并集,自动去掉重复值

union all   取两个结果的并集,不去掉重复值

相关推荐

  1. thinkphp:数据库复合查询-OR使用

    2024-07-16 21:42:04       19 阅读
  2. django复杂查询

    2024-07-16 21:42:04       41 阅读
  3. MySQL复合查询与表内外连接解析

    2024-07-16 21:42:04       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 21:42:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 21:42:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 21:42:04       58 阅读
  4. Python语言-面向对象

    2024-07-16 21:42:04       69 阅读

热门阅读

  1. 举例说明自然语言处理(NLP)技术

    2024-07-16 21:42:04       16 阅读
  2. npm install 打包时间优化

    2024-07-16 21:42:04       22 阅读
  3. 安全与认证:在Symfony中实现用户登录和权限管理

    2024-07-16 21:42:04       18 阅读
  4. redis面试题

    2024-07-16 21:42:04       23 阅读
  5. c++二叉搜索数模拟实现(代码)

    2024-07-16 21:42:04       18 阅读
  6. C#面 :dot net core工程里面有哪些常见的工程文件?

    2024-07-16 21:42:04       17 阅读
  7. docker部署项目命令

    2024-07-16 21:42:04       20 阅读
  8. ns3-gym入门(二):linear-mesh例子详解

    2024-07-16 21:42:04       16 阅读