我做网站可以赚钱吗,郑州网站开发顾问,做互联网网站赚钱吗,行业开发1 背景
在MySQL查询等操作过程中#xff0c;我们需要根据实际情况#xff0c;使用其提供的内置函数。今天我们就来一起来学习下这些函数#xff0c;在之后的使用过程中更加得心应手。
2 MySQL函数
2.1 字符串函数
常用的函数如下#xff1a;
concat(s1,s2,…sn)字符串…1 背景
在MySQL查询等操作过程中我们需要根据实际情况使用其提供的内置函数。今天我们就来一起来学习下这些函数在之后的使用过程中更加得心应手。
2 MySQL函数
2.1 字符串函数
常用的函数如下
concat(s1,s2,…sn)字符串拼接lower(str)将字符串str全部转换为小写upper(str)将字符串str全部转换为大写lpad(str,n,pad)左填充用字符串pad对str的左边进行填充达到n个字符串长度rpad(str,n,pad)右填充用字符串pad对str的右边进行填充达到n个字符串长度trim(str)去掉字符串头部和尾部的空格substr(str,start,len)截取从字符串str从start位置起的len个长度的字符串concat(s1,s2,…sn)字符串拼接lower(str)将字符串str全部转换为小写## group_concat(…)函数用于将查询结果集中的多行数据连接成一个字符串
简单使用实例
select concat(hello,world);select lower(Hello);select upper(hello);select lpad(hello,10,-);select rpad(hello,10,-);select trim( hello w ); -- 从第一位开始截取截取5位
select substr(hello world,1,5);使用场景
由于业务需求变更人员的id统一为5位数不足5位数的全部在前边补0比如1的人员id需要修改为00001
-- 使用lpad进行填充select lpad(id, 5, 0) as id from user;注意 concat 和group_concat的使用
CONCAT 函数CONCAT 函数用于连接两个或多个字符串。它接受任意数量的参数将这些参数按顺序连接起来并返回一个包含所有参数连接结果的字符串。例如
SELECT CONCAT(Hello, , World); -- 输出: Hello WorldGROUP_CONCAT 函数GROUP_CONCAT 函数用于将查询结果集中的多行数据连接成一个字符串。它通常与 GROUP BY 语句一起使用用于将分组后的多行数据连接成一个字符串每个分组的数据用指定的分隔符隔开。如
SELECT GROUP_CONCAT(column_name SEPARATOR , ) FROM table_name GROUP BY group_column;在这个例子中column_name 是需要连接的列group_column 是分组的列SEPARATOR 是用于分隔连接结果的字符串。
2.2 数值函数
常用的数值函数如下在实际工作中使用较少
ceil(x)向上取整floor(x)向下取整mod(x,y)返回x/y的模rand()返回0~1内的随机数round(x,y)求参数x的四舍五入的值保留y位小数
2.3 日期函数
常用的日期函数如下
curdate()返回当前日期curtime()返回当前时间now()返回当前日期和时间year(date)获取指定date的年份month(date)获取指定date的月份day(date)获取指定date的日期date_add(date,interval expr type)返回一个日期/时间值加上一个时间间隔expr后的时间值datediff(date1,date2)返回起始时间date1和结束时间date2之间的天数date_format(date, format)将日期格式化为指定格式
简单使用实例
select curdate();
select curtime();
select now();
select year(2023-07-21 12:31:45);
select month(2023-07-21 12:31:45);
select day(2023-07-21 12:31:45); -- 获取当前时间往后推10年的时间
select date_add(now(), interval 10 year); select datediff(2023-07-21 12:31:45, 2020-07-21 0:0:45);date_format中一些常用的日期格式化符号 %Y四位年份例如2023 %m两位月份01 到 12 %d两位日期01 到 31 %H24小时制的小时00 到 23 %i两位分钟00 到 59 %s两位秒数00 到 59
如果你想将日期字段 order_date 格式化为 YYYY-MM-DD 的形式你可以这样使用 DATE_FORMAT 函数
SELECT DATE_FORMAT(order_date, ‘%Y-%m-%d’) AS formatted_date FROM orders;
在这个查询中order_date 会被格式化成 ‘YYYY-MM-DD’ 的形式并且结果会以 formatted_date 的别名返回。
还可以使用 DATE_FORMAT 函数来处理日期时间字段例如将日期时间字段格式化为 YYYY-MM-DD HH:MM:SS 的形式
SELECT DATE_FORMAT(order_datetime, ‘%Y-%m-%d %H:%i:%s’) AS formatted_datetime FROM orders;
2.4 流程控制函数
常用的流程控制函数如下
if(value, t, f)如果value为true返回t否则返回fifnull(value1, value2)如果value1不为空返回value1否则返回value2case when [val1] then [res1] … else [default] end如果val1为true返回res1否则返回default默认值case [expr] when [val1] then [res1] … else [default] end如果expr的值等于val1返回res1否则返回default默认值
select *, if(city 北京,bj,other)
as city_name
from user; select *,
case when city 北京 then bj else other end
as city_name2
from user;3 其他注意
使用MySQL内置函数时确实有一些需要注意的地方特别是在处理大量数据时可以影响查询的效率
3.1 索引的使用
如果在查询条件中使用了函数可能会导致索引无法使用。例如WHERE YEAR(date_column) 2023 中的YEAR()函数可能导致无法使用date_column上的索引。在可能的情况下尽量避免在查询条件中使用数。
3.2 函数的嵌套
函数的嵌套使用可能会增加查询的复杂度。例如嵌套了多层函数的查询可能会导致性能下降。在编写复杂查询时确保函数的嵌套使用合理不要过度复杂化查询。
3.3 数据类型转换
函数可能引发数据类型转换这可能导致不必要的性能开销。例如在字符串和数字之间进行转换可能会消耗一定的性能。在使用函数时注意函数返回值的数据类型尽量避免不必要的数据类型转换。
3.4 使用合适的函数
使用合适的函数能够提高查询的效率。例如在字符串拼接时使用CONCAT()函数通常比使用运算符更高效。了解函数的具体功能和适用场景选择合适的函数可以提高查询性能。
3.5 聚合函数的合理使用
当使用聚合函数如SUM()、COUNT()等时注意是否需要在查询中使用GROUP BY语句。不合理的聚合函数使用可能导致结果不符合预期也可能导致性能下降。
3.6 使用EXPLAIN语句分析查询计划
使用EXPLAIN语句可以分析查询的执行计划了解MySQL是如何执行查询的。通过分析查询计划可以发现是否有不合理的函数使用或索引未使用等问题从而优化查询性能。
总之合理使用MySQL内置函数是可以提高查询效率的但在使用时需要根据具体情况选择合适的函数同时通过使用EXPLAIN语句分析查询计划可以帮助你发现潜在的性能问题并进行优化。
关注我我们一起学习。