JDBC测评题
JDBC测评题
1. 什么是索引?
索引是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。将数据进行排序整理的过程就称为索引。我们根据索引去查,提高效率。
2. 索引的分类
- 主键(约束)索引:主键约束+提高查询效率。
- 唯一(约束)索引:唯一约束+提高查询效率。
- 普通索引:仅提高查询效率。
- 组合(联合)索引:多个字段组成索引。
- 全文索引:用于搜索很长一篇文章的时候,效果最好。
- hash索引:根据key-value效率非常高。
3. 哪些字段适合加索引?
- 字段内容可识别度不能低于70%:字段内数据唯一值的个数不能低于70%。例如,一个表数据只有50行,那么性别和年龄哪个字段适合创建索引,明显是年龄,因为年龄的唯一值个数比较多,性别只有两个选项。性别的识别度是50%。
- 经常使用where条件搜索的字段:例如user表的id name等字段。
- 经常使用表连接的字段:可以加快连接的速度。
- 经常排序的字段:因为索引已经是排过序的,这样一来可以利用索引的排序,加快排序查询速度。
- 注意:那是不是在数据库表字段中尽量多建索引呢?肯定不是的。因为索引的建立和维护都是需要耗时的。创建表时需要通过数据库去维护索引,添加记录、更新、修改时,也需要更新索引,会间接影响数据库的效率。
4. 索引原理
索引的实现本质上是为了让数据库能够快速查找数据,而单独维护的数据结构。MySQL实现索引主要使用的两种数据结构:hash和B+树。我们比较常用的MyISAM和InnoDB引擎都是基于B+树的。
B+树:B+tree是MySQL使用最频繁的一个索引数据结构,数据结构以平衡树的形式来组织,因为是树型结构,所以更适合用来处理排序、范围查找等功能。相对hash索引,B+树在查找单条记录的速度虽然比不上hash索引,但是因为更适合排序等操作,所以他更受用户的欢迎。毕竟不可能只对数据库进行单条记录的操作。
5. JDBC编程步骤
- 注册驱动
- 获取连接
- 获取发送SQL语句的Statement对象
- 使用Statement对象执行SQL语句
- 处理结果集
- 释放资源
6. JDBC事务控制
关于JDBC的事务,下列描述正确的是:
- A. 连接对象.setAutoCommit(true);表示开启手动控制事务(错误)
- B. 一切成功,提交事务,连接对象.commit(true);(错误)
- C. 出现异常,回滚事务,连接对象.rollback();(正确)
- D. 以上说法都不正确(错误)
7. JDBC代码分析
阅读下面的代码,下列哪个是正确的:
String sql = "select id,username,password pwd from user2";
while(rs.next()){
int id = rs.getInt("id");
String userName = rs.getString("username");
String pwd = rs.getString("password");
System.out.println(id+"---"+userName+"---"+pwd);
}
- A. 上述代码中String password = rs.getString("password");获取不到密码的值,会报错(正确)
- B. 上述代码中String userName = rs.getString("username");获取不到值,会报错(错误)
- C. 上述代码中int id = rs.getInt("id");获取不到值,会报错(错误)
- D. 以上说法都不正确(错误)
8. JDBC接口关系
下列描述正确的是:
- A. PreparedStatement是Statement的子接口(正确)
- B. PreparedStatement可以解决SQL注入问题,但是效率比Statement低(错误)
- C. PreparedStatement对于相同SQL语句只会编译一次(正确)
- D. Statement可以解决SQL注入问题(错误)