您的位置 首页 IC

关于MySQL面试题和题型介绍

关于MySQL面试题和题型介绍-长度:整数类型可以被指定长度,例如:INT(11)表示长度为11的INT类型。长度在大多数场景是没有意义的,它不会限制值的合法范围,只会影响显示字符的个数,而且需要和UNSIGNED ZEROFILL属性配合使用才有意义。

除了根底题部分,小编方案收集整理的MySQL面试题还包含如下常识点或题型:

MySQL高功能索引

SQL句子

MySQL查询优化

MySQL高扩展高可用

MySQL安全性

关于MySQL面试题和题型介绍

首要咱们先来看一道真题:

真题

请写出下面MySQL数据类型表达的意义(int(0)、char(16)、varchar(16)、datetime、text)

常识点剖析

此真题首要调查的是MySQL数据类型。MySQL数据类型归于MySQL数据库根底,由此延伸出的常识点还包含如下内容:

MySQL根底操作

MySQL存储引擎

MySQL机制

MySQL业务处理、存储进程、触发器

下面咱们就来将这些常识一扫而光

数据类型考点:

1、整数类型,包含TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,别离表明1字节、2字节、3字节、4字节、8字节整数。任何整数类型都能够加上UNSIGNED特点,表明数据是无符号的,即非负整数。

长度:整数类型能够被指定长度,例如:INT(11)表明长度为11的INT类型。长度在大多数场景是没有意义的,它不会约束值的合法规模,只会影响显现字符的个数,并且需求和UNSIGNED ZEROFILL特点合作运用才有意义。

比如,假定类型设定为INT(5),特点为UNSIGNED ZEROFILL,假如用户刺进的数据为12的话,那么数据库实践存储数据为00012。

2、实数类型,包含FLOAT、DOUBLE、DECIMAL。

DECIMAL能够用于存储比BIGINT还大的整型,能存储准确的小数。

而FLOAT和DOUBLE是有取值规模的,并支撑运用规范的浮点进行近似核算。

核算时FLOAT和DOUBLE比较DECIMAL功率更高一些,DECIMAL你能够了解成是用字符串进行处理。

3、字符串类型,包含VARCHAR、CHAR、TEXT、BLOB

VARCHAR用于存储可变长字符串,它比定长类型更节约空间。

VARCHAR运用额定1或2个字节存储字符串长度。列长度小于255字节时,运用1字节表明,不然运用2字节表明。

VARCHAR存储的内容超出设置的长度时,内容会被切断。

CHAR是定长的,依据界说的字符串长度分配满足的空间。

CHAR会依据需求运用空格进行填充便利比较。

CHAR合适存储很短的字符串,或许一切值都挨近同一个长度。

CHAR存储的内容超出设置的长度时,内容相同会被切断。

运用战略:

关于常常改动的数据来说,CHAR比VARCHAR更好,由于CHAR不简略发生碎片。

关于十分短的列,CHAR比VARCHAR在存储空间上更有功率。

运用时要留意只分配需求的空间,更长的列排序时会耗费更多内存。

尽量避免运用TEXT/BLOB类型,查询时会运用暂时表,导致严峻的功能开支。

4、枚举类型(ENUM),把不重复的数据存储为一个预界说的调集。

有时能够运用ENUM替代常用的字符串类型。

ENUM存储十分紧凑,会把列表值紧缩到一个或两个字节。

ENUM在内部存储时,其实存的是整数。

尽量避免运用数字作为ENUM枚举的常量,由于简略紊乱。

排序是依照内部存储的整数

5、日期和时间类型,尽量运用TImestamp,空间功率高于dateTIme,

用整数保存时间戳一般不便利处理。

假如需求存储奇妙,能够运用bigint存储。

看到这儿,这道真题是不是就比较简略答复了。

答:int(0)表明数据是INT类型,长度是0、char(16)表明固定长度字符串,长度为16、varchar(16)表明可变长度字符串,长度为16、dateTIme表明时间类型、text表明字符串类型,能存储大字符串,最多存储65535字节数据)

MySQL根底操作:

常见操作

MySQL的衔接和封闭:mysql -u -p -h -P

-u:指定用户名

-p:指定暗码

-h:主机

-P:端口

进入MySQL指令行后:G、c、q、s、h、d

G:打印成果笔直显现

c:撤销当时MySQL指令

q:退出MySQL衔接

s:显现服务器状况

h:协助信息

d:改动履行符

MySQL存储引擎:

1、InnoDB存储引擎,

默许业务型引擎,最重要最广泛的存储引擎,功能十分优异。

数据存储在同享表空间,能够经过装备分隔。也便是多个表和索引都存储在一个表空间中,能够经过装备文件改动此装备。

对主键查询的功能高于其他类型的存储引擎。

内部做了许多优化,从磁盘读取数据时会主动构建hash索引,刺进数据时主动构建刺进缓冲区。

经过一些机制和东西支撑真实的热备份。

支撑溃散后的安全康复。

支撑行级锁。

支撑外键。

2、MyISAM存储引擎,

5.1版别前,是默许存储引擎。

具有全文索引、紧缩、空间函数。

不支撑业务和行级锁、不支撑溃散后的安全康复。

表存储在两个文件,MYD和MYI。

规划简略,某些场景下功能很好,例如获取整个表有多少条数据,功能很高。

全文索引不是很常用,不如运用外部的ElasticSearch或Lucene。

3、其他表引擎,

Archive、Blackhole、CSV、Memory

运用战略

在大多数场景下主张运用InnoDB存储引擎。

MySQL锁机制:

表锁是日常开发中的常见问题,因而也是面试傍边最常见的调查点,当多个查询同一时间进行数据修改时,就会发生并发操控的问题。

同享锁和排他锁,便是读锁和写锁。

同享锁,不堵塞,多个用户能够一起读一个资源,互不搅扰。

排他锁,一个写锁会堵塞其他的读锁和写锁,这样能够只允许一个用户进行写入,避免其他用户读取正在写入的资源。

锁的粒度

表锁,体系开支最小,会确定整张表,MyIsam运用表锁。

行锁,最大程度的支撑并发处理,可是也带来了最大的锁开支,InnoDB运用行锁。

MySQL业务处理:

MySQL供给业务处理的表引擎,也便是InnoDB。

服务器层不论理业务,由基层的引擎完成,所以同一个业务中,运用多种引擎是不靠谱的。

需求留意,在非业务表上履行业务操作,MySQL不会宣布提示,也不会报错。

存储进程:

为今后的运用保存的一条或多条MySQL句子的调集,因而也能够在存储进程中参加业务逻辑和流程。

能够在存储进程中创立表,更新数据,删去数据等等。

运用战略

能够经过把SQL句子封装在简略运用的单元中,简化杂乱的操作

能够确保数据的一致性

能够简化对变化的办理

触发器:

供给给程序员和数据剖析员来确保数据完整性的一种办法,它是与表事情相关的特别的存储进程。

运用场景

能够经过数据库中的相关表完成级联更改。

实时监控某张表中的某个字段的更改而需求做出相应的处理。

例如能够生成某些业务的编号。

留意不要乱用,不然会形成数据库及应用程序的保护困难。

我们需求紧记以上根底常识点,重点是了解数据类型CHAR和VARCHAR的差异,表存储引擎InnoDB和MyISAM的差异。

问题1:请阐明InnoDB和MyISAM的差异

答:InnoDB支撑业务,MyISAM不支撑;

InnoDB数据存储在同享表空间,MyISAM数据存储在文件中;

InnoDB支撑行级锁,MyISAM只支撑表锁;

InnoDB支撑溃散后的康复,MyISAM不支撑;

InnoDB支撑外键,MyISAM不支撑;

InnoDB不支撑全文索引,MyISAM支撑全文索引;

问题2:innodb引擎的特性

答:刺进缓冲(insert buffer)

二次写(double write)

自适应哈希索引(ahi)

预读(read ahead)

问题3:请罗列3个以上表引擎

答:InnoDB、MyISAM、Memory

问题4:请阐明varchar和text的差异

答:varchar可指定字符数,text不能指定,内部存储varchar是存入的实践字符数+1个字节(n《=255)或2个字节(n》255),text是实践字符数+2个字节。

text类型不能有默许值。

varchar可直接创立索引,text创立索引要指定前多少个字符。varchar查询速度快于text,在都创立索引的情况下,text的索引几乎不起作用。

查询text需求创立暂时表。

问题5:varchar(50)中50的意义

答:最多寄存50个字符,varchar(50)和(200)存储hello所占空间相同,但后者在排序时会耗费更多内存,由于order by col选用fixed_length核算col长度(memory引擎也相同)。

问题6:int(20)中20的意义

答:是指显现字符的长度,不影响内部存储,仅仅当界说了ZEROFILL时,前面补多少个 0

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/102623.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部