MySQL面试题1

news/2024/11/29 8:44:21/

1. MySQL如何实现索引机制?

MySQL中索引分三类: B+树索引 Hash索引 全文索引

2. 请简述MySQL中innoDB支持的四种事务隔离级别名称,以及逐级之间的区别?

SQL标准定义的四个隔离级别为:

read uncommited: 读到未提交数据

在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应 用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)

read commited: 读取提交内容

这是大多数数据库系统的默认隔离级(但不是 MySQL 默认的)。它满足了隔离的简单定义:一 个事务只能看见已经提交事务所做的改变。这种隔离级别也支持所谓的不可重复读(Nonrepeatable Read),因为同一事务的其他实例在该实例处理其间可能会有新的commit,所以同一select 可能返回不同结果。

repeatable read: 可重读

这是 MySQL 的默认事务隔离级 别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据 行。不过理论上,这会导致另一个棘手的问题:幻读(PhantomRead)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事 务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现 有新的“幻影” 行。InnoDB 和 Falcon 存储引擎通过多版本并发控制 (MVCC,Multiversion Concurrency Control 间隙锁)机制解决了 该问题。注:其实多版本只是解决不可重复读问题,而加上间隙锁(也就是它这里所谓的并发控制)才解决了幻读问题

serializable: 可串行化

这是最高的隔离级别, 它通过加强事务排序, 使之不可能相互冲突, 从而解决幻读的问题. 它是在每个读的数据上加上共享锁. 这个级别可能会导致大量的超时现象和锁竞争

3 .CHAR 和 VARCHAR区别

CHAR和VARCHAR类型在存储和检索方面有所不同

CHAR列长度固定位创建时声明的长度, 长度值范围是1到255

当CHAR值被存储时, 它们被用空格填充到特定长度, 检索CHAR值时需删除尾随

4. 列的字符串类型可以是什么

SET  BLOB  ENUM  CHAR  TEXT  VARCHAR

5. MySQL中使用什么存储引擎

存储引擎称为表类型, 数据使用各种技术存储在文件中

技术涉及:

Storage mechanism

Locking levels

Indexing

Capabilities and func tions

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

创建表是 TIMESTAMP列用 Zero 更新. 只要表中的其他字段发生更改, UPDATE CURRENT_TIMESTAMP 修饰符就将时间戳字段更新为当前时间

8. 主键和候选键有什么区别

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

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

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

Show status 一些值得监控的变量值:

Bytesreceived 和 Bytessent 和服务器之间来往的流量.

Com服务器正在执行命令.

Created 在查询执行期间创建的临时表和文件

Handler 存储引擎操作

Select 在不同类型的联接执行计划

Sort_* 几种排序信息

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

LIKE 和 REGEXP 运算符用 ^ 和 %表示任意多个字符

SELECT * FROM <tablename> WHERE * REGEXP "^b";

SELECT * FROM <tablename> WHERE * LIKE "%b";

11. BLOB 和 TEXT 有什么区别

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

TINYBLOB

BLOB

MEDIUMLOB

LONGBLOB

他们只能在所能容纳价值的最大长度上有所不同

TEXT 是一个不区分大小写得到 BLOB . 四种 TEXT 类型

TINYTEXT

TEXT

MEDIUMTEXT

LONGTEXT

他们对于四种 BLOB 类型, 并具有相同的最大长度和存储要求

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

12. 数据库的三范式

第一范式: 数据库表的每一个字段都是不可分割的

第二范式: 数据库表中的非主属性只依赖于主键

第三范式: 非主键字段不能依赖于其他非主键字段

13. MySQL 表中允许有多少个 TRIGGERS

在 MySQL 表中允许有六个触发器:

BEFORE INSERT

AFTER INSERT

BEFORE UPDATE

AFTER UPDATE

BEFORE DELETE

AFTER DELETE

14. 什么是通用 SQL函数

数学函数

Abs(num) 求绝对值

floor(num)向下取整

ceil(num)向上取整

字符串函数

insert(s1, index, length, s2) 替换函数

       s1表示被替换的字符串

       s2表示将要替换的字符串

       index表示被替换的位置(从1开始)

       Length表示被替换的长度

upper(str), ucase(str) 将字母改成大写

lower(str), lcase(str)将字母改成小写

left(str, length) 返回 str 字符串的前 length 个字节

right(str, length) 返回 str 字符串的后 length 个个字节

substring(str, index, length) 返回 str 字符串从 index 开始, 长度为length 的字符串(index从1开始)

reverse(str) 将 str字符串倒序输出

日期函数

curdate(), current_date 获取当前日期

curtime(), current_time() 获取当日期

now() 获取当前时间

datediff(d1, d2) d1 和 d2 之间的天数差

adddate(date, num) 返回date日期开始, 之后num天的日期

subdate(date, num) 返回date日期开始, 之前num天的日期

聚合函数

count(字段) 根据某个字段统计总记录数(当前数据库保存到多少条数据)

sum(字段) 计算某个字段的数值总和

avg(字段) 计算某个字段的数值平均值

max(字段), min(字段) 求某个字段的最大或最小值

15. MySQL中有哪几种锁

MylSAM 支持表锁, InnoDB 支持表锁和行锁, 默认为行锁

表级锁: 开销小, 加锁块, 不会出现死锁, 锁定粒度大, 发送锁冲突概率最高, 并发量最低

行级锁: 开销大, 加锁慢, 会出现死锁, 锁力度小, 发生锁冲突概率小, 并发度最高

16, MySQL 数据优化

优化数据类型:

避免使用 NULL, NULL 需要特殊处理, 大多数时候应该使用 NOT NULL, 或者一个特殊的值, 如0, -1作为默认值

小心字符集转换:

客户端或应用程序使用的字符集可能和表本身的字符集不一样, 这需要 MySQL 在运行过程中隐含的进行转换, 此外要确定字符集如 UTF-8 是否支持多字节字符, 因此他们需要更多的储存空间

优化子查询:

遇到子查询时, MySQL 查询优化引擎并不是总是最有效的, 这就是为什么经常将子查询转换为连接查询的原因了, 优化器已经能够正确处理连接查询了, 当然要注意的一点是, 确保连接表(第二个表)的连接列是有索引的, 在第一个表上 MySQL 通常会相对于第二个表的查询子集进行一次全表扫描, 这是嵌套循环算法的一部分

优化INION

在跨多个不同的数据库使用 UNION 是一个有趣的优化方法

UNION 从两个互不关联的表中返回数据, 这就意味着不会出现重复的行, 同时也必须对数据进行排序, 我们知道排序是非常消耗资源的, 特别是对大表的排序

UNION ALL 可以大大加快速度, 如果你已经知道你的数据不会包括重复行, 或者你不在乎是否会出现重复行, 在这两种情况下使用 INION ALL 更适合. 此外, 还可以在应用程序逻辑中采用某些方法避免出现重复的行, 这样 UNION ALL 和 UNION 返回的结果都是一样的, 但 UNION ALL 不会进行排序.

17. 存储引擎

存储引擎就是如何存储数据,如何为存储的数据建立索引和如何更新,查询数据等技术的实现方法

MylSAM: 这种引擎是 MySQL 最早提供的, 可以分为静态MylSAM, 动态MylSAM 和压缩MylSAM 三种:

静态MylSAM: 如果数据报中的各数据列的长度都是预先固定好的, 服务器将自动选择这种表类型. 因为数据报中每一条记录所占用的空间都是一样的, 所以这种表存取和更新的效率非常高. 当数据受损时, 恢复工作也比较容易做.

动态MylSAM: 如果数据表中出现 varchar, text 或 BLOB 字段是, 服务器将自动选择这种表类型. 相对于静态MylSAM, 这种表存储空间比较小, 但由于每条记录的长度不一, 所以多次修改数据后, 数据表中的数据就肯离散的存储在内存中, 进而导致执行效率下贱. 同是, 内存中也可能出现很多碎片. 因此这种类型的表要进场用 optimize table 命令或优化工具进行碎片整理.

压缩MylSAM: 以上说到的两种类型的表都可以用 myisamchk 工具压缩. 这种类型的表进一步减少了占用的存储, 但是这种表压缩之后不能再被修改. 另外, 因为是压缩数据, 所以这种表在读取的时候要先进行解压缩.

但是,不管是何种 MylSAM 表, 目前都不支持事务, 行级锁和外键约束的功能

MylSAM Merge 引擎, 这种类型是 MylSAM 类型的一种变种. 合并表是将几个相同的 MylSAM 表合并为一个虚表. 常应用于日志和数据仓库.

InnoDB: InnoDB 表类型可以看做是对 MylSAM 的进一步更新产品, 它提供了事务,行级锁机制和外键约束功能.

memory(heap): 这种类型的数据报只存在于内存中. 它使用散列索引, 所以数据的存取速度非常快. 因为是存在于内存中, 所以这种类型常应用于临时表中.

archive: 这种类型只支持 select 和 insert 语句, 而且不支持索引.

Desc[ribe] tablename: 查看数据表的结构.

show engines: 命令可以显示当前数据库支持的存储引擎情况.


http://www.ppmy.cn/news/662153.html

相关文章

小知识

机器人的故乡 美国是现代机器人的故乡。50年代&#xff0c;发明家英格伯格和德沃尔成立了“尤尼梅特”公司&#xff0c;并生产出了第一批工业机器人——“尤尼梅特”。1962年&#xff0c;机械与铸造公司研制出了“沃尔萨特兰”工业机器人。这两种机器人是世界上最早、…

人机合一

http://www.sina.com.cn 2006年09月02日22:39 大洋网-广州日报    未来机器人 机器人将成为人类的好朋友。本报综合报道 人类喜欢不断地跨越极限。我们已经可以远离地面&#xff0c;甚至可以远离地球&#xff0c;现在&#xff0c;经过了数千年的努力后&#xff0c;人类希望…

flask-SQLAlchemy学习笔记

[仅此一天] 倍斯特 移动电源 苹果iphone5 4s手机充电宝三星 HTC 小米2充电器 idusernameemail1adminadminexample.com2peterpeterexample.org3guestguestexample.com 表结构如上所示。 1&#xff1a;查询结果集方法&#xff1a;&#xff08;Querying Records&#xff09; 通过F…

机器人的分类、发展史、现状及国内外发展趋势

分类&#xff1a; 综合 机器人 几千年前人类就渴望制造 一种像人一样的机器&#xff0c;以便将人类从繁重的劳动中解脱出来。 如古希腊诗人Homeros的长篇叙事诗 《伊利亚特》中的冶炼之神瘸腿海倍斯特司 &#xff0c;就用黄金铸造出一个美丽聪颖的侍女&#xff1b;希腊神话《阿…

步进电机分类、工作原理、主要参数、控制时序及电路图简易分析(二)

目录 步进电机的工作原理 步进电机的基本结构 步进电机主要组成 步进电机的工作原理 当电流经过定子绕组时&#xff0c;定子绕组产生一矢量磁场。该磁场会带动转子旋转一角度&#xff08;步距角&#xff09;&#xff0c;使得转子的一对磁场方向与定子的磁场方向一致。 当定…

步进电机分类、工作原理、主要参数、控制时序及电路图简易分析(一)

目录 简介 一、步进电机的概念 步进电机的分类 简介 目的&#xff1a;项目开发使用到了步进电机&#xff0c;本文初步介绍了步进电机分类、重要参数、特性及其控制。通过本文可了解步进电机基本原理&#xff0c;主要控制参数&#xff0c;控制主要特性&#xff0c;及其控制原…

群晖安装、卸载、停用套件

安装套件 点击套件中心 点击所有套件&#xff0c;选中需要安装的套件&#xff0c;店家安装套件&#xff0c;或者试用&#xff0c;等待安装完成即可 卸载套件 点击已安装 点击图标或者文字&#xff0c;注意&#xff1a;不要点打开 点击向下的箭头 点击停用&#xff0c;或者卸载…

Vue之计算属性(computed)

文章目录 前言一、计算属性二、实例1.缓存优势计算属性内部的属性&#xff0c;在第一次访问时会读取它的值&#xff0c;然后存入缓存 2.简写简写其实就是当确定计算属性内的属性只读不更改&#xff0c;即只有get函数没有写set函数时简写的方式 3.补充 总结 前言 计算属性 一、…