数据库开发之MySql(下)(多表查询)

多表查询

介绍

多表查询就是指从多张表中查询数据。

笛卡尔积:

笛卡尔乘积是指在数学中,两个集合A集合 和 B集合的所有组合情况。

(在多表查询时,
需要消除无效的笛卡尔积)

怎么做多表查询的需求?
要查询的数据涉及到哪些表
找出关联条件(外键=主键)+其他额外的筛选条件
找出需求中需要的数据放在select后

内连接

内连接的语法分为两种: 隐式内连接、显式内连接。

隐式内连接

select  字段列表   from   表1 , 表2   where   条件 ... ;

显示内连接

select  字段列表   from   表1  [ inner ]  join 表2  on  连接条件 ... ;

自连接

当前表与自身的连接查询,自连接必须使用表别名

表的别名

①. tableA as 别名1 , tableB as 别名2 ;

②. tableA 别名1 , tableB 别名2 ;

注意事项:

一旦为表起了别名,就不能再使用表名来指定对应的字段了,此时只能够使用别名来指定字段。

外连接

外连接分为两种,分别是:左外连接 和 右外连接。

左外连接

select  字段列表   from   表1(左表)  left  [ outer ]  join 表2(右表)  on  条件 ... ;

右外连接

select  字段列表   from   表1(右表)  right  [ outer ]  join 表2 (左表) on  条件 ... ;

注意事项:

左外连接和右外连接是可以相互替换的,只需要调整在连接查询时SQL中,表结构的先后顺序就可以了。而我们在日常开发使用时,更偏向于左外连接。

子查询

概念

SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。

SELECT  *  FROM   t1   WHERE  column1 =  ( SELECT  column1  FROM  t2 );

子查询外部的语句可以是INSERT / UPDATE / DELETE / SELECT 的任何一个。

分类

根据子查询结果不同,分为:

A. 标量子查询(子查询结果为单个值)

B. 列子查询(子查询结果为一列)

C. 行子查询(子查询结果为一行)

D. 表子查询(子查询结果为多行多列)

根据子查询位置,分为:

A. WHERE之后

B. FROM之后

C. SELECT之后

标量子查询

子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式,这种子查询称为标量子查询。

 

常用的操作符:=  <>  >   >=   <  <=

列子查询

子查询返回的结果是一列(可以是多行),这种子查询称为列子查询。

 行子查询

子查询返回的结果是一行(可以是多列),这种子查询称为行子查询。

常用的操作符:= 、<> 、IN 、NOT IN

表子查询
子查询返回的结果是多行多列,常作为临时表,这种子查询称为表子查询。
常用的操作符: IN
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值