数据库基础知识及Mysql常见的面试题

数据库基础知识及Mysql常见的面试题

1.为什么要使用数据库

    数据保存在内存中,只能实现存取速度快,数据无法永久保存 数据保存在文件中,虽然可以实现数据永久保存,但存取速度慢,且查询数据不方便 数据保存在数据库:数据永久保存、使用sql语句方便查询、管理数据方便

2.什么是SQL

    机构化数据库查询语言,用于存取数据、查询数据、更新数据和管理数据库

3.说一说对Mysql的理解

    Mysql是一个关系型数据库管理系统,由瑞典Mysql AB公司开发,属于Oracle旗下的产品 目前Mysql是一种流行的数据库管理系统,常用于web应用方面 Mysql是免费开源的,并且可扩展性很强

4.数据库三大范式

    第一范式:每个列都不可再拆分 第二范式:在第一范式基础上,非主键列完全依赖主键,不能依赖主键的一部分 第三范式:在第二范式基础上,非主键列不依赖其他非主键 在数据库设计尽量遵守三大范式,如若在性能方面必须做出改变,可以不完全遵守三大范式

5.MySQL的binlog有几种录入格式?有什么区别?

    statement : 每一条修改的数据都会记录在binlog中,不记录每一行的变化,减少了日志的输出,节约IO,提高性能(无法记录函数之类的语句) row:不记录sql语句上下文相关信息,记录每一行的改动,基本是全部记录。由于很多操作会造成大量的行改动,这种模式的文件保存信息太多,日志量太大。 mixed:在statement和row的之间的折中模式,不常用

6.Mysql数据类型

    整数类型:tinyint、smallint、mediumint、int、bigint,分别代表1字节、2字节、3字节、4字节、8字节整数。可加unsigned属性表示数据无符号。 小数类型:float、double、decimal。decimal可以用于存储比bigint还大的整型,能存储精确的小数。float和double是有取值范围的,并支持使用标准的浮点进行近似计算。计算时float和double相比decimal效率更高一些,decimal你可以理解成是用字符串进行处理。 字符串类型: varchar、char、text、blob。 varchar用于存储可变长度字符串,比定长类型更节省空间,存储的内容超出设置的长度时,内容会被截断。 char是定长的,根据定义的字符串长度分配足够的空间,根据需要使用空格进行填充方便比较,适合存储很短的字符串,存储的内容超出设置的长度时,内容会被截断 char、varchar使用策略: 对于经常变更的数据来说,char比varchar更好,因为char不容易产生碎片。 对于非常短的列,char比varchar在存储空间上更有效率。 使用时要注意只分配需要的空间,更长的列排序时会消耗更多内存。 尽量避免使用text/blob类型,查询时会使用临时表,导致严重的性能开销 枚举类型:enum,把不重复的数据存储为一个预定义的集合,尽量避免使用数字作为ENUM枚举的常量,因为容易混乱 日期和时间类型:timestamp、datetime,尽量使用timestamp,空间效率高于datetime

7.引擎 常用的引擎

1.Innodb引擎:提供了数据可ACID事务支持,还提供了行级锁和外键约束,
  主要用于处理大数据量数据库系统,具有插入缓存、二次写、自适应哈希索引、预读特性
  2.MyIASM引擎(mysql默认引擎):不提供事务的支持,也不支持行级锁和外键
  3.MEMORY引擎:所有数据都在内存中,数据处理速度快,但安全性不高

8.索引

    什么是索引? 索引是记录数据库所有表指针引用的特殊文件,是数据库中一种排序的数据结构,使查询和更新数据库数据更方便快速,类似文章目录。索引占用物理内存。实现方式有B树以及B+树 索引的优缺点 1.优点:大大加快检索速度,可以用查询优化隐藏器实现数据库性能提升。(可以通过在SQL语句的最后增加一个OPTION子句,来实现查询优化隐藏,例如option(force order)) 2.缺点:创建索引需要消耗时间,当数据库增删改时候,索引也要维护,降低增删改效率,索引还占用物理内存。
经验分享 程序员 微信小程序 职场和发展