目录@萌狼蓝天

  • 通过对多个表中的数据同时进行查询获取结果
  • 语法一
  • 语法二
  • 作业
  • 1、查看YGGL数据库中Employees员工信息表、Departments部门信息表、Salary员工薪水情况表的数据信息。(确保数据和教材第102-103页表5-10员工信息表、表5-11员工薪水情况表、表5-12部门信息表中数据一致。)
  • 2、完成教材第104页以下操作:
  • (1)查询“王林”的`基本情况`和所工作的`部门名称`。
  • (2)查询`每个雇员`的`基本情况`和`薪水情况`。
  • (3)查询`“财务部”、“研发部”、“市场部”`的员工信息。
  • (4)查询研发部在1970年以前出生的`员工姓名`和`薪水情况`。
  • (5)查询员工的`姓名`、`地址`和`收入水平`,要求2000元以下显示为“`低收入`”,2000元-3000元显示为“`中等收入`”,3000元以上时显示为“`高收入`”。


通过对多个表中的数据同时进行查询获取结果

语法一

Select 列名 From 表1 Join 表2 On
[Join 表3 on 表3.列名=表2.列名]
[Where 条件表达式];

java多表关联查询优化 多表关联查询语句_java多表关联查询优化


例题:查询选修了C1课程的学生姓名

Select 姓名 from SC Join S on SC.学号=S.学号
Where 课程号='C1';

注:若SC和S表中均有属性“姓名”,则需指定表名
格式: Select sc.姓名
或: Select s.姓名

语法二

Select 列名
From 表1,表2,表3
where 表1.列名=表2.列名 and 表2.列名=表3.列名

例:查询选修课成绩为80分的学生姓名和所在系。

Select 姓名,所在系
From  SC,S
Where SC.学号=S.学号 and 成绩=80

作业

1、查看YGGL数据库中Employees员工信息表、Departments部门信息表、Salary员工薪水情况表的数据信息。(确保数据和教材第102-103页表5-10员工信息表、表5-11员工薪水情况表、表5-12部门信息表中数据一致。)

Use YGGL
select*from Employees;
select*from 部门信息表;
select*from 员工薪水情况表;

java多表关联查询优化 多表关联查询语句_页表_02


java多表关联查询优化 多表关联查询语句_数据_03

2、完成教材第104页以下操作:

(1)查询“王林”的基本情况和所工作的部门名称

select*from  Employees Join 部门信息表 
on Employees.员工部门号=部门信息表.部门编号 where 姓名='王林';

java多表关联查询优化 多表关联查询语句_java多表关联查询优化_04

select*from Employees,部门信息表 where Employees.员工部门号=部门信息表.部门编号 and 姓名='王林';

java多表关联查询优化 多表关联查询语句_页表_05

(2)查询每个雇员基本情况薪水情况

select*from Employees join 员工薪水情况表 on Employees.员工编号=员工薪水情况表.员工编号;

java多表关联查询优化 多表关联查询语句_页表_06

select*from Employees,员工薪水情况表 where 员工薪水情况表.员工编号=Employees.员工编号;

java多表关联查询优化 多表关联查询语句_数据库_07

(3)查询“财务部”、“研发部”、“市场部”的员工信息。

select*from  Employees Join 部门信息表 
on Employees.员工部门号=部门信息表.部门编号 where 部门名称='财务部' or 部门名称='研发部' or 部门名称='市场部';

java多表关联查询优化 多表关联查询语句_数据库_08

select*from Employees,部门信息表 where Employees.员工部门号=部门信息表.部门编号 and (部门名称='财务部' or 部门名称='研发部' or 部门名称='市场部');

java多表关联查询优化 多表关联查询语句_java多表关联查询优化_09

(4)查询研发部在1970年以前出生的员工姓名薪水情况

select 姓名,收入,支出 from Employees 
join 员工薪水情况表 on Employees.员工编号=员工薪水情况表.员工编号
join 部门信息表 on Employees.员工部门号=部门信息表.部门编号
where 出生日期<'1970-1-1' and 部门名称='研发部';

java多表关联查询优化 多表关联查询语句_java多表关联查询优化_10

select 姓名,员工薪水情况表.* 
from Employees,员工薪水情况表 ,部门信息表
where 员工薪水情况表.员工编号=Employees.员工编号
and  Employees.员工部门号=部门信息表.部门编号 
and 出生日期<'1970-1-1' and 部门名称='研发部';

java多表关联查询优化 多表关联查询语句_数据库_11

(5)查询员工的姓名地址收入水平,要求2000元以下显示为“低收入”,2000元-3000元显示为“中等收入”,3000元以上时显示为“高收入”。

select 姓名,地址,收入,
case 
 	when 收入 <2000 then '低收入'
    when 收入 >=2000 and 收入 <=3000 then '中等收入'
 	when 收入 >3000 then'高收入'
 	end as '收入水平'
from Employees join 员工薪水情况表 on Employees.员工编号=员工薪水情况表.员工编号;

java多表关联查询优化 多表关联查询语句_数据库_12

select 姓名,地址,收入,
case 
 	when 收入 <2000 then '低收入'
    when 收入 >=2000 and 收入 <=3000 then '中等收入'
 	when 收入 >3000 then'高收入'
 	end as '收入水平'
from Employees , 员工薪水情况表 where Employees.员工编号=员工薪水情况表.员工编号;

java多表关联查询优化 多表关联查询语句_数据_13