一、多表查询

笛卡尔积
需求:查询两张表中关于水果的信息,要显示水果名称和水果价格。
多表查询语法:select * from a,b;
结果:
mysql ( 3 ) :多表查询
问题分析:
1.查询到的结果冗余了,变成了排列组合。
2.a表中的每一条记录,都和b表中的每一条进行匹配连接。所得到的最终结果是,a表中的条目数乘以b表中的数据的条目数。
解决方案:
在查询两张表的同时添加条件进行过滤,比如a表的id和必须和b表的id相同.

内连接查询
内连接 : 通过两张表查找其对应的记录.
隐式内连接查询:
select * from a,b where a.列名 = b.列名
显式内连接查询:
mysql ( 3 ) :多表查询
mysql ( 3 ) :多表查询

外连接
需求:列出所有的水果的信息和价格。
左外连接
mysql ( 3 ) :多表查询
select * from a left outer join b on a.id = b.id。(outer可以省略)
结果:
mysql ( 3 ) :多表查询

右外连接
mysql ( 3 ) :多表查询
select * from a right outer join b on a.id = b.id (outer可以省略)
总结:
1.左外连接以关键字左侧数据为主。不管右侧的数据是否有对应,都把左侧的数据显示出来
2.右外连接以关键字右侧数据为主,不管左侧有没有数据对应。都把右侧的数据进行显示。

全外连接
1.就是左外连接和右外连接之和,将左右两表中的数据全部显示出来
2.mysql 不支持。
mysql ( 3 ) :多表查询
但mysql可以使用union来达到全外连接的查询效果。
mysql ( 3 ) :多表查询

union :
可以将左外连接查询和右外连接查询两条sql语句使用union合并起来进行查询,去掉重复的数据。
union all :
不去掉重复进行合并,相当于查询一次左外连接,然后再查询一次右外连接,然后将两次的查询结果合并。

多表查询总结
mysql ( 3 ) :多表查询

二、关联子查询
关联子查询:将一个查询作为另一个查询的一部分。
需求:查询年龄最大的学生的信息.
步骤分析:
1.查询出最大的年龄是多少.
mysql ( 3 ) :多表查询
2.根据最大的年龄,去查询出具体的人员信息
mysql ( 3 ) :多表查询
3.组合成一条语句.
mysql ( 3 ) :多表查询

in的用法
in (20,30):表示条件是20或者30,类似于添加条件select * from student where age = 20 or age = 30;
需求:查询分数不及格的所有的学生信息
mysql ( 3 ) :多表查询

all的用法
all:表示所有,和union一起使用。
左连接和右连接查询结果的合集。
union all :不去掉重复进行合并,相当于查询一次左外连接,然后再查询一次右外连接,然后将两次的查询结果合并。
mysql ( 3 ) :多表查询
mysql ( 3 ) :多表查询

as的用法 (重点)
as:不仅可以用来做列的别名,还可以将查询结果通过as作为一张表来使用。
需求 : 查询不及格的学生信息和不及格分数
mysql ( 3 ) :多表查询
limit的用法
作用 : 限制查询结果返回的数量.
语法:select * from 表名 LIMIT [offset], row_count;

mysql自带函数:(知道即可)
msyql数据库中自带了一些函数。在我们使用sql语句操作mysql数据库的时候,可以直接使用这些函数。
mysql ( 3 ) :多表查询
mysql ( 3 ) :多表查询
mysql ( 3 ) :多表查询
日期函数
mysql ( 3 ) :多表查询

相关文章:

  • 2021-11-13
  • 2021-11-13
  • 2021-11-13
  • 2021-04-30
  • 2021-08-20
  • 2021-09-28
猜你喜欢
  • 2021-08-05
  • 2021-05-07
  • 2021-04-25
  • 2021-08-04
  • 2021-11-23
  • 2021-11-13
  • 2021-11-28
相关资源
相似解决方案