• sql开发技巧总结-1


    1.数据库分类

    关系型 非关系型

    2.sql语句分类

    sql: ddl数据库定义语言  tpl事物处理语言 dcl数据控制语言  dml数据操作语言(insert delete update select)

    增加数据库处理效率 减少相应时间

    减少数据库服务器负载 增加服务器稳定性

    减少服务器间通讯网络流量

    3.join语句

    inner(内连接)

    --inner join 

    内连接inner join基于连接谓词将两张表(如A和B)的列组合在一起,产生新的结果表

    select <select_list> from tableA A inner join tableB B on A.key=B.key;

    (select a.`user_name`,a.`over`,b.`over` from user1 a inner join user2 b on a.`user_name`=b.`user_name`;)

    full outer(全外连接)

    --full join

    (如何在mysql中使用full join??)

    join操作类型-full join

    select a.`user_name`,a.`over`,b.`over` 

    from user1 a 

    left join user2 b on a.`user_name`=b.`user_name`

    union 

    select b.`user_name`,b.`over`,a.`over`

    from user1 a 

    right join user2 b on a.`user_name`=b.`user_name`

    left outer(左外连接)

    --left join

    select a.`user_name`,a.`over`,b.`over` from user1 a left join user2 b on a.`user_name`=b.`user_name` where b.user_name is null;

    right outer(右外连接)

    --right join(同left join)

    cross(交叉连接)

    --cross join

    笛卡尔查询

    4.join语句

    更新使用过滤条件中包括自身的表

    联合更新

    update user1 a join(

    select b.`user_name` from user1 a inner join user2 b on

    a.`user_name`=b.`user_name`

    ) b on a.`user_name`=b.`username`

    set a.over = 'qitiandasheng';

    5.使用join优化子查询

    6.使用join优化聚合子查询 

    查询四人组中打怪最多的日期(避免子查询)

    select a.`username`,b.`timstr`,b.kills from user1 a join user_kills b on a.id = b.user_id where

    b.kills = (select max(c.kills) from user_kills c where c.user_id=b.user_id);

    select a.user_name,b.timestr,b.kills from user1 a

    join user_kills b on a.id = b.user_id

    join user_kills c on c.user_id = b.user_id

    group by a.user_name,b.timestr,b.kills

    having b.kills = MAX(c.kills);

    group by 分组查询

    当同时含有where子句、group by 子句 、having子句及聚集函数时,执行顺序如下:
    --执行where子句查找符合条件的数据;
    --使用group by 子句对数据进行分组;对group by 子句形成的组运行聚集函数计算每一组的值;最后用having 子句去掉不符合条件的组。
    --having 子句中的每一个元素也必须出现在select列表中。有些数据库例外,如oracle.
    --having子句和where子句都可以用来设定限制条件以使查询结果满足一定的条件限制。
    --having子句限制的是组,而不是行。where子句中不能使用聚集函数,而having子句中可以。

  • 相关阅读:
    最近用到mysql和mybatis结合常用的知识点坐下整理
    采用rest接口对接而非webservice
    Linux 下Nginx 的安装及负载均衡的简单配置
    用websocket实现后台推送消息
    maven项目添加websocket
    Java通过几种经典的算法来实现数组排序
    关于 Java 数组的 12 个最佳方法
    Ajax详解及其案例分析之如何获得Ajax对象,使用Ajax对象发送GET和POST请求,校验用户名,POST和GET请求时的乱码处理,实现级联的下拉列表
    Python
    【作业报告】作业5 四则运算 测试与封装 5.1
  • 原文地址:https://www.cnblogs.com/weizaiyes/p/6984219.html
Copyright © 2020-2023  润新知