首页 > 其他分享 >面试题以及一些问题概述

面试题以及一些问题概述

时间:2024-02-27 16:22:16浏览次数:32  
标签:INDEX 面试题 范式 CREATE 事务 索引 概述 一些 主键

1 数据库三大范式是什么

数据库的三大范式是指关系数据库设计中的三个规范化级别,用于规范化数据库中的数据结构,提高数据的一致性和减少数据冗余。这三大范式分别是:

1. 第一范式(1NF):要求数据库表中的每个字段都是原子性的,不可再分。也就是说,每个字段中的数据不能包含多个值或多个属性。如果一个字段中包含了多个值,就需要将其拆分成多个独立的字段。

2. 第二范式(2NF):在满足第一范式的基础上,要求数据库表中的非主键字段必须完全依赖于主键。也就是说,每个非主键字段必须完全依赖于主键,而不能依赖于其他非主键字段。如果存在部分依赖或传递依赖的情况,就需要将其拆分成多个独立的表。

3. 第三范式(3NF):在满足第二范式的基础上,要求数据库表中的非主键字段之间不能存在传递依赖关系。也就是说,每个非主键字段之间应该是互相独立的,不能通过其他非主键字段推导出来。如果存在传递依赖的情况,就需要将其拆分成多个独立的表。

通过遵循这三大范式,可以有效地规范化数据库的结构,减少数据冗余和数据更新异常,提高数据的一致性和查询效率。但需要注意的是,过度规范化也可能导致查询复杂性增加,需要在实际设计中进行权衡。

2 mysql有哪些索引类型,分别有什么作用

Mysql索引 可以从 存储方式,逻辑角度,实际使用角度进行分类

存储方式分为  B-树索引和HASH索引两类

B-树索引可以进行全键值、键值范围和键值前缀查询,也可以对查询结果进行 ORDER BY 排序。但 B-树索引必须遵循左边前缀原则,要考虑以下几点约束:

查询必须从索引的最左边的列开始。
查询不能跳过某一索引列,必须按照从左到右的顺序进行匹配。
存储引擎不能使用索引中范围条件右边的列
——

哈希索引

HASH 索引不是基于树形的数据结构查找数据,而是根据索引列对应的哈希值的方法获取表的记录行

逻辑区分

---普通索引    

它没有任何限制,唯一任务就是加快系统对数据的访问速度。

普通索引允许在定义索引的列中插入重复值和空值。

创建普通索引时,通常使用的关键字是 INDEX 或 KEY

CREATE INDEX index_id ON tb_student(id);

 

---唯一索引

唯一索引列的值必须唯一,允许有空值。如果是组合索引,则列值的组合必须唯一。

创建唯一索引通常使用 UNIQUE 关键字。

CREATE UNIQUE INDEX index_id ON tb_student(id);

 

---主键索引

主键索引是一种特殊的唯一索引,不允许值重复或者值为空。

创建主键索引通常使用 PRIMARY KEY 关键字。不能使用 CREATE INDEX 语句创建主键索引

---空间索引

创建空间索引的列必须将其声明为 NOT NULL,空间索引只能在存储引擎为 MyISAM 的表中创建。

空间索引主要用于地理空间数据类型 GEOMETRY。对于初学者来说,这类索引很少会用到

CREATE SPATIAL INDEX index_line ON tb_student(line);

 

---全文索引

全文索引允许在索引列中插入重复值和空值。

不过对于大容量的数据表,生成全文索引非常消耗时间和硬盘空间。

创建全文索引使用 FULLTEXT 关键字。

CREATE FULLTEXT INDEX index_info ON tb_student(info);

 

实际使用区分

单列索引

单列索引就是索引只包含原表的一个列。在表中的单个字段上创建索引,单列索引只根据该字段进行索引。

单列索引可以是普通索引,也可以是唯一性索引,还可以是全文索引。只要保证该索引只对应一个字段即可

CREATE INDEX index_addr ON tb_student(address(4));

  

多列索引

多列索引是在表的多个字段上创建一个索引。该索引指向创建时对应的多个字段,可以通过这几个字段进行查询。但是,只有查询条件中使用了这些字段中第一个字段时,索引才会被使用

CREATE INDEX index_na ON tb_student(name,address);

 

 

3 事务的特性和隔离级别   

事务的四大特性:
原子性(Atomicity):事务是最小的工作单元,不可再分。
一致性(Consistency):事务必须保证多条DML语句同时成功或同时失败。
隔离性(Isolation):一个事务不会影响其他事务的运行,互不干扰。事务之间隔离,四个隔离级别。
持久性(Durability):事务一旦提交成功,它对数据库中数据的改变就是永久性的
-----------------

第一级别:读未提交 (Read Uncommited)

对方事务还未提交,但当前事务可以读取到对方未提交的数据
读未提交存在脏读现象:表示读到了脏的数据,因为还未提交到硬盘,数据及其不稳定。(所有数据库都是从第二级别起步,第一级别太低)

第二级别:读已提交 (Read Commited)

当前事务只能读取到对方事务已经提交的数据。由于未提交的读不到,则解决了脏读现象。
存在的问题:不可重复读,即可能每次读的数据不一样,做不到数据从头到尾查的数据是一样的

第三级别:可重复读 (Repetable Read)

 

 

第四级别: 序列化(串行)读 (Serializable) (同步)

 

解决了所有问题
但是效率低,需要事务排队

 

 

 

使用第三方的话不安全怎么办?
基于官方api封装,一定意义上来说稳定,但是还是无法规避不安全的成分在,但是就算换做人工来说,相似无二。

更多 链接查看

https://blog.csdn.net/DominicJi/article/details/83861977?ops_request_misc=&request_id=&biz_id=102&utm_term=python%E8%80%81%E7%94%B7%E5%AD%A9%E6%9C%88%E8%80%83&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-3-83861977.142

 

https://blog.csdn.net/CXY00000/article/details/121341136

 

标签:INDEX,面试题,范式,CREATE,事务,索引,概述,一些,主键
From: https://www.cnblogs.com/wzh366/p/18037119

相关文章

  • PCB &电路&电路板的外设接口的一些猜测
    以下只是我的猜测,毕竟初入硬件,错误的话请见谅。1.PCB上的电路怎么形成:https://zhuanlan.zhihu.com/p/395279669:即,附膜--印刷电路--光感保护--蚀刻去铜--剩下的铜即为电路2.我在想:    以上是PCB的设计方式,那对应的UART硬件针脚是怎么和PCB一起用的?    CPU......
  • 面试题(一)—— CSS 盒模型
    一、什么是 CSS盒模型CSS盒模型是指在网页中,每个元素都被看作是一个矩形的盒子,这个盒子包含了元素的内容(content)、内边距(padding)、边框(border)和外边距(margin)。 二、标准盒模型与怪异盒模型1、box-sizing两个常用参数:content-box:默认值。标准盒模型border-box:怪异盒模......
  • ipmitool是很常见的物理机管理工具,这里分享一些ipmitool经常用到的一些命令
    ipmitool-Ilanplus-H$oob_ip-Uroot-P密码poweroff(硬关机,直接切断电源)ipmitool-Ilanplus-H$oob_ip-Uroot-P密码powersoft(软关机,即如同轻按一下开机按钮)ipmitool-Ilanplus-H$oob_ip-Uroot-P密码poweron(硬开机)ipmitool-Ilanplus-H$oo......
  • seata面试题
    1、请介绍一下你对SEATA的理解以及你对分布式事务的看法SEATA是一个开源的分布式事务解决方案,它旨在解决分布式系统中的数据一致性问题。我理解的分布式事务是指涉及多个服务或数据库的操作,需要保证这些操作要么全部成功,要么全部失败,以确保数据的一致性。在传统的单体应用中,可......
  • 高通音频框图概述
    音频框图概述|FrontEndPCMs|SoCDSP|BackEndDAIs|Audiodevices|*************PCM0<------------>**<----DAI0----->CodecHeadset**PCM1<------------>*......
  • P1240+P1350+ AT_abc282_g得出的一些dp技巧
    在遇到一些题目在设状态时,前面的状态对后面的有影响,比如在P1240和P1350中前面的放置会对后面的有影响,正常的状态是不行的。以前可能考虑状态压缩,但现在我们可以通过发现前面状态的一些共性,比如在P1240+P1350中前面放了k个車那么一定有k行被占用,所以就不用记录之前那些行被占用了。......
  • Hystrix在工作中的一些实践
    代码改变世界  Hystrix 提供了一套相对完善的服务隔离、熔断、降级方案,但是在分布式和微服务应用时,仍然有一些需求没有实现,包括:Hystrix虽然支持请求缓存,但是很鸡肋,尝试过的人都懂...而无法面对这种场景:场景1:无法先调用缓存再执行HystrixCommand,以提高性能场景2:无法先......
  • 代码随想录 | 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.0
    LeetCode:24.两两交换链表中的节点-力扣(LeetCode)思路:第一步:两两交换要考虑循环什么时候退出,当cur指针.next是null是就到尾部了,同理,链表不是奇数就是偶数,cur.next.next是空也是。第二步循环条件判断完了接下来要实现交换,如图所示,按步骤来就好,提前将1,2,3存好,接下来按图......
  • clickhouse 进行建表期间的一些优化
    clickhouse优化:批量插入次数设置10000-15000 小批量频繁插入,每次插入都会产生一个part。所以clickhouse的写入,是提倡大批次插入的。(五个字段一万条数据大概在1~2M左右)--partitionbydate_time设置partitionPARTITIONBYtoYYYYMMDD(event_date)按天分区SETTIN......
  • 看看 ChatGPT 给的前端面试题
    以下是一些可能出现在中国互联网公司前端开发工程师面试中的题目:解释一下CSS盒模型,并说明其中的各个部分。请解释一下响应式设计是什么,以及你是如何实现响应式设计的。什么是跨域资源共享(CORS)?它的工作原理是什么?如何在前端处理跨域请求?请解释一下JavaScript中的事件委托(E......