Java(面试题准备(技术面)(数据库部分))
1. 什么是事务?
- 要么都成功,要么都失败
- SQL执行 A给B转账 A1000 -> 200 B200
- SQL执行 B收到A钱 A800 -> B400
- 将一组SQL放在一个批次中去执行
2. 数据库事务的四大特性——ACID
- ACID:
- 原子性(Atomicity)
事务中的操作要么都成功,要么都失败。 - 一致性(Consistency)
事务前后数据的完整性必须保持一致。 - 隔离性(Isolation)
多用户并发访问数据库时,数据库开启的各个事务之间相互隔离,不能被干扰。 - 持久性(Durability)
事务一旦提交则不可逆,被持久化到数据库中。
- 原子性(Atomicity)
- 隔离所导致的一些问题:
- 脏读:
- 指一个事务读取了另一个事务未提交的数据。
- 不可重复读:
- 指在一个事务内读取表中某一行数据,多次读取的结果不同。(不一定是错误,可能场合不对。)
- 虚读(幻读)
- 指在一个事务内读取了别的事务插入的数据,导致前后读取不一致。
- 脏读:
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. …