Java高频面试题(数据库)
6 数据库
6.1 三个范式是什么
第一范式:字段是最小的单元不可以再分
第二范式:数据库表中的字段必须完全依赖于全部主键而非部分主键
第三范式:非主键外的所有字段必须互不依赖
6.2 MySql两种存储引擎的区别
InnoDB引擎(5.5版本以上默认),InnoDB引擎提供了对事物ACID事务的支持。并且还提供了表锁、行锁、外键的约束。他设计的目标就是处理大数据容量的数据库系统。
MyIASM引擎(5.5版本之前):不提供事务的支持,也不支持行级锁与外键。
6.3 MySql中char与varchar的区别
- char字段的最大长度为255字符,varchar的最大长度在65535个字节。
- char(n)按个字符数进行存储,在空间上可有浪费,而varchar(n)按实际字符数进行存储,在使用空间上比较节省
- char类型的查找效率高,varchar类型的查询效率比较低
- 一般定长的数据使用char,比如身份证号、电话号等,长度不确定的可以受用varchar类型
6.4 drop\delete\truncate三者区别
drop table:删除一张表,属于DDL,不可回滚,表内容和结构全部删除,删除速度快
truncate table:删除表中的所有数据,属于DDL,不可回滚,表中的内容删除,表的结构不会被删除,删除速度快
delete from table:删除表中的全部数据或部分数据,属于DML,可回滚,删除满足where条件的内容,不删除表结构,删除速度慢。
6.5 什么是索引
在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,他是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速查找到所需的内容。
上面是官方回答(看见就恶心,我们只需要理解下面就可以了)
-
索引是帮助数据库高效获取数据的数据结构,他就像一本书的目录,能加快数据库的查询速度
-
一般来说索引本身是很大的,不可能去全部存储在内存中,因此索引往往是存储在磁盘上的文件中(可能存储在单独的索引文件中,也可能和数据一起存储在数据文件中)。
-
我们常常说的组合索引、主键索引、唯一索引默认都是B+树结构组织的索引。
6.6 索引有哪些类型
主键索引:在为表定义一个主键将自动创建主键索引,该索引的值必须是唯一的,不允许有空值
普通索引:MySql中的基本索引类型,没什么限制,允许定义索引的列插入重复值和空值
唯一索引:索引列中的值必须是唯一的,允许有空值
全文索引&#x