SQL_4_多表查询

多表查询:从多个表中获取数据呈现到结果集中。

 


1、内连接

SQL86 语法:

select  要投影的列
from 表1,表2.....
where  连接条件

SQL99 语法:

select  要投影的列
from 左表  inner  join  右边
on 连接条件
where 筛选条件

等值连接:

  使用等号作为连接条件的连接。

非等值连接:

  不使用等号作为连接条件。

自联结:

  连接自身。

交叉连接(SQL99):

  取两个表的笛卡尔积 。

from 左表  cross join 右表

自然连接(SQL99):

  把两个表相同名字的列的值是否相等  作为连接条件。支持多个列名相等。但是若值的类型不同,会执行失败。(类似于等值连接)

from  左表  natural  join  右表

using子句:

  使用指定的列作为连接条件,它作为自然连接的限制。引用被using指定的列时,不要使用表名或者别名。

from  左表  join  右表   using(列名1,列名2...)    这里实际上是自然连接,但是natural和using不能同时出现。
from  左表  inner join  右表   using(列名1,列名2...)

2、外连接

  • 左外连接:结果集包含左表中不符合连接条件的行。
  • 右外连接:结果集包含右表中不符合连接条件的行。
  • 全外连接:结果集中包含左右表中不符合连接条件的行。

SQL92语法:

等值连接的时候,在左表的值旁边加上标识:(+),则表示不显示左表的不满足条件的列,即结果集为右外连接。

select  要投影的列
from 左表,右表
where  左表的值 (+=  右表的值

 注意:MySQL不支持。

SQL99 语法:

左外连接:from 左表  left outer join 右表   on  连接条件 
右外连接:from 左表  right outer join 右表   on  连接条件 
全外连接:from 左表  full outer join 右表   on  连接条件 (MySQL不支持

3、子查询

当一个查询的结果是另一个查询的条件时,称为子查询语句。SQL_6_子查询

 

posted @ 2022-12-13 00:34  在博客做笔记的路人甲  阅读(93)  评论(0编辑  收藏  举报