0
点赞
收藏
分享

微信扫一扫

零碎的面试题目总结4

耶也夜 2022-04-13 阅读 91
面试java

1、MySQL事务

数据库中的事务是指对数据库执行一批的操作,这些操作最重要么全部执行成功,要么全部失败,不会出现部分成功的情况。

事务的几个特性:

        原子性:事务的整个过程如原子操作,要么最终全部成功,要么最终全部失败,这个原子性是从最终结果来看的,从最终结果来看的,整个过程是不可分割的。

        一致性:一个事务必须使数据库从一个一致性状态变换到另一个一致性状态。从实际业务逻辑来说,最终结果是对的、和程序员所预期结果完全相符。

        隔离性:一个事务的执行不能被其他事务所干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事物之间不能互相干扰。

        持久性:一个事务一旦提交,他对数据库中数据的改变是永久性的。当事务提交之后,数据会持久化到硬盘,修改是永久性的。

2、MySQL索引

        索引是靠某些数据结构和算法来组织数据,最终引导用户快速检索出所需要的数据。

索引有两个特点:

        1、通过数据结构和算法来对原始数据进行一些有效的组织。

        2、通过这些有效的组织,可以引导使用者对原始数据进行快速的检索。

        索引的本质:通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是说,有了这种索引机制,我们可以总是用一种查找方式来锁定数据。

3、视图

        视图是数据库中一个表或者多个表导出的虚拟表,是一种虚拟存在的表,方便用户对数据的操作。

        视图是一个虚拟表,是从数据库中一个或多个表中导出来的表,其内容由查询定义。同真实表一样,试图包含一系列带有名称的列和行数据。

        但是,数据库中只存放了视图的定义,并没有存放视图中的数据。这些数据存放在原来的表中。使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。

        因此,视图中的数据是依赖于原来的表的数据。一旦表中的数据发生改变,显示在视图中的数据也会发生改变。

4、Drop、Truncate、Delete的区别

        Drop(删除表):删除内容和定义,释放空间,简单来说就是把整个表去掉,以后要新增数据是不可能的,除非新建一个表。

        Drop语句将删除表的结构被依赖的约束,触发器,索引,依赖于该表的存储过程/函数将被保留,但其状态会变成:Invalid。如果要删除表定义及其数据,则使用DROP TABLE语句。

        Turncate(清空表中的数据):删除内容、释放空间但不能删除定义(保留表的数据结构),与Drop不同的是,只是清空表数据而已。

        Turncate不能删除具体的行数据,要删就把整个表清空了。

        Delete(删除表中的数据):delete语句用于删除表中的行。delete语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务,记录在日志中保存,以便进行回滚操作。

        Turncate与不带where的Delete:

        Delete只删除数据不删除表的结构(定义)

        Turncate删除表中的所有行,但是表结构机器列、约束、索引等保持不变。

对于外键约束应用的表,不能使用Turncate,而应该使用不带where子句的Delete语句。

由于Turncate记录在日志中,所以他不能激活触发器。Delete语句是数据库操作语言,这个操作会放到rollback segement(它是数据库中的一部分存储空间,用来临时保存当数据库数据发生改变时的先前值)中,事务提交之后才生效。如果有相应的trigger,执行时将被触发。

举报

相关推荐

零碎的面试题,背背背背

零碎内容总结

hadoop零碎知识点总结

容器(零碎笔记)

零碎注意点

零碎的C++

pandas 零碎笔记

java零碎记忆

C++零碎知识

0 条评论