java面试题超详细整理《MySQL篇》一

本文详述了MySQL数据库的基础知识,包括其开源性质、默认端口和主要组成部分。重点探讨了InnoDB和MyISAM存储引擎的区别,强调InnoDB在事务处理和并发能力上的优势。此外,还对比了CHAR与VARCHAR、DATETIME与TIMESTAMP字段类型的差异,为数据库设计提供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL 介绍
MySQL 是一种关系型数据库,主要用于持久化存储我们的系统中的一些数据比如用户信息。

MySQL 是开源软件,使用时无需付费,并且他还是比较成熟的数据库,被大量使用在各种系统中。MySQL 的默认端口号是3306。

获取当前的Mysql 版本: SELECT VERSION();

MySQL由哪些部分组成, 分别用来做什么
Server
连接器: 管理连接,权限验证
分析器: 词法分析,语法分析
优化器: 执行计划生成,索引的选择
执行器: 操作存储引擎,返回执行结果
存储引擎: 存储数据,提供读写接口
MySQL中的执行引擎
常用的存储引擎有以下:

Innodb引擎:Innodb引擎提供了对数据库ACID事务的支持。并且还提供了行级锁和外键的约束。它的设计的目标就是处理大数据容量的数据库系统。
MyIASM引擎(原本Mysql的默认引擎):不提供事务的支持,也不支持行级锁和外键。
MEMORY引擎:所有的数据都在内存中,数据的处理速度快,但是安全性不高。
MyISAM与InnoDB区别:

MyISAM    Innodb
是否支持事务    不支持事务, 但是每次查询都是原子的    支持 ACID 的事务, 支持事务的四种隔离级别
锁支持    支持表级锁定    支持行级锁定、表级锁定,锁定力度小并发能力高
是否支持外键    不支持外键    支持外键
存储结构    每张表被存放在三个文件:索引文件MYI、数据文件MYD、frm表结构文件    所有的表都保存在同一个数据文件中(也可以是多个),InnoDB表的大小只受限于操作系统文件的大小,一般为2GB
存储空间    MyISAM可被压缩,存储空间较小    InnoDB的表需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引
文件格式    数据和索引是分别存储的,数据.MYD,索引.MYI    数据和索引是集中存储的,.ibd
可移植性、备份及恢复    跨平台的数据转移中会很方,在备份和恢复时可单独针对某个表进行操作    可以拷贝数据文件、备份 binlog,或者用 mysqldump,在数据量达到几十G的时候就相对痛苦了
记录存储顺序    按记录插入顺序保存    按主键大小有序插入
哈希索引    不支持    支持
全文索引    支持    不支持(但可以使用Sphinx插件)
大多数时候我们使用的都是 InnoDB 存储引擎,在某些读密集的情况下,使用 MyISAM 也是合适的。不过,前提是你的项目不介意 MyISAM 不支持事务、崩溃恢复等缺点。
MyISAM:以读写插入为主的应用程序,比如博客系统、新闻门户网站。
Innodb:更新(删除)操作频率也高,或者要保证数据的完整性;并发量高,支持事务和外键。比如OA自动化办公系统。

MySQL中字段类型CHAR 和 VARCHAR 的区别?
char    varchar
长度    长度固定(1-255)    长度可变
长度不足时    插入的长度小于定义长度时,则用空格填充,检索 CHAR 值时需删除尾随空格    小于定义长度时,按实际插入长度存储
性能    存取速度比varchar快得多    存取速度比char慢得多
使用场景    适合存储很短的,固定长度的字符串,如手机号,MD5值等    适合用在长度不固定场景,如收货地址,邮箱地址等
MySQL中字段类型DATETIME 和 TIMESTA的区别?
类型    占据字节    范围    时区问题
datetime    8 字节    1000-01-01 00:00:00到 9999-12-31 23:59:59    存储与时区无关,不会发生改变
timestamp    4 字节    1970-01-01 00:00:01    到 2038-01-19 11:14:07
如果一个表有一列定义为 TIMESTAMP ,每当行被更改时,时间戳字段将获取当前时间戳。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值