1.数据库分类?

关系型数据库和非关系型。

常用关系型:Myspl、Oracle、SQLServer

非关系型:Redis、Hadoop、Memcache、Mogobd

2.关系数据库三范式?

范式就是设计数据库表时要遵循的规范。

要想满足第二范式必须先满足第一范式,要想满足第三范式必须先满足第二范式。

第一范式(1NF):数据表的每一列都是不可分割的数据项,同一列中不能有多个值(或者说不能有两个表示属性相同的列),即实体中的某个属性不能有多个值或者不能有重复属                                  性。

第二范式(2NF):数据表中的某一行都必须可以被唯一区分。为实现区分通常需要在表中加一列以存储各个实例的唯一标识(主键)。

例如:用户表Person中的主键personID,每个person的name,gender,age都有可能跟其他单位相同,但是ID绝不相同,所以id就是作为唯一区分的主键标识。

第三范式(3NF):一个数据库中不包含在其他表中也包含的非主键信息。(外键)

例如:用户表Person中有personID(主键),name(非主键),而购物车表中不能包含(person_name)。

反三范式:有的时候为了提高效率,可以设置重复后者可以推导出来的字段。

例如:订单总价和订单项单价,有了总价列后每加入一项就改变总价,以后再需要使用总价字段时直接取该列数值即可,不需要每次都计算所有单价总和。

3.事务四个基本特征(ACID)特性?

事物是并发控制的单位,是用户定义的一个操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位。

例如:一次转账,必须A账号扣款成功,B账号加钱成功,才算真正的转账成功。

原子性:事务操作不可分割,要么都成功,要么都失败。

一致性:要么都成功,要么都失败,后面的失败了要对前面的操作进行回滚。

隔离性:一个事务开始后不能受其他事务干扰。

持久/续性:事务开始了就不能终止。

4.Myspl数据库默认的最大连接数?为什么需要最大连接数?

特定服务器上面的数据库只能支持一定数目同时连接,这是需要我们设置最大连接数。子啊数据库安装时都会有一个默认的最大连接数,100。

5.Mysql的分页?Oracle的分页?为什么需要分页?

很多数据库不能同时显示很多数据,所以需要分页。

Mysql:使用关键字limit(limit offset,size表示从多少索引去多少位)

String sql = "selec * from students order by id limit" + pageSize * (pageNumber - 1) + "," + pageSize;

Oracle:大部分情况下是记不住的,说思路——要使用三层嵌套查询。

6.触发器的使用场景?

需要有触发条件,当条件满足后执行什么操作。

例如朋友圈发布动态,QQ发布日志会自动通知好友。

7.数据库存储过程的使用场景?

存储过程具有一下优点:

     (1)存储过程旨在创建的时候编译,以后每次执行的时候不需要编译,而一般的sql语句每执行一次就编译一次,因为使用存储过程可以大大提高数据库执行速度。

     (2)通常复杂的业务逻辑需要多条sql语句。这邪恶语句要分别从客户机发送到服务器,当客户机和服务器之间操作次数过多时,将产生大量网络传输。如果这些操作再存                          储过程中,那么客户机和服务器之间的网络传输就会大大减少,降低了网络负载。

     (3)存储过程创建一次就可以重复使用,可以减少数据库开发人员的工作量。

     (4)安全性高,存储过程可以屏蔽对底层数据库对象的直接访问,使用EXECUTE权限调用存储过程,无需拥有访问底层数据库对象的显式权限。

定义存储过程:

create procedure insert_Student(_name  varchar(50),
_age int,
_out_id int )
begin
insert into student value( null, _name, _age );
select max(stuId) into _id from student;
end; call insert_Student( 'wfz', 23, @id );
select @id;

8.用Jdbc调用存储过程?

加载驱动------->获取连接------->设置参数------->执行------->获取连接

9.对Jdbc的理解?

Java  DataBase  Connection(java数据库连接)

数据库管理系统是有很多,每个系统支持的命令也是不一样的。过程如下:

Java只定义接口,让数据库厂商自己实现接口,对于我们开发者而言,只需要导入对应厂商的实现即可,然后以接口的方式进行调用(Mysql+mysql(驱动实现)+Jdbc),

如下图:

10.Jdbc中PreparedStatement相比Statement的好处?

(1)PreparedStatement是预编译的,速度比Statement快

(2)虽然代码会多几行,但是代码的可读性和可维护性更强。

例如:

Statement:
stmt.executeUpdate( "insert into tb_name( col1,col2,...)
values( "" + var1 + "" + var2 +...)" ); PreparedStatement:
perstmt = con.preparedStatement( "insert into tb_name( col1, col2, ...) values( ?, ?, ...)" );
perstmt.setString( 1, var1);
...
perstmt.executeUpdate();

(3)安全性,PreparedStatement可以防止SQL注入攻击,而Statement不能。

11.数据库连接池的作用(与线程池类似)?

Java面试题复习笔记(数据库)的更多相关文章

  1. Java面试题复习笔记(Web方向)

    1.Http中get和post请求的区别? 共同点:都是Http请求方式,用户可以通过不同的请求方式完成对资源(Url)的操作.具体来讲就是get一般用于获取/查询资源信息,post用于更新资源信息. ...

  2. Java面试题复习笔记(框架)

    1.什么是框架? 为解决一个开放性问题而设计的具有一定约束性的支撑结构,再次结构上可以根据具体问题扩展,安插更多的组成部分,从而更迅速和方便地构建完整解决问题的方案. 2.MVC模式? 用一种业务逻辑 ...

  3. Java面试题复习笔记(前端)

    1.Html,CSS,Jsp在网页开发中的定位? Html——定义网页结构(超文本标记语言) CSS——层叠样式表,用来美化界面 Jsp——主要用来验证表单,做动态交互(Ajax) 2.介绍Ajax? ...

  4. Java二次复习笔记(1)

    Java二次复习笔记(1) Java采用的默认字符编码集是Unicode. byte=byte+byte报错,值为int,而byte+=byte不报错.同样short = short+short报错, ...

  5. 8月份21道最新Java面试题剖析(数据库+JVM+微服务+高并发)

    前言 纵观几年来的Java面试题,你会发现每家都差不多.你仔细观察就会发现,HashMap的出现几率未免也太高了吧!连考察的知识点都一样,什么hash碰撞啊,并发问题啊!再比如JVM,无外乎考内存结构 ...

  6. java面试题复习(七)

    61.jdbc的操作步骤 加载驱动:Class.forName("oracle.jdbc.driver.OracleDriver"); 创建连接:Connection con =D ...

  7. java面试题复习(六)

    51.实现多线程的方法 一种是继承Thread类:另一种是实现Runnable接口.两种方式都要通过重写run()方法来定义线程的行为,推荐使用后者,因为Java中的继承是单继承,一个类有一个父类,如 ...

  8. 2018年最新JAVA面试题总结之数据库(3)

    转自于:https://zhuanlan.zhihu.com/p/39804394 1.MySQL的delete与truncate区别? 回答:delete语句执行删除的过程是每次从表中删除一行,并且 ...

  9. java面试题复习(八)

    71.如何通过反射创建对象? 方法1:通过类对象调用newInstance()方法,例如:String.class.newInstance()  方法2:通过类对象的getConstructor()或 ...

随机推荐

  1. Shell命令-文件及内容处理之sort、uniq

    文件及内容处理 - sort.unip 1. sort:对文件的文本内容排序 sort命令的功能说明 sort 命令用于将文本文件内容加以排序.sort 可针对文本文件的内容,以行为单位来排序. so ...

  2. IRepository<Developer> repository 出现 Abp.Domain.Repositories.IRepository which was not registered.

    “/”应用程序中的服务器错误. Can't create component 'SWJ.SSO.DomainServices.TestService' as it has dependencies t ...

  3. AngularJS 1.x系列:AngularJS服务-Service、Factory、Provider、Value及Constant(5)

    1. AngularJS服务 AngularJS可注入类型包括:Service.Factory.Provider.Value及Constant. 2. Service AngularJS Servic ...

  4. 解决SpringSecurity阻止ajax的POST和PUT请求,导致403Forbidden的问题

    前言: 最近在整合springboot+springsecurity,在PUT请求的时候出现了403的问题,这里记录一下解决的过程 到Spring的官网去查查SpringSecurity的参考手册看看 ...

  5. 四、Attribute

    Attribute分两种 Attribute称为特性,语法:特性(Attribute)的名称和值是在方括号内规定的,放置在它所应用的元素之前. 1.ActionFilterAttribute(过滤器) ...

  6. mpvue——动态渲染echarts图表

    前言 使用mpvue-echarts来写图表,那个F2再提醒自己下要踩坑不能忘记.遇到了一个问题就是数据不能动态的去渲染,这个其实官方给了我们对应的方法 懒加载 代码 修改了调用initChart() ...

  7. nginx编译安装指定参数

    --prefix=/app/nginx # 安装目录 --conf-path=/app/nginx/conf/nginx.conf # 配置文件 --sbin-path=/app/nginx/sbin ...

  8. 压测过程中,获取不到redis连接池,发现redis连接数高

    说明:图片截得比较大,浏览器放大倍数看即可(涉及到隐私,打了码,请见谅,如果有疑问,欢迎骚扰). 最近在压测过程中,出现获取不到redis连接池的问题 xshell连接redis服务器,查看连接数,发 ...

  9. U66785 行列式求值

    二更:把更多的行列式有关内容加了进来(%%%%%Jelly Goat奆佬) 题目描述 给你一个N(n≤10n\leq 10n≤10)阶行列式,请计算出它的值 输入输出格式 输入格式: 第一行有一个整数 ...

  10. Codeforces 1037C Equalize

    原题 题目大意: 给你两个长度都为\(n\)的的\(01\)串\(a,b\),现在你可以对\(a\)串进行如下两种操作: 1.交换位置\(i\)和位置\(j\),代价为\(|i-j|\) 2.反转位置 ...