数据库面试基础整理

  1. 什么是存储过程、优缺点
    存储过程是一个预编译的sql语句,只需要创建一次,可以调用多次。
    如果某次操作需要执行多次sql,那么选择使用存储过程速度会更快。
  • 优点:效率高、安全性高、减少网络传输、可维护、可扩展
  • 缺点:移植性差、开发调试复杂
  1. 索引的作用、优缺点
    索引是特殊的查询表,类似查询目录。
  • 优点:加快数据检索速度
  • 缺点:数据录入速度减慢,增加数据库大小
  1. 什么样的字段适合建索引
    唯一、不为空、常被查询的字段
  2. 什么是事物
    事务是一系列严密的操作,所有操作必须成功完成,任何一个语句操作失败都会使整个操作失败,就会回滚到操作前状态。
  3. 事物的特性
  • 原子性,要么执行,要么不执行
  • 隔离性,所有操作全部执行完以前,其它会话不能看到过程
  • 一致性,事务前后,数据总额一致
  • 持久性,一旦事务提交,对数据的改变就是永久的
  1. 什么是视图,优缺点
    视图是一种虚拟表,可以增、改、查,对视图的修改会影响基本表。
  • 优点:可以有选择性的选取数据库中的一部分、简化数据操作、数据有一定的安全性
  • 缺点:性能差、修改限制
  1. 简述三大范式
    1NF:原子性,不可再分
    2NF:属性完全依赖于主键
    3NF:非主属性不传递依赖其他非主属性
  2. 主键和外键的区别
    逐渐确定一条记录的唯一标识,外键用于与另一张表的关联,保持数据一致性
  3. MySQL常见的函数
  • 聚集函数:
    avg()平均值
    sum()和
    min()最小值
    max()最大值
    count()行数
  • 字符串处理函数
    left()从左开始截取
    right()从右开始截取
    substring()截取字符串
    substring_index()按关键字截取字符串
  • 数值处理函数
    abs()绝对值
    ceil()向上取整
    floor()向下取整
    mod()取模
    rand()随机数
    round()四舍五入
  • 时间处理函数
    now()当前日期时间
    month(date)日期中选择月份
    year(date)日期中选出年份
    hour(time)日期中选出小时
  1. 高并发访问数据库优化方法
  • 服务器配置优化
  • 使用负载均衡技术
  • 数据库结构设计
  • 中间件的优化
  • 数据缓存技术的使用
  1. 查询语句速度慢,如何优化
  • 建索引
  • 减少表之间的关联
  • 优化sql,少做全表查询
  • 简化查询字段
  • 返回结果控制,尽量返回少量数据
  • 尽量使用PreparedStatement代替Statement
    (PreparedStatement代码的可读性和可维护性高,提高性能,提高了安全性)
  1. Oracle和Mysql的区别
  • 库函数不同
  • Oracle用表空间来管理,Mysql不是
  • 显示当前所有的表、用户、改变连接用户、显示当前连接用户、执行外部脚本的语句的不同
  • 分页查询时候时候,mysql用limit,oracle用rownum
  1. 封锁?封锁的基本类型?含义?
    封锁是当一个事务在对某个数据对象(数据项、记录、数据集、以至整个数据库)进行操作之前,必须获得相应的锁,以保证数据操作的正确性和一致性。
    类型:排它锁、共享锁
  • 排它锁:简称为X锁,采用原理是禁止并发操作。
  • 共享锁:简称为S锁,采用原理是允许其他用户对同一数据对象进行查询,但不能对该数据对象进行修改。
  1. Delete、truncate、drop的区别
  • delete 属于DML,删除数据,保留表结构,需要commit,可以回滚,数据量大较慢。
  • truncate 属于DDL,删除所有数据,保留表结构,自动commit,不能回滚,一次全部删除所有数据,速度相对较快。
  • Drop属于 DDL,删除数据和表结构,不需要commit,删除速度最快。

MongoDB相关知识整理

  1. MangoDB的特点
  • 高性能、易部署、易使用
  • 面向集合存储、易存储对象类型
  • 支持动态查询、完全索引、复制、故障恢复
  • 二进制数据存储,包括大型对象(如视频)
  • 自动处理碎片
  • 支持Python、PHP、Ruby、Java、C、C#、JavaScript、C++等语言驱动程序
  • 文件存储格式BSON
  • 可通过网络访问
  1. MangoDB适用场合
  • 更高的写入负载:适合有大量低价值数据的场景(低事物安全性)。
  • 高可用性:MangoDB可以快速响应处理结点故障,自动、安全,适用于相对不稳定的环境中,保持高可用性(云主机)。
  • 大量数据或未来即将很大的数据:MySQL完成数据扩展较难,但MongoDB内建多种数据分片特性,能很好的适应大量数据的需求。
  • 基于位置的数据查询:MangoDB支持二维空间索引,能快速、精准的从指定位置获取数据。
  • 表结构不明确,且数据不断变大

你可能感兴趣的:(数据库面试基础整理)