mysql数据库之SQL :连接查询使用

开头:本人总结,大神勿喷,欢迎指教。谢谢

一:join 和 inner join 与等值连接:

   1:SELECT st.s_name,co.c_name  FROM  relevance re, student st, course co WHERE re.s_id = st.s_id  AND re.c_id = co.t_id(内连接)

    2:select st.s_name,co.c_name  from  relevance re inner join student st join course co where  re.s_id = st.s_id  AND re.c_id = co.t_id(等值连接)

等值连接等同于内链接,执行效率、执行结果相同。等值连接省略了 join 或inner join。

总结: 无论是等值连接还是内连接。查询结果都是,: 显示有关联关系的字段,不显示无关联的字段。

二: left join right join 左连接 与 右连接 的用法。   on 和where的用法

       1:SELECT st.s_name,te.t_name FROM studen st  LEFT JOIN teacher te on st.t_id = te.t_id (左连接)

           

       2:SELECT te.t_name,te.s_id,st.s_name FROM studen st  right JOIN teacher te on te.s_id = st.id(右连接) 

        结果:

      3:SELECT te.t_name, te.s_id,st.s_name FROM studen st right JOIN teacher te on te.s_id = st.idwhere te.t_name = '张老师'

     结果:

总结:由此可知:使用左连接是以左表的数据为基准,以on为关联条件,没有左表关联的数据以null补充数据。where是先生成中间表再对条件进行过滤。相反右连接也是如此。

三:group by having 分组的使用、 order by  升序 降序排列的使用、limit sql分组的使用、

    1:group by having 分组的使用 (主要用于分组统计,配合聚合函数使用(max()、min()、count()、sum()、avg()),来实现,用having进行条件过滤)

    select te.t_name,te.s_id from teacher te GROUP BY te.t_name,te.s_id ORDER BY s_id desc

结果:

总结:

1:group by 字段 ,如果字段中有重复的数据(与关键字distinct去重一样效果),只显示一条,所以分组主要用于统计显示。如果与order by结合,order by后跟的字段,必须在分组字段中选择。

   select te.t_name from teacher te where te.s_id = '1' group BY te.t_name HAVING te.t_name = '张老师'

数据:    结果:

2:补充一句:sql语句执行的顺序是 : from ...   on ...  where...     group by...    having...   select   order by   limit。所以先进行where筛选 再分组  再进行having条件筛选(having中字段后必须是分组的字段)

     

四: union 与 union all 的使用:

注意:使用union 和union all 表必须要有相同的列、相似的数据项、select的顺序相同

  union 筛选两个表中的不同的值!如需相同值出现用union all

五;between

    select * from teacher where t_id between 01 and 02

总结: 在01 和 02 之间,如果显示之外的用not

五: between 使用在where后使用 在a 与b 之间    ; where between a and b;

  

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值