SQL学习记录


序言

  在我研一(18年春)上《大规模数据存储与处理》的时候,老师在课堂里给我讲过SQL的知识。课堂上老师举了几个经典的例子,把select、where、group by、having、order by给讲完了,感觉是很好懂的。其实那时我还选了一门《数据库新技术》的课。这些课对我来讲有点收获,但大体的评价是:所谓新数据库技术、大数据处理,在我只是听到了几个新名词而已。再加之后来没有再接触过数据库的东西,也就渐渐忘得没影了。然而,SQL这个东西在校招面试中是有问到的。可是由于一向的懒惰,加之也没想到以后会用到,所以SQL至今也不怎么会。我想可以说SQL是基础,而大数据和新技术这些书潮流。之前看过一篇文章,一个教授劝勉道:“你应该花大把时间那些基础之上,而不是一直追逐潮流。”这话现在回想起来,愈发觉得有理了。
  年前(2019年末)我借了《SQL必知必会》一书,书中内容倒是简单,易上手,但光看书只是假把式罢了。浏览知乎时遇到一个好的答案,其中提及了一个好的练习网站,昨夜(20200302)上手练习之后就有点欲罢不能——有那种“读书破万卷,下笔如有神”的意思。今日练习之后,更觉SQL功力大增,差不多掌握五六成的样子吧。知识得来不易,然而记忆却是不可靠的,因此记录下来,以便日后回忆和复习。 ——2020年3月3日于武汉


如何学习 SQL 语言? - 佰初的回答 - 知乎中,提到了一个练习网站:https://zh.sqlzoo.net/wiki/Aggregates_with_DISTINCT,提供了很好的练习题。


PS:以下提到的页码如p86,是指来自《SQL必知必会》第四版(中文)的第86页

常识


group by

1 group by可以用多个列来分组

  书中p86有提到,下面是一个例子
在这里插入图片描述


having

1、having与where的差别

  where过滤指定的是行而不是分组。where在分组前过滤,他所排除的行不会出现在分组中。having是基于组进行过滤。

2、使用having

The_nobel_table_can_be_used_to_practice_more_SUM_and_COUNT_functions
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


row_number、over、partition的例子

  来自The nobel table can be used to practice more SUM and COUNT functions./zh
在这里插入图片描述

concat、百分比、保留小数

  来自SELECT within SELECT Tutorial/zh
在这里插入图片描述

all 以及 内外表格

SELECT within SELECT Tutorial/zh
在这里插入图片描述

all的这个很经典

在这里插入图片描述

分组中的字母序

SELECT within SELECT Tutorial/zh
在这里插入图片描述

distinct

The nobel table can be used to practice more SUM and COUNT functions./zh
在这里插入图片描述

CASE WHEN

The JOIN operation/zh这里只用join(返回笛卡尔积)结果不对,答案中少了部分结果。左外连接的结果是正确的,可能原因是笛卡尔积

在这里插入图片描述


More join

使用多个join

在这里插入图片描述
在这里插入图片描述

SELECT name
FROM (
  SELECT * FROM (SELECT * FROM movie WHERE title='Alien'
    ) a /*只从movie中选择alien,减少中间结果*/ LEFT JOIN casting ON a.id=movieid 
    ) b
   LEFT JOIN actor c ON b.actorid=c.id;

在这里插入图片描述
在这里插入图片描述


COALESCE

  如果你想把NULL替换成其他想要的字段,COALESCE会很有用,下面是一个例子
在这里插入图片描述
  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值