MySQL面试简答题

本文涵盖了MySQL面试中常见的问题,包括关系型数据库概念、SQL语言、MySQL数据类型、存储引擎特性、索引原理、事务与隔离级别、视图、锁机制、数据库优化以及主从复制等核心知识点。
摘要由CSDN通过智能技术生成

题目


1.什么是关系型数据库?
关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解。
关系型数据库这一系列的行和列被称为表,一组表组成了数据库。
用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。
2.关系型数据库有什么优势?
1.易于编程。关系型二维表的结构非常贴近现实事件,二维表格,容易理解。
2.支持复杂查询。可以用SQL语句方便的在一个以及多个表之间做非常复杂的数据查询。
3.支持事务。可靠的事务并且保持事务的完整性,以便于对于安全性能很高的数据访问要求得以实现。
3.简述什么是SQL?
结构化查询语言(Structured Query Language),简称SQL。
是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
4.什么是MySql?
MySql是一种开放源代码的关系型数据库管理系统。
MySQL是最流行的关系型数据库管理系统,常见的关系型数据库还有:ORACLE、SQL SERVER、ACCESS等等。
MySQL在过去是由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,广泛的应用在internet上的中小型网站上。
5.简述Mysql有哪些数据类型?
Mysql的数据类型非常丰富,常见的类型:
整数类型:Bit、 bool、Tiny int、SMALL int、MEDIUM INT、int、bigint
浮点数类型:FLOAT、DOUBLE、DECIMAL
字符串类型:CHAR、VARCHAR、TINY INT、TEXT、MEDIUN TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB
日期时间类型:DATE、DATEIME、TIMESPTAMP、TIME、YEAR
其他数据类型:BINARY、VARBINARY、ENUM、SET...
6.Char和VarChar的区别?
char 是一种固定长度的类型,varchar 则是一种可变长度的类型,它们的区别是: 
 char 如果不指定(M)则表示长度默认是 1 个字符。varchar 必须指定(M)。 
 char(M)类型的数据列里,每个值都占用 M 个字符,如果某个长度小于 M,MySQL 就会在它的右边用空格字符补足
 (在检索操作中那些填补出来的空格字符将被去掉;如果存入时右边本身就带空格,检索时也会被去掉); 
  在varchar(M)类型的数据列里,每个值只占用刚好够用的字符再加上一个到两个用来记录其长度的字节(即总长度为 L 字符+1/2 字字节)
 由于某种原因 char 固定长度,所以在处理速度上要比 varchar 快速很多,但相对费存储空间。
  所以对存储不大,但在速度上有要求的可以使用 char 类型,反之可以用 varchar 类型来实例。
7.Int和bigint能储存的数据大小一样吗?
不一样。
原因:int能存储四字节有符号整数,Bigint能存储8字节有符号整数。
所以存储的数据大小不一样,其中的数字10代表的知识数据的显示宽度,[^13]显示宽度指明Mysql最大可能显示的数字个数,数值的位数小于
执行的宽度时左边会用空格填充,空格不容易被看出。
如果插入了大于显示宽度的值,只要该值不超过该类型的取值范围,数值依然可以插入且能够显示出来.
建表的时候指定zerofill选项,则不足显示的部分用0填充,如果是1会显示成00000000001.
如果没指定显示宽度,bigint默认的宽度是20,int默认的宽度是11.
8.InnoDB引擎的四大特性是什么?
1.插入缓冲(insert buffer):用于非聚索引的插入和更新操作。
	先判断插入的非聚集索引是否在缓冲池中,如果在则直接插入,否则插入到insert buffer对象中。
	再以一定的频率进行insert buffer和辅助索引叶子节点的merge操作,将多次插入合并到一个操作中,提高对非聚集索引的插入性能。
2.二次写(double wirte)
	由两部分组成,一部分是内存中double wirte buffer,大小为2MB,另一部分是物理磁盘上共享表空间连续的128个页,大小也为2MB。
	在对缓冲池的脏页进行刷新时,并不直接写磁盘,而是通过memcpy函数将脏页先复制到内存中的该区域,之后通过double wirte buffer
	再分两次,每次1MB顺序地写入共享表空间的物理磁盘上,然后调用fsync函数,同步到磁盘,避免操作系统缓冲写带来的问题。
3.自适应哈希索引(Adaptive hash index)
	INNODB会根据访问的频率和模式,为热点页建立哈希索引,来提高查询效率。
	索引通过缓冲池的B+树页构造而来,因此建立速度很快。
	INNODB存储引擎会监控对表上各个索引页的查询,如果观察到建立哈希索引可以带来速度上的提升,则建立哈希索引,所以叫做自适应哈希
	索引。
4.缓冲池 
	为了提高数据库的性能,引入缓冲池的概念.
	通过参数 innodb_buffer_pool_size可以设置缓冲池的大小,参数innodb_buffer_pool_instances可以设置缓冲池的实例个数。
	缓冲池主要用于存储以下内容:缓冲池中缓存的数据页类型有:
	索引页、数据页、undo页、插入缓冲、自适应哈希索引、INNODB存储的锁信息(lock info)和数据字典信息。
9.MyISAM与InnoDB存储引擎的5大区别
1.INnoDB支持事务,而MYISAM不支持事务
2.INnoDB支持行级锁,而MyISAM支持表级锁
3.INnoDB支持MVCC,而MYISAM不支持
4.INNODB支持外键,而MYISAM不支持
5.INNODB不支持全文索引,而MYISAM支持
10.说一下数据库三范式设计是什么?
1.一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解(只要是关系型数据库都满足1NF)
2.二范式:2NF是对记录的唯一性约束,要求记录中有唯一标识,即实体的唯一性。
3.三范式:3NF是对字段的冗余性约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。
没有冗余的数据库设计可以做到,但是,没有冗余的数据未必是最好的数据库,有时为了提高运行效率,就必须降低方式标准,适当保留冗余数据。
具体做法:在概念模型设计时遵守三范式,降低范式标准的工作放到物理数据模型设计时考虑,降低范式就是增加字段,允许冗余。
11.SQL 语句有哪些分类?
1.DDL(Data Definition Language):数据定义语言(create alter drop)
2.DML(Data Manipulation Language):数据操作语句(insert update delete select)
3.DTL:数据事务语句(commit collback savapoint)
4.DCL(Data Control Language):数据控制语句(grant revoke)
12.使用 MySQL 视图有何优点?
1.操作简单方便。视图用户完全不需要关心视图对应的表结构、关联条件、筛选条件,对用户来说已经是过滤好的复合条件的结果集。
2.数据更加安全。视图用户只能访问视图中的结果集,通过视图可以把对表的访问权限限制在某些行和列上面。
3.数据隔离。屏蔽了源表结构变化对用户带来的影响,源表结构变化视图结构不变。
13.索引是个什么样的数据结构呢?
索引的数据结构和具体存储引擎的实现有关.
在MySQL中使用较多的索引有Hash索引,B+树索引等,而我们经常使用的InnoDB存储引擎的默认索引实现为B+树索引.
14.联合索引是什么?为什么需要注意联合索引中的顺序?
Mysql可使用多个字段同时建立一个索引,叫做联合索引,在联合索引中,如果想要命中索引,需要按照建立索引时的字段顺序使用,否则无法命中
	具体原因:
	Mysql使用索引时需要索引有序,假设现在建立了name,age,school,的联合索引,那么索引的排序为:
先按照name排序,如果name相同在按照age排序,如果age相同在按照school排序.
	当进行查询时,此时索引仅仅按照name严格有序,因为必须首先使用name字段进行等值查询,之后对于匹配到的列而言,其按照age字段严格
有序,此时可以使用age字段用作索引查找,一次类推,因此在建立联合索引的时候应该注意索引列的顺序,一般情况下,将查询需求频繁或者字段
选择性高的列放在前面,此处可以根据特例的查询或者表结构进行单独的调整.
15.ACID是什么?可以详细说一下吗?
A=Atomicity
原子性,就是上面说的,要么全部成功,要么全部失败.不可能只执行一部分操作.
C=Consistency
系统(数据库)总是从一个一致性的状态转移到另一个一致性的状态,不会存在中间状态.
I=Isolation
隔离性: 通常来说:一个事务在完全提交之前,对其他事务是不可见的.注意前面的通常来说加了红色,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值