zoukankan      html  css  js  c++  java
  • MYSQL面试

    Q1:主键,外键,超键,候选键;

    主键    对表中数据进行唯一标识的数据列的组合;不能缺失;不能空值;
    外键    该列为另一表的主键;
    超键    关系中能唯一标识数据的属性;
    候选键    不含多余属性的超键;
    Q2:数据库事务的四个特征及含义;

    原子性    要么全部完成,要么不完成,若发生错误会进行回滚操作;
    一致性    开始到结束后,数据库完整性约束没收到破坏;(实体完整性,参照完整性,用户定义的完整性)
    隔离性    事务与事务之间相隔离,串行化执行;
    持久性    事务完成对数据的影响是永久的;
    Q3:视图的作用,可以更改吗;

    视图是虚拟的表;只包含动态检索数据的查询,不包含数据;简化操作,隐藏细节,保护数据;对视图的更新会作用于基表,一般不更新;
    Q4:drop,delete和truncate ;

    drop    表级的删除;不能回滚;
    truncate    清空表;不记录单行删除日志;无法恢复;只能对于TABLE操作;不能在带FOREIGN KEY约束的表(被引用的表)中使用;计数从头开始;
    delete    配合where删除数据;会记录日志用于回归;会触发触发器;不减少索引和表的空间;
    Q5:索引的工作原理和其种类;

    索引的实现通常采用B树或B+树,加快查询速度也消耗更多空间;

    唯一索引    不允许任何两行具相同值
    主键索引    唯一索引的一种
    聚集索引    行的物理顺序和键值的索引顺序相同
    普通索引    无限制
    全文索引    针对较大的数据生成全文索引很耗时间空间
    组合索引    最左前缀原则:若对多列建立组合索引,若第二列未使用索引,则第三列也不会使用

    InnoDB    主索引:InnoDB的数据文件本身;辅助索引:相应记录主键的值
    MyISAM    索引与数据分离;辅助索引:与主索引无区别;
    Q6:连接的种类

    内部联接(等值联接)    INNER JOIN
    外部联接(包含在相关表中没有关联行的行)    LEFT OUTER JOIN
         RIGHT OUTER JOIN
    Q7:数据库范式

    1NF    每一列都是不可分割的基本数据项,同一列无二值;无重复的域;
    2NF    实例依赖于主键部分;
    3NF    属性不依赖于其他非主属性;
    Q8:存储过程与触发器的区别

    存储过程和触发器都是SQL语句集;触发器不可用CALL调用,而是在用户执行某些语句后自动调用;

    Q9:分表与分区

    分表    真正的分表,每张表对应三个文件;提高MYSQL的并发能力;
    分区    表中的数据分成多个区块;突破磁盘的读写能力;
    Q10:数据库隔离级别

    脏读    一个事务读取了另一个事务未提交的数据
    不可重复读    在一次事务范围内,读取同一数据产生了不同的值
    虚读    读取整体的数据后,因其他事务对数据的更新,再次查询时结果不同
    串行化    3种均可避免
    可重复读(默认)    避免1,2
    读已提交    1
    读未提交    无
    Q11:MYSQL的两种存储引擎

    MYISAM    不支持事务,不支持外键,表锁;插入数据时锁定整个表,查行数时无需整表扫描
    INNODB    支持事务,外键,行锁,查表总行数时,全表扫描;
    Q12:MYSQL索引算法

    HASH    适合等值查找,不适合范围,不能排序
    BTREE    适合范围查找,无hash冲突
    Q13:聚集索引和非聚集索引

    聚集索引    数据按索引顺序存储,节点存储的是真实数据
    非聚集索引    节点存储的是指向真正数据的指针
    Q14:索引的优缺点

    优点    提高查询效率
    缺点    降低了更新效率
    Q15:两种存储引擎索引的区别

    Innodb    主索引的数据文件本身就是索引文件;辅助索引记录主键的值;
    MyISAM    主索引数据文件和索引文件分离;与主索引无区别;
    Q16:数据库的主从复制

    一个服务器作为主服务器,一个或多个服务器作为从服务器,主服务器将更新写到二进制日志,当一个从服务器连接到主服务器时,通知主服务器读取日志,接收从那时起发生的所有更新。解决:数据分布,负载平衡,备份,高可用性和容错性

    基于语句    在主服务器上执行的语句,在从服务器上也执行
    基于行    将改变的内容复制过去
    混合类型    语句复制失败时采用行的形式
    Q17:数据库连接池

    为数据库连接建立一个缓冲池,防止过于大量的连接的建立与管理;

    Q18:存储过程

    存储过程是一些预编译的SQL语句,执行效率较高

    Q19:乐观锁和悲观锁

    乐观锁    假定不会发生并发冲突,只在提交时检查,若有其他数据更新了数据,则回滚;使用数据版本标示数据(时间戳,版本号)
    悲观锁    假定会发生并发冲突,屏蔽一切破坏数据库一致性的操作,主要用于数据争用激烈的环境,以及锁成本低于回滚成本时;排他锁;

    ---------------------
    作者:史前大洪水
    来源:CSDN
    原文:https://blog.csdn.net/u011010851/article/details/80074550
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    python求pi的方法
    Python:字符串格式化
    Python time模块学习
    开源的PaaS平台
    车牌识别技术实现方式及应用场景
    ASP.NET车辆管理系统
    Spark+Hadoop+IDE环境搭建
    大数据平台技术方案及案例
    主流大数据平台及解决方案对比
    大数据平台架构——通用版
  • 原文地址:https://www.cnblogs.com/pungwe/p/10564291.html
Copyright © 2011-2022 走看看