Java面试题6(数据库)

MySQL

  • 数据库有哪些数据类型?

(1)整数:   int(m) 和 bigint(m) m代表显示长度(补0),bigint等效java中的long。

(2)浮点数:  double(m,d) m总长度 d小数长度   double(5,3)   26.378   ,decimal是一个超高精度的浮点数,精度远高于double,只有涉及到超高精度运算时才会使用,。

(3)字符串:  char(m)不可变长度 char(5) "abc" 占5 最大字符长度255, varchar(m) 可变长度 节省空间 最大字符长度为65535 但是超过255建议使用text,text可变长度的字符串类型 长度65535。

(4) 日期类型: date: 只能保存年月日, time: 只能保存时分秒,datetime: 默认值null   最大值9999-12-31,timestamp: 时间戳 默认值当前系统时间 2038-1-19 。

  • 怎么优化数据库的查询?

(1)对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

(2)应尽量避免在 where 子句中使用!=或<>操作符。
(3)应尽量避免在 where 子句中对字段进行 null 值判断。
(4)应尽量避免在 where 子句中使用 or 来连接条件。
(5)下面的查询也将导致全表扫描:“select id from t where name like '%abc%'” 若要提高效率,可以考虑全文检索。in 和 not in 也要慎用,否则会导致全表扫描,很多时候用 exists 代替 in 是一个好的选择。
(6)应尽量避免在 where 子句中对字段进行表达式操作。
(7)应尽量避免在where子句中对字段进行函数操作。

  • 在数据库中条件查询速度很慢的时候,如何优化?

(1)建索引
(2)减少表之间的关联
(3)优化sql,尽量让sql利用索引定位数据,不要让sql做全表查询
(4)简化查询字段,没用的字段不要,已经对返回结果的控制,尽量返回少量数据
(5)利用分页查询减少返回的数据量

  •  数据库中事务是什么,有哪些特性?

(1)事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序单元(unit)。事务通常由SQL语言或编程语言发起并控制。
(2)特性:事务是恢复和并发控制的基本单位。事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。

  • sql语句关键词的执行顺序?

(1)FROM 子句, 组装来自不同数据源的数据
(2)WHERE 子句, 基于指定的条件对记录进行筛选
(3)GROUP BY 子句, 将数据划分为多个分组
(4)使用聚合函数进行计算
(5)使用 HAVING 子句筛选分组
(6)计算所有的表达式
(7)使用 ORDER BY 对结果集进行排序

  • 数据库有哪几种约束类型?

五种。

(1)主键约束 PRIMARY KEY
(2)外键约束 FOREIGN KEY
(3)唯一约束 UNIQUE
(4)检查约束 CHECK
(5)非空约束 NOT NULL

  • 简述数据库执行计划?

SQL语句发送到数据库后需要翻译为执行计划,SQL语句到功能是利用执行计划执行实现的。数据库在执行完全一样的SQL语句时候会重用相同的执行计划。有 ?参数的SQL语言会重用相同的执行计划。

  • 数据库建立索引常用的原则是什么?什么情况下不适合建立索引?

(1)在大数据量的表上建立索引才有意义
(2)在where子句或是连接条件上经常引用的列上建立索引,很少或从不引用的字段和逻辑型的字段,如男或女(是或否)等不要建立索引。

  • 如果想对分组统计的结果信息进行筛选,用where 条件子句能实现吗?如果不行该用什么子句实现?

用where子句不能实现,应该用having 子句。

  •  如果用户用UPDATE 命令修改了表中的数据值,是否可以恢复回来?

如果事务没有提交可以用ROLLBACK 恢复回来。

  • where和having有什么区别?having能单独使用吗?

(1)where 后面只能写普通字段的条件,不能写聚合函数条件。 如果条件是聚合函数的条件 则必须使用having。

(2)having要和group by 结合使用。

  • 数据库中各种关键字的顺序?

select ...... from 表名 where ....group by....having.... order by...... limit ....;

  • 关联查询的查询方式有几种?怎么选择/使用?

关联查询的查询方式有三种。

(1)等值连接,格式: select * from A,B where A.x=B.x and xxx=xxx;

(2)内连接,内连接和等值连接查询的数据是一样的,select * from A join B on A.x=B.x where xxx=xxx;等值连接和内连接查询到的是两张表的交集数据。

(3)外连接,外连接查询的是一张表的全部数据和另外一张表的交集数据,格式: select * from A left/right join B on A.x=B.x where xxx=xxx;

(4)如何选择:如果需要查询两张表的交集数据使用等值连接或内连接(建议)、如果查询一张表的全部数据和另外一张表的交集数据则使用外连接.

JDBC

  • 什么是JDBC?为什么要用JDBC?

(1)Java数据库连接, 是Sun提供的一套编程接口,用于通过Java语言连接数据库,对数据进行增删改查操作.

(2)为什么使用JDBC:因为Java语言需要连接多种数据库,如果没有JDBC,Java程序每一种数据库都需要学习一套API, 使用JDBC后,各个数据库厂商根据JDBC中方法声明写方法的实现类(驱动), 对于Java程序员而言,只需要掌握JDBC中的方法调用即可连接不同的数据库.​​​​​​​

  • 写出JDBC连接数据库的6个步骤?

(1)注册驱动

(2)获取连接

(3)创建一个Statement语句对象

(4)执行SQL语句

(5)处理结果集

(6)关闭资源

  • 为什么要使用数据库连接池DBCP?

如果没有数据库连接池,一万次请求web服务器需要和数据库服务器建立一万次连接,频繁的开关连接非常浪费资源,使用连接池后可以将连接重用大大降低了连接的开关次数,从而提高执行效率。

  • JDBC中的Statement 和PreparedStatement的区别?PreparedStatement的优点?

PreparedStatement 继承于 Statement.
(1)Statement 一般用于执行固定的没有参数的SQL语句。
(2)PreparedStatement 一般用于执行有?参数预编译的SQL语句。
(3)优点:PreparedStatement支持?操作参数,相对于Statement更加灵活。PreparedStatement可以防止SQL注入,安全性高于Statement。避免了拼接字符串,降低了出错的概率 。

  • JDBC中大数据量的分页解决方法?

利用sql语句进行分页,这样每次查询出的结果集中就只包含某页的数据内容。

  • 数据连接池的工作机制是什么?

J2EE 服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。

未完待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值