多表查询

在实际应用中,经常使用多表查询。多表查询就是同时查询两个或两个以上的表。下面做个语法及示例汇总:


1. 内连接(join)

  内连接侧重于两个表之间的共性,它的作用是使用连接,比较两个(或多个)表之间的共有数据,然后进行返回。
语法:

1.select * from 表名1 join 表名2 [on 条件] [where 表达式];
2.select * from 表名1,表名2 [where 表达式];
3.select * from 表名1 inner join 表名2 [on 条件] [where 表达式];
4.select * from 表名1 cross join 表名2 [where 表达式];

示例1:

select A.USER_NAME from sys_usermanage A join ma_emp B on A.USER_ID=B.USER_ID where USER_CODE='67810'

示例2:

select * from sys_usermanage A,ma_emp B where USER_CODE='67810' 

示例3:

select * from sys_usermanage A inner join ma_emp B on A.USER_ID=B.USER_ID where USER_CODE='67810'

示例4:

select * from sys_usermanage A cross join ma_emp B where USER_CODE='67810'  

2. 外连接(left join)

  外连接分为左(外)连接和右(外)连接。如果联合查询,左侧的表完全显示我们就说是左外连接;右侧的表完全显示我们就说是右外连接。
左连接语法:

-- 左外连接,表1完全显示
select * from 表名1 left join 表名2 on 连接条件 [where 连接条件];

示例:

select A.USER_NAME from sys_usermanage A left join ma_emp B on A.USER_ID=B.USER_ID where USER_CODE='67810'

   注:左连接和右连接只需要掌握一种语法即可,可以使用左连接实现“右连接”,只需要把表的查询顺序调换一下就可以实现左/右连接的转换。

3. 自连接

  自连接是指在同一张表连接查询多次。
语法:

SELECT 别名A.列名1,别名B.列名2 FROM 表名A 别名A JOIN 表名A 别名B where条件 ;

  注:自连接查询必须对表起别名。

示例:

select A.USER_NAME,B.USER_CODE from sys_usermanage A,sys_usermanage B where A.USER_ID=B.USER_ID

4. 子查询(嵌套查询)

  子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询。将当前查询的结果作为另一个查询的where的选项。
语法:

SELECT * FROM 表名1 where 列名=(SELECT 列名 FROM 表名2 where 条件)

示例:

select * from sys_usermanage A where A.USER_ID=(select B.USER_ID from ma_emp B where B.EMP_CODE='81502')

5. 合并查询(union)

  合并查询用于合并结果集相同的两张(多张)表,他有两个关键字:union、union all
语法:

SELECT 列名 FROM 表名1 union SELECT 列名 FROM 表名2
SELECT 列名 FROM 表名1 union all SELECT 列名 FROM 表名2

示例:

select A.USER_ID from sys_usermanage A union all select B.SEX from ma_emp B
select A.USER_ID from sys_usermanage A union select B.SEX from ma_emp B

  union和union all 区别:union会将合并的结果集中的重复数据去重,只保留重复数据中的一条数据;而union all 是将结果集全部合并,即使有重复的数据结果也不会进行合并操作。

posted @ 2023-03-31 17:01  查拉图斯特拉面条  阅读(198)  评论(0编辑  收藏  举报