MySQL基础——DQL语言的学习(常见函数)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: DQL语言学习进阶四(常见函数)!

DQL语言学习进阶四(常见函数)

一、概念

类似于Java的方法,将一组逻辑语句封装在方法体中,对外暴漏方法名

二、优点

1、隐藏了实现细节

2、提高代码的复用性

调用:select 函数名(实参列表)【from 表】;

三、特点

1、叫什么(函数名)

2、干什么(函数功能)

四、分类

1、单行函数

2、分组函数

功能:做统计使用,又称为统计函数、聚合函数、组函数

3、常见函数

一、单行函数

(一)字符函数

length:获取字节长度

concat:连接

substr:截取子串

instr:获取子串第一次出现的索引

trim:去重

upper:变大写

lower:变小写

lpad:左填充

rpad:右填充

replace:替换

(二)数学函数

round:四舍五入

ceil:向上取整

floor:向下取整

truncate:截断

mod:取模

rand:获取随机数,返回0-12间的小数

(三)日期函数

now:返回当前日期+时间

curdate:返回当前日期

curtime:返回当前时间

year:返回年

month:返回月

monthname:以英文形式返回月

day:天

hour:小时

minute:分钟

second:秒

str_to_date:将字符转换成日期

date_format:将日期转换成字符

datediff:返回两个日期相差的天数

(四)其他函数

version:当前数据库服务器的版本

database:当前打开的数据库

user:当前用户

password(‘字符’):返回该字符的密码形式

md5(‘字符’):返回该字符的md5加密形式

(五)流程控制函数

1、

if(条件表达式,表达式1,表达式2):如果条件表达式成立,返回表达式1,否则返回表达式2

2、case情况一:

case 变量或表达式或字段
when 常量1 then 常量1
when 常量2 then 常量2
……
else 值n
end

case情况二:

case 
when 条件1 then 常量1
when 条件2 then 常量2
……
else 值n
end


(一)字符函数

1、length:获取参数值的字节个数

2、concat:拼接字符

3、upper、lower:upper变大写,lower变小写

例:将姓变大写,名变小写,然后拼接

select concat(upper(last_name), lower(first_name))姓名 
from employee;

4、substr、substring

注:索引从1开始

截取从指定索引处后面所有字符

select substr('我和我的祖国都很棒',7) out_put;显示都很棒

截取从指定索引处指定字符长度的字符

select substr('我和我的祖国都很棒',1,3)out_put;
显示我和我

5、instr:返回子串第一次出现的索引,如果找不到,返回0

select instr('我和我的祖国都很棒''都超棒')as out_put;

6、trim:去空格

select length(trim('   我   '))as out_put;

7、lpad:用指定的字符实现左填充指定长度

select lpad('请求权',2,'*')as out_put;

8、rpad:用指定的字符实现右填充指定长度

select rpad('请求权',12,'ab')as out_put;

9、replace:替换

select replace('我和我的祖国都很棒''祖国''地球')as out_put;


(二)数学函数

1、round:四舍五入

select round(-1,55);select round(1,567,2);

2、ceil:向上取整,返回>=该参数的最小整数

select ceil(1,00);

3、floor:向下取整,返回<=该参数的最大整数

select floor(-9,99);

4、truncate:截断

select truncate(1,65,1);

5、mod:取余

select mod(10,3);


(三)日期函数


1、now:返回当前系统日期+时间

select now();

2、curdate:返回当前系统日期,不包含时间

select curdate();

3、curtime:返回当前时间,不包含日期

select curtime();

获取指定的部分,年、月、日、小时、分钟、秒

selectyear( now()) 年;

str_to_date:将日期格式的字符转换成指定格式的日期

str_to_date ('9-13-1999','%m-%d-%Y');

date_format:将日期转换成字符

date_format ('2018/6/6','%Y年%m月%d日');


(四)其他函数

select version();select database();select user();


(五)流程控制函数

1、if函数:if else 的效果

2、case函数的使用一:switch case的效果

语法:

case 要判断的字段或表达式
when 常量:then 要显示的值1或语句1;when 常量:then 要显示的值2或语句2;………
else 要显示的值n或语句n;end

例:查询员工的工资,要求:

部门号=30,显示的工资为1.1倍

部门号=40,显示的工资为1.2倍

部门号=50,显示的工资为1.3倍

其他部门,显示的工资为原工资

select salary,department_id 
case department_id
when 30 then salary *1.1when 40 then salary *1.2when 50 then salary *1.3else salary
end as 新工资
from employee;

3、case函数的使用二:类似于多重if

语法:

case 
when 条件1 then 要显示的值1或语句1;when 条件2 then 要显示的值1或语句2;…………
else 要显示的值n或语句n;end

例:查询员工的工资情况

如果工资大于20000,显示A级别

如果工资大于15000,显示B级别

如果工资大于10000,显示C级别

否则,显示D级别

select salary,
case
when salary >20000 then 'A'when salary >15000 then 'B'when salary >10000 then 'C'else 'D'end as 工资级别
from employee;

例1:显示系统时间(注:日期+时间)

select now();

例2:查询员工号、姓名、工资、工资提高百分之二十后的结果

select employee_id,last_name, salary, salary*1.2"new salary"from employee;

例3、将员工的姓名按首字母排序,并写出姓名的长度

select length(last_name) 长度,substr(last_name,1,1) 首字符,last_name 
from employee orderby 首字符;

例4、做一个查询,产生下面的结果

select concat (last_name,'earns',salary,'monthly but wants', salary*3)as'dream salary'from employee 
where salary=24000;

5、使用case-when,按照下面的条件

select job_id as job
case job_id
when 'AD_PRES' then 'A'when 'ST_MAN' then 'B'when 'IT_PRCC' then 'C'end as grade
from employee
where job_id ='AD_PRES';


二、分组函数

(一)功能

用作统计使用,又称为聚合函数或统计函数或组函数

(二)分类

sum求和,avg平均值,max最大值,min最小值,count计算个数

(三)特点

1、语法:

select max(字段)from 表名;

2、支持的类型:

sum、avg一般用于处理数值型

max、min、count可以处理任何类型

3、以上分组函数都忽略null值

4、都可以和distinct搭配使用,实现去重的设计

select max(distinct 字段)from 表名;

5、count函数的单独介绍

一般使用count(*)用作统计函数

count(字段):统计该字段非空值的个数

count(*):统计结果集的行数

count(1):统计结果集的行数

效率上:

MyISAM存储引擎:count(*)效率最高

InnoDB存储引擎:count(*)和count(1)效率>count(字段)

6、和分组函数一同查询的字段要求是group by后出现的字段

1、简单的使用

select sum(salary)from employee;select avg(salary)from employee;select max(salary)from employee;select min(salary)from employee;selectcount(salary)from employee;select sum(salary), avg(salary) 平均, max(salary) 最高,min(salary)最低,count(salary) 个数  from employee;

2、参数支持哪些类型

select sum(last_name), avg(last_name)from employee;select sum(hiredate), avg(hiredate)from employee;select max(last_name), min(last_name)from employee;select max(hiredate), min(hiredate)from employee;selectcount(commission_pct)from employee;selectcount(last_name)from employee;

3、是否忽略null

select sum(commission_pct), avg(commission_pct),sum(commission_pct)/35, sum(commission_pct)/107from employee;

4、和distinct搭配

select sum(distinct salary)from employee;

5、count函数详细介绍

selectcount(salary)from employee;selectcount(*)from employee;selectcount(1)from employee;

效率:

myisan存储引擎下,count(*)的效率高

innodb存储引擎下,count(*)和count(1)的效率差不多,比count(字段)效率要高一些

6、和分组函数一同查询的字段有限制

select avg(salary),employee_id 
from employee;

例1、查询公司员工工资的最大值、最小值、平均值、总和

select max(salary) mx_sal, min(salary) min_sal, avg(salary) avg_sal, sum(salary) sm_sal 
from employee;

例2、查询员工表中的最大入职时间和最小入职时间的相差天数(difference)

select  datediff(max(hiredate) min(hiredate)) difference 
from employee;

例3、查询部门编号为90的员工个数

selectcount(*)from employee 
where department_id=90;


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
Mysql-常用函数及其用法总结
以上列举了MySQL中一些常用的函数及其用法。这些函数在日常的数据库操作中非常实用,能够简化数据查询和处理过程,提高开发效率。掌握这些函数的使用方法,可以更高效地处理和分析数据。
97 19
【MySQL基础篇】盘点MySQL常用四大类函数
本文介绍了MySQL中的四大类常用函数:字符串函数、数值函数、日期函数和流程函数。
【MySQL基础篇】盘点MySQL常用四大类函数
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
本文详细介绍了MySQL中的SQL语法,包括数据定义(DDL)、数据操作(DML)、数据查询(DQL)和数据控制(DCL)四个主要部分。内容涵盖了创建、修改和删除数据库、表以及表字段的操作,以及通过图形化工具DataGrip进行数据库管理和查询。此外,还讲解了数据的增、删、改、查操作,以及查询语句的条件、聚合函数、分组、排序和分页等知识点。
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
MySQL常见函数第二期,你都用过哪些呢 ?
本期介绍了20个常用的MySQL函数,涵盖日期处理(如CURDATE()、DATE_FORMAT())、数学运算(如ABS()、ROUND())、统计分析(如COUNT()、SUM())等,帮助提高SQL查询效率和数据处理能力。希望对大家的学习有所帮助。
102 7
MySQL常见函数第一期,你都用过哪些呢 ?
本期介绍10个常用的MySQL函数:字符串连接(CONCAT)、提取子字符串(SUBSTRING)、获取字符串长度(LENGTH)、转换大小写(UPPER、LOWER)、去除空格(TRIM)、替换字符串(REPLACE)、查找子字符串位置(INSTR)、带分隔符的字符串连接(CONCAT_WS)以及获取当前日期时间(NOW)。
100 8
MySQL常用函数:IF、SUM等用法
本文介绍了MySQL中常用的IF、SUM等函数及其用法,通过具体示例展示了如何利用这些函数进行条件判断、数值计算以及复杂查询。同时,文章还提到了CASE WHEN语句和其他常用函数,如COUNT、AVG、MAX/MIN等,强调了它们在数据统计分析、数据清洗和报表生成中的重要性。
MySQL生产环境迁移至YashanDB数据库深度体验
这篇文章是作者将 MySQL 生产环境迁移至 YashanDB 数据库的深度体验。介绍了 YashanDB 迁移平台 YMP 的产品相关信息、安装步骤、迁移中遇到的各种兼容问题及解决方案,最后总结了迁移体验,包括工具部署和操作特点,也指出功能有优化空间及暂不支持的部分,期待其不断优化。
云数据库:从零到一,构建高可用MySQL集群
在互联网时代,数据成为企业核心资产,传统单机数据库难以满足高并发、高可用需求。云数据库通过弹性扩展、分布式架构等优势解决了这些问题,但也面临数据安全和性能优化挑战。本文介绍了如何从零开始构建高可用MySQL集群,涵盖选择云服务提供商、创建实例、配置高可用架构、数据备份恢复及性能优化等内容,并通过电商平台案例展示了具体应用。
数据库数据恢复——MySQL简介和数据恢复案例
MySQL数据库数据恢复环境&故障: 本地服务器,安装的windows server操作系统。 操作系统上部署MySQL单实例,引擎类型为innodb,表空间类型为独立表空间。该MySQL数据库没有备份,未开启binlog。 人为误操作,在用Delete命令删除数据时未添加where子句进行筛选导致全表数据被删除,删除后未对该表进行任何操作。
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
132 25