[MySQL]细节、经验

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: [MySQL]细节、经验

1、细节锦集

  1. 模糊查询写法:xx like '%##%'xx like concat('%', '##', '%')

2、通用函数

参考笔记二,P12.5。

2.1 字符处理函数

  1. length()获取字节数,char_length()获取字符数;
  2. strcmp(a, b)用于比较a、b的大小。若 a 大于、等于或小于 b 时,返回1/0/-1

2.2 非空判断函数

  1. isnull(a):若 a 为 null,返回1,否则返回0
  2. ifnull(a, b):若 a 为 null,返回 b,否则返回 a;
  3. nullif()、case...when...then:同 Oracle 中同名函数;
  4. coalesce(a, b, ...):返回第一个非 null 的值;
  5. if(a, b, c):若 a 为 true,返回 b,否则返回 c;

3、关于字段

3.1 使用细节

  1. 尽量设置为not null,因为查询时不必考虑null对查询的影响;
  2. 存储如 国家省份性别 这类数据的字段,可以使用外键,但多连接会导致性能降低、以及工作量的增加,这是没必要的。由于此类字段已固定数据,则数据类型可以选enum,且可以用一些标识表示数据,如:0=男,1=女CN-中国,UK-英国
    mysql会将enum视为“数值” \color{green}{“数值”}数值处理,故效率远高于字符类型。但要注意 \color{red}{注意}注意:若此字段可能用于连接 \color{purple}{连接}连接筛选 \color{blue}{筛选}筛选,就要考虑有没有必要使用 enum,因为enum字符 \color{red}{字符}字符类型,查询时要加上''(单引号)、以及进行一些字符处理(额外工作量),如:性别,使用int优于enum

3.2 字符匹配

1、若字段类型为 数值 类型,可匹配字符。

示例:

1、select * from xx where id = 10;   √
2、select * from xx where id = '10';   √

2、若字段类型为 字符 类型,不可匹配数字。

示例:

1、select * from xx where no = '1001';   √
2、select * from xx where no = 1001;   ×

4、关于字符排序

参考笔记二,P12.6、P17.7。

排序在查询中时常需要的,普遍情况下(数据类型是数值)使用order by即可解决。若数据类型为字符,排序操作如下:

  • 方法一:order by 字段 + 0:会将数据进行数值转换后再进行比较,转换时以非数字结束,如:'58a13', + 0 → 58'ab' + 0 → 0
  • 方法二:order by cast(a, b) / order by convert(a, b):都用于将字段值转换为另一类型再进行比较。其中,a 是字段,b 为转换类型。b 的取值:(1)unsigned:无符号数字,不能表示小数;(2)signed:有符号数字,可以表示小数。

留言: \color{red}{留言:}留言:当然,这两种方法都不可能完全实现字符类型字段的排序,需要根据具体数据判断(本来这种需求就很不合理。。。)。不过,这两种字符处理是有效的。

最后

如果大家想要了解一些MySQL知识点,可查阅博文《MySQL知识点锦集》。

本文持续更新中。。。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
关系型数据库 MySQL 测试技术
MySQL的`IN`的优化经验
限制IN列表的长度:IN子句中的元素数量较多时,会显著降低查询性能。尽量减少IN中的项数量。
MySQL单表数据不要超过500万行:是经验数值,还是黄金铁律?
原文地址:梁桂钊的博客 博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」。一群同频者,一起成长,一起精进,打破认知的局限性。 今天,探讨一个有趣的话题:MySQL 单表数据达到多少时才需要考虑分库分表?有人说 2000 万行,也有人说 500 万行。
20139 0
|
4月前
|
SQL 关系型数据库 MySQL
经验大分享:MySQL安装Atlas
经验大分享:MySQL安装Atlas
30 0
|
4月前
|
SQL 关系型数据库 MySQL
经验大分享:MySQL安装Atlas
经验大分享:MySQL安装Atlas
34 0
|
4月前
|
SQL 关系型数据库 MySQL
经验大分享:MySQL(三)数据库表的查询操作【重要】
经验大分享:MySQL(三)数据库表的查询操作【重要】
45 0
|
5月前
|
SQL 关系型数据库 MySQL
MySQL必看表设计经验汇总-下(精华版)
MySQL必看表设计经验汇总-下(精华版)
85 1
|
5月前
|
存储 关系型数据库 MySQL
MySQL必看表设计经验汇总-上(精华版)
MySQL必看表设计经验汇总-上(精华版)
90 1
|
5月前
|
存储 关系型数据库 MySQL
【MySQL】MySQL表设计的经验(建议收藏)
【MySQL】MySQL表设计的经验(建议收藏)
2577 3
【MySQL】MySQL表设计的经验(建议收藏)
|
10月前
|
关系型数据库 MySQL Java
阿里一线专家多年架构优化经验凝聚,手撸595页MySQL笔记
有史以来“最全”SpringBoot实战派,让开发像搭积木一样简单
|
12月前
|
SQL 关系型数据库 MySQL
MySQL 经验集总结(更新ing)
MySQL 经验集总结(更新ing)
45 0