mysql面试题 Day1

2024-06-16 21:36
文章标签 mysql 面试题 day1 database

本文主要是介绍mysql面试题 Day1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1 可以使用mysql直接存储文件吗?

2 什么时候存文件,什么时候不存文件?

3 存储文件,有遇到什么问题吗?

4 emoji 乱码怎么办?

5 如何存储ip地址?


1 可以使用mysql直接存储文件吗?

在MySQL中存储文件通常指的是将文件作为BLOB数据存入数据库中。

BLOB (binary large object):二进制大对象的字段类型 ,主要用于存储二进制大对象,例如可以存储图片,音视频等文件。

按照存储容量来分类,blob 类型可分为以下四种:

类型    存储大小 用途
TINYBLOB  0 - 255字节短文本二进制字符串
BLOB 0 - 65KB二进制形式的字符串
MEDIUMBLOB0 - 16MB二进制形式的长文本数据
LONGBLOB0 - 4GB 二进制形式的极大文本数据


其中最常用的就是 blob 字段类型了,最多可存储 65KB 大小的数据,一般可用于存储图标或 logo 图片。不过数据库并不适合直接存储图片,如果有大量存储图片的需求,请使用对象存储或文件存储,数据库中可以存储图片路径来调用。

2 什么时候存文件,什么时候不存文件?

存:

  1. 小型文件和少量文件

    MySQL 可以存储小型文件,比如少于几兆字节的文件,而不会显著增加数据库的负担。

不存:

  1. 大型文件和大量文件

    MySQL 并不适合存储大型文件(比如几十兆字节以上)或者大量的文件,因为这样会显著增加数据库的存储和管理负担,降低数据库的性能。
  2. 文件频繁更新

    如果文件需要频繁更新或替换,存储在数据库中会导致数据库的性能瓶颈,因为每次更新都会导致整个文件数据的写入和数据库的日志记录。
  3. 需要外部访问和处理

    如果文件需要由外部程序直接访问或处理,将文件存储在数据库中可能会增加额外的复杂性和开销,不如直接存储文件路径来得简单和高效。
  4. 存储要求高

    数据库系统的存储空间有限,如果存储大量文件可能会超出数据库的存储能力,不如使用专门的文件系统或对象存储服务来存储文件。

3 存储文件,有遇到什么问题吗?

  1. 文件大小超过限制

    • 解释:MySQL有内置的文件大小限制,例如max_allowed_packet

    • 解决方法:调整my.cnfmy.ini配置文件中相关参数的值,以支持更大的文件。

  2. 权限问题

    • 解释:MySQL进程没有足够的权限去写入文件到指定目录。

    • 解决方法:修改文件目录权限,确保MySQL进程可以读写该目录。

4 emoji 乱码怎么办?

使用utf8mb4

MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,一般情况下使用utf8也就够了。

5 如何存储ip地址?

  1. 使用字符串

  2. 使用无符号整型

使用字符串注意:

  • 如果你需要支持IPv6地址,那么最长可能是39个字符,因此可以考虑使用 VARCHAR(39)

使用无符号整型注意:

  • 支持范围查询

  • ipv4 使用 INET_ATON()INET_NTOA() 

  • ipv6 使用 INET6_ATON()INET6_NTOA()

这篇关于mysql面试题 Day1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1067609

相关文章

MySQL字符串转数值的方法全解析

《MySQL字符串转数值的方法全解析》在MySQL开发中,字符串与数值的转换是高频操作,本文从隐式转换原理、显式转换方法、典型场景案例、风险防控四个维度系统梳理,助您精准掌握这一核心技能,需要的朋友可... 目录一、隐式转换:自动但需警惕的&ld编程quo;双刃剑”二、显式转换:三大核心方法详解三、典型场景

MySQL中between and的基本用法、范围查询示例详解

《MySQL中betweenand的基本用法、范围查询示例详解》BETWEENAND操作符在MySQL中用于选择在两个值之间的数据,包括边界值,它支持数值和日期类型,示例展示了如何使用BETWEEN... 目录一、between and语法二、使用示例2.1、betwphpeen and数值查询2.2、be

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

SQL Server中行转列方法详细讲解

《SQLServer中行转列方法详细讲解》SQL行转列、列转行可以帮助我们更方便地处理数据,生成需要的报表和结果集,:本文主要介绍SQLServer中行转列方法的相关资料,需要的朋友可以参考下... 目录前言一、为什么需要行转列二、行转列的基本概念三、使用PIVOT运算符进行行转列1.创建示例数据表并插入数

MySQL MHA集群详解(数据库高可用)

《MySQLMHA集群详解(数据库高可用)》MHA(MasterHighAvailability)是开源MySQL高可用管理工具,用于自动故障检测与转移,支持异步或半同步复制的MySQL主从架构,本... 目录mysql 高可用方案:MHA 详解与实战1. MHA 简介2. MHA 的组件组成(1)MHA

SQL 注入攻击(SQL Injection)原理、利用方式与防御策略深度解析

《SQL注入攻击(SQLInjection)原理、利用方式与防御策略深度解析》本文将从SQL注入的基本原理、攻击方式、常见利用手法,到企业级防御方案进行全面讲解,以帮助开发者和安全人员更系统地理解... 目录一、前言二、SQL 注入攻击的基本概念三、SQL 注入常见类型分析1. 基于错误回显的注入(Erro

MySQL基本表查询操作汇总之单表查询+多表操作大全

《MySQL基本表查询操作汇总之单表查询+多表操作大全》本文全面介绍了MySQL单表查询与多表操作的关键技术,包括基本语法、高级查询、表别名使用、多表连接及子查询等,并提供了丰富的实例,感兴趣的朋友跟... 目录一、单表查询整合(一)通用模版展示(二)举例说明(三)注意事项(四)Mapper简单举例简单查询

MySQL中的DELETE删除数据及注意事项

《MySQL中的DELETE删除数据及注意事项》MySQL的DELETE语句是数据库操作中不可或缺的一部分,通过合理使用索引、批量删除、避免全表删除、使用TRUNCATE、使用ORDERBY和LIMI... 目录1. 基本语法单表删除2. 高级用法使用子查询删除删除多表3. 性能优化策略使用索引批量删除避免

MySQL 数据库进阶之SQL 数据操作与子查询操作大全

《MySQL数据库进阶之SQL数据操作与子查询操作大全》本文详细介绍了SQL中的子查询、数据添加(INSERT)、数据修改(UPDATE)和数据删除(DELETE、TRUNCATE、DROP)操作... 目录一、子查询:嵌套在查询中的查询1.1 子查询的基本语法1.2 子查询的实战示例二、数据添加:INSE

在SpringBoot+MyBatis项目中实现MySQL读写分离的实战指南

《在SpringBoot+MyBatis项目中实现MySQL读写分离的实战指南》在SpringBoot和MyBatis项目中实现MySQL读写分离,主要有两种思路:一种是在应用层通过代码和配置手动控制... 目录如何选择实现方案核心实现:应用层手动分离实施中的关键问题与解决方案总结在Spring Boot和