数据库中的复合查询

一、基本查询回顾

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   取两个结果的并集,不去掉重复值

  • 16
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值