Java教程

常用SQL命令汇总--多表查询

本文主要是介绍常用SQL命令汇总--多表查询,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、多表查询

1.连接查询:

连接查询是将两个或两个以上的表按照某个条件连接起来,从中选取需要的数据;

t_book表: 在这里插入图片描述 t_bookType表:
在这里插入图片描述
如:

SELECT * from t_book,t_booktype;

返回结果将两个表的所有组合结果返回
在这里插入图片描述

1、内连接查询:

内连接查询是一种最常用的连接查询。内连接查询可以查询两个或者两个以上的表;

SELECT * from t_book b,t_booktype t where t.id=b.id;

SELECT * from t_book,t_booktype where t_book.id=t_booktype.id;

查询结果:
在这里插入图片描述

也可这么写来查询需要的字段:

select bookName,author,bookTypeName
from t_book,t_booktype where t_book.id=t_booktype.id;

注意:如果查询的字段(如id)中两个表都有时这种写法会出错(或报ambiguous错误),因为无法得知id是哪个表的字段,所以平时多表查询时要写别名

修改为:

select tb.bookName,tb.author,tby.id 
from t_book tb,t_booktype tby 
where tb.id=tby.id;

2、外连接查询

外连接可以查出某一张表的所有信息;
SELECT 属性名列表
FROM 表名 1
LEFT|RIGHT JOIN 表名 2
ON 表名 1.属性名 1=表名 2.属性名 2;

  • 左连接查询:

可以查询出“表名 1”的所有记录,而“表名 2”中,只能查询出匹配的记录;如:

select * 
from t_book tb 
left JOIN t_booktype tby 
on tb.bookTypeId=tby.id; 

查询结果:
在这里插入图片描述

  • 右连接查询:

    可以查询出“表名 2”的所有记录,而“表名 1”中,只能查询出匹配的记录;如:

 select * 
 from t_book tb 
 right JOIN t_booktype tby 
 on tb.bookTypeId=tby.id; 

查询结果:
在这里插入图片描述

  • 多条件连接查询

即where后面有多个条件and连接查询

2.子查询

1 、带 In 关键字的子查询

一个查询语句的条件可能落在另一个 SELECT 语句的查询结果中。

2 、带比较运算符的子查询

子查询可以使用比较运算符。

3 、带 (not)Exists 关键字的子查询

假如子查询查询到记录,则进行外层查询,否则,不执行外层查询;not exists表示内层没有内容时才查询外层

如:

SELECT * from t_book where EXISTS(select * from t_booktype);

表示t_booktype中返回的有内容时才执行外层t_book的查询

4 、带 Any 关键字的子查询

ANY 关键字表示满足其中任一条件;如:

SELECT * FROM t_book WHERE price>= ANY (SELECT price FROM t_pricelevel);

表示筛选价格大于任意t_pricelevel表中选出的价格的结果,即比最小的大的价格就满足条件

5 、带 All 关键字的子查询

ALL 关键字表示满足所有条件;如:

SELECT * FROM t_book WHERE price>= ALL (SELECT price FROM t_pricelevel);

表示筛选价格大于所有t_pricelevel表中选出的价格的结果,即比最大的价格大的才满足条件

3.合并查询

UNION
使用 UNION 关键字是,数据库系统会将所有的查询结果合并到一起,然后去除掉相同的记录;

UNION ALL
使用 UNION ALL,不会去除掉系统的记录;

这篇关于常用SQL命令汇总--多表查询的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!