炸裂!MySQL 82 张图带你飞!(四)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 这篇文章我们来了解一下 MySQL 中的高级内容。

数据库名、表名大小写问题

在 MySQL 中,数据库中的每个表至少对应数据库目录中的一个文件,当然这取决于存储引擎的实现了。不同的操作系统对大小写的敏感性决定了数据库和表名的大小写的敏感性。在 UNIX 操作系统中是对大小写敏感的,因此数据库名和表名也是具有敏感性的,而到了 Windows 则不存在敏感性问题,因为 Windows 操作系统本身对大小写不敏感。列、索引、触发器在任何平台上都对大小写不敏感。

在 MySQL 中,数据库名和表名是由 lower_case_tables_name 系统变量决定的。可以在启动 mysqld 时设置这个系统变量。下面是 lower_case_tables_name 的值。

微信图片_20220418193550.png

如果只在一个平台上使用 MySQL 的话,通常不需要修改 lower_case_tables_name 变量。如果想要在不同系统系统之间迁移表就会涉及到大小写问题,因为 UNIX 中 clerk_info 和 CLERK_INFO 被认为是两个不同的表,而 Windows 中则认为是一个。在 UNIX 中使用 lower_case_tables_name=0, 而在 Windows 中使用lower_case_tables_name=2,这样可以保留数据库名和表名的大小写,但是不能保证所有的 SQL 查询中使用的表名和数据库名的大小写相同。如果 SQL 语句中没有正确引用数据库名和表名的大小写,那么虽然在 Windows 中能正确执行,但是如果将查询转移到 UNIX 中,大小写不正确,将会导致查询失败。

外键问题

这里需要注意一个问题,InnoDB 存储引擎是支持外键的,而 MyISAM 存储引擎是不支持外键的,因此在 MyISAM 中设置外键会不起作用。

MySQL 常用函数

下面我们来了解一下 MySQL 函数,MySQL 函数也是我们日常开发过程中经常使用的,选用合适的函数能够提高我们的开发效率,下面我们就来一起认识一下这些函数

字符串函数

字符串函数是最常用的一种函数了,MySQL 也是支持很多种字符串函数,下面是 MySQL 支持的字符串函数表

微信图片_20220418193554.png

下面通过具体的示例演示一下每个函数的用法

  • LOWER(str) 和 UPPER(str) 函数:用于转换大小写

微信图片_20220418193557.png

  • CONCAT(s1,s2 ... sn) :把传入的参数拼接成一个字符串

微信图片_20220418193600.png

上面把 c xu an 拼接成为了一个字符串,另外需要注意一点,任何和 NULL 进行字符串拼接的结果都是 NULL。

微信图片_20220418193603.png

  • LEFT(str,x) 和 RIGHT(str,x) 函数:分别返回字符串最左边的 x 个字符和最右边的 x 个字符。如果第二个参数是 NULL,那么将不会返回任何字符串

微信图片_20220418193608.png

  • INSERT(str,x,y,instr) :将字符串 str 从指定 x 的位置开始, 取 y 个长度的字串替换为 instr。

微信图片_20220418193616.png

  • LTRIM(str) 和 RTRIM(str) 分别表示去掉字符串 str 左侧和右侧的空格

微信图片_20220418193634.png

  • REPEAT(str,x) 函数:返回 str 重复 x 次的结果

微信图片_20220418193637.png

  • TRIM(str) 函数:用于去掉目标字符串的空格

微信图片_20220418193641.png

  • SUBSTRING(str,x,y) 函数:返回从字符串 str 中第 x 位置起 y 个字符长度的字符串

微信图片_20220418193644.png

  • LPAD(str,n,pad) 和 RPAD(str,n,pad) 函数:用字符串 pad 对 str 左边和右边进行填充,直到长度为 n 个字符长度

微信图片_20220418193648.png

  • STRCMP(s1,s2) 用于比较字符串 s1 和 s2 的 ASCII 值大小。如果 s1 < s2,则返回 -1;如果 s1 = s2 ,返回 0 ;如果 s1 > s2 ,返回 1。

微信图片_20220418193651.png

  • REPLACE(str,a,b) : 用字符串 b 替换字符串 str 种所有出现的字符串 a

微信图片_20220418193654.png

数值函数

MySQL 支持数值函数,这些函数能够处理很多数值运算。下面我们一起来学习一下 MySQL 中的数值函数,下面是所有的数值函数

微信图片_20220418193657.png

下面我们还是以实践为主来聊一聊这些用法

  • ABS(x) 函数:返回 x 的绝对值

微信图片_20220418193701.png

  • CEIL(x) 函数:返回大于 x 的整数

微信图片_20220418193704.png

  • MOD(x,y),对 x 和 y 进行取模操作

微信图片_20220418193708.png

  • ROUND(x,y) 返回 x 四舍五入后保留 y 位小数的值;如果是整数,那么 y 位就是 0 ;如果不指定 y ,那么 y 默认也是 0 。

微信图片_20220418193711.png

  • FLOOR(x) : 返回小于 x 的最大整数,用法与 CEIL 相反

微信图片_20220418193714.png

  • TRUNCATE(x,y): 返回数字 x 截断为 y 位小数的结果, TRUNCATE 知识截断,并不是四舍五入。

微信图片_20220418193717.png

  • RAND() :返回 0 到 1 的随机值

微信图片_20220418193721.png

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
前端开发 BI API
钉钉多维表目前没有提供具体的API文档供开发者调用
【2月更文挑战第17天】钉钉多维表目前没有提供具体的API文档供开发者调用
581 4
|
数据可视化
hashmap底层1.8有红黑树,什么是红黑树?一文了解
hashmap底层1.8有红黑树,什么是红黑树?一文了解
hashmap底层1.8有红黑树,什么是红黑树?一文了解
|
缓存 API Android开发
Installation did not succeed。apk安装失败的一些解决办法
Installation did not succeed。apk安装失败的一些解决办法
1194 0
Installation did not succeed。apk安装失败的一些解决办法
|
前端开发 Linux 网络安全
如何通过SSH配合VSCode收获超舒适的远程开发体验
最近公司有接了个项目,需要远程开发,不管是用**远程控制软件**还是微软的**远程桌面连接**,体验都不是很好,感觉特别的不舒服,尤其是微软的**远程桌面连接**,只能一个人使用,经常出现你挤我我挤你的现象,这就我想到一年前通过SSH远程连接过Linux进行开发,这次就来远程连接一下Windows进行开发。
526 0
如何通过SSH配合VSCode收获超舒适的远程开发体验
|
Cloud Native
《初识宜搭低代码》
本文主要介绍了我从第一次认识宜搭低代码到考过《低代码开发师》初级、中级和高级认证,以及参加低代码创新大赛第一届、第二届获奖的事情,其中有很多曾经的聊天截图,如今整理成册,留作纪念,同时希望也能帮助到想要考试认证《低代码开发师》的小伙伴们。最后有考试路径。
1640 0
《初识宜搭低代码》
关于奇函数和偶函数之间的加减乘除关系
关于奇函数和偶函数之间的加减乘除关系
1160 0
|
前端开发 JavaScript
vue简单实现书本翻页效果
偶然兴起,想要用vue来做一个书本的组件,有了这个想法后边开始动手,先简单地实现基本的效果,为后续封装为组件进行准备工作,实现该效果主要使用vue + css + JavaScript。
1508 0
vue简单实现书本翻页效果
|
Java Maven
SpringBoot - @ComponentScan & @SpringBootApplication 扫描覆盖问题
SpringBoot - @ComponentScan & @SpringBootApplication 扫描覆盖问题
681 0
SpringBoot - @ComponentScan & @SpringBootApplication 扫描覆盖问题
|
编解码 分布式计算 算法
snappy流式编解码总结
snappy流式编解码总结
943 0