内置函数
虽然许多的数据库管理系统都遵循SQL语言,但在不同的DBMS中,函数的差异化比较大,SQL语言的可移植性是比较差的。
内置函数主要可以划分为5个类别:算数函数、字符串函数、日期函数、转换函数、聚集函数,这些函数都需要通过SELECT来执行
1.算数函数:绝对值、有效数字、取余等
ABS、MOD、ROUND,参数个数分别是1,2,2,作用为取绝对值,取余,取小数点后的有效位数四舍五入。
2.字符串函数:计算长度、大小写转换、替换、截取
// 查询符合筛选条件的数据,如果没用AS,那么列名默认为LENGTH(name)
SELECT LENGTH(name) AS nameLenth FROM heros WHERE name LIKE '%太%'
3.时间函数:对严格的时间字符串取年月日
// 可以截获字符串中的时间,但执行条件非常严格,必须是下面这种固定的时间描述字符串,输出结果:2020-03-03
SELECT DATE('2020-03-03 19:00:12') AS time
// 在SQLite环境中,下面这段语句会报错
SELECT EXTRACT(YEAR FROM '2019-04-03')
4.转换函数:类型转换、返回非空
SELECT CAST (12.123 AS INTEGER)
SELECT COALESCE (NULL,NULL,3,1)
组合使用示范
SELECT name,ROUND(attack_growth,2) AS growth FROM heros
// 返回结果可以对同一个列名做多个操作
SELECT LENGTH(name), name FROM here's
// 这个Date是必须要加的,如果不加,你又传错了字段,或者字段不规范,那么这个判断就会总是返回 YES.加了Date字段不规范,总是返回NO;
SELECT * FROM heros WHERE DATE(birthdate)>'2016-10-01'
5.聚集函数:聚集函数是对一组数据进行汇总,然后输出单个值。聚集函数有5个,分别是count、max、min、sum、avg。
// count计算数量,count + role_assist 意味着只统计role_assist有值的行
SELECT COUNT(role_assist) FROM heros WHERE hp_max > 6000
// 使用多个聚集函数并用前面的数据表进行验证。
SELECT name ,hp_max FROM heros WHERE name LIKE '%太%';
SELECT COUNT(name),AVG(hp_max),MAX(hp_max) FROM heros WHERE name LIKE '%太%';
// 聚集函数的嵌套使用,从内到外一次执行
SELECT ROUND(AVG(DISTINCT hp_max), 2) FROM heros
/*
count (*)代表返回全部
*/
// 相当于 SELECT COUNT(*) AS role_assist FROM heros;
SELECT COUNT(*) role_assist FROM heros;
// 只有 role_assist 有值才会进入统计,并对返回的结果根据role_assist的不同进行分组
SELECT COUNT(role_assist) FROM heros GROUP BY role_assist;
// 上面两句的集合
SELECT COUNT(*) role_assist FROM heros GROUP BY role_assist;
注意:聚集函数会忽略NULL ,MAX、MIN函数可以对字母进行大小比较。
网友评论