Java面试题------数据库篇

1、主键和唯一索引的区别?
在创建主键的同时会生成对应的唯一索引,主键在保证数据唯一性的同时不允许为 空,而唯一可以有一个为空数据项,一个表中只能有一个主键,但是一个主键可以 有多个字段,一个表中可以有多个唯一索引。

2、 Preparedstatement和statement的区别
用Prepared statement进行开发。Prepared statement是预编译的,而statement不是,在每次执行sql语句的增删改时,如果是一条数据两者没差距,但如果数据量大于1,那么每次执行sql语句statement都要重新编译一次,而Prepared statement不用,Prepared statement的运行效率大于statement;从代码的可维护性和可读性来说,虽然用Prepared statement来代替statement会使代码多出几行,但这样的代码无论从可读性还是可维护性来说,都比直接使用statement的代码高很多档次;最重要的一点,从安全角度来说,使用Prepared statement可以大大提高程序的安全性,因为Prepared statement是用‘?’传参,可以防止sql注入,具有安全性,而statement用的是‘+’字符串拼接,安全性较低。

3、存储过程概述
存储过程(Stored Procedure)
  可以包含逻辑判断的sql语句集合。
  是经过预编译,存在于数据库中。
  通过调用指定存储过程的名字(可有参,可无参)来执行。
优点:
  简化了复杂的业务逻辑,根据需要可重复使用
  屏蔽了底层细节,不暴露表信息即可完成操作
  降低网络的通信量,多条语句可以封装成一个存储过程来执行
  设置访问权限来提高安全性
  提高执行效率,因为它是预编译以及存储在数据库中
缺点:
  可移植性差,相同的存储过程并不能跨多个数据库进行操作
  大量使用存储过程后,首先会使服务器压力增大,而且维护难度逐渐增加

存储过程的语法:

–下面是在oracle数据库下最基本的语法
–仅创建一个名为testProcedure 的无参的存储过程
–IS也可以是AS
–如果已经存在名为 testProcedure 的存储过程,下面的语法会出现 名称已被使用的错误
–解决办法:
–第一句可以写成 create or replace procedure testProcedure
–这样会替换原有的存储过程
–NULL表示任何可以正确执行的sql 语句,但至少一句

create procedure testProcedure
IS
BEGIN

NULL

END;

存储过程的参数的分类:
IN
OUT
INOUT

注意:
  存储过程之间可相互调用
  存储过程一般修改后,立即生效。

4、数据库连接池
数据库连接池的优点运行原理:
在我们不使用数据库连接池的时候,每次访问数据库都需要创建连接,
使用完成之后需要释放关闭连接,而这样是很耗费资源的。当我们使用
数据库连接池的时候,在tomcat启动的时候就创建了指定数量的连接,
之后当我们程序使用的时候就直接从连接池里面取,而不需要创建,同理,
当我们使用完的时候也不需要关闭连接,而是将连接返回到连接池中,供
其他请求继续使用。

DBCP:比较稳定。
C3P0: 性能比较高。

5、mysql的数据库导入导出
配置:
首先找到mysql的安装目录,进入bin目录下复制路径
将mysql的bin目录粘贴在计算机环境变量的path中
授权:
登录mysql
将某张表的某个权限赋给某个用户
grant [select,insert,update,delete,create,drop] on [databaseName].[tableName] to [userName]@[userIP] identified by [‘连接口令’]
grant select,insert,update,delete,create,drop on oa_ssh.user to root@[IP] identified by ‘root’;
将所有库的所有权限赋给某个用户
grant all privileges on . to [userName]@[userIp] identified by [‘连接口令’]
grant all privileges on . to root@[IP] identified by ‘root’;
将所有库的所有权限赋给所有用户
    grant all privileges on . to root@’%’ identified by ‘root’;

导出本地数据库:
    mysqldump -u 用户名 -p 数据库名 > 磁盘:导出的文件名(加后缀)
    远程导出数据库:
    mysqldump -h IP -u 用户名 -p 数据库名称 >导出的文件名(加后缀)
    远程导出数据表:
    mysqldump -u root -p -d --add-drop-table 数据库名称 > 导出文件
名(加后缀)

导入数据:
    mysql -u root -p登录成功后 ==》 source 磁盘:导入的文件名(加后缀)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值