百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Mysql-面试题 MySQL面试题2024

lipiwang 2024-11-12 13:14 7 浏览 0 评论

1. CHAR 和 VARCHAR 的区别?

  • CHAR 和 VARCHAR 类型在存储和检索方面有所不同。
  • CHAR 列长度固定为创建表时声明的长度,长度值范围是 1 到 255。
  • 当 CHAR 值被存储时,它们被用空格填充到特定长度,检索 CHAR 值时需删除尾随空格。

2. TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 数据类型上做什么?

创建表时 TIMESTAMP 利用 Zero 更新。只要表中的其他字段发生更改,UPDATECURRENT_TIMESTAMP 修饰符就将时间戳字段更新为当前时间。

3. 主键和候选键有什么区别?

表格的每一行都由主键唯一标识, 一个表只有一个主键。

主键也是候选键。按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。

4、数据库隔离级别有哪些,各自的含义是什么,MySQL默认的隔离级别是多少?

隔离级别有四种。

  • 未提交读:是最低的隔离级别,其含义是允许一个事务读取另外一个事务没有提交的数据。会出现脏读。
  • 读写提交:是指一个事务只能读取另一个事务已经提交的数据,不能读取未提交的数据。克服了脏读,但会出现不可重复读现象。
  • 可重复读:克服读写提交中出现的不可重复读现象。但会出现幻读现象。
  • 串行化:数据库中最高的隔离级别,她会要求所有的SQL都会按照顺序执行,这样就可以克服上述隔离级别出现的各种问题,所以它能完全保证数据的致性。

MySQL默认的隔离级别是可重复读。

5. MySQL有哪些存储引擎,各自优缺点。

MySQL支持 InnoDB、MyISAM、 MEMORY等存储引擎。

InnoDB引擎(MySQL5.5 以后默认使用) :

  • 灾难恢复性好
  • 支持事务
  • 使用行级锁和表级锁,能支持更多的并发量
  • 查询不加锁
  • 支持外键关联
  • 支持热备份
  • 实现缓冲管理

MyISAM引擎:

  • 不支持事务
  • 使用表级锁,并发性差
  • 主机宕机后,MyISAM 表易损坏,灾难恢复性不佳
  • 可以配合锁,实现操作系统下的复制备份、迁移
  • 只缓存索引
  • 数据紧凑存储,因此可获得更小的索引和更快的全表扫描性能

两者主要区别:

  • InnoDB支持事务,MyISAM不支持事务处理等高级处理。
  • InnoDB支持行级锁,而MyISAM仅支持表级锁。
  • MyISAM类型的表强调的是性能,其执行速度比InnoDB类型更快。
  • MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及涉及到安全性较高的应用。
  • InnoDB支持外键,MyISAM 不支持。
  • MyISAM支持全文搜索,而InnoDB 1.2.x版本后才支持。
  • 对于自增长的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中可以和其他字段一起建立联合索引。

6. MySQL 数据库服务器性能分析的方法命令有哪些?

Show status 一些值得监控的变量值: Bytesreceived 和 Bytessent 和服务器之间来往的流量。 Com 服务器正在执行的命令。 Created 在查询执行期限间创建的临时表和文件。 Handler 存储引擎操作。 Select 不同类型的联接执行计划。Sort_* 几种排序信息。 Show session status like ‘Select’; Show profiles SET profiling=1; Show profiles\G Show profile;

7. MySQL 中 InnoDB 引擎的行锁是通过加在什么上完成(或称实现)的?

InnoDB 行锁是通过给索引上的索引项加锁来实现的,这一点 MySQL 与Oracle 不同,后者是通过在数据块中对相应数据行加锁来实现的。InnoDB 这种行锁实现特点意味着:只有通过索引条件检索数据,InnoDB 才使用行级锁,否则,InnoDB 将使用表锁!

8. 若一张表中只有一个字段 VARCHAR(N)类型,utf8 编码,则 N 最大值为多少(精确到数量级即可)?

由于 utf8 的每个字符最多占用 3 个字节。而 MySQL 定义行的长度不能超过65535,因此 N 的最大值计算方法为:(65535-1-2)/3。减去 1 的原因是实际存储从第二个字节开始,减去 2 的原因是因为要在列表长度存储实际的字符长度,除以 3 是因为 utf8 限制:每个字符最多占用 3 个字节。

9. [SELECT *] 和[SELECT 全部字段]的 2 种写法有何优缺点?

  • 前者要解析数据字典,后者不需要
  • 结果输出顺序,前者与建表列顺序相同,后者按指定字段顺序。
  • 表字段改名,前者不需要修改,后者需要改
  • 后者可以建立索引进行优化,前者无法优化
  • 后者的可读性比前者要高

10. LIKE 和 REGEXP 操作有什么区别?

LIKE 和 REGEXP 运算符用于表示 ^ 和%。 SELECT * FROM WHERE * REGEXP "^b"; SELECT * FROM WHERE * LIKE "%b";

11. BLOB 和 TEXT 有什么区别?

BLOB 是一个二进制对象,可以容纳可变数量的数据。有四种类型的 BLOB

  • TINYBLOB
  • BLOB
  • MEDIUMBLOB
  • LONGBLOB 它们只能在所能容纳价值的最大长度上有所不同。

TEXT 是一个不区分大小写的 BLOB。四种 TEXT 类型

  • TINYTEXT
  • TEXT
  • MEDIUMTEXT
  • LONGTEXT 它们对应于四种 BLOB 类型,并具有相同的最大长度和存储要求。

BLOB 和 TEXT 类型之间的唯一区别在于对 BLOB 值进行排序和比较时区分大小写,对 TEXT 值不区分大小写。

12. 数据库的三范式?

第一范式:数据库表的每一个字段都是不可分割的。 第二范式:数据库表中的非主属性只依赖于主键。 第三范式:不存在非主属性对关键字的传递函数依赖关系。

13. MySQL 数据优化。

  • 优化数据类型
    • 避免使用 NULL,NULL 需要特殊处理, 大多数时候应该使用 NOT NULL,或者使用一个特殊的值,如 0,-1 作为默认值。
  • 小心字符集转换
    • 客户端或应用程序使用的字符集可能和表本身的字符集不一样,这需要MySQL 在运行过程中隐含地进行转换,此外,要确定字符集如 UTF-8 是否支持多字节字符,因此它们需要更多的存储空间。
  • _优化 count(mycol) 和 count(*)
  • 优化子查询
    • 遇到子查询时,MySQL 查询优化引擎并不是总是最有效的,这就是为什么经常将子查询转换为连接查询的原因了,优化器已经能够正确处理连接查询了,当然要注意的一点是,确保连接表 (第二个表) 的连接列是有索引的,在第一个表上 MySQL 通常会相对于第二个表的查询子集进行一次全表扫描,这是嵌套循环算法的一部分。
  • 优化 UNION
    • 在跨多个不同的数据库时使用 UNION 是一个有趣的优化方法,UNION 从两个互不关联的表中返回数据,这就意味着不会出现重复的行,同时也必须对数据进行排序,我们知道排序是非常耗费资源的,特别是对大表的排序。
    • UNION ALL 可以大大加快速度,如果你已经知道你的数据不会包括重复行,或者你不在乎是否会出现重复的行,在这两种情况下使用UNION ALL 更适合。此外,还可以在应用程序逻辑中采用某些方法避免出现重复的行,这样 UNION ALL 和 UNION 返回的结果都是一样的,但 UNION ALL 不会进行排序。

14. 一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,再把 Mysql 重启,再 insert 一条记录,这条记录的 ID 是 18 还是 15 ?

  • 如果表的类型是 MyISAM,那么是 18因为 MyISAM 表会把自增主键的最大 ID 记录到数据文件里,重启 MySQL 自增主键的最大ID 也不会丢失
  • 如果表的类型是 InnoDB,那么是 15 InnoDB 表只是把自增主键的最大 ID 记录到内存中,所以重启数据库或者是对表进行OPTIMIZE 操作,都会导致最大 ID 丢失

15. 如何区分 FLOAT 和 DOUBLE?

浮点数以 8 位精度存储在 FLOAT 中,并且有四个字节。 浮点数存储在 DOUBLE 中,精度为 18 位,有八个字节。

16. 区分 CHAR_LENGTH 和 LENGTH?

CHAR_LENGTH 是字符数,而 LENGTH 是字节数。Latin 字符的这两个数据是相同的,但是对于 Unicode 和其他编码,它们是不同的。

17. Mysql 如何优化 DISTINCT?

DISTINCT 在所有列上转换为 GROUP BY,并与 ORDER BY 子句结合使用。

18. 可以使用多少列创建索引?

任何标准表最多可以创建 16 个索引列。

19. HAVNG 子句 和 WHERE 的异同点?

  • 语法上:where 用表中列名,having 用 select 结果别名
  • 影响结果范围:where 从表读出数据的行数,having 返回客户端的行数
  • 索引:where 可以使用索引,having 不能使用索引,只能在临时结果集操作
  • where 后面不能使用聚集函数,having 是专门使用聚集函数的。

20. MySQL 当记录不存在时 insert,当记录存在时 update

INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;

相关推荐

前端入门——css 网格轨道详细介绍

上篇前端入门——cssGrid网格基础知识整体大概介绍了cssgrid的基本概念及使用方法,本文将介绍创建网格容器时会发生什么?以及在网格容器上使用行、列属性如何定位元素。在本文中,将介绍:...

Islands Architecture(孤岛架构)在携程新版首页的实践

一、项目背景2022,携程PC版首页终于迎来了首次改版,完成了用户体验与技术栈的全面升级。作为与用户连接的重要入口,旧版PC首页已经陪伴携程走过了22年,承担着重要使命的同时,也遇到了很多问题:维护/...

HTML中script标签中的那些属性

HTML中的<script>标签详解在HTML中,<script>标签用于包含或引用JavaScript代码,是前端开发中不可或缺的一部分。通过合理使用<scrip...

CSS 中各种居中你真的玩明白了么

页面布局中最常见的需求就是元素或者文字居中了,但是根据场景的不同,居中也有简单到复杂各种不同的实现方式,本篇就带大家一起了解下,各种场景下,该如何使用CSS实现居中前言页面布局中最常见的需求就是元...

CSS样式更改——列表、表格和轮廓

上篇文章主要介绍了CSS样式更改篇中的字体设置Font&边框Border设置,这篇文章分享列表、表格和轮廓,一起来看看吧。1.列表List1).列表的类型<ulstyle='list-...

一文吃透 CSS Flex 布局

原文链接:一文吃透CSSFlex布局教学游戏这里有两个小游戏,可用来练习flex布局。塔防游戏送小青蛙回家Flexbox概述Flexbox布局也叫Flex布局,弹性盒子布局。它决定了...

css实现多行文本的展开收起

背景在我们写需求时可能会遇到类似于这样的多行文本展开与收起的场景:那么,如何通过纯css实现这样的效果呢?实现的难点(1)位于多行文本右下角的展开收起按钮。(2)展开和收起两种状态的切换。(3)文本...

css 垂直居中的几种实现方式

前言设计是带有主观色彩的,同样网页设计中的css一样让人摸不头脑。网上列举的实现方式一大把,或许在这里你都看到过,但既然来到这里我希望这篇能让你看有所收获,毕竟这也是前端面试的基础。实现方式备注:...

WordPress固定链接设置

WordPress设置里的最后一项就是固定链接设置,固定链接设置是决定WordPress文章及静态页面URL的重要步骤,从站点的SEO角度来讲也是。固定链接设置决定网站URL,当页面数少的时候,可以一...

面试发愁!吃透 20 道 CSS 核心题,大厂 Offer 轻松拿

前端小伙伴们,是不是一想到面试里的CSS布局题就发愁?写代码时布局总是对不齐,面试官追问兼容性就卡壳,想跳槽却总被“多列等高”“响应式布局”这些问题难住——别担心!从今天起,咱们每天拆解一...

3种CSS清除浮动的方法

今天这篇文章给大家介绍3种CSS清除浮动的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。首先,这里就不讲为什么我们要清楚浮动,反正不清除浮动事多多。下面我就讲3种常用清除浮动的...

2025 年 CSS 终于要支持强大的自定义函数了?

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!1.什么是CSS自定义属性CSS自...

css3属性(transform)的一个css3动画小应用

闲言碎语不多讲,咱们说说css3的transform属性:先上效果:效果说明:当鼠标移到a标签的时候,从右上角滑出二维码。实现方法:HTML代码如下:需要说明的一点是,a链接的跳转需要用javasc...

CSS基础知识(七)CSS背景

一、CSS背景属性1.背景颜色(background-color)属性值:transparent(透明的)或color(颜色)2.背景图片(background-image)属性值:none(没有)...

CSS 水平居中方式二

<divid="parent"><!--定义子级元素--><divid="child">居中布局</div>...

取消回复欢迎 发表评论: