5 mySQL(DQL数据查询:select)

2022-08-09,,,

from join on
where
group by
having
select distinct ⭐️
order by
limit

(一)合并处理,对象的值:分组函数

计算表内非空总行数

方式 函数名 代码
方式1(推荐) 计算表内非空总行数 select count(*) from 表
方式2(不推荐) 计算表内非空总行数 select count(“常量”) from 表

(二)单条处理,对象的值:(普通字段,系统函数,自定义函数)

普通字段

select 代码
常量 100,跟日期一样,占一位
单个字段 select 字段
多个字段 select 字段,字段
全部字段 select *

自定义函数:mysql高级讲,应该很有用对字段统一处理,后期看
系统函数

  1. sql中的函数都有返回值
  2. 参数与返回值一对一的
  3. sql索引从1开始
  4. sql语句中,加号➕只做加法运算,没有拼接的概念
  5. null+数字=null,字符型+数字=0+数字,null+任何=null

(1)字符函数

名称 代码 返回值 解释
拼接字符 concat(字符1,字符2,字段1,字段2) 字符1字符2字段1字段2 数据拼接在了一起
转化null if null(可能是null的字段,“自定义字”) 参数2 如果参数1为null,则转化为参数2
获取字节长度 lenght(字段/字符) 字节个数 一个汉字3个字节
获取字符长度 char_lenght(字段/字符) 字符个数 一个汉字1个字符
截取字符串 substr(字段/字符,截取的开始的索引,截取的长度) 截取的字符串
从左侧截取字符串 left(字段/字符,截取的长度) 截取的字符串
从右侧截取字符串 right(字段/字符,截取的长度) 截取的字符串
获取字符第一次出现的索引 instr(字段1/字符串1,字段2/字符串2) 1里面包含2的第一次索引
去前后空格 trim(字符/字段) 没有前后空格的字符/字段
去除字段最前,最后的指定字符 trim(“指定字符” from 字符/字段) 没有前后特殊字段的字符/字段
从左开始填充字符 lpad(字符/字段,要占满的字符长度,填充内容) xxxxxx字段 主要看要求的字符长度,如果写个1会把字段隐藏一部分
从右开始填充字符 rpad(字符/字段,要占满的字符长度,填充内容) 字段xxxxxx 主要看要求的字符长度,如果写个1会把字段隐藏一部分
将字母变成大写 upper(字符/字段) 大写内容
将字母变成小写 lower(字符/字段) 小写内容
比较两个字符大小 strcmp(字符1,字符2) 字符1大:1,字符1小:-1,相等:0 26个英文字母,b的字符比a大

(2)数学函数

名称 代码 返回值 解释
字段直接运算 select 100%3; 每个对象的值%3
绝对值 ABS(字段/数字) 正数
向上取整数 cell(字段/数字) 整数
向下取整数 floor(字段/数字) 整数
四舍五入 round(字段/数字,2) 小数 四舍五入,参数2的2是保留两位小数的意思
截断 truncate(字段/数字,2) 小数 截断小数点后位数
取余 mod(数字1,数字2) 余数 = 数字1%数字2

(2)日期+时间 函数 :

名称 代码 返回值 解释
获取当前日期+时间 now(空) 当前的日期+时间 跟常量一样占一位
获取当前日期 curdate() 当前的日期
获取当前时间 curtime() 当前的时间
计算两个日期之间的天数 datediff(1998-01-02”,1998-02-02”) 日期1-日期2的天数
日期转化成自定义格式字符串 date_format(“2020-01-02”,“%y年%m月%d日%h小时”%i分钟%s秒) 转换后的格式 需要前后对应一致
自定义格式字符串转化成日期 str_to_date(自定义格式,%m/%d %y “2020-01-02” 参数2与参数1对应的,连空格都需要保持一致的格式
将日期中的年提取出来 year(字段)
将日期中的月提取出来 month(字段)

(三)更改处理,对象的值:流程控制

if结构:判断true/false

//判断字段1是true,对象值输出固定值1/固定值2
if(字段1>"2",固定值1,固定值2

多重if-else结构:sql语句中没有if-else,用case,when替代

//判断多重条件,输出结果
case 
when 条件1 then 结果1
when 条件2 then 结果2
...
else 结果n
end

case结构:等值判断,例如switch case

//判断多重条件,输出结果
case 字段x
when x的值1 then 结果1
when x的值2 then 结果2
...
else 结果n
end

(四)去重数据,和上面所有内容都可配合

select distincy 字段  from 表名;

本文地址:https://blog.csdn.net/lzyPM/article/details/107162457

《5 mySQL(DQL数据查询:select).doc》

下载本文的Word格式文档,以方便收藏与打印。