SQL学习笔记(一)

(本文在更新中)

一些很棒的进阶教程

  1. SQL 进阶技巧https://zhuanlan.zhihu.com/p/139856374
    包含内容:SQL 的书写规范、SQL 的一些进阶使用技巧(巧用 CASE WHEN 进行统计&更新、巧用 HAVING 子句、自连接、巧用 COALESCE 函数)、SQL 性能优化技巧等。
  2. mysql视频实战教程在线学习-数据库-蛙课网https://www.wkcto.com/courses.html?list=mysql

一些刷题时思考的点

最近想精通一下SQL,但是本科老师教的比较浅,而且已经遗忘了大半,所以用今天一天时间刷完了SQL的基础教程,这里推荐一个好用的自学SQL网站(可以实时运行):自学SQL网。同时也做了一点点练习LeetCode
本篇将学习过程中比较重要的点记录下来,供之后的学习参考。

  1. 注意书写顺序。典型的正确顺序如下:

    SELECT DISTINCT column, AGG_FUNC(column_or_expression)
    FROM mytable
        JOIN another_table
          ON mytable.column = another_table.column
        WHERE constraint_expression
        GROUP BY column
        HAVING constraint_expression
        ORDER BY column ASC/DESC
        LIMIT count OFFSET COUNT;
    
  2. 如果你不用GROUP BY语法, 简单的WHERE就够用了.

  3. 如果要按照两个维度分开统计,在GROUP BY里面放两个就可以。例如:

    select role,count(*),(case when Building is not null then 1 else 0 end) bn
    from employees group by role,bn
    
  4. 查询执行顺序:FROMJOIN;WHERE;GROUP BY;HAVING;SELECT;DISTINCT
    如果数据行有重复DISTINCT 将负责排重.

  5. ORDER BY
    在结果集确定的情况下,ORDER BY 对结果做排序。因为SELECT中的表达式已经执行完了。此时可以用AS别名.

  6. LIMIT / OFFSET
    最后 LIMIT 和 OFFSET 从排序的结果中截取部分数据.

  7. 选取第几高的数据时,如果需要显示空值,可以使用IFNULL(...,NULL)

  8. LIMIT的参数不能是式子,如果需要改变某个值可以使用语句SET N = N-1;如果需要更新表,则可以配合UPDATE使用。例如:

    UPDATE Salaries
    SET salary = CASE WHEN salary >= 10000 THEN salary * 0.9
    WHEN salary < 10000 THEN salary * 1.2
    ELSE salary END;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值