MySQL数据库常见面试题

1. 怎么优化数据库的查询?

  1. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
  2. 应尽量避免在 where 子句中使用!=或<>操作符。
  3. 应尽量避免在 where 子句中对字段进行 null 值判断。
  4. 应尽量避免在 where 子句中使用 or 来连接条件。
  5. 下面的查询也将导致全表扫描:“select id from t where name like ‘%abc%’” 若要提高效率,可以考虑全文检索。
  6. in 和 not in 也要慎用,否则会导致全表扫描,很多时候用 exists 代替 in 是一个好的选择。
  7. 应尽量避免在 where 子句中对字段进行表达式操作。
  8. 应尽量避免在where子句中对字段进行函数操作。

2. 在数据库中条件查询速度很慢的时候,如何优化?

  1. 建索引
  2. 减少表之间的关联
  3. 优化sql,尽量让sql利用索引定位数据,不要让sql做全表查询
  4. 简化查询字段,没用的字段不要,已经对返回结果的控制,尽量返回少量数据
  5. 利用分页查询减少返回的数据量

3. 数据库中事务是什么,有哪些特性?

  1. 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序单元(unit)。
  2. 事务通常由SQL语言或编程语言发起并控制
  3. 特性:
    1. 事务是恢复和并发控制的基本单位
    2. 事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性

4. sql语句关键词的执行顺序?

  1. FROM 子句, 组装来自不同数据源的数据
  2. WHERE 子句, 基于指定的条件对记录进行筛选
  3. GROUP BY 子句, 将数据划分为多个分组
  4. 使用聚合函数进行计算
  5. 使用 HAVING 子句筛选分组
  6. 计算所有的表达式
  7. 使用 ORDER BY 对结果集进行排序
  8. 即:from—>where—>group by—>having—>计算所有的表达式—>order by—>select输出

5. 数据库有哪几种约束类型?

数据库有五种约束类型,分别是:

  1. 主键约束 PRIMARY KEY
  2. 外键约束 FOREIGN KEY
  3. 唯一约束 UNIQUE
  4. 检查约束 CHECK
  5. 非空约束 NOT NULL

6. 简述数据库执行计划?

  1. SQL语句发送到数据库后需要翻译为执行计划,SQL语句到功能是利用执行计划执行实现的
  2. 数据库在执行完全一样的SQL语句时候会重用相同的执行计划
  3. 有 ?参数的SQL语言会重用相同的执行计划

7. 数据库建立索引常用的原则是什么?什么情况下不适合建立索引?

  1. 在大数据量的表上建立索引才有意义
  2. 在where子句或是连接条件上经常引用的列上建立索引
  3. 很少或从不引用的字段和逻辑型的字段,如男或女(是或否)等不要建立索引

8. 表与表之间有哪些关联关系?

  1. 一对一(实际上是特殊的一对多)
  2. 一对多
  3. 多对多,需要中间关系表
  • 7
    点赞
  • 114
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值