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
  • 相关阅读:
    discuz常用变量
    Discuz!X/模板标签说明
    Discuz x 默认模板文件目录说明
    apache禁止访问文件或目录执行权限、禁止运行脚本PHP文件的设置方法
    基于Java的数据采集(三)
    基于Java的数据采集(二)
    基于Java的数据采集(一)
    使用Spring JDBCTemplate简化JDBC的操作
    基于原生PHP交叉会员权限控制
    PHP上传压缩包并自解压方法
  • 原文地址:https://www.cnblogs.com/xuhaojun/p/9149791.html
Copyright © 2011-2022 走看看