MYSQL常见面试题及基础知识点
大家好,又见面了,我是你们的朋友全栈君。
本人的所有博客都会持续更新添加新的内容,喜欢的可以收藏一波,有什么建议也可以在评论留言,感谢各位!
1.数据库中事务的四大特性(ACID)
事务概念:
事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个SQL语句是相互依赖的。而整个单独单元作为一个不可分割的整体,如果单元中某条SQL语句一旦执行失败或产生错误,整个单元将会回滚。所有受到影响的数据将返回到事物开始以前的状态;如果单元中的所有SQL语句均执行成功,则事物被顺利执行。
⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。
⑵ 一致性(Consistency) 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。 拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。 ⑶ 隔离性(Isolation) 隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。 即要达到这么一种效果:对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。 ⑷ 持久性(Durability) 持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
2、MySQL中myisam与innodb的区别,至少5点 (1)、问5点不同;
1>.InnoDB支持事物,而MyISAM不支持事物 2>.InnoDB支持行级锁,而MyISAM支持表级锁 3>.InnoDB支持MVCC, 而MyISAM不支持 4>.InnoDB支持外键,而MyISAM不支持 5>.InnoDB不支持全文索引,而MyISAM支持。
InnoDB提供提交、回滚、崩溃恢复能力的事务安全(ASID)能力,实现并发控制。
MyISAM提供较高的插入和查询记录的效率,主要用于插入和查询。
memory用于临时存放数据,数据量不大并且不需要较高数据安全性。
archive:如果只有插入和查询可以用,支持高并发的插入操作,但本身不是事务安全。
(2)、2者select count(*)哪个更快,为什么
MyISAM更快,因为MyISAM内部维护了一个计数器,可以直接调取。
(3)mysql中四个存储引擎:innodb、myisam、memory、archive
3.innodb的事务与日志的实现方式
错误日志:记录出错信息,也记录一些警告信息或者正确的信息。 查询日志:记录所有对数据库请求的信息,不论这些请求是否得到了正确的执行。 慢查询日志:设置一个阈值,将运行时间超过该值的所有SQL语句都记录到慢查询的日志文件中。 二进制日志:记录对数据库执行更改的所有操作。
实现方式:事务日志是通过redo和innodb的存储引擎日志缓冲(Innodb log buffer)来实现的。
4.MYSQL的三级模式
(1)模式(逻辑模式):是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
(2)外模式(用户模式):是数据库用户的数据视图,是局部数据的逻辑结构和特征的描述。
(3)内模式(存储模式):一个数据库只有一个内模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。
5.表操作命令:create、alter、drop。 数据操作指令:select、insert、delete、update
select 表名 from … where …
insert into table values()
update 表名 set …
delete from 表名 where …
6.外连接分为内连接、左连接、右连接
内连接是根据某个条件连接两个表共有的数据;
左连接是根据某个条件以及左边的表连接数据,右边的表没数据的话则填null;
右连接是根据某个条件以及右边的表连接数据,左边的表没数据的话则填null;
7.mysql中视图和表的区别以及联系是什么?
区别:
(1)视图是已经编译好的SQL语句,是基于SQL语句的结果集的可视化的表,而表不是。
(2)视图没有实际的物理记录,而表有。
(3)视图是窗口,表是内容。
(4)视图是逻辑概念的存在,不占用物理空间;而表占用物理空间。
(5)表可以及时对它进行修改;而视图只能用创建语句来修改。
(6)视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。
(7)从安全来说,视图可以防止用户直接接触表,因而用户不知道表结构。
(8)表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。
(9)视图的建立和删除只影响视图本身,不影响对应的表。
联系:
视图是在表之上建立的虚表,它的结构(所定义的列)和内容(所有记录)都来自表,视图依据表存在而存在。一个视图可以对应多个表。视图是表的抽象和在逻辑意义上建立的新关系。
删除视图中的数据,数据库中表的数据会一起被删除。
8.安全性操作
授权:grant 权限(列) on 表名 to 用户
所有权限:all priviliges
收回权限:revoke 权限(列) on 表名 from 用户
9.完整性约束
主键约束:primary key
外键约束:foreign key
唯一约束:unique
检查约束:check
非空约束:not null
10.存储过程(procedure)和函数(function)区别
本质上它们都是存储程序。函数只能通过return语句返回单个值或表对象;而存储过程不允许执行return语句,但是可以通过output参数返回多个值。函数限制比较多,不能用临时变量,只能用表变量,还有一些函数都不可用等等;而存储过程的限制相对就比较少。函数可以嵌入在SQL语句中使用,可以在select语句中作为查询语句的一个部分调用;而存储过程一般是作为一个独立的部分来执行。
11.触发器和约束的区别
触发器是由服务器自动激活的,类似于约束,但是比约束更加灵活,可以实施比约束更加复杂的检查和操作,具有更强大的数据控制能力。
12.事务隔离级别
(1)Read uncommitted 未提交读(RU)
最弱的隔离级别,事务中的修改即使没有提交,对其他事务也都是可见的。(即脏读)
(2)Read committed 提交读 不可重复读(RC)
大多数数据库系统的默认隔离级别。
解决了脏读的问题,一个事务从开始直到提交之前,所做的任何修改对其他事务都是不可见的。
一个事务两次执行同样的查询,可能会得到不一样的结果。
(3)Repeatable read 可重复读(RR)
mysql默认隔离级别。
解决了脏读的问题。该级别保证了在同一个事务中多次读取同样记录的结果是一致的。
该级无法解决幻读的问题,幻读是当某个事务在读取某个范围内的记录时,另一个事务又在该范围内插入了新的记录,当之前的事务再次读取该范围的记录时,会产生幻读。
innodb和xtradb存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control)解决了幻读的问题。
(4)Serializable 可串行化
该级是最高的级别,通过强制事务串行执行,避免了幻读的问题,该级会在读取的每一行数据上都加锁,所以可能导致大量的超时和锁争用的问题,
13.索引
MYSQL中索引文件以B树结构存储,索引可分为单列索引和多列索引。
对于多列索引中,一个SQL语句是否用到了索引取决于其数据是否符合最左前缀原则。
MySQL只有对以下操作符才使用索引:<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE。可以在LIKE操作中使用索引的情形是指另一个操作数不是以通配符(%或者_)开头的情形。例如,“SELECT id FROM people WHERE firstname LIKE ‘Li%’;”这个查询将使用索引,但“SELECT id FROM people WHERE firstname LIKE ‘%ike’;”这个查询不会使用索引。
14.关系数据库的特点(记住6个点即可)
1)数据集中控制。在文件管理方法中,文件是分散的,每个用户或每种处理都有各自的文件,这些文件之间一般是没有联系的,因此,不能按照统一的方法来控制、维护和管理。而数据库则很好地克服了这一缺点,可以集中控制、维护和管理有关数据。 2)数据独立性高。数据库中的数据独立于应用程序,包括数据的物理独立性和逻辑独立性,给数据库的使用、调整、优化和进一步扩充提供了方便,提高了数据库应用系统的稳定性。 3)数据共享性好。数据库中的数据可以供多个用户使用,每个用户只与库中的一部分数据发生联系;用户数据可以重叠,用户可以同时存取数据而互不影响,大大提高了数据库的使用效率。 4)数据冗余度小。数据库中的数据不是面向应用,而是面向系统。数据统一定义、组织和存储,集中管理,避免了不必要的数据冗余,也提高了数据的一致性。 5)数据结构化,整个数据库按一定的结构形式构成,数据在记录内部和记录类型之间相互关联,用户可通过不同的路径存取数据。 6)统一的数据保护功能,在多用户共享数据资源的情况下,对用户使用数据有严格的检查,对数据库规定密码或存取权限,拒绝非法用户进入数据库,以确保数据的安全性、一致性和并发控制。
15.join和union的区别
详细请看 http://blog.csdn.net/ljxfblog/article/details/52066006
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/175590.html原文链接:https://javaforall.cn
相关文章
- 【MySQL高级】MySql中常用工具及Mysql 日志
- MySQL字段增长指南(mysql加字段)
- MySQL高阶面试进阶指南(mysql高级面试题)
- MySQL数据库:面试题来了!(mysql数据库面试问题)
- MySQL经典面试题:提升你的职业生涯(mysql经典面试题)
- MySQL公网访问:掌握这些知识点(mysql公网访问)
- MySQL实现高效并发处理(mysql并发处理)
- 解决MySQL输入错误的实践技巧(mysql输入错误)
- MySQL面试题:熟悉成为必要条件(mysql面试题)
- MySQL知识掌握:掌握MySQL的基础知识(mysql知识点)
- 修改MySQL默认端口以提升安全(mysql修改默认端口)
- MySQL面试题精选:拿高分就靠它(mysql常见面试题)
- MySQL数据库:必掌握的重要知识点(mysql数据库重点)
- MySQL测试面试题:了解mysql,拥有实践经验,轻松应对各种MySQL面试问题!(mysql测试面试题)
- MySQL 优化:删除多余的 0(mysql去掉多余的0)
- MySQL字符串链接技巧与实践(mysql字符串链接)
- MySQL查询:应聘者需要知道的(mysql查询面试题)
- Secure Your MySQL Database With AntiInjection Code(mysql防注入代码)
- 无法删除MySQL数据库中的数据?可能出现的几个问题及解决方法(mysql不能删数据)
- MySQL面试题详解,涵盖高级难度考点(mysql面试题高级)
- MySQL 知识点一网打尽,完整的 MySQL 大全指南(mysql大全)
- 快速掌握常用Mysql语句,让你的MySQL更强大(常用mysql语句)
- C语言实现MySQL登录功能(c 使用mysql登录)
- MySQL个人笔记记录数据库操作知识点和技巧(mysql 个人笔记)
- 打开大门,突破91道MySQL面试难关(91道mysql面试题)
- MySQL的非严谨模式对数据库管理的重要影响(mysql 不严谨模式)
- GET MYSQL 免费下载并破解MySQL数据库软件(mysql下载和破解)
- Mysql 数据库丢失别慌来了解一下 MySQL 不见的可能原因及解决办法(mysql不见)
- 如何解决MySQL无法找到驱动的问题(mysql不能找到驱动)
- 深入理解MySQL,避免不等于错误(mysql不等于错误)
- 轻松应对MySQL面试稳扎稳打,敢于挑战,不用怕(mysql 不用怕面试题)