Appearance
SQL 内置函数
数据表
| id | class | name | age | score |
|---|---|---|---|---|
| 1 | 一班 | 张三 | 8 | 60 |
| 2 | 二班 | 李四 | 10 | 70 |
| 3 | 一班 | 王五 | 12 | 80 |
| 4 | 三班 | 赵六 | 9 | 90 |
聚合函数
- avg
- count
- sum
- min
- max
sql
select count(*) as '总人数', sum(score) as '总分', max(score) as '最高分',
avg(score) as '平均分', min(score) as '最低分' from tableName;查询结果
| 总人数 | 总分 | 最高分 | 平均分 | 最低分 |
|---|---|---|---|---|
| 4 | 300 | 90 | 75 | 60 |
字符串函数
- concat
- substr 和编程语言不同下标从 1 开始 [start,length]
- length 当前字段的字节长度
- upper 可以无中生有在数据库没有的字段
- lower 可以无中生有 大小写转换只针对英文
sql
select concat('xx',name,'yy'),substr(name,2,1),length(name),upper('aa'),
lower(name) from tableName where id = 1;查询结果
| concat('xx',name,'yy') | substr(name,2,1) | length(name) | upper('aa') | lower(name) |
|---|---|---|---|---|
| xx 张三 yy | 三 | 6 | AA | 张三 |
数值函数
- round 四舍五入
- ceil 向上取整
- floor 向下取整
- abs 绝对值
- mod 取模 mod(5,2) => 1
sql
select round(1.234),ceil(2.4),floor(3.8),abs(-1.2458),mod(6,4);查询结果
| round(1.234) | ceil(2.4) | floor(3.8) | abs(-1.2458) | mod(6,4) |
|---|---|---|---|---|
| 1.23 | 3 | 3 | 1.2458 | 2 |
日期函数
- year
- month
- day
- date
- time
sql
-- eg: create_at = 2022-06-15 15:50:18
select year(create_at),month(create_at),day(create_at),date(create_at),time(create_at);查询结果
| year | month | day | date | time |
|---|---|---|---|---|
| 2022 | 6 | 1 | 2022-06-15 | 15:50:18 |
条件函数
- if
sql
select name,score, if(score>=60,'及格','不及格') as grade from tableName;单条件使用
查询结果
| name | score | grade |
|---|---|---|
| 张三 | 60 | 及格 |
| 李四 | 70 | 及格 |
| 王五 | 80 | 及格 |
| 赵六 | 90 | 及格 |
- case
sql
select name,score, case when score>=90 then '优秀' when score>60 then '良好' else '差' end as grade from tableName;多条件使用
查询结果
| name | grade | grade |
|---|---|---|
| 张三 | 60 | 差 |
| 李四 | 70 | 良好 |
| 王五 | 80 | 良好 |
| 赵六 | 90 | 优秀 |
系统函数
- version
- datebase
- user
sql
select version(),database(),user();查询结果
| version() | database() | user() |
|---|---|---|
| 8.0.33 | test | root@172.17.0.1 |
类型转换函数
常用类型
| 类型 | 名称 |
|---|---|
| signed | 整型 |
| unsigned | 无符号整型 |
| decimal | 浮点型 |
| char | 字符类型 |
| date | 日期类型 |
| time | 时间类型 |
| datetime | 日期时间类型 |
| binary | 二进制类型 |
- convert(target,type)
sql
select greatest(1,3,convert('123',signed));
-- '123'-> 123 所有最大值是123- cast(target as type)
sql
select greatest(1,3,cast('123' as signed));
-- '123'-> 123 所有最大值是123- date_format
sql
select date_format('2022-06-15','%Y年%m月%d日');
-- 2022年06月15日- str_to_date
sql
select str_to_date('2022-06-15','%Y-%m-%d');
-- 2022-06-15其他函数
- nullif
sql
select nullif(1,1),nullif(1,2);如果两个值相当返回 null,不相等返回第一个值
- coalesce
sql
select coalesce(null,null),coalesce(11,5,6);返回第一个不是 null 的值,如果都是 null 返回的还是 null
- greatest
sql
select greatest(11,2,3,'22');返回最大值需要同类型对比这里的最大值是 11 而不是 22
- least
sql
select least(11,2,3,1);返回最小值