欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > 数据库面试题一

数据库面试题一

2025/3/26 13:50:22 来源:https://blog.csdn.net/2301_76231794/article/details/146353659  浏览:    关键词:数据库面试题一

1、Mysql事务的四大特性(ACID)是什么

(1)、原子性(Atomicity):一个事务必须被事务不可分割的最小工作单元,整个操作要么全部成功,要么全部失败,一般就是通过commit和rollback来控制。

例子:假设A给B转账,账户 A 减少一定金额并增加到账户 B。如果在转账过程中出现任何错误(如网络中断),整个事务将被回滚,确保账户 A 和账户 B 的余额保持不变。

(2)、一致性(Consistency): 数据库总能从一个一致性的状态转换到另一个一致性的状态。

例子:假设A给B转账,转账前A和B的钱一共为10000,转账后A和B的钱还是为10000。

(3)、隔离性(Isolation): 一个事务相对于另一个事务是隔离的,一个事务所做的修改是在最终提交以前,对其他事务是不可见的。

(4)、持久性(Durability): 一旦事务提交,则其所做的修改就会永久保存到数据库中。此时即使系统崩溃,修改的数据也不会丢失。

2、分别解释下脏读、不可重复读、幻读

脏读: 事务中的修改即使没有提交,其他事务也能看见,事务可以读到未提交的数据称为脏读。

不可重复读 :在一个事务中多次读取同一数据可能会得到不同的结果,因为其他事务可能在此期间修改并提交了这些数据。(前后多次读取,不能读到相同的数据内容)

幻读 :在一个事务中执行相同的查询两次,可能会看到不同的行集,因为其他事务插入或删除了数据。

不可重复读和幻读的区别是:前者是一行数据或几行数据发生变化,后者是查询结果集的行数发生变化。

3、常见的隔离级别由低到高有哪几种

读未提交:一个事务可以读取另一个事务尚未提交的数据,事务读到未提交的数据称为脏读。

读已提交:一个事务只能读取已经提交的数据。但可能会出现不可重复读的情况,即同一个事务内两次读取相同的数据,结果却不同,因为在这两次读取之间另一个事务修改并提交了数据。

可重复读(mysql默认的事务隔离级别):一个事务内的多次读取操作会看到同样的数据行,即使其他事务在此期间对这些数据进行了修改和提交。这意味着可以防止脏读和不可重复读,但可能存在幻读,即当两个查询的结果集由于其他事务插入新的行而有所不同。

序列化:这是最高的隔离级别,在该级别下,事务完全隔离,如同它们以某种顺序一个接一个地执行一样。它可以防止所有并发引起的问题,包括脏读、不可重复读和幻读。

4、mysql的存储引擎 innodb和myisam有什么区别

MySQL 5.5以上的版本默认是InnoDB,5.5之前默认存储引擎是MyISAM。

对于事务:innodb支持;myisam不支持。

对于锁粒度:innodb是行锁定机制,适合高并发;myisam是表锁定机制,不适合高并发。

对于是否支持外键:innodb支持外键;myisam不支持外键。

适合场景:innodb读写均衡,适合写大于读场景,需要事务的场景;myisam读多写少场景,不需要事务。

5、select、where、from、group by、having、order by的执行顺序

  1. from :从哪个表查询
  2. where: 初步过滤条件
  3. group by:过滤后进行分组(重点)
  4. having: 对分组后的数据进行二次过滤(重点)
  5. select: 查看哪些结果字段
  6. order by: 按照怎样的顺序进行排序返回(重点)

6、MySQL中的varchar和char有什么区别

varchar和 char是两种不同的字符串数据类型,varchar(len) 和char(len)中, len参数存储的是字符长度

char类型:长度固定,存储字符,插入的长度小于定义长度时,则用空格填充,存取速度比varchar快得多,适合存储很短的,固定长度的字符串,如手机号,MD5值等。

varchar类型:长度可变,存储字符,小于定义长度时,按实际插入长度存储,存取速度比char慢得多,适合用在长度不固定场景,如收货地址,邮箱地址等。

7、常用的数据库时间类型字段有哪些

DATE类型:格式为 ’YYYY-MM-DD',适用场景:只需要记录日期而不需要时间时使用,例如生日、注册日期等。

TIME类型:格式为 ’HH:MM:SS',适用场景:需要单独记录时间的情况,比如会议开始时间、任务持续时间等。

DATETIME类型:格式为’YYYY-MM-DD HH:MM:SS',适用场景:需要精确到秒级别的日期和时间戳时使用,例如订单创建时间、文章发布时间等。

TIMESTAMP类型:格式为’YYYY-MM-DD HH:MM:SS',适用场景:适合需要跨时区操作的数据,如用户活动记录、登录时间等。

8、MySQL中的datetime和timestamp有什么区别

datetime类型:以 ’YYYY-MM-DD HH:MM:SS' 格式表示,使用8个字节来存储年、月、日、时、分、秒的信息,它的范围是1000-01-01 00:00:00到 9999-12-31 23:59:59,它直接存储用户输入的值,不受时区影响。

timestamp类型:以 'YYYY-MM-DD HH:MM:SS' 格式表示,但是只用4个字节存储,它的范围是1970-01-01 00:00:01 UTC到2038-01-19 03:14:07 UTC之间的时间戳。它将值转换为协调世界时(UTC)进行存储,并在检索时根据本地时区转换回原始时间。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词