Java(面试题准备(技术面)(数据库部分))

Java(面试题准备(技术面)(数据库部分))

1. 什么是事务?

  • 要么都成功,要么都失败
  1. SQL执行 A给B转账 A1000 -> 200 B200
  2. SQL执行 B收到A钱 A800 -> B400
  • 将一组SQL放在一个批次中去执行

2. 数据库事务的四大特性——ACID

  • ACID:
    • 原子性(Atomicity)
        事务中的操作要么都成功,要么都失败。
    • 一致性(Consistency)
        事务前后数据的完整性必须保持一致。
    • 隔离性(Isolation)
        多用户并发访问数据库时,数据库开启的各个事务之间相互隔离,不能被干扰。
    • 持久性(Durability)
        事务一旦提交则不可逆,被持久化到数据库中。

  • 隔离所导致的一些问题:
    • 脏读:
      • 指一个事务读取了另一个事务未提交的数据。
    • 不可重复读:
      • 指在一个事务内读取表中某一行数据,多次读取的结果不同。(不一定是错误,可能场合不对。)
    • 虚读(幻读)
      • 指在一个事务内读取了别的事务插入的数据,导致前后读取不一致。

3. 数据库三大范式(了解)

  • 第一范式(1NF)
    • 原子性:保证每一列不可再分
  • 第二范式(2NF)
    • 前提:满足第一范式
    • 第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)
    • 每张表只描述一件事情
  • 第三范式(3NF)
    • 前提:满足第一范式和第二范式
    • 第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。

4. 规范性和性能的问题:

  • 关联查询的表不得超过三张表
    • 考虑商业化的需求和目标(成本,用户体验),数据库的性能更加重要
    • 在规范性能的问题的时候,需要适当的考虑一下规范性
    • 故意给某些表增加一些冗余的字段。(从多表查询中变为单表查询)
    • 故意增加一些计算列(从大数据库降低为小数据量的查询:索引)

5. select语句

6. 增删改语句

7. 如何优化MySQL?

  • 优化SQL语句
    • 使用连表查询(JOIN)代替子查询
    • 使用联合查询(UNION)代替临时创建的表
  • 建立索引
    • 优化索引
  • 优化数据库表结构
  • 优化系统配置
  • 优化硬件

8. 索引的目的是什么?

  • 提高检索速度
  • 加速表之间的连接

9. 索引的缺点?

  • 创建和维护需要耗费大量时间,
  • 也需要占用物理空间。

10. 索引建立的原则?

  • 在 最频繁使用的、用来缩小查询范围的 字段上,建立索引
  • 在 频繁使用的、需要排序的 字段上,建立索引

11. 不建议使用索引的情况?

  • 对于查询中很少涉及的列,或者重复值比较多的列,不宜建立索引
  • 对于某些特殊的数据类型,如文本字段(text)等,不宜建立索引

12. SQL语言包括哪几个部分?

  • SQL 语言包括数据定义(DDL)、数据操纵(DML)、数据控制(DCL)和数据查询(DQL)四个部分。
    • 数据定义:Create Table、Alter Table、Drop Table、Create/Drop Index 等
    • 数据操纵:Select、insert、update、delete、
    • 数据控制:grant、revoke、
    • 数据查询:select、

13. 什么叫视图?有什么优点?

  • 视图是一种虚拟的表,由一个表或者多个表的行或列的子集构成,对视图的修改不影响基本表。
  • 优点:
    • 简化用户的操作
    • 使用户能以多种角度看待同一数据
    • 视图为数据库提供了一定程度的逻辑独立性
    • 视图能够对机密数据提供安全保护

14. Jdbc 访问数据库有哪些步骤?

  • 注册 JDBC 驱动
  • 获得连接对象
  • 获得状态集创建一个 Statement
  • 执行 SQL 语句
  • 获取结果集 处理结果
  • 关闭 JDBC 对象

15. …

 
 

—————— THE END ——————
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zachsj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值