Java面试题(三)数据库

1,三范式?
答:每一个属性都不可再分,属性彻底依赖于主键,第三范式就是属性不依赖于其它非主属性。sql

2,如何理解超键、候选键、主键、外键的含义?
超键有无关属性,主键是惟一且不能再分,外键是主键的引用,主键是在候选键中产生的数据库

3,什么是存储过程?有哪些优缺点?
存储过程是一个预编译的有名称的代码块。
优势:执行效率比较高,下降网络通讯量,提升通讯速率,必定程度上确保数据安全
缺点:开发过程当中维护有必定难度。安全

4,存储过程和函数区别?
存储过程至关于业务层。函数至关于dao层。业务层中能够调用多个dao,那么在存储过程的代码中能够调用
多个函数,函数都是有返回值的。网络

5,索引是什么(能够理解为字典的索引)?有什么做用以及优缺点?
索引是对数据库表中一或多个列的值进行排序的结构,是帮助SQL高效获取数据的数据结构。
MySQL数据库几个基本的索引类型:普通索引、惟一索引、主键索引、全文索引数据结构

好处就是提升速度。缺点就是须要占物理和数据空间并发

6,什么是事务?
事务(Transaction)是并发控制的基本单位。
事务,它是一个操做序列,这些操做要么都执行,要么都不执行,它是一个不可分割的工做单位。oracle


7,事务的四大特性?ACID
原子性(Atomicity)[同时成功或失败],一致性(Consistency)[数据守恒],
隔离性(Isolation)[并发],持久性(Durability)[commit一旦提交不能再回滚]函数


8,隔离级别有哪几种?
① Serializable (串行化):可避免脏读、不可重复读、幻读的发生。
② Repeatable read (可重复读):可避免脏读、不可重复读的发生。
③ Read committed (读已提交):可避免脏读的发生。
④ Read uncommitted (读未提交):最低级别,任何状况都没法保证。
最高的是Serializable级别,最低的是Read uncommitted级别,固然级别越高,执行效率就越低性能

9,MySQL数据库中默认的隔离级别?
答:为Repeatable read (可重复读)排序

10,oracle的隔离级别有几种?
答:2种 。
Oracle只支持Serializable (串行化)级别和Read committed (读已提交)这两种级别,
其中默认的为Read committed级别

11,乐观锁和悲观销
乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。
悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操做
乐观锁:假设不会发生并发冲突,只在提交操做时检查是否违反数据完整性

12,使用索引查询必定能提升查询的性能吗?为何
索引须要空间来存储,也须要按期维护, 每当有记录在表中增减或索引列被修改时,
索引自己也会被修改. 这意味着每条记录的INSERT,DELETE,UPDATE将为此多付出4,5 次的磁盘I/O. 
由于索引须要额外的存储空间和处理,那些没必要要的索引反而会使查询反应时间变慢.
使用索引查询不必定能提升查询性能

13,简单说一说drop、delete与truncate的区别
truncate 和 delete 只删除数据不删除表的结构(定义)
drop 语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引(index);
依赖于该表的存储过程/函数将保留,可是变为 invalid 状态。


14,DML、DDL、DCL的区别?
DML(data manipulation language)数据操纵语言:
  就是咱们最常常用到的 SELECT、UPDATE、INSERT、DELETE。 主要用来对数据库的数据进行一些操做
DDL(data definition language)数据库定义语言:
  其实就是咱们在建立表的时候用到的一些sql,好比说:CREATE、ALTER、DROP等。
    DDL主要是用在定义或改变表的结构,数据类型,表之间的连接和约束等初始化工做上
DCL(Data Control Language)数据库控制语言:
  是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。

15,什么是视图?以及视图的使用场景有哪些? 视图是一种虚拟的表,对视图的修改不影响基本表, (只暴露部分字段给访问者,因此就建一个虚表,就是视图。 查询的数据来源于不一样的表,而查询者但愿以统一的方式查询, 这样也能够创建一个视图,把多个表查询结果联合起来,查询者只须要直接从视图中获取数据, 没必要考虑数据来源于不一样表所带来的差别)

相关文章
相关标签/搜索