MySQL 第五篇:系统函数和联合查询

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 我把MySQL的内容整理成9篇博客,学完这9篇博客虽不能说能成为大神,但是应付一般中小企业的开发已经足够了,有疑问或建议的欢迎留言讨论。 一、系统函数 一、概念 函数是SQL里的关键字,用于对字段里的数据进行操作。

我把MySQL的内容整理成9篇博客,学完这9篇博客虽不能说能成为大神,但是应付一般中小企业的开发已经足够了,有疑问或建议的欢迎留言讨论。

一、系统函数

一、概念
函数是SQL里的关键字,用于对字段里的数据进行操作。函数是一个命令,通常与字段名称或者是表达式联合使用,处理输入的数据并产生结果

二、控制函数


1、case

语法:case 值 when 比较的值 then 返回的值 when 比较的值 THEN…. END

SELECT s_name,
    CASE sex
WHEN 0 THEN
    '女性'
WHEN 1 THEN
    '男性'
WHEN 2 THEN
    '未知'
END 性别
FROM
    students
SELECT
    s_name,
    CASE
WHEN age > 23 THEN
    '大叔'
ELSE
    '小鲜肉' end
FROM
    students

2、if

语法; IF(表达式,true时候返回值,false的返回值)

select s_name name,IF(AGE>23,'大叔','小鲜肉') type from students

3、IFNULL

语法:IFNULL(字段值,为空时返回的值)

select IFNULL(height,'未知') from students

4、NULLIF

语法:NULLIF(第一个值,第二个值)
如果第一个值与第二个值相等 则返回NULL, 否则的话返回第一个值

select s_name,NULLIF(age,0) from students

三、字符串函数

1、substring

语法:SUBSTRING(值,起始下标,截取长度) 下标从1开始。

select substring(s_name,1,5) from students

2、LEFT / right

语法:left(字段名称,num) :从 左边 截取num个字符;
right (字段名称,num) :从 右边 截取num个字符;

select left(s_name,3) from students

3、length

语法:length(字段名) 获取字段的长度,一个中文的长度为3。

select length(s_name),s_name from students;

4、lower/upper

语法:lower(字段名) 将字段的值转为小写;
upper(字段名) 将字段的值转为大写;

select lower(s_name) from students
select upper(s_name) from students

5、replace

语法:replace(字段,”敏感词”,”代替词”) 将字段中的敏感词转为代替词。

select replace(s_name,'法宝','**') from students;

6、concat/concat_ws

语法:concat(str1,str2,str3…) 将多个字段按声明顺序合并在一起,里面的参数可以是字段名,也可以是确定的字符,当为固定字符时,每个结果的对应位置都是该字符。

select CONCAT(';',s_id,s_name,age) from students;

语法:concat_ws(str1,str2,str3…)将多个字段按声明顺序合并在一起,其中第一个参数为连接字符,查询结果中每两个字段中间都会用第一个字符的值隔开,里面的参数可以是字段名,也可以是确定的字符,当为固定字符时,每个结果的对应位置都是该字符。

select CONCAT_ws(';',s_id,s_name,age) from students;

四、数学函数

  • abs(num) 取绝对值
  • floor(num) 向下取整
  • ceil(num) 向上取整
  • round(num) 四舍五入
  • rand() 在0-1之间取随机值;如果要限制范围就直接在后面乘以范围内的最大值,要取整就要结合取整函数
select ceil(rand()*100)

五、日期函数

DATEDIFF 比较两个日期之间的天数
DATE_ADD 添加时间
STR_TO_DATE 字符串转为时间
DATE_FORMAT 日期格式

select datediff(now(),STR_TO_DATE('2016-09-28','%Y-%m-%d')) from students
select DATE_ADD(now(),INTERVAL '2:4' DAY_HOUR) -- SECOND  MINUTE HOUR MONTH YEA
-- 日期的说明符。大家去查一下参考手册 %Y %m %d %H %i %s
SELECT DATE_FORMAT(Now(),'%Y,%m,%d : %H %i %s');

六、多表联合查询

1、左连接:以left 左边表为主查询数据。

左连接的结果集包括LEFT 子句中指定的左表的所有行,而不仅仅是连接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。

SELECT
    s.s_name,
    c.class_name
FROM
    class c
LEFT JOIN students s ON s.class_id = c.class_id

2、右连接:以right 右边表为主查询数据.

右连接是左连接的反向连接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

SELECT
    s.s_name,
    c.class_name
FROM
    class c
right JOIN students s ON s.class_id = c.class_id

注意:外连接查询时,主表的数据为准,次表只是作为补充。主表的数据不存在的话,次表多余的数据不会展示出来。

3、内连接

把两个表相关联的数据展示出来,相当于求两个集合的交集。
内连接使用比较运算符根据每个表共有的列的值匹配两个表中的行。

select s.s_name,
    c.class_name from students s inner JOIN class c on s.class_id = c.class_id

这也是内连接

SELECT
    s.s_name,
    c.class_name
FROM
    students s,
    class c
WHERE
    s.class_id = c.class_id

5、组合查询

Union [all]
Union操作符可以组合两个或多个的select语句的结果,不包含重复项。换句话说,如果某行的输出存在于一个查询结果里,那么其他查询结果同一行的记录就不会再输出了。在使用union操作符时,每个select语句里必须选择相同数量的字段、同样的数量的字段表达式、同样的次序(但长度不必一样)如果需要不去除重复项,则加上all关键字。

select s_name from students UNION
select class_id from class UNION
select now()

这里写图片描述

6、补充:

典型的连接运算,使用像 = 或 <> 之类的比较运算符。包括相等连接和自然连接。

  • 连接语法:select 字段1 ,字段2… from 主表 [连接方式] JOIN 次表1 on 连接条件1

可以给每个字段和表加别名(用空格隔开即可),如果要多表查询就直接在后面继续加join on 部分即可。

  • 完整语法:select 字段1 别名1 ,字段2 别名1… from 主表 表别名 [连接方式] JOIN 次表1 表别名1 on 连接条件1 JOIN 次表2 表别名2 on 连接条件2 …..

注意:
1、当然后面可以继续加Oder by、limit等语句;
2、连接条件一般是让两张表的主外键相等,当然也可以是<、>或其他的关系。
3、连接方式 left\right\inner可以省略不写,不写默认为inner内联。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
JSON 关系型数据库 MySQL
Mysql(5)—函数
MySQL提供了许多内置的函数以帮助用户进行数据操作和分析。这些函数可以分为几类,包括聚合函数、字符串函数、数值函数、日期和时间函数、控制流函数等。
138 1
Mysql(5)—函数
|
1月前
|
SQL 关系型数据库 MySQL
Mysql-常用函数及其用法总结
以上列举了MySQL中一些常用的函数及其用法。这些函数在日常的数据库操作中非常实用,能够简化数据查询和处理过程,提高开发效率。掌握这些函数的使用方法,可以更高效地处理和分析数据。
68 19
|
2月前
|
SQL 关系型数据库 MySQL
【MySQL基础篇】盘点MySQL常用四大类函数
本文介绍了MySQL中的四大类常用函数:字符串函数、数值函数、日期函数和流程函数。
【MySQL基础篇】盘点MySQL常用四大类函数
|
2月前
|
SQL 关系型数据库 MySQL
MySQL常见函数第二期,你都用过哪些呢 ?
本期介绍了20个常用的MySQL函数,涵盖日期处理(如CURDATE()、DATE_FORMAT())、数学运算(如ABS()、ROUND())、统计分析(如COUNT()、SUM())等,帮助提高SQL查询效率和数据处理能力。希望对大家的学习有所帮助。
97 7
|
2月前
|
关系型数据库 MySQL
MySQL常见函数第一期,你都用过哪些呢 ?
本期介绍10个常用的MySQL函数:字符串连接(CONCAT)、提取子字符串(SUBSTRING)、获取字符串长度(LENGTH)、转换大小写(UPPER、LOWER)、去除空格(TRIM)、替换字符串(REPLACE)、查找子字符串位置(INSTR)、带分隔符的字符串连接(CONCAT_WS)以及获取当前日期时间(NOW)。
89 8
|
2月前
|
数据采集 关系型数据库 MySQL
MySQL常用函数:IF、SUM等用法
本文介绍了MySQL中常用的IF、SUM等函数及其用法,通过具体示例展示了如何利用这些函数进行条件判断、数值计算以及复杂查询。同时,文章还提到了CASE WHEN语句和其他常用函数,如COUNT、AVG、MAX/MIN等,强调了它们在数据统计分析、数据清洗和报表生成中的重要性。
|
2月前
|
关系型数据库 MySQL 数据处理
【MySQL】函数
MySQL 提供了丰富的函数集,涵盖字符串处理、数值运算、日期时间操作和聚合计算等多个方面。这些函数在日常数据库操作中极为重要,通过合理使用这些函数,可以大大提高数据处理和查询的效率。用户还可以通过自定义函数,扩展 MySQL 的功能以满足特定需求。
108 3
|
3月前
|
关系型数据库 MySQL 数据处理
MySQL函数与约束
MySQL 提供了丰富的函数和强大的约束机制,用于数据处理和完整性维护。通过掌握这些工具,可以有效地管理和分析数据库中的数据,确保数据的一致性和准确性。无论是在日常数据查询中使用内置函数,还是在数据库设计中应用各种约束,都是确保数据库系统稳定、高效运行的关键。希望本文对您理解和应用 MySQL 函数与约束有所帮助。
51 1
|
3月前
|
NoSQL 安全 关系型数据库
2024Mysql And Redis基础与进阶操作系列(6)作者——LJS[含MySQL 多表之一对一/多;多对多;多表联合查询等详解步骤及常见报错问题所对应的解决方法]
MySQL 多表之一对一/多;多对多;多表联合之交叉连接;内连接;左、右、外、满、连接;子查询及关键字;自连接查询等详解步骤及常见报错问题所对应的解决方法
|
3月前
|
关系型数据库 MySQL Serverless
MySQL函数
最常用的MySQL函数,包括聚合函数,字符串函数,日期时间函数,控制流函数等
60 1