多表联查

多表联查

关系型数据库在设计,往往将一些综合数据,分离到不同的表中,当我们要展示到数据分布在不同的表的列中时,需要将相关表格先联合起来,组成一新的“表”(结果集),然后再对该新表进行SQL查询

  • 基本的两表联查

    语法:哪些表的哪些字段,两个表的连接字段(外键)
    select 表1.字段1,表1.字段2, 表2.字段1,表2.字段2 from 表1,表2 where 连接条件 and  查询条件
    //查询表所有字段
    select 表1.*,表2.* from ....
    
    连接条件  表1.关联键 = 表2.关联键
    

    示例:

    获取学生及班级名信息

    select 
        stu_info.`stu_name`,   //查询字段
        stu_info.`stu_age`,
        stu_info.`stu_sex`,
        stu_class.`c_name`
    from
        stu_info,    //查询表
        stu_class
    where
        stu_info.`c_id`=stu_class.`c_id`;  //连接条件
    and
       stu_info.`stu_age` > 30  //对连接后的结果集,进行条件筛选
    
  • 标准联接查询

    1. 内连接
    语法
    select  
          表1.字段,表2.字段 
    from
          表1
    join
          表2
    on
          连接条件
    where
          查询条件
    

    示例:

    select
        stu_info.`*`,
        stu_class.`*`
    from
        stu_info  right join stu_class on  stu_info.`c_id`=stu_class.`c_id`
    where
        stu_age > 20
    
    
    1. 左/右联接查询
    表1  left  join  表2  on 联接条件
    表1  right join  表2  on 联接条件
    
    • left : 表示,以表1为主表,将表2向表1合并,包证表1数据完整性(合并后集合中必须包含所有的表1数据项),如果表2有表1没有,就将没有项丢弃。 表1有,表2有就补NULL
    • right:表示,以表2为主表,将表1向表2合并,包证表2数据完整性(合并后集合中必须包含所有的表2数据项),如果“辅表”有 “主表” 没有,就将“主表没有项”丢弃。 主表有,辅表没有,就补NULL
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容