数据库表连接(连接查询)

内连接

  1. 等值连接
    依据两个表中相同内容的字段进行连接
    SELECT s.name, g.* FROM student s JOIN grade g ON s.id= g.id;
  1. 非等值连接
    依据两个表中内容相关列(非相同)字段进行连接
    SELECT g.id, g.yuwen, s.level FROM grade g JOIN score_level s ON g.yuwen BETWEEN s.low AND s.high;

  2. 自连接

外连接

  1. 左连接
    保留左表所有数据和共有数据,若右表没有对应值,默认置null
    SELECT s.id, s.name, g.yuwen FROM student s LEFT JOIN grade g ON s.id = g.id;

  2. 右连接
    保留右表所有数据和共有数据,若左表没有对应值,默认置null
    SELECT s.id, s.name, g.yuwen FROM student s RIGHT JOIN grade g ON s.id = g.id;

多表连接

语句顺序

select 
...
from 
a
join 
b
on
...
join 
c
on
...
where
...

例:
SELECT s.name, s.id, g.yuwen, sl.level FROM grade g JOIN student s ON s.id = g.id JOIN score_level sl ON g.yuwen BETWEEN sl.low AND sl.high where g.yuwen > 70;

注意:

  1. 上面表示a表和b连接,然后a表再和c连接,其结果合并在一起。不是a表先连接b,其结果再和c连接
  2. where语句放在最后
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容