zoukankan      html  css  js  c++  java
  • MySQL写脚本的思考

    1. 需要考虑多个表格连接的时候,一条有用的思路:

    常使用左连接,  table1 LEFT JOIN table2 ON table1.expr1 = table2.expr2;

    首要考虑的就是连接生成的表格要是自己所需要的主键,因此table1.expr1要是生成表的主键,而且这个主键要是我们整个SQL文想得到的表的最长的那一列。

    eg.一张所有学生在不同课程的成绩表,所有学生id为主键,每门课是一张表,而且选的学生不一样;

    要得到以上的这张总表,就需要使用连接,以包含所有学生id的表为table1,然后去连接其他课程的成绩表,条件是 table1.学生id = table课程.学生id

    因为是左链接,所以table1中的学生id永远都存在,而其他表格中有成绩的就显示成绩,没有成绩的就是null。

    总而言之,写多个表连接的sql文时,基本按照这个连接思路。

    2. 子查询与连接的联系与区别

    查询的时候经常要使用到连接与子查询,这两者相同点在于:都会生成新表,但是他们之间的区别更大。

    子查询还是查询,只不过是在嵌套之中的查询,得到一个新表,这是一张独立的表,需要有别名(AS)来标识;

    连接是查询中的一个动作,相比于查询低一个层次,连接得到的新表是相当于在原表的基础上做修改,或者就是说拼接两张表,列(column)依然可以直接被原来的表名调用,不需要新建别名。

    ***************************************************************************************************************************************************************************************************************************************************************************************

    当要筛选去掉null值的时候,使用:IS NOT NULL (记住 IS 的用法) 

    SELECT user_id FROM kz_order_info WHERE user_id IS NOT NULL AND status = 50 GROUP BY user_id
  • 相关阅读:
    Mycat适合场景及不适合场景
    solr与Elasticsearch对比
    分布式搜索之搭建Solrcloud(Solr集群)
    Mysql索引最左匹配原则
    CAS实现单点登录SSO执行原理及部署
    Spring Cloud,Dubbo及HSF对比
    Dubbo支持的协议的详解
    Dubbo架构设计详解
    几种分布式锁的实现方式
    深入分析volatile的实现原理
  • 原文地址:https://www.cnblogs.com/xuhaojun/p/9149791.html
Copyright © 2011-2022 走看看