还剩11页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
java数据库面试题目及答案
一、选择题(共15题,每题2分,共30分)
1.在JDBC中,用于建立与数据库连接的接口是?()A.Connection B.Statement C.DriverManager D.Result
2.MySQL数据库中,默认的事务隔离级别是?()A.读未提交B.读已提交C.可重复读D.串行化
3.以下哪种索引类型适用于频繁查询且需要快速排序的场景?()A.主键索引B.唯一索引C.普通索引D.复合索引
4.JDBC中,用于执行静态SQL语句并返回结果的对象是?()A.Connection B.Statement C.PreparedStatementD.CallableStatement
5.在数据库事务中,“原子性”指的是?()A.事务中的所有操作要么全部成功,要么全部失败B.事务一旦提交,对数据库的改变就是永久的C.事务只能看到其他已提交事务的结果D.多个事务并发执行时,一个事务的执行不被其他事务干扰
6.SQL语句中,用于创建数据库表的命令是?()A.CREATE DATABASEB.CREATE TABLEC.ALTER TABLED.DROPTABLE
7.以下哪种情况不会导致索引失效?()A.在索引列上使用函数B.使用NOT INC.使用LIKE%xxx D.使用AND连接多个条件,其中一个为索引列
8.数据库连接池的主要作用是?()A.提高数据库查询速度B.减少数据库连接的创建和关闭开销第1页共13页C.实现数据库的备份D.保障数据库安全
9.在Java中,ORM框架的主要作用是?()A.简化SQL语句的编写B.将Java对象与数据库表进行映射C.优化数据库性能D.处理数据库异常
10.MySQL中,以下哪个不是存储引擎?()A.InnoDB B.MyISAM C.SQLite D.Memory
11.JDBC中,用于处理SQL注入问题的最佳方式是?()A.直接拼接SQL字符串B.使用PreparedStatement C.使用Statement D.使用CallableStatement
12.事务的“一致性”指的是?()A.事务中的所有操作要么全部成功,要么全部失败B.事务一旦提交,对数据库的改变就是永久的C.事务只能看到其他已提交事务的结果D.事务执行前后,数据库的完整性约束不被破坏
13.以下哪种关系型数据库是开源且广泛应用于嵌入式系统的?()A.Oracle B.SQL ServerC.MySQL D.SQLite
14.在SQL中,用于查询表中所有记录的关键字是?()A.SELECT*B.SELECT DISTINCTC.SELECT FROMD.SELECT WHERE
15.Java中,使用JDBC连接数据库时,正确的步骤是?()
①注册驱动
②获取连接
③执行SQL
④处理结果
⑤关闭资源
⑥提交事务A.
①②③④⑤B.
①②③④⑥⑤C.
①②③⑥④⑤D.
②①③④⑥⑤
二、判断题(共10题,每题1分,共10分)
1.MySQL的InnoDB引擎不支持事务()第2页共13页
2.JDBC中,PreparedStatement比Statement更安全,可以防止SQL注入()
3.数据库中的外键约束可以确保数据的参照完整性()
4.索引可以提高查询效率,在任何情况下都应该为表添加索引()
5.事务的隔离级别越高,并发性能越好()
6.在SQL中,INSERT语句只能插入单条记录,不能插入多条()
7.数据库连接池的最大连接数设置越大越好()
8.ORM框架(如Hibernate/MyBatis)可以完全替代手写SQL()
9.MySQL中,自增主键(AUTO_INCREMENT)在表删除后,下一次插入时会从上次最大自增值继续()
10.数据库事务的“隔离性”是指事务之间相互独立,互不干扰()
三、填空题(共15题,每题1分,共15分)
1.JDBC中,用于表示SQL语句执行结果的接口是______
2.MySQL数据库默认的端口号是______
3.数据库事务的ACID特性指的是原子性、一致性、隔离性和______
4.在SQL中,用于修改表中数据的关键字是______
5.数据库连接池的核心参数包括初始连接数、最大连接数、最小连接数和______
6.索引可以分为主键索引、唯一索引、普通索引和______
7.JDBC中,用于表示数据库连接的接口是______
8.在MySQL中,用于查看表结构的命令是______
9.事务的隔离级别共有______种第3页共13页
10.SQL中,用于删除表中记录的关键字是______
11.Java中,MyBatis是一种流行的______框架
12.数据库中的“锁机制”主要用于解决并发访问时的数据______问题
13.在SQL中,用于创建索引的命令是______
14.JDBC中,用于加载数据库驱动类的方法是______
15.MySQL中,存储过程是一组预编译的SQL语句,使用关键字______创建
四、简答题(共8题,每题5分,共40分)
1.请简述JDBC的工作基本流程
2.请解释数据库事务的ACID特性,并说明每个特性的含义
3.索引在数据库中的主要作用是什么?并简述索引的优缺点
4.什么是数据库连接池?它的核心参数有哪些?
5.请说明MySQL中四种事务隔离级别及其可能出现的问题
6.什么是ORM框架?它在Java数据库交互中扮演什么角色?
7.在SQL中,什么是视图?视图的作用有哪些?
8.什么是数据库锁?请简述行锁和表锁的区别
五、SQL语句编写题(共10题,每题3分,共30分)
1.查询user表中age大于25且gender为男的用户,按age降序排列,只显示username和age字段
2.向user表中插入一条记录username=张三,age=30,gender=男,create_time=CURRENT_TIMESTAMP(假设user表字段idINT,主键,自增,usernameVARCHAR50,ageINT,genderCHAR1,create_timeDATETIME)
3.更新user表中id=1的用户age为28,username保持不变第4页共13页
4.删除order表中order_time为2025-01-01之前的所有订单记录(假设order表字段order_idINT,主键,自增,user_idINT,product_nameVARCHAR100,amountDECIMAL10,2,order_timeDATETIME)
5.查询所有用户的username及其对应的订单数量,左连接order表,按订单数量降序排列
6.查询user表中username以张开头的用户记录,显示id、username、age字段
7.查询订单表中amount大于1000的订单,按order_time升序排列,显示order_id、product_name、amount字段
8.查询user表中age在20到30之间(包含20和30)的用户数量
9.删除user表中age小于18的用户记录,删除关联的order表中的订单(假设order表外键设置为ON DELETECASCADE)
10.查询每个用户的最大订单金额,显示username和最大amount,右连接order表
六、JDBC应用题(共8题,每题5分,共40分)
1.请编写一个使用JDBC查询user表中id=1的用户信息的Java代码片段(需包含必要的异常处理)
2.在JDBC中,如何使用try-with-resources语句管理数据库资源?请写出示例代码片段
3.JDBC中,Statement和PreparedStatement的主要区别是什么?各适用于什么场景?
4.如何在JDBC中处理数据库事务?请写出开启事务、提交事务、回滚事务的关键代码
5.JDBC中,什么是数据库连接泄漏?如何避免连接泄漏?第5页共13页
6.请简述JDBC中Driver接口的作用
7.在JDBC中,如何处理大文本数据(如CLOB类型)?
8.JDBC中,什么是连接池?使用连接池有哪些优势?
七、案例分析题(共5题,每题6分,共30分)
1.场景某Java Web应用在高并发情况下,数据库连接池频繁报“连接耗尽”错误,导致大量请求超时请分析原因及解决方案
2.场景某系统使用JDBC连接MySQL数据库,执行查询操作时,结果集中的数据与数据库实际数据不一致,有时会出现“脏数据”请分析原因及解决方法
3.场景某电商系统订单表中,大量用户下单购买同一商品,导致商品库存超卖(实际库存为0时仍有订单生成)请分析原因及从数据库角度给出解决方案
4.场景某Java项目使用MyBatis框架进行数据库操作,执行一条简单的查询语句时,发现执行时间较长(超过5秒),而数据库本身性能良好请分析原因及优化建议
5.场景某系统在数据库迁移后发现部分用户数据无法查询,提示“表不存在”但数据库中确实存在该表请分析原因及解决方法
八、操作题(共6题,每题5分,共30分)
1.设计一个用户表(user),要求包含用户ID(主键)、用户名(唯一且非空)、密码(非空)、邮箱(唯一且符合邮箱格式)、手机号(唯一)、注册时间(非空)、登录时间、用户状态(正常/禁用,默认为正常)请写出SQL CREATE TABLE语句,并说明各字段的类型、约束及选择原因第6页共13页
2.针对题目1的user表,为以下查询场景设计合适的索引
(1)查询用户名查询用户;
(2)按注册时间查询用户列表(分页);
(3)查询特定状态(如正常)的用户数量
3.在user表中,为以下SQL语句编写对应的索引,并说明索引是否有效
(1)SELECT*FROM user WHERE username LIKE张%ANDstatus=normal;
(2)SELECT*FROM user WHEREregister_time2025-01-01AND email LIKE%@qq.com
4.创建一个存储过程,实现向user表中插入用户时,自动检查用户名是否已存在,若存在则返回错误信息,否则插入并返回成功
5.创建一个触发器,当user表中status字段被更新为disabled时,自动将该用户的所有订单状态更新为已禁用(假设订单表为order,关联字段为user_id)
6.对user表(假设100万条数据)进行性能优化,说明优化方面及具体操作步骤答案汇总
一、选择题
1.A
2.C
3.A
4.B
5.A
6.B
7.D
8.B
9.B
10.C
11.B
12.D
13.D
14.A
15.A
二、判断题
1.错
2.对
3.对
4.错
5.错
6.错
7.错
8.错
9.错
10.对
三、填空题
1.ResultSet
2.
33063.持久性
4.UPDATE
5.最大等待时间(或超时时间)
6.复合索引(或组合索引)
7.Connection
8.DESCRIBE(或DESC)
9.
410.DELETE
11.ORM(或数据访问层)
12.一致性(或完整性)
13.CREATE INDEX
14.Class.forName
15.CREATE PROCEDURE第7页共13页
四、简答题
1.加载数据库驱动→通过DriverManager获取连接→创建Statement/PreparedStatement对象→执行SQL并获取结果→处理结果→关闭资源
2.原子性(操作不可分割,全部成功或失败)、一致性(事务前后数据满足完整性约束)、隔离性(事务并发互不干扰)、持久性(提交后修改永久生效)
3.作用提高查询效率,加速数据检索优点提高查询速度;缺点降低插入/更新/删除性能,增加存储空间
4.连接池是管理数据库连接的容器,减少频繁创建/关闭连接的开销核心参数初始连接数、最大连接数、最小连接数、最大等待时间
5.读未提交(脏读)、读已提交(不可重复读)、可重复读(幻读)、串行化(无并发问题)
6.ORM(对象关系映射)框架是将Java对象与数据库表映射的技术,作用是简化数据访问,消除手动SQL编写,降低耦合,提高开发效率
7.视图是虚拟表,内容由查询定义,不存储实际数据作用简化查询、安全控制、逻辑数据独立性
8.锁机制用于解决并发访问时的数据一致性问题行锁锁定特定行,并发性能高;表锁锁定整个表,并发性能低
五、SQL语句编写题
1.SELECT username,age FROM user WHEREage25AND gender=男ORDER BYage DESC;第8页共13页
2.INSERT INTOuser username,age,gender,create_timeVALUES张三,30,男,CURRENT_TIMESTAMP;
3.UPDATE userSET age=28WHERE id=1;
4.DELETE FROMorder WHEREorder_time2025-01-01;
5.SELECT u.username,COUNTo.order_id ASorder_count FROMuseru LEFTJOIN ordero ONu.id=o.user_id GROUPBYu.username ORDER BY order_count DESC;
6.SELECT id,username,age FROMuser WHERE usernameLIKE张%;
7.SELECT order_id,product_name,amount FROMorder WHEREamount1000ORDERBYorder_time ASC;
8.SELECT COUNT*AS user_count FROMuser WHEREage BETWEEN20AND30;
9.DELETE FROMuserWHEREage18;(假设外键ON DELETECASCADE)
10.SELECT u.username,MAXo.amount ASmax_amount FROMordero RIGHTJOIN useru ONo.user_id=u.id GROUPBY u.username;
六、JDBC应用题Class.forNamecom.mysql.cj.jdbc.Driver;Connection conn=DriverManager.getConnectionjdbc:mysql://localhost:3306/db,root,123456;PreparedStatement pstmt=conn.prepareStatementSELECTusername,age,gender FROMuserWHERE id=;pstmt.setInt1,1;第9页共13页ResultSet rs=pstmt.executeQuery;if rs.next{/*处理结果*/}rs.close;pstmt.close;conn.close;
2.使用try-with-resources自动关闭资源try Connectionconn=DriverManager.getConnectionurl,user,password;PreparedStatement pstmt=conn.prepareStatementsql;ResultSet rs=pstmt.executeQuery{while rs.next{/*处理结果*/}}catch SQLExceptione{e.printStackTrace;}
3.Statement执行静态SQL,PreparedStatement预编译并支持参数,PreparedStatement防SQL注入,适合含参数的SQL
4.开启事务conn.setAutoCommitfalse;提交conn.commit;回滚conn.rollback;
5.连接泄漏是未关闭连接导致资源耗尽,避免方法使用try-with-resources、finally关闭资源、检查异常路径
6.Driver接口表示数据库驱动,数据库厂商实现该接口,应用通过加载驱动类实例化连接
7.通过setClob设置CLOB,getClob获取,示例pstmt.setClob1,conn.createClob.setString1,largeText;
8.连接池预先创建连接,优势减少连接开销、提高性能、控制连接数量、优化资源利用
七、案例分析题第10页共13页
1.原因连接池最大连接数过小、连接泄漏、参数不合理、数据库性能瓶颈解决方案调大最大连接数、修复连接泄漏、优化参数、优化慢查询
2.原因隔离级别过低(如读未提交)、事务未控制、连接未关闭、主从同步延迟解决提高隔离级别、控制事务、关闭资源、等待同步或半同步复制
3.原因未加锁导致竞态条件解决方案悲观锁(UPDATE productSETstock=stock-1WHEREid=AND stock=1)、乐观锁(加version字段)
4.原因无索引、SELECT*、索引失效、数据量大未分区优化添加索引、避免SELECT*、优化SQL、分区或分表
5.原因表未创建、权限不足、表名大小写敏感、连接URL错误解决检查脚本、授权用户、核对名称大小写、修正URL
八、操作题CREATETABLEuser user_id INTPRIMARY KEYAUTO_INCREMENT COMMENT自增主键,username VARCHAR50NOT NULLUNIQUE COMMENT唯一非空用户名,password VARCHAR100NOT NULLCOMMENT非空密码(存储加密后),email VARCHAR100NOT NULLUNIQUE COMMENT唯一邮箱(格式校验),phone VARCHAR20UNIQUE COMMENT唯一手机号,register_time DATETIMENOT NULLDEFAULT CURRENT_TIMESTAMPCOMMENT注册时间,第11页共13页last_login_time DATETIMECOMMENT登录时间,status ENUMnormal,disabled NOTNULL DEFAULTnormalCOMMENT用户状态ENGINE=InnoDB DEFAULTCHARSET=utf8mb4COMMENT用户表;
2.
(1)username唯一索引;
(2)register_time普通索引;
(3)status,register_time复合索引
3.
(1)username,status复合索引有效;
(2)emailLIKE%@qq.com无法用索引,优化避免后缀%或用全文索引DELIMITER//CREATE PROCEDUREInsertUserIN p_username VARCHAR50,...,OUT p_result VARCHAR50BEGINDECLARE cntINT;SELECT COUNT*INTO cntFROMuserWHEREusername=p_username;IF cnt0THEN SET p_result=用户名已存在;ELSE INSERT...SETp_result=插入成功;END IF;END//DELIMITER;DELIMITER//CREATE TRIGGERUpdateOrderStatus AFTERUPDATE ONuser FOREACHROWBEGINIF NEW.status=disabled ANDOLD.status!=disabled THEN第12页共13页UPDATE`order`SET order_status=已禁用WHEREuser_id=NEW.user_id;END IF;END//DELIMITER;
6.优化索引优化、表分区(按时间)、数据归档、SQL优化、读写分离、缓存、表结构优化、定期维护第13页共13页。
个人认证
优秀文档
获得点赞 0