zoukankan      html  css  js  c++  java
  • 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子句中可以。

  • 相关阅读:
    417 Pacific Atlantic Water Flow 太平洋大西洋水流
    416 Partition Equal Subset Sum 分割相同子集和
    415 Add Strings 字符串相加
    414 Third Maximum Number 第三大的数
    413 Arithmetic Slices 等差数列划分
    412 Fizz Buzz
    410 Split Array Largest Sum 分割数组的最大值
    409 Longest Palindrome 最长回文串
    day22 collection 模块 (顺便对比queue也学习了一下队列)
    day21 计算器作业
  • 原文地址:https://www.cnblogs.com/weizaiyes/p/6984219.html
Copyright © 2011-2022 走看看