SQL是关系代数的一种实现方式,它让我们不用考虑数据集的特征来自行编写合适的代码。
例子:
聚合函数只能出现在select部分中
在count中,目的只是为了计算tuple的个数,因此也可以写为:
可以使用多个聚合函数:所有登录名包含了 的学生数和学生的平均gpa
COUNT SUM AVG 都支持去重 DISTINCT
在这个例子用其实不太恰当,因为没有不同的 学生会有相同的登录名。
GROUP BY
select中出现的只能是聚合函数值,或者是在group by中出现的字段
group by将这些记录tuple分成几个子集,并针对每个子集进行聚合计算。
HAVING:根据group by形成的每个子集的特征做过滤
%:0个或多个字符
_:匹配一个任意字符
SQL定义了一些字符串运算:
substring(name,0,5)
UPPER
连接字符串 ||
有些实现中也使用+或concat()
返回当前日期+时间:
SELECT NOW()
抽取日期中的天字段
SELECT EXRACT(DAY FROM DATE(‘2018-08-29’)
计算当前日期是今年的第几天:
UINX_TIMESTAMP 返回当前日期距离开始时间的总秒数
SELECT ROUND(
UINX_TIMESTAMP(DATE(‘2018-08-29’)) - UNIX_TIMESTAMP(DATE(‘2018-01-01’)) / 606024
, 0 )
或直接用函数 DATEDIFF
将查询结果插入另一张表中:
被插入的表必须存在.
输入的查询结果的列数和类型必须和所插入的表的列数和类型一致