APP下载

MySQL Redis MongoDB 阿里面试专题之数据库详解析

消息来源:baojiabao.com 作者: 发布时间:2024-05-16

报价宝综合消息MySQL Redis MongoDB 阿里面试专题之数据库详解析

请简洁描述 MySQL 中 InnoDB 支援的四种事务隔离级别名称,以及逐级之间的区别?

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

read uncommited : 读到未提交资料read committed: 脏读,不可重复读repeatable read: 可重读serializable : 序列事物在 MySQL 中 ENUM 的用法是什么?

ENUM 是一个字串物件,用于指定一组预定义的值,并可在建立表时使用。

SQL 语法如下:

Create table size(name ENUM('Smail,'Medium','Large');

CHAR 和 VARCHAR 的区别?

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

CHAR 列长度固定为建立表时宣告的长度,长度值范围是 1 到 255。

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

列的字串型别可以是什么?

字串型别是:

SETBLOBENUMCHARTEXTVARCHARMySQL 中使用什么储存引擎?

储存引擎称为表型别,资料使用各种技术储存在档案中。

技术涉及:

Storage mechanismLocking levelsIndexingCapabilities and functions.TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 资料型别上做什么?

建立表时 TIMESTAMP 列用 Zero 更新。只要表中的其他字段发生更改, UPDATE

CURRENT_TIMESTAMP 修饰符就将时间戳字段更新为当前时间。

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

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

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

用。

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

Show status 一些值得监控的变数值: Bytesreceived 和 Bytessent 和服务器之间

来往的流量。 Com 服务器正在执行的命令。 Created 在查询执行期限间建立的临时

表和档案。 Handler 储存引擎操作。 Select 不同型别的联接执行计划。 Sort_* 几

种排序资讯。 Show session status like ‘Select’; Show profiles SET

profiling=1; Show profilesG Show profile;

LIKE 和 REGEXP 操作有什么区别?

LIKE 和 REGEXP 运算子用于表示 ^ 和%。

SELECT * FROM WHERE * REGEXP "^b";

SELECT * FROM WHERE * LIKE "%b";

BLOB 和 TEXT 有什么区别?

BLOB

BLOB 是一个二进位制物件,可以容纳可变数量的资料。有四种类型的 BLOB

TINYBLOBBLOBMEDIUMBLOB 和LONGBLOB它们只能在所能容纳价值的最大长度上有所不同。

TEXT

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

TINYTEXTTEXTMEDIUMTEXT 和LONGTEXT它们对应于四种 BLOB 型别,并具有相同的最大长度和储存要求。

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

写,对 TEXT 值不区分大小写。

数据库的三正规化?

第一正规化:数据库表的每一个字段都是不可分割的。

第二正规化:数据库表中的非主属性只依赖于主键。

第三正规化:不存在非主属性对关键字的传递函式依赖关系。

MySQL 表中允许有多少个 TRIGGERS?

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

BEFORE INSERTAFTER INSERTBEFORE UPDATEAFTER UPDATEBEFORE DELETE andAFTER DELETE

什么是通用 SQL 函式?

数学函式

Abs( num)求绝对值floor( num)向下取整ceil( num)向上取整字串函式

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

S1 表示被替换的字串s2 表示将要替换的字串Index 表示被替换的位置, 从 1 开始Lebgth 表示被替换的长度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(字段)求某个字段最大或最小值MySQL 中有哪几种锁?

MyISAM 支援表锁, InnoDB 支援表锁和行锁,预设为行锁。

表级锁:开销小,加锁快,不会出现死锁。锁定粒度大,发生锁冲突的概率最高,并

发量最低。

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

高。

MySQL 资料优化

优化资料型别

避免使用 NULL, NULL 需要特殊处理, 大多数时候应该使用 NOTNULL,或者使用一个特殊的值,如 0, -1 作为预设值。仅可能使用更小的字段, MySQL 从磁盘读取资料后是储存到内存中的,然后使用 cpu 周期和磁盘 I/O 读取它,这意味着越小的资料型别占用的空间越小.小心字符集转换

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

优化 count(mycol) 和 count()*

优化子查询

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

优化 UNION

在跨多个不同的数据库时使用 UNION 是一个有趣的优化方法,UNION 从两个互不关联的表中返回资料,这就意味着不会出现重复的行,同时也必须对资料进行排序,我们知道排序是非常耗费资源的,特别是对大表的排序。

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

限于头条篇幅的原因,关于这篇文章的数据库面试专题不能完全的放出来!

余下的技术点有:

MySQL 的关键字

Redis

MongoDB

限于头条篇幅的原因,这一次的面试专题不能完完全全的贴出来,小编专门为大家准备了这一份(面试宝典)送给各位有需要的程序员,各位可以转发这篇文章后私信【面试资料】来免费获取哦!

2019-10-05 10:51:00

相关文章