A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 特雷西 初级黑马   /  2019-4-19 08:53  /  646 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多表查询
   select
       字段列表
         from 表名列表
         where 条件列表
         group by 分组字段
         having 分组条件
         order by 排序字段
         limit 起始位置,显示记录数
- 笛卡尔积
        select * from A,B,C ...
        -》结果会将每一个表的每一条记录去和另外的每张表的记录进行结合
- 消除笛卡尔积
        - 内连接 -> 将关联条件相同的筛选出来
                - 隐式内连接
                        select * from A a,B b,C c ... where a.b_id = b.id and c.b_id = b.id
                       
                - 显示内连接
                        select * from
                                A a join B b on a.b_id = b.id
                                    join C c on c.b_id = b.id
       
        - 外连接 -> 当需要显示某个表所有数据时,而另外一个表没有相关的数据则显示为null
       
                - 左外连接:显示左表所有数据,右表不满足关联条件的字段显示为null
                       
                        select * from
                                A a left join B b on a.b_id = b.id
                                    left join C c on c.b_id = b.id                       
                       
                - 右外连接::显示右表所有数据,左表不满足关联条件的字段显示为null
                    
                  select * from
                                A a right join B b on a.b_id = b.id
                                    right join C c on c.b_id = b.id

        -- 确定查询的表 -> 确定关联字段 -> 得到连接条件
        -- 确定查询的字段 -> 单一的字段或者聚合函数
        -- 确定where的条件
                 简单条件: > = <>
                        bewteen and
                        in
                        like
                        is null
                        not
             思考是否存在子查询:
                        确定子查询时返回
                           单行单列
                           多行单列
                           多行多列
        -- 确定是否采用分组:统计,按什么,每个,所有 -> 思考 select 后只能跟 聚合函数,分组字段
        -- 确定是否有分组条件:

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马