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

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 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;


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
8月前
|
SQL 关系型数据库 MySQL
菜鸟之路Day30一一MySQL之DML&DQL
本文介绍了MySQL中DML(数据操作语言)和DQL(数据查询语言)的核心用法。DML主要包括插入(insert)、更新(update)和删除(delete)语句,通过具体示例演示了如何对表数据进行增删改操作。DQL则聚焦于数据查询,涵盖基本查询、条件查询、聚合函数、分组查询、排序查询和分页查询等内容。文章通过丰富的SQL语句实例,帮助读者掌握如何高效查询和操作数据库中的数据,适合初学者学习和实践。
294 12
|
3月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
565 5
|
4月前
|
关系型数据库 MySQL 数据管理
Mysql基础学习day03-作业
本内容包含数据库建表语句及多表查询示例,涵盖内连接、外连接、子查询及聚合统计,适用于员工与部门数据管理场景。
96 1
|
4月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day01
本课程为MySQL基础学习第一天内容,涵盖MySQL概述、安装、SQL简介及其分类(DDL、DML、DQL、DCL)、数据库操作(查询、创建、使用、删除)及表操作(创建、约束、数据类型)。适合初学者入门学习数据库基本概念和操作方法。
212 6
|
4月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day02-作业
本教程介绍了数据库表的创建与管理操作,包括创建员工表、插入测试数据、删除记录、更新数据以及多种查询操作,涵盖了SQL语句的基本使用方法,适合初学者学习数据库操作基础。
116 0
|
4月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day03
本课程为MySQL基础学习第三天内容,主要讲解多表关系与多表查询。内容涵盖物理外键与逻辑外键的区别、一对多、一对一及多对多关系的实现方式,以及内连接、外连接、子查询等多表查询方法,并通过具体案例演示SQL语句的编写与应用。
133 0
|
4月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day01-作业
本教程包含三个数据库表的创建练习:学生表(student)要求具备主键、自增长、非空、默认值及唯一约束;课程表(course)定义主键、非空唯一字段及数值精度限制;员工表(employee)包含自增主键、非空字段、默认值、唯一电话号及日期时间类型字段。每个表的结构设计均附有详细SQL代码示例。
101 0
|
4月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day02
本课程为MySQL基础学习第二天内容,涵盖数据定义语言(DDL)的表查询、修改与删除操作,以及数据操作语言(DML)的增删改查功能。通过具体SQL语句与实例演示,帮助学习者掌握MySQL表结构操作及数据管理技巧。
177 0
|
7月前
|
SQL 关系型数据库 MySQL
MySQL 常用函数
我们这次全面梳理 MySQL 中的常用函数,涵盖 聚合函数、字符串函数、日期时间函数、数学函数 和 控制流函数 等五大类。每类函数均配有语法说明与实用示例,帮助读者提升数据处理能力,如统计分析、文本处理、日期计算、条件判断等。文章结尾提供了丰富的实战练习,帮助读者巩固和应用函数技巧,是进阶 SQL 编程与数据分析的实用工具手册。
558 2
|
10月前
|
SQL 关系型数据库 MySQL
【YashanDB知识库】MySQL field 函数的改写方法
【YashanDB知识库】MySQL field 函数的改写方法

推荐镜像

更多