当前位置: 首页 > news >正文

数据库专题

请简洁描述 MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?

 默认隔离级别

mysql      repeatable-read

oracle     read-committed

  • 脏读:
  • 不可重复读:
  • 幻读: 

CHAR 和 VARCHAR 的区别?

  • char长度是不可变的但varchar长度是可变的
  • 一般用 char 类型的 存放 固定的数据  如 身份证号(18) 电话号  性别 
  • varchar存储可变的数据

在 MySQL 中 ENUM 的用法是什么?

-- Enum(0=>'男', 1=>'女', 2=>'保密')
create table my_enum(gender enum('男', '女', '保密')
)

 创建之后这个这一列只能在enum中选择填入,可规范数据。

枚举的意义

  • 规范数据本身,限定只能插入规定的数据项
  • 节省存储空间

MySQL 中使用什么存储引擎?

在MySQL中的存储引擎有很多种,可以通过“SHOW ENGINES”语句来查看。下面重点关注InnoDB、MyISAM、MEMORY这三种。

show engine   查看存储引擎

InnoDB:

        特点:mysql默认的存储引擎,支持事务和外键操作

        使用场景:对事物的完整性有比较高的要求,在并发条件下要求 数据的一致性

MyISAM:

        特点:不支持事务和外键操作,读取速度快节省资源。

        使用场景:以查询为主,只有很少的更新和删除,对事务的完整性、并发性要求不高。

MEMORY:

        特点:将数据保存在内存中,在需要快速定位记录和其他类似数据环境下可以更快的访问。

        使用场景:通常用于更新不太频繁的表,可快速得到结果。

主键和候选键有什么区别?(外键)

主键(Primary Key):

主键是一种用于唯一标识数据库表中每个记录的属性或组合属性。主键必须满足以下条件:

  • 唯一性:主键值必须唯一,每个记录必须有一个唯一的主键值。
  • 非空性:主键值不能为空。
  • 不可变性:主键值一旦确定,就不能被修改。

主键通常用于连接不同的表中的数据,并确保数据的一致性和完整性。

外键(Foreign Key):

外键是一个关系型数据库表中的字段,它引用了另一个表中的主键。外键用于创建两个表之间的关系。外键必须满足以下条件:

  • 它必须是被引用表的主键。
  • 外键值必须是被引用表的主键值之一。
  • 外键值可以为空(null),如果允许空值的话。

外键可以用来维护数据库表之间的关系,例如,如果一个表存储了订单信息,而另一个表存储了客户信息,那么在订单表中,客户信息可以通过外键来引用客户表中的主键。

候选键(Candidate Key):

候选键是一个可以唯一标识表中每个记录的属性或组合属性。与主键不同的是,一个表可以有多个候选键。候选键必须满足以下条件:

  • 唯一性:候选键值必须唯一,每个记录必须有一个唯一的候选键值。
  • 非空性:候选键值不能为空。

在设计数据库表时,候选键通常用来确定主键。如果一个表中有多个候选键,数据库设计者需要选择其中一个作为主键。

BLOB 和 TEXT 有什么区别?

在关系型数据库中,BLOB(Binary Large Object)和 TEXT 是两种用于存储二进制和文本数据的数据类型。它们之间的区别在于存储的数据类型和大小限制。

BLOB:

         BLOB是用于存储二进制数据的数据类型,例如图像、音频和视频文件等。BLOB数据可以存储为二进制文件或文本格式。BLOB的最大大小取决于所使用的数据库和存储引擎。在 MySQL 中,BLOB 的最大大小可以达到 65,535 字节或 16MB。

TEXT:

        TEXT是用于存储文本数据的数据类型,例如文章、评论和其他文本数据。TEXT可以存储纯文本或格式化文本。与 BLOB 不同,TEXT 只能存储文本数据,不能存储二进制数据。TEXT的最大大小也取决于所使用的数据库和存储引擎。在 MySQL 中,TEXT 的最大大小可以达到 65,535 字节或 4GB。

总之,BLOB和TEXT都是用于存储数据的数据类型,BLOB用于存储二进制数据,而TEXT用于存储文本数据。它们的最大大小和具体的限制取决于所使用的数据库和存储引擎。在使用时,需要根据实际需要选择正确的数据类型。

LIKE 和 REGEXP (正则表达式)操作有什么区别?

在关系型数据库中,LIKE和REGEXP(正则表达式)都是用于匹配字符串的操作符,它们之间的区别在于匹配方式和匹配能力。

LIKE:

        LIKE 是一个通配符匹配的操作符,它可以用来在数据库中搜索与指定模式匹配的字符串。

REGEXP:

       REGEXP 是一个正则表达式匹配的操作符,它可以使用正则表达式来匹配数据库中的字符串。 

如果需要匹配复杂的字符串模式,那么 REGEXP 更适合使用,而对于简单的字符串匹配,使用 LIKE 更为简单和快捷。

SELECT * FROM <tablename> WHERE * REGEXP "^b";
SELECT * FROM <tablename> WHERE * LIKE "%b";

数据库的三大范式?

数据库三大范式是指规范化数据库设计的三个级别,通常称为1NF、2NF和3NF,它们的目的是通过消除数据冗余和不一致性来提高数据库的数据完整性和可维护性。

第一范式(1NF):

        第一范式要求所有的数据库表都必须是原子性的,也就是说,每个表中的列必须是不可再分的基本数据项,不能包含重复的数据或多值数据。例如,如果一个订单表中包含多个商品,那么就需要将订单表和商品表分离开来,以避免重复数据的出现。

        第二范式(2NF):

第二范式要求在满足第一范式的前提下,所有非主键列都必须完全依赖于主键,也就是说,每个表中的非主键列必须与主键列直接相关。例如,如果一个订单表包含订单编号和商品编号,那么商品价格就应该存储在商品表中,而不是在订单表中。

第三范式(3NF):

        第三范式要求在满足第二范式的前提下,任何非主键列之间都不能存在传递依赖关系,也就是说,不能存在非主键列通过其他非主键列间接依赖主键列的情况。例如,如果一个订单表包含订单编号、商品编号和商品类别,那么商品类别就应该存储在商品表中,而不是在订单表中,因为商品类别是由商品编号直接决定的,与订单编号无关。

聚合函数

  • Count(字段)根据某个字段统计总记录数(当前数据库保存到多少条数据)
  • sum(字段)计算某个字段的数值总和
  • avg(字段)计算某个字段的数值的平均值
  • Max(字段)、min(字段)求某个字段最大或最小值

MySQL 中有哪几种锁?

共享锁(Shared Lock):

共享锁也称为读锁,它可以允许多个用户同时读取同一资源,但是不能同时写入。共享锁可以防止数据在读取过程中被修改,从而保证数据的一致性。共享锁不会阻止其他用户读取数据,但是会阻止其他用户对数据进行修改。

使用场景:在需要进行大量读操作,同时需要防止数据被修改的情况下使用。

 

排他锁(Exclusive Lock):

排他锁也称为写锁,它可以防止其他用户对资源进行读取和写入操作,只有获得排他锁的用户才能对资源进行修改。排他锁可以保证数据的一致性,但是会降低系统的并发性。

使用场景:在需要进行写操作时,需要排除其他用户读写操作的情况下使用。

 

行锁(Row Lock):

行锁是针对某一行数据进行加锁,它可以防止其他用户对该行数据进行修改,但是不会影响其他行的操作。行锁的粒度比表锁更细,可以提高系统的并发性,但是会增加系统的开销。

使用场景:在并发操作较高,需要对单行数据进行加锁的情况下使用。

 

表锁(Table Lock):

表锁是针对整个表进行加锁,它可以防止其他用户对该表进行读取和写入操作,但是会降低系统的并发性。表锁的粒度比行锁更粗,可以降低系统的开销,但是会影响系统的并发性。

使用场景:在需要对整个表进行操作,且操作频率较低的情况下使用。

mysql常用关键字

  1. SELECT:用于从数据库中查询数据。
  2. INSERT:用于将新数据插入到数据库表中。
  3. UPDATE:用于更新数据库表中的现有数据。
  4. DELETE:用于从数据库表中删除数据。
  5. WHERE:用于限制查询结果的返回。
  6. AND/OR:用于组合多个查询条件。
  7. ORDER BY:用于按特定列的值对结果进行排序。
  8. GROUP BY:用于对结果进行分组。
  9. JOIN:用于将多个表中的数据联合在一起进行查询。
  10. AS:用于给表或列起别名。
  11. DISTINCT:用于返回不同的值。
  12. COUNT:用于计算匹配查询条件的行数。
  13. MAX/MIN:用于返回某列的最大/最小值。
  14. AVG:用于计算某列的平均值。
  15. SUM:用于计算某列的总和。

MongoDB是什么

MongoDB是一种面向文档的非关系型数据库(NoSQL),它使用JSON格式的文档存储数据,而不是使用表格来表示数据。MongoDB非常适用处理半结构化数据,而且非常灵活,易于扩展和集群。

mongodb 是文档型的非关系
型数据库,其优势在于查询功能比较强大,能存储海量数据。

MongoDB 的功能

面向文档:适合存储对象及 JSON 形式的数据。
动态查询:Mongo 支持丰富的查询表达式。查询指令使用 JSON 形式的标记,可轻
易查询文档中内嵌的对象及数组

MongoDB 的适用场景

高度动态的数据:MongoDB 非常适合实时的插入,更新与查询,并具备网站实时数据存储所
需的复制及高度伸缩性。

大数据量和高吞吐量的应用程序:MongoDB的可扩展性和分布式架构使其适合大规模的数据存储和高吞吐量的应用程序。

Redis、MongoDB 对比

数据模型

  •  Redis是一个基于键值对的内存数据库,支持多种数据结构,如字符串、哈希表、列表、集合、有序集合等。Redis非常适合缓存、计数器、消息队列等场景。
  • MongoDB是一个文档数据库,支持JSON格式的文档存储。MongoDB的文档可以嵌套,而且不需要预定义字段,这使得MongoDB非常适合存储半结构化数据和多变的数据模型。

存储方式

  • Redis把所有数据都存储在内存中,这使得它非常快,但也意味着它的存储能力受到内存大小的限制。Redis支持数据持久化,可以把内存中的数据定期或实时地保存到硬盘上,以防止数据丢失。
  • MongoDB支持将数据存储在内存中或磁盘上,可以选择使用单机或集群部署。MongoDB通过使用索引、复制和分片等技术来提高数据的可靠性、可扩展性和性能。

 

相关文章:

数据库专题

请简洁描述 MySQL 中 InnoDB 支持的四种事务隔离级别名称&#xff0c;以及逐级之间的区别&#xff1f; 默认隔离级别 mysql repeatable-read oracle read-committed 脏读&#xff1a;不可重复读&#xff1a;幻读&#xff1a; CHAR 和 VARCHAR 的区别&#xff1f;…...

浅谈MySQL索引

目录 1.索引的定义 2.索引的原理 3.Hash索引与B Tree索引 4.索引的分类 5.建立索引的注意事项 1.索引的定义 索引是存储引擎用于快速找到数据记录的一种数据结构&#xff0c;它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。 索…...

安装包UI美化之路-通过nsNiuniuSkin来做Electron程序的打包、发布与升级

nsNiuniuSkin从发布之初&#xff0c;因其简单、简洁、高效&#xff0c;受到了非常多公司的青睐&#xff0c;现在已经越来越多的公司采用我们的这套解决方案来制作安装包了&#xff01; 从一个安装包UI插件&#xff0c;逐步演化成一套集美观、安全、简洁、自动化为一体的完整的…...

飞鹅打印机怎么样?飞鹅打印机好用吗?飞鹅打印机怎么知道订单是否漏单?

外卖打印机怎么选?飞鹅打印机好用吗&#xff1f;飞鹅智能云打印机产品专注于云打印的解决方案和技术服务提供。2019 年飞鹅已经成为国内先进的云打印服务提供商&#xff0c;主要是服务美团、饿了么客户&#xff0c;产品主要优势&#xff1a;自动接单、自动打印&#xff0c;无需…...

网络协议(八):传输层-TCP(三次握手、四次挥手原理)

网络协议系列文章 网络协议(一)&#xff1a;基本概念、计算机之间的连接方式 网络协议(二)&#xff1a;MAC地址、IP地址、子网掩码、子网和超网 网络协议(三)&#xff1a;路由器原理及数据包传输过程 网络协议(四)&#xff1a;网络分类、ISP、上网方式、公网私网、NAT 网络…...

最新OpenMVG编译安装与逐命令运行增量式和全局式SfM教程

openmvg是一个轻便的可以逐步运行的SfM开源库&#xff0c;它同时实现了增量式和全局式两种算法。 说明文档地址&#xff1a;https://openmvg.readthedocs.io/en/latest/ github主页地址&#xff1a;https://github.com/openMVG/openMVG 1 编译安装 openmvg的安装比较简单&…...

数据结构与算法系列之插入排序

&#x1f497; &#x1f497; 博客:小怡同学 &#x1f497; &#x1f497; 个人简介:编程小萌新 &#x1f497; &#x1f497; 如果博客对大家有用的话&#xff0c;请点赞关注再收藏 &#x1f31e; 什么是插入排序 有一个已经有序的数据序列&#xff0c;要求在这个已经排好的数…...

Text to image论文精读ALR-GAN:文本到图像合成的自适应布局优化

ALR-GAN是北京工业大学学者提出的一种自适应布局优化生成对抗网络&#xff0c;其可以在没有任何辅助信息的情况下自适应地优化合成图像的布局。 文章发表于2023年&#xff0c;IEEE Transactions on Multimedia&#xff08;TMM&#xff09;期刊&#xff08;CCF B&#xff0c;JCR…...

windows版 redis在同一局域网下互联

项目场景&#xff1a; 同一局域网下各个主机互相连接同一个redis 问题描述 无法连接 原因分析&#xff1a; 没有放行对方的地址 解决方案&#xff1a; 修改配置文件 最重要的一步如下 然后把 redis.windows.conf的文件也照上面的修改一下保持一致 然后安装一下redis服务这…...

Near-Optimal Bayesian Online Assortment of Reusable Resources

摘要 受租赁服务在电子商务中的应用的激励&#xff0c;我们考虑为不同类型的到达消费者提供可重复使用资源的在线分类的收入最大化。我们针对贝叶斯环境中的最优在线策略设计了具有竞争力的在线算法&#xff0c;其中类型随时间独立于已知的异构分布绘制。在初始库存最小值cmin…...

数据库复习2

一. 简答题&#xff08;共1题&#xff0c;100分&#xff09; 1. (简答题) 存在数据库test&#xff0c;数据库中有如下表&#xff1a; 1.学生表 Student(Sno,Sname,Sage,Ssex) --Sno 学号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 主键Sno 2.教师表 Teacher(Tno,Tname) --T…...

公众号运营之竞品分析,教你拆解公众号

知己知彼&#xff0c;百战不殆&#xff0c;公众号运营亦是如此。 当运营者只关注自己账号的时候&#xff0c;很容易陷入某个误区中出不来。这个时候就要拓宽我们的视野&#xff0c;多去看看“外面的世界”&#xff0c;不要只局限于自己的一片小天地中。 看看同领域优秀公众号…...

python常见问题详解

Python python 没有多态&#xff0c;而是鸭子类型 多继承&#xff0c;没有接口&#xff0c;可通过语法糖实现接口的作用 lambda中只能有一句 "/"表示之前的参数是必须是位置参数&#xff0c;”**“表示是后面的必须是关键字参数 Python多进程 Python 多线程是伪多线…...

MyBatis-常用SQL操作

一、动态SQL 1.概述】 1.1动态SQL&#xff1a; 是 MyBatis 的强大特性之一&#xff0c;解决拼接动态SQL时候的难题&#xff0c;提高开发效 1.2分类&#xff1a; if choose(when,otherwise) trim(where,set) foreach 2.if 2.1 做 where 语句后面条件查询的,if 语句是可以…...

DSPE-PEG-TCO;磷脂-聚乙二醇-反式环辛烯科研用化学试剂简介

中文名称 磷脂-聚乙二醇-反式环辛烯 英文名称 DSPE-PEG-TCO 外观&#xff1a;粉末或半固体&#xff0c;取决于分子量。 溶剂&#xff1a;溶于大部分有机溶剂&#xff0c;如&#xff1a;DCM、DMF、DMSO、THF等等。在水中有很好的溶解性 稳定性&#xff1a;冷藏保存&#xff…...

华为OD机试真题Java实现【最小施肥机能效】真题+解题思路+代码(20222023)

最小施肥机能效 某农场主管理了一大片果园,fields[i]表示不同果林的面积,单位:( m 2 m^2 m2),现在要为所有的果林施肥且必须在 n 天之内完成,否则影响收成。 小布是果林的工作人员,他每次选择一片果林进行施肥,且一片果林施肥完后当天不再进行施肥作业。 假设施肥机的…...

【问题记录】【排查问题的方法总结】vue3中数据失去响应式?为什么数据变了,视图只更新了一次就不再更新了?

一、问题概述&#xff1a; 持续请求的数据变动之后&#xff0c;控制台输出绑定的响应式变量 mapObj 的确变了&#xff0c;但是视图上只更新了一次&#xff0c;后续就不再更新了。 二、排查过程&#xff1a; PC上用定时器setInterval模拟数据(全是小于0的数据)更新&#xff0…...

基于遗传算法的柔性生产调度研究(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密…...

Heroku的12条准则

I. Codebase One codebase tracked in revision control, many deploys 要有代码仓库&#xff0c;多版本控制&#xff0c;如使用git来管理代码仓库。 II. Dependencies Explicitly declare and isolate dependencies 明确声明依赖&#xff0c;隔离依赖。强依赖往往会导致连…...

Qt图片定时滚动

目录参考结构PicturePlay.promain.cpppictureplay.hpictureplay.cpppictureplay.ui效果参考 Qt图片浏览器 QT制作一个图片播放器 Qt中自适应的labelpixmap充满窗口后&#xff0c;无法缩小只能放大 可以显示jpg、jpeg、png、bmp。可以从电脑上拖动图到窗口并显示出来或者打开文件…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

什么是VR全景技术

VR全景技术&#xff0c;全称为虚拟现实全景技术&#xff0c;是通过计算机图像模拟生成三维空间中的虚拟世界&#xff0c;使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验&#xff0c;结合图文、3D、音视频等多媒体元素…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积

1.题目介绍 给定一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O…...

redis和redission的区别

Redis 和 Redisson 是两个密切相关但又本质不同的技术&#xff0c;它们扮演着完全不同的角色&#xff1a; Redis: 内存数据库/数据结构存储 本质&#xff1a; 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能&#xff1a; 提供丰…...