5 mySQL(DQL数据查询:select)
程序员文章站
2022-07-07 20:12:40
from join onwheregroup byhavingselect distinct ⭐️order bylimit(一)合并处理,对象的值:分组函数计算表内非空总行数方式函数名代码方式1(推荐)计算表内非空总行数select count(*) from 表方式2(不推荐)计算表内非空总行数select count(“常量”) from 表(二)单条处理,对象的值:(普通字段,系统函数,自定义函数)普通字段selec.....
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高级讲,应该很有用对字段统一处理,后期看
系统函数
- sql中的函数都有返回值
- 参数与返回值一对一的
- sql索引从1开始
- sql语句中,加号➕只做加法运算,没有拼接的概念
- 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
推荐阅读
-
重新学习Mysql数据库5:根据MySQL索引原理进行分析与优化
-
在oracle 数据库查询的select 查询字段中关联其他表的方法
-
利用Django框架中select_related和prefetch_related函数对数据库查询优化
-
数据库SQL SELECT查询的工作原理
-
php+mysql数据库查询实例
-
MYSQL5 masterslave数据同步配置方法第1/3页
-
mysql-数据库查询语句汇总
-
Oracle查询前10条数据、查询第5~10条的记录,minus(减)方法
-
5个保护MySQL数据仓库的小技巧
-
ASP.NET MVC5+EF6+EasyUI 后台管理系统(81)-数据筛选(万能查询)实例