【SQL】之select-多表查询:7种join | sql99语法新特性

本文详细介绍了SQL中的多表查询,包括union和union all的7种join用法,并探讨了SQL99引入的新特性,旨在帮助读者深入理解并熟练运用这些查询技巧。
摘要由CSDN通过智能技术生成

多表查询

-- 多表查询

SELECT employee_id,department_name
FROM employees,departments
#1.两个表的连接条件
WHERE employees.`department_id`=departments.`department_id`;

#2.如果查询语句中出现了多个表中都存在的字段,则必须指明此字段所在的表:
SELECT employees.employee_id,departments.department_name,employees.department_id
FROM employees,departments
WHERE employees.`department_id`=departments.`department_id`;
#从sql优化的角度,建议多表查询时,每个字段前都指明其所在的表

#3.可以给表起别名,缩短代码长度,设置了别名必须使用,不能再用原名
SELECT emp.employee_id,dep.department_name,emp.department_id
FROM employees emp,departments dep
WHERE emp.`department_id`=dep.`department_id`;

#查询员工的employee_id,lastname,department_name,city
SELECT emp.employee_id,emp.last_name,dep.department_name,loc.city
FROM employees emp,departments dep,locations loc
WHERE emp.`department_id`=dep.`department_id` AND dep.`location_id`=loc.`location_id`;
#有n个表实现多表查询,则需要至少n-1个连接条件

多表查询的分类

-- 多表查询的分类

-- 1.等值连接 非等值连接:
SELECT e.last_name,e.salary,j.grade_level
FROM employees e,job_grades j
#where e.`salary` between j.`lowest_sal` and j.`highest_sal`; #查询薪资的等级,在某区间内
WHERE e.`salary`>=j.`lowest_sal` AND e.`salary`<=j.`highest_sal`;

-- 2.自连接: 非自连接
#查询员工id,员工姓名,及其管理者的id和姓名
SELECT emp.employee_id,emp.last_name,mgr.employee_id,mgr.last_name
FROM employees emp,employees mgr
WHERE emp.`manager_id`=mgr.`employee_id`;#员工在员工表,管理者也在员工表

-- 3.内连接 外连接
#外连接:左外连接,右外连接,满外连接

#SQL92语法实现外连接:使用+  ----------mysql不支持!
SELECT  employee_id,department_name
FROM employees e,departments d
WHERE e.`department_id`
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值