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;


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
23天前
|
JSON 关系型数据库 MySQL
Mysql(5)—函数
MySQL提供了许多内置的函数以帮助用户进行数据操作和分析。这些函数可以分为几类,包括聚合函数、字符串函数、数值函数、日期和时间函数、控制流函数等。
67 1
Mysql(5)—函数
|
4天前
|
关系型数据库 MySQL Serverless
MySQL函数
最常用的MySQL函数,包括聚合函数,字符串函数,日期时间函数,控制流函数等
|
8天前
|
SQL NoSQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
|
8天前
|
SQL NoSQL 关系型数据库
|
19天前
|
关系型数据库 MySQL 数据库
mysql中tonumber函数使用要注意什么
在处理这类转换操作时,考虑周全,利用提供的高性能云服务器资源,可以进一步提升数据库处理效率,确保数据操作的稳定性和安全性,尤其是在处理大量数据转换和运算密集型应用时。
61 0
|
22天前
|
关系型数据库 MySQL 数据处理
企业级应用 mysql 日期函数变量,干货已整理
本文详细介绍了如何在MySQL8.0中使用DATE_FORMAT函数进行日期格式的转换,包括当日、昨日及不同时间段的数据获取,并提供了实际的ETL应用场景和注意事项,有助于提升数据处理的灵活性和一致性。
37 0
|
23天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
56 3
Mysql(4)—数据库索引
|
9天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
45 2
|
12天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
52 4
|
17天前
|
存储 关系型数据库 MySQL
如何在MySQL中创建数据库?
【10月更文挑战第16天】如何在MySQL中创建数据库?