JAVA面试题合集九(MYSQL数据库)

1.为什么要使用数据库?
在这里插入图片描述
2.什么是SQL?
SQL是一种结构化查询语言.是一种数据库查询语言.
作用:是一种存取,查询,更新.管理关系数据库系统.
3.什么是MYSQL?
免费,开源.关系型数据库,是最好的RDBMS关系数据库管理系统之一.
4.数据库三范式?
第一范式 每个列都是不可拆分的
第二范式:在第一范式基础上,非主键列完全依赖于主键,而不能依赖于主键的一部分
第三范式 在第二范式基础上,非主键列只依赖于主键,而不能依赖于其他非主键
为了性能而妥协设计数据库
5.MYSQL有关权限的表都有哪几个?
在这里插入图片描述
6.MYSQL都有那几种数据类型?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
7.MYSQL存储引擎 InnoDB和MYISAM的区别?
在这里插入图片描述
Innodb引擎:提供了对数据库的ACID事务的支持.并且还提供了对行级锁和外键的约束,.设计是为了处理大数据容量的数据库系统.需要更多的内存和存储,会在主内存中建立其专用的缓冲池,用于高速缓冲数据和索引,行级锁,并发能力强.增删改更优.底层是B+树索引,INNODB是索引组织表

MyISAM引擎::原本Mysql默认引擎.不提供事务支持,也不提供行级锁和外键的支持,存储空间小,表及锁定,查询的时候MYISAM更优,select count(*) MYISAM更快,因为内部维护了一个计数器.可以直接调取.底层是B+树索引,MYISAM是堆表
8.MyISAM索引与InnoDB索引的区别?
InnoDB 是聚簇索引,MYISAM是非聚簇索引.
InnoDB的主键索引的叶子节点存储着行数据,因此主键索引非常高效。
MyISAM索引的叶子节点存储的是**行数据地址,**需要再寻址一次才能得到数据。

InnoDB非主键索引的叶子节点存储的是主键和其他带索引的列数据,因此查询时做到覆盖索引会非常高效。
9.存储引擎选择?
如果没有特别的需求,使用默认的Innodb即可。
MyISAM:以读写插入为主的应用程序,比如博客系统、新闻门户网站。
Innodb:更新(删除)操作频率也高,或者要保证数据的完整性;并发量高,支持事务和外键。比如OA自动化办公系统。
10.什么是索引?
索引是一个文件,他们包含着对数据表所有记录引用的指针.
索引是一种数据结构. 数据库索引,是数据库管理系统中一个排序的数据结构.以协助快速查询,更新数据库中表的数据.
索引的实现通常使用B树或变种B+树,

更通俗的说,索引就相当于目录。为了方便查找书中的内容,通过对内容建立索引形成目录。索引是一个文件,它是要占据物理空间的
11.索引有哪些优缺点?
在这里插入图片描述
12.索引的使用场景?
where
在这里插入图片描述
索引有哪几种类型?
在这里插入图片描述
13.索引的数据结构?
索引的数据结构和具体的存储引擎有很大关系. 在MYSQL中,使用较多的索引有Hash,B+树索引
Innodb存储引擎默认为B+树索引. 对于hash索引来说,底层就是哈希表,因为在绝大多数为单条记录查询的时候,可以选择哈希索引,查询更快.
大多数场景,选择BTree索引
14.B树和B+树的区别?
在这里插入图片描述
15.在这里插入图片描述
16.Hash索引和B+树索引的底层实现原理?
hash索引底层就是hash表,进行查找时,调用一次hash函数就可以获取到相应的键值,之后进行回表查询获得实际数据。
B+树底层实现是多路平衡查找树
对于每一次的查询都是从根节点出发,查找到叶子节点方可以获得所查键值,然后根据查询判断是否需要回表查询数据。

B+树的的所有节点皆遵循(左节点小于父节点,右节点大于父节点)
B树只适合随机检索,而B+树同时支持随机检索和顺序检索
B+树空间利用率更高,可减少I/O次数,磁盘读写代价更低

17.B+树在满足聚簇索引和覆盖索引的时候不需要回表查询数据?
在B+树的索引中,叶子节点可能存储了当前的key值,也可能存储了当前的key值以及整行的数据,这就是聚簇索引和非聚簇索引。 在InnoDB中,只有主键索引是聚簇索引,如果没有主键,则挑选一个唯一键建立聚簇索引。如果没有唯一键,则隐式的生成一个键来建立聚簇索引。当查询使用聚簇索引时,在对应的叶子节点,可以获取到整行数据,因此不用再次进行回表查询。

18.什么是聚簇索引?何时使用聚簇索引与非聚簇索引?
在这里插入图片描述
19.什么叫联合索引?
MySQL可以使用多个字段同时建立一个索引,叫做联合索引。在联合索引中,如果想要命中索引,需要按照建立索引时的字段顺序挨个使用,否则无法命中索引。
20. 什么是数据库事务?
事务是一个不可分割的数据库操作序列. 也是数据库并发控制的基本单位.
其执行结果必须使数据库从一种一致性状态变为另一种一致性状态.
要么都执行.要么都不执行.
21.事务的四大特性 ACID?
关系型数据库都要遵循ACID

  1. 原子性: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;
  2. 一致性: 执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的;
  3. 隔离性: 并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;
  4. 持久性: 一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响
    22.什么是脏读?幻读?不可重复读?
    脏读(Drity Read):某个事务已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,前一个RollBack了操作,则后一个事务所读取的数据就会是不正确的。

不可重复读(Non-repeatable read):在一个事务的两次查询之中数据不一致,这可能是两次查询过程中间插入了一个事务更新的原有的数据。

幻读(Phantom Read):在一个事务的两次查询中数据笔数不一致,例如有一个事务查询了几列(Row)数据,而另一个事务却在此时插入了新的几列数据,先前的事务在接下来的查询中,就会发现有几列数据是它先前所没有的。
23.什么是事务的隔离级别?MySQL的默认隔离级别是什么?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
InnoDB存储引擎默认使用的是 READ-COMMITTED 可重复度
24.隔离级别和锁的关系?
在Read Uncommitted级别下,读取数据不需要加共享锁,这样就不会跟被修改的数据上的排他锁冲突
在Read Committed级别下,读操作需要加共享锁,但是在语句执行完以后释放共享锁;
在Repeatable Read级别下,读操作需要加共享锁,但是在事务提交之前并不释放共享锁,也就是必须等待事务执行完毕以后才释放共享锁。
SERIALIZABLE 是限制性最强的隔离级别,因为该级别锁定整个范围的键,并一直持有锁,直到事务完成。

25.按照锁的粒度分数据库锁有哪些?锁机制与InnoDB锁算法?
在这里插入图片描述
26. 共享锁和排它锁有什么区别?在这里插入图片描述
27.什么是死锁?怎么解决?
死锁是两个或多个事务在同一资源上相互占用,抢占资源.并请求锁定对方资源,从而导致恶性循环的现象.
在这里插入图片描述
28.数据库的乐观锁和悲观锁是什么?怎么实现的?
数据库管理系统DBMS中的并发控制的任务是指 确定多个事务同时多存取数据库中同一数据时而不破坏事务的隔离性,一致性和数据库的统一性.
乐观锁和悲观锁是控制并发控制的主要手段;

乐观锁: 假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。在修改数据的时候把事务锁起来,通过version的方式来进行锁定。实现方式:一般会使用版本号机制或CAS算法实现。—适用于多读

悲观锁: 假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。在查询完数据的时候就把事务锁起来,直到提交事务。实现方式:使用数据库中的锁机制 —多写

29.什么是游标?
游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果,每个游标区都有一个名字。用户可以通过游标逐一获取记录并赋给主变量,交由主语言进一步处理。
30.什么是存储过程?
在这里插入图片描述
在这里插入图片描述
31.什么是触发器?
触发器: 是指用户定义在关系表上的一类由事件驱动的特殊的存储过程.:
在这里插入图片描述
32…SQL语句主要分类哪几类??
数据库定义语言DDL 主要为CREATE,DROP, ALTER 主要对逻辑结构操作,其中包括表结构,视图和索引
数据库查询语言 DQL SELECT主要为查询为主,支持简单查询,;连接查询
数据库操纵语言 DML INSERT,UPDATE,DELETE

数据库控制语言 DCL GRANT,REMOVE,COMMIT,ROLLBACK
主要为以上操作,即对数据库安全性完整性操作,可以简单的理解为权限控制,
33.超键,候选键,主键,外键分别是什么?
超键: 在关系中能够唯一标识元组的属性称为关系模式的超键 一个属性可以作为一个超键,多个属性在一起也可以作为一个超键.超键包含了主键和外键.
候选键: 是最小的超键,即没有冗余的超键.
主键: 数据表对储存数据对象予以唯一和完整标识的数据列或属性的组合. 一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)
外键: 在一个表中存在另一个表的主键,称之为此表的外键,
34.SQL 约束有哪几种?
NOT NULL: 用于控制字段的内容一定不能为空(NULL)。
UNIQUE: 控件字段内容不能重复,一个表允许有多个 Unique 约束。 唯一约束,允许null
PRIMARY KEY: 也是用于控件字段内容不能重复,但它在一个表只允许出现一个。 不允许null
FOREIGN KEY: 用于预防破坏表之间连接的动作,也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
CHECK: 用于控制字段的值范围。
35.MYSQL 的6种关联查询?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值