程序员面试备战篇:18个经典MySQL面试专题解析,干货分享

  

程序员面试备战篇:18个经典MySQL面试专题解析,干货分享

  

<强> 1。数据库三范式是什么?

  
      <李>第一范式(1 nf):字段具有原子性,不可再分。(所有关系型数据库系统都满足第一范式数据库表中的字段都是单一属性的,不可再分)   <李>第二范式(2 nf)是在第一范式(1 nf)的基础上建立起来的,即满足第二范式(2 nf)必须先满足第一范式(1 nf)。要求数据库表中的每个实例或行必须可以被惟一地区分。通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主关键字或主键。   <李>满足第三范式(3 nf)必须先满足第二范式(2 nf)。简而言之,第三范式(3 nf)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息.>,所以第三范式具有如下特征:祝辞的在1。每一列只有一个值在祝辞;2。每一行都能区分.>在3。每一个表都不包含其他表已经包含的非主关键字信息。   
  

<强> 2。有哪些数据库优化方面的经验?

  
      <李>用PreparedStatement,一般来说比声明性能高:一个sql发给服务器去执行,涉及步骤:语法检查,语义分析,编译,缓存。   <李>有外键约束会影响插入和删除性能,如果程序能够保证数据的完整性,那在设计数据库时就去掉外键。   <李>表中允许适当冗余,譬如,主题帖的回复数量和最后回复时间等4。UNION ALL要比联盟快很多,所以,如果可以确认合并的两个结果集中不包含重复数据且不需要排序时的话,那么就使用UNIONALL .>在联盟和联盟所有的关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同.> 1。对重复结果的处理:工会在进行表链接后会筛选掉重复的记录,UNION All不会去除重复记录.> 2。对排序的处理:联盟将会按照字段的顺序进行排序;Union ALL只是简单的将两个结果合并后就返回。   
  

<强> 3。请简述常用的索引有哪些种类?

  
      <李>普通索引:即针对数据库表创建索引   <李>唯一索引:与普通索引类似,不同的就是:MySQL数据库索引列的值必须唯一,但允许有空值   <李>主键索引:它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引   <李>组合索引:为了进一步榨取MySQL的效率,就要考虑建立组合索引。即将数据库表中的多个字段联合起来作为一个组合索引。   
  

<>强4。以及在mysql数据库中索引的工作机制是什么?

  
      <李>数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询,更新数据库表中数据。索引的实现通常使用B树及其变种B +树李   
  

<强> 5。MySQL的基础操作命令:

  
      <李> MySQL是否处于运行状态:Debian上运行命令服务mysqlstatus在RedHat上运行命令服务mysqld状态李   <李>开启或停止MySQL服务:运行命令服务mysqld开始开启服务,运行命令服务mysqld停止停止服务李   <李>壳登入MySQL:运行命令MySQL - u root - p   <李>列出所有数据库:运行命令显示数据库;李   <李>切换到某个数据库并在上面工作:运行命令使用数据库名称;进入名为数据库名称的数据库李   <李>列出某个数据库内所有表:显示表;李   <李>获取表内所有场对象的名称和类型:描述table_name;李   
  

<>强6。mysql的复制原理以及流程。

  

Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(奴隶)上,并重新执行一遍来实现的。*复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。

  

主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器在日志中读取的最后一次成功更新的位置。

  

从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。过程如下

  

1。主服务器把更新记录到二进制日志文件中。

  

2。从服务器把主服务器的二进制日志拷贝到自己的中继日志(重播日志)中。3。从服务器重做中继日志中的时间,把更新应用到自己的数据库上。

程序员面试备战篇:18个经典MySQL面试专题解析,干货分享