多表查询

多表查询

多表关系

多对多

 

 

一对一

 

 

多表概述

 

 

 

 

 

 

内连接

内连接查询语法:

1)隐式内连接

Select 字段列表 from 表一,表二 where条件……

例子

查询每一个员工的姓名,及关联的部门名称(隐式内连接实现)

----表结构:empty,dept

----连接条件: emp.dept.id=dept.id

 

Select emp.name,dept.name from emp,dept where emp.dept.id=dept.id

 

2)显示内连接

Select 字段列表 from 表一 [inner] join 表2 on 连接条件

查询每一个员工的姓名,及关联的部门名称(隐式内连接实现)

Select emp.name,dept.name from emp inner join dept on emp.dept.id=dept.id

外连接

左/右连接

Select 字段列表from 表1 left/right [outer] join 表2 on条件………

注意: 相当于查询表2(右表)的所有数据包含表1和表2交集部分的数据。

 

自连接

Select 字段列表 from 表A 别名A join 表A 别名B on 条件……;

注意:自连接查询,可以是内连接查询,也可以是外连接查询。

联合查询

语法

Select 字段列表 from 表名a where 条件

Union all (直接将查询结果显示出来含重复)去掉all 则不显示重复记录

Select 字段列表 from 表名b where 条件;

 

子查询

概念:sql 语句中嵌套select 语句 称为嵌套查询 又称子查询;

Select * from表1 where columnl =(select coumnl from 表2);

注意:子查询外部语句可以使 insert 、update 、delect、 select中的任意一个。

查询 某某 入职日期之后的员工信息

 

标量子查询(常用操作符:= 、<>、 >、 >=、 <、<=)

分两步

1) 查询某某的入职日期

 Select 入职日期 from 表 where name=‘某某’

2) 查询指定日期之后的入职员工信息

Select * from 表 where 入职信息 > 某某的入职日期

二者合并

Select * from 表 where 入职信息 >(Select 入职日期 from 表 where name=‘某某’

列子查询

 

 

行子查询

常用符号(=、<>、IN、 NOT IN)

查询与 某某 的薪资及直属领导相同的员工信息

分开

1)查询 某某 的薪资及直属领导

Select 薪资,直属领导 from 部门表 where name = ‘’某某‘’;

2)查询与 某某 的薪资及直属领导相同的员工信息

Select * from 员工 where 薪资 = 12500 and 直属领导=1;

合并

Select * from 员工 where (薪资,直属领导)=(Select 薪资,直属领导 from 部门表 where name = ‘’某某‘’)

表子查询 (in)

查询 与 xx ,yy 的职位和薪资相同的员工信息

分开

1) 查询 xx ,yy 的职位和薪资

Select 职位,薪资 from 员工表 where name=‘xx’or name=‘yy’;

2) 查询 与 xx ,yy 的职位和薪资相同的员工信息

Select * from emp where (职位,薪资)= (Select 职位,薪资 from 员工表 where name=‘xx’or name=‘yy’;)

 

查询入职日期是‘2006-01-01’之后的员工信息,及其部门信息

分开

1)查询入职日期是‘2006-01-01’之后的员工信息

Select * from 员工表 where 入职日期= ‘2006-01-01’;

2)查询入职日期是‘2006-01-01’之后的员工信息,及其部门信息

Select * from (Select * from 员工表 where 入职日期= ‘2006-01-01’) e left  join 部门表 d on e.员工表id =d. 部门表id;

posted @   蟹老板的罐头鱼  阅读(127)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示