黑马程序员技术交流社区

标题: 【上海校区】就业: mysql面试题 [打印本页]

作者: 执迷不悟    时间: 2020-3-17 09:53
标题: 【上海校区】就业: mysql面试题
本帖最后由 执迷不悟 于 2020-3-18 11:37 编辑

                                                                mysql面试题



1.事务的基本特征
       原子性(atomicity):一个事务必须视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性。
      一致性(consistency):数据库总数从一个一致性的状态转换到另一个一致性的状态。
      隔离性(isolation):一个事务所做的修改在最终提交以前,对其他事务是不可见的。
      持久性(durability):一旦事务提交,则其所做的修改就会永久保存到数据库中。此时即使系统崩溃,修改的数据也不会丢失。
2.事务的隔离级别,mysql默认的隔离级别是什么?
      读未提交(Read uncommitted),一个事务可以读取另一个未提交事务的数据,最低级别,任何情况都无法保证。
      读已提交(Read committed),一个事务要等另一个事务提交后才能读取数据,可避免脏读的发生。
      可重复读(Repeatable read),就是在开始读取数据(事务开启)时,不再允许修改操作,可避免脏读、不可重复读的发生。
      串行(Serializable),是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用。Mysql的默认隔离级别是Repeatable read。
3.说一说脏读、不可重复读、幻读
      脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据;
      不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果因此本事务先后两次读到的数据结果会不一致;
      幻读:幻读解决了不重复读,保证了同一个事务里,查询的结果都是事务开始时的状态(一致性);
4、MySQL主要的索引类型
      普通索引:是最基本的索引,它没有任何限制;
      唯一索引:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一;
      主键索引:是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值;
      组合索引:指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合;最左原则
      全文索引:主要用来查找文本中的关键字,而不是直接与索引中的值相比较,mysql中MyISAM支持全文索引而InnoDB不支持(5.6之后的mysql中,InnoDB引擎也支持全文索引);

5.数据库三大范式
      第一范式:数据库表中的字段都是单一属性的,不可再分(保持数据的原子性);
      第二范式:第二范式必须符合第一范式,非主属性必须完全依赖于主键。
      第三范式:在满足第二范式的基础上,在实体中不存在其他实体中的非主键属性,传递函数依赖于主键属性,确保数据表中的每一列数据都和主键直接相关,而不能间接相关(表中字段[非主键]不存在对主键的传递依赖)

6.sql语句分类:
    DDl,DML,DQL,DCL

7.索引的作用?和它的优点缺点是什么?
    提高查询效率,
    优点: 查询效率高, 降低数据IO成本, 降低数据排序CPU消耗
    缺点: 占用磁盘空间, 新增,删除, 修改----> 慢, 因为需要修改索引

8.说几个mysql中你常用的函数
    limit、order by、between、group by;

9. 使用like 'a%' 、like'%a'、like'%a%'查询时是否会使用索引
    'a%'会,其他两个不会

mysql 优化为什么要优化 ?
        在少量数据的情况下,一般不会涉及到性能问题,当我们数据量变多,达到几百万上千万时候,会明显感觉到一些复杂查询执行效率缓慢,一条sql可能需要执行好几秒,为了用户体验的良好以及系统运行的流畅,我们需要进行sql优化,使我们的程序执行更快
优化由谁参与
        在进行数据库优化时,应由数据库管理员、业务部门代表、应用程序架构师、应用程序设计人员、应用程序开发人员、硬件及系统管理员、存储管理员等,业务相关人员共同参与。
优化选择
    1) 优化成本: 硬件>系统配置>数据库表结构>SQL及索引
    2) 优化效果: 硬件<系统配置<数据库表结构<sql及索引
sql语句优化       可以写成: select name from t where id=?;










欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2