Java面试题大全(数据库部分一)

1、如何获得高效的数据库逻辑结构?

从关系数据库的表中删除冗余信息的过程称为数据规范化,是得到高效的关系型数据库表的逻辑结构最好和最容易的方法。
规范化数据时应执行以下操作:
1.将数据库的结构精简为最简单的形式
2.从表中删除冗余值
3.标识所有依赖与其他数据的数据
规范化过程有几个阶段,分别称作第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)以及第五范式(5NF)。对于所有的实际应用,3NF已经足够了。

2、数据库三范式是什么?

第一范式(1NF):字段具有原子性,不可再分。所有关系型数据库系统都满足第一范式)
数据库表中的字段都是单一属性的,不可再分。例如,姓名字段,其中的姓和名必须作为一个整体,无法区分哪部分是姓,哪部分是名,如果要区分出姓和名,必须设计成两个独立的字段。

第二范式(2NF):
第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。
要求数据库表中的每个实例或行必须可以被惟一地区分。通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主关键字或主键。

第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。简而言之,第二范式就是非主属性非部分依赖于主关键字。

第三范式(3NF)是在第二范式的基础上建立起来的,即满足第三范式(3NF)必须先满足第二范式(2NF)。
第三范式(3NF)要求非主关键字不能依赖于其他非主关键字。即非主关键字之间不能有函数(传递)依赖关系.即不能从一个表的某个字段推出该表的另一个字段。

满足三范式的设计,基本可以解决数据冗余、插入异常、更新异常、删除异常等数据存储问题。

3、SQL语句分为哪几种?

SQL语句主要可以划分为以下几类:
DDL(Data Definition Language):数据定义语言,定义对数据库对象(库、表、列、索引)的操作。
包括:CREATE、DROP、ALTER、RENAME、 TRUNCATE等
DML(Data Manipulation Language): 数据操作语言,定义对数据库记录的操作。
包括:INSERT、DELETE、UPDATE、SELECT等
DCL(Data Control Language): 数据控制语言,定义对数据库、表、字段、用户的访问权限和安全级别。
包括:GRANT、REVOKE等
Transaction Control:事务控制
包括:COMMIT、ROLLBACK、SAVEPOINT等

4、Delete、truncaate、drop都是删除语句,它们有什么分别?

delete 属于DML语句,删除数据,保留表结构,需要commit,可以回滚,如果数据量大,很慢。
truncate 属于DDL语句,删除所有数据,保留表结构,自动commit,不可以回滚,一次全部删除所有数据,速度相对较快。
Drop属于 DDL语句,删除数据和表结构,不需要commit,删除速度最快。

5、Where和having都是条件筛选关键字,它们有什么分别?

WHERE是在数据分组前进行条件过滤, HAVING子句是在数据分组后进行条件过滤,WHERE子句中不能使用聚合函数,HAVING子句可以使用聚合函数。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值