mysql面试题

fengshine fengshine     2023-03-18     465

关键词:

1. 主键  组合主键  外键

主键:

数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。

外键:

在一个表中存在的另一个表的主键称此表的外键。

2.数据库事务的四个特性及含义

数据库事务transanction正确执行的四个基本要素。ACID,原子性(Atomicity)、一致性(Correspondence)、隔离性(Isolation)、持久性(Durability)。
原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
隔离性:隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。
持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

3.视图的作用,视图可以更改么?

视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询;不包含任何列或数据。使用视图可以简化复杂的sql操作,隐藏具体的细节,保护数据;视图创建后,可以使用与表相同的方式利用它们。
视图不能被索引,也不能有关联的触发器或默认值,如果视图本身内有order by 则对视图再次order by将被覆盖。
创建视图:create view XXX asXXXXXXXXXXXXXX;
对于某些视图比如未使用联结子查询分组聚集函数Distinct Union等,是可以对其更新的,对视图的更新将对基表进行更新;但是视图主要用于简化检索,保护数据,并不用于更新,而且大部分视图都不可以更新。

4.drop,delete与truncate的区别

drop直接删掉表 truncate删除表中数据,再插入时自增长id又从1开始 delete删除表中数据,可以加where字句。

(1) DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。

(5) TRUNCATE 和DELETE只删除数据,而DROP则删除整个表(结构和数据)。

(6) truncate与不带where的delete :只删除数据,而不删除表的结构(定义)drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger)索引(index);依赖于该表的存储过程/函数将被保留,但其状态会变为:invalid。

(7) delete语句为DML(data maintainLanguage),这个操作会被放到 rollback segment中,事务提交后才生效。如果有相应的 tigger,执行的时候将被触发。

(8) truncate、drop是DLL(data define language),操作立即生效,原数据不放到 rollback segment中,不能回滚

(9)在没有备份情况下,谨慎使用 drop 与 truncate。要删除部分数据行采用delete且注意结合where来约束影响范围。回滚段要足够大。要删除表用drop;若想保留表而将表中数据删除,如果于事务无关,用truncate即可实现。如果和事务有关,或老师想触发trigger,还是用delete。

(10) Truncate table 表名速度快,而且效率高,因为:
truncate table 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

(11) TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。

(12)对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器

5.数据库范式
1 第一范式(1NF)

在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。
所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。简而言之,第一范式就是无重复的列。

2 第二范式(2NF)

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主关键字或主键、主码。
第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。简而言之,第二范式就是非主属性非部分依赖于主关键字。

3 第三范式(3NF)

满足第三范式(3NF)必须先满足第二范式(2NF)。第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。第三范式就是属性不依赖于其它非主属性。

6.连接的种类
一、外连接
1.概念:包括左向外联接、右向外联接或完整外部联接

2.左连接:leftjoin 或 leftouter join
左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值(null)。

3.右连接:rightjoin 或 rightouter join
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。


4.完整外部联接:full join 或 full outerjoin
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

二、内连接
1.概念:内联接是用比较运算符比较要联接列的值的联接

2.内连接:join 或 inner join


7.表中数据id不连续,查出从数据第5条到第12条记录,写出sql语句

8.已有Order(订单表)和Customer(客人表),将两表数据建立关系,写出sql语句

9.DML是什么概念,写出相关语法

10.DQL是什么概念,写出完整语法,可以举例说明
————————————————
版权声明:本文为CSDN博主「殇莫忆」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_28289405/article/details/80319632

拼多多面试题——java+mysql岗位面试

目录自我介绍 1. 介绍一下mysql索引?为什么用B+树? 2.java类加载机制?双亲委派模型的好处? 查看详情

面试题2:mysql的行锁

mysql的锁是由具体的存储引擎实现的。InnoDB支持行锁和事务Mysql有三种级别的锁定:表级锁定、页级锁定、行级锁定  查看详情

备战面试面试题打卡——mysql相关面试题总结(代码片段)

⭐️写在前面这里是温文艾尔的学习之路👍如果对你有帮助,给博主一个免费的点赞以示鼓励把QAQ👋博客主页🎉温文艾尔的学习小屋⭐️更多文章👨‍🎓请关注温文艾尔主页📝🍅文章发布日期&... 查看详情

mysql面试题

一些试题​​http://wenku.baidu.com/view/3a0275946bec0975f465e247.html?re=view​​​​http://wenku.baidu.com/view/cfb4ae89680203d8ce2f2456.html​​关于mysql性能,设置方面的试题​​http://wenku.baidu.com/view/701c1c0a79563c1ec5d 查看详情

最全91道mysql面试题|附答案解析

原文链接:https://blog.csdn.net/ThinkWon/article/details/104778621 查看详情

最全91道mysql面试题|附答案解析

原文链接:https://blog.csdn.net/ThinkWon/article/details/104778621 查看详情

这个 MYSQL 查询有啥问题?亚马逊面试题

】这个MYSQL查询有啥问题?亚马逊面试题【英文标题】:whatiswrongwiththisMYSQLquery?AmazonInterviewquestion这个MYSQL查询有什么问题?亚马逊面试题【发布时间】:2021-12-3109:49:06【问题描述】:提示问题编写一个查询来识别返回的活跃用户... 查看详情

面试必备:mysql经典50题~学会sql面试不在话下(代码片段)

标题MySQL经典50题解析及答案作者Peter微信756803877公众号尤而小屋时间2021-09-02MySQL经典50题解析及答案下面是网传经典的MySQL50题的习题及参考答案💪,供参考和学习,有更好的方法或者不恰当的地方,欢迎提出来题... 查看详情

mysql面试题pdf整理版下载

mysql面试题pdf整理版下载 下载地址:https://pan.baidu.com/s/1eUIBPB3ZEI4QtmiAUPlX0Q如需提取码:[打开微信]->[扫描下方二维码]->[关注数据与人]输入"500069"获取提取码 坚持电子书籍资源共享,感谢认同!如果取消关注本公众号,... 查看详情

mysql运维基础知识面试问答题

面试题001:请解释关系型数据库概念及主要特点? 面试题002:请说出关系型数据库的典型产品、特点及应用场景?  面试题003:请解释非关系型数据库概念及主要特点?  面试题004:请说出非关系型数据库的典... 查看详情

mysql面试题(代码片段)

 1、MySQL的复制原理以及流程 (1)、复制基本原理流程 1.主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中; 2.从:io线程——在使用startslave之后,负责从master上拉取binlog内容,放进自己... 查看详情

mysql面试题1

1、mysql中唯一索引的关键字是(C )A.fulltextindex B.only index  C.uniqueindexD.index2、下面关于索引描述中错误的一项是(C  )A.索引可以提高数据查询的速度B.索引可以降低数据的插入速度C.innodb存储引擎支持全文索... 查看详情

mysql索引面试题必备(代码片段)

MySQL索引必问面试题1.什么是索引2.索引分类3.索引的基本操作主键索引的创建普通索引的创建唯一索引的创建复合索引的创建4.索引的底层原理5.聚簇索引和非聚簇索引6.无法利用索引的情况参考:https://www.bilibili.com/video/BV19y4y... 查看详情

面试题mysql常见面试题合集(代码片段)

备战实习,会定期的总结常考的面试题,大家一起加油!🎯往期文章:【面试题】计算机网络篇-10道常见面试题p1【面试题】JVM篇-10道常见面试题p1【面试题】Java并发篇-10道常见面试题p1【面试题】Java基础篇-... 查看详情

精品mysql面试题,备战八月99%必问!过不了面试算我的(代码片段)

整合不易,请留下关注,谢谢!MySQL面试题目录前言99%必问的十道题1.唯一索引比普通索引快吗,为什么2.MySQL由哪些部分组成,分别用来做什么3.MySQL查询缓存有什么弊端,应该什么情况下使用,8.0版本对查询缓存有什么变... 查看详情

精品mysql面试题,备战八月99%必问!过不了面试算我的(代码片段)

整合不易,请留下关注,谢谢!MySQL面试题目录前言99%必问的十道题1.唯一索引比普通索引快吗,为什么2.MySQL由哪些部分组成,分别用来做什么3.MySQL查询缓存有什么弊端,应该什么情况下使用,8.0版本对查询缓存有什么变... 查看详情

mysql面试题

MySQL高性能sql编写/SQL语句如何调优查询SQL尽量不要使用select*,而是select具体字段如果知道查询结果只有一条或者只要最大/最小一条记录,建议用limit1 (如果查询字段上有唯一索引,可以不加limit1)尽量避免... 查看详情

mysql查询慢的面试题

...发生了什么”一样,看看你能说出多少了。之前腾讯面试的实话,也问到这个问题了,不过答的很不好,之前没去想过相关原因,导致一时之间扯不出来。所以今天,我带大家来详细扯一下有哪些原因,相信你看完之后 查看详情