SQL基础查询与排序

本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql

SELECT语句基础

sql查询数据的语法就一种,那就是select,类似于dataframe中的query,将数据从表中拿出,如果你的数据来自表,那还需要在select语句加上from 表名,如果你不想从表中拿,只写个select 1都是可以的。
加上from之前,你还需要考虑需要拿出哪些列的数据,写*可以把所有列的都拿出来,不过已经不推荐了,因为查询的效率会低。
而针对行的筛选,可以用在表名后加where语句进行筛查,实现方法是列名+判断。

算术运算符和比较运算符

涉及判断,就必定需要考虑运算符,常见的加减乘除直接用±*/即可;等于号也是=的意思,而不等于可以用!=,也可以用<>;大于小于大于等于等也和正常的数据计算一样。
不过也需要注意,如果你进行的判断类型不是数字类型,那常规的判断就会出现问题,比如字符串的大小判断会按字典属性判断,万幸的是日期判断的大小比较是正常进行的,我们只需要关注字符串即可,而且一般不要对字符串进行大小判断。
同样的情况还会出现在数据为NULL的时候,和NULL用比较运算符比较,只能得出一个NULL。

逻辑运算符

逻辑运算符中包含着and,or以及not,除了null之外,其他的数据进行运算,按照我们的数学理解处理即可。
而有null的数据参与计算,则会有真假之外的第三种解,即不确定;当进行and运算,优先级以假为最高,然后是null,最后是真;进行or运算,真为最高,然后是null,最后是假。
对表进行聚合查询
聚合函数,sql中最基本的有五个,分别是表示计数的count,表示聚合的sum,表示平均的avg,表示最大的max和最小的min,用法为函数名(列名),比如count(col_1)。
需要注意的是,除了count()之外,其他函数都需要制定列名才能计算,也是除了count(),其他聚合计算都会排除null值,而cont(*)不会排除null,如果想进行去重,可以使用distinct,聚合函数中和聚合函数外都可以使用。

对表进行分组

既然有聚合,那必定有分组,分组在sql中大部分时候使用group by,加上聚合函数实现分组汇总,而group by放在表名之后,如果有where语句,还在where语句之后,从这里就不难看出sql语句书写的顺序,select最先,然后是from,然后是where,最后是group by。
不过实现执行的时候却是不同,from为最先,然后是where,然后是group by,最糊才是select。
而有group by的语句,select中出现没有被聚合函数包裹的列,需要在group by加上对应的列名,表示根据这些列分组。
还需要注意,sql虽然可以使用as给列写别名,但group by中不要使用别名,因为select执行顺序在group by之后。

为聚合结果指定条件

那如果想在分组后进一步进行筛选数据呢?
套一个子查询吗?sql提供了having来对分组过滤,having中进行的判断可以是数字,聚合函数或者是select中的列名。

对查询结果进行排序

sql的执行结果默认是随机排序(这句话仅仅针对部分数据库),需要对查询结果排序,可以使用order by,默认上升序排列,后面加desc,会变成降序,而order by中可以使用别名。
这就得说回sql的执行顺序,order by说着select之后才执行的。

你可能感兴趣的:(大数据,sql,数据库,java)