
数据库
文章平均质量分 78
数据库
严文文-Chris
这个作者很懒,什么都没留下…
展开
-
关系代数运算转成SQL语句
关系代数运算与SQL语句的转换是数据库学习中的核心内容。常见的关系代数运算包括投影、选择、连接、并、差、笛卡尔积等,这些运算可以通过SQL语句实现。例如,投影(π)对应SQL中的SELECT语句,选择(σ)对应WHERE条件,笛卡尔积(×)对应CROSS JOIN,连接(⨝)对应JOIN ... ON ...,并(∪)对应UNION,差(−)对应EXCEPT,交(∩)对应INTERSECT,重命名(ρ)对应AS。通过具体示例,如查询计算机系学生的学号和姓名,可以清晰地展示如何将关系代数表达式转换为SQL语句原创 2025-05-12 08:24:29 · 382 阅读 · 0 评论 -
什么是回表?
回表是数据库查询中的一个术语,主要出现在使用索引的查询场景中。原创 2025-04-23 15:57:21 · 284 阅读 · 0 评论 -
主键索引为什么不能为NULL?
理解这一限制有助于设计更健壮的数据库结构,避免在业务逻辑中出现标识不明确的情况。原创 2025-04-17 09:19:56 · 342 阅读 · 0 评论 -
【数据库索引的最佳实践】
索引是提高数据库查询性能的关键工具,但不当使用反而会降低系统性能。原创 2025-04-16 16:15:15 · 880 阅读 · 0 评论 -
覆盖索引和联合索引
联合索引是指由多个列组合构成的索引,也称为复合索引或多列索引。例如就是一个在列a、b、c上创建的联合索引。原创 2025-04-16 15:53:09 · 464 阅读 · 0 评论 -
【什么是索引下推?为什么产生索引下推?有索引下推和没有索引下推的区别?】
索引下推是指:👉将部分 WHERE 子句中的条件在索引扫描阶段提前过滤,避免无效回表。只利用索引的前缀列做索引扫描然后对符合前缀条件的记录回表(访问主键或整行数据)再去判断剩余的 WHERE 条件(可能会导致回表很多无效数据)MySQL 在索引扫描阶段就尽量判断更多的 WHERE 条件能提前过滤掉不满足的记录,减少回表次数项目有索引下推(ICP)无索引下推条件过滤位置索引扫描阶段提前判断回表后判断回表次数少(过滤掉不必要回表的数据)多(可能大量无用回表)查询效率高低。原创 2025-04-16 15:47:26 · 468 阅读 · 0 评论 -
聚簇索引和非聚簇索引是什么?区别是什么?
数据和索引是放在一起的:索引结构的叶子节点直接存储了数据行本身。数据的物理顺序与索引顺序一致:表中的数据行按照索引列排序。每个表只能有一个聚簇索引,因为数据只能有一种物理排序方式。主键适合使用聚簇索引。对于频繁查询但不需要排序的列,使用非聚簇索引。如果查询经常涉及多列组合搜索,考虑使用复合索引。如果你需要,我可以画一张聚簇与非聚簇索引的数据结构图来辅助理解。是否需要?原创 2025-04-16 14:58:40 · 485 阅读 · 0 评论 -
InnoDB MVCC在READ COMMITTED与REPEATABLE READ下的关键区别
ReadView生成• RC每次查询新建,RR事务内复用数据可见性• RC看到最新提交,RR看到事务开始时的快照幻读处理• RC允许幻读,RR通过MVCC+间隙锁避免实践建议• 需要精确一致性选RR• 追求高并发且可接受非重复读选RC理解这些差异有助于根据业务需求选择合适的隔离级别,并在出现一致性问题时快速定位原因。原创 2025-04-15 14:20:27 · 860 阅读 · 0 评论 -
什么是索引?为什么使用索引?索引有哪些数据结构?如何使用索引?
索引(Index)是数据库中一种特殊的数据结构,类似于书籍的目录。它通过建立特定列(或列组合)的快速访问路径,帮助数据库系统高效定位数据,避免全表扫描。原创 2025-04-15 11:26:22 · 382 阅读 · 0 评论 -
InnoDB的MVCC实现原理?MVCC如何实现不同事务隔离级别?MVCC优缺点?
它通过保存数据在不同时间点的多个版本,让不同事务在同一时刻可以看到不同版本的数据,以此来减少锁竞争,提高数据库的并发性能,同时保证事务的隔离性。在不同的事务隔离级别下,InnoDB根据事务的开始时间和记录的隐藏列信息来判断哪些版本的数据对当前事务是可见的。事务会对读取的数据加共享锁,对写入的数据加排他锁,事务之间是串行执行的,避免了所有并发问题,但会导致并发性能极低。事务可以读取到其他事务未提交的数据,不会考虑数据版本的可见性规则,可能会出现脏读问题。这样,就可以保留数据的历史版本,供其他事务查看。原创 2025-04-14 15:21:16 · 724 阅读 · 0 评论 -
MVCC是什么?MVCC的作用是什么?MVCC实现方式有哪些?
MVCC(Multi-Version Concurrency Control,多版本并发控制)是数据库管理系统中的一种并发控制机制,它通过来实现和。原创 2025-04-14 14:50:17 · 841 阅读 · 0 评论 -
MySQL存储引擎:存储什么意思?引擎什么意思?存储引擎是什么?在MySQL中有什么作用?
••(将物品或信息放置在特定地方,以便后续使用)。◦ 例:粮食存储在仓库中。◦ 例:计算机将数据存储在硬盘里。••(如仓库、硬盘、内存等)。◦ 例:云存储、数据存储。在数据库(如MySQL)中,“存储”特指:•(如何写入磁盘)。•(表、行、列的物理结构)。••(将燃料转化为动力的机械装置)。◦ 例:汽车引擎、飞机引擎。•(任何系统中起关键作用的组件)。◦ 例:搜索引擎、游戏引擎。•:决定MySQL如何等。•• 汽车的“引擎”决定动力性能(燃油、电动)原创 2025-04-14 14:23:22 · 328 阅读 · 0 评论 -
事务是什么?有什么作用?mysql如何实现事务?
是数据库管理系统(DBMS)中的核心机制,用于确保一组数据库操作(如增删改查)的。原创 2025-04-14 10:35:09 · 964 阅读 · 0 评论 -
【意向锁的使用场景有哪些?】
意向锁(Intention Lock)是MySQL InnoDB引擎中一种特殊的表级锁,用于提高锁冲突检测效率。以下是意向锁的核心使用场景和工作原理。原创 2025-04-11 15:36:17 · 284 阅读 · 0 评论 -
事务隔离和锁有什么关系?
事务隔离和锁是数据库并发控制的两个核心机制,二者紧密关联但职责不同: **事务隔离**定义了事务之间的可见性规则(即“看到什么数据”),而**锁**是实现这些规则的技术手段(即“如何保证数据安全”)。原创 2025-04-11 15:25:53 · 873 阅读 · 0 评论 -
MySQL逻辑架构有什么?
MySQL的逻辑架构分为多层,各层协同工作以处理SQL查询、管理数据存储并保证高效访问。原创 2025-04-11 14:54:02 · 882 阅读 · 0 评论 -
【MVCC快照如何实现】
MVCC(Multi-Version Concurrency Control)是现代数据库实现事务隔离级别的核心技术,它通过数据多版本和快照机制来实现高效的并发控制。下面我将详细解析MVCC快照的实现机制。原创 2025-03-26 15:28:54 · 921 阅读 · 0 评论 -
【脏读、不可重复读、幻读区别】
幻读:通常需串行化(Serializable)隔离级别彻底避免,但部分数据库(如MySQL的RR)通过机制优化也可防止。理解这些区别有助于根据业务需求选择合理的事务隔离级别,平衡数据一致性与并发性能。脏读:通过读已提交(RC)及以上隔离级别避免。不可重复读:需可重复读(RR)及以上隔离级别。原创 2025-03-26 14:42:16 · 152 阅读 · 0 评论 -
【数据库事务隔离级别的实现原理是什么】
事务隔离级别的实现主要依赖于数据库系统的并发控制机制,包括和**多版本并发控制(MVCC)**两大核心技术。下面我将详细解析不同隔离级别的实现原理。原创 2025-03-26 14:20:20 · 635 阅读 · 0 评论 -
【数据库发展史】
数据库的发展历史可以追溯到20世纪50年代,随着计算机技术的进步和数据管理需求的演变,数据库系统经历了多个阶段的变革。未来,数据库将继续在实时分析、异构数据集成和智能化管理方向突破。数据库技术的发展始终围绕。原创 2025-03-25 20:18:00 · 1042 阅读 · 0 评论 -
MyBatis中#和$的符号区别
mybatis中使用Mapper.xml里面的配置进行sql查询,经常需要动态传递参数,例如,我们根据用户的姓名来删选用户是,sql如下:Select * from user where name=“Jack”;上述sql中,我们希望name的参数jack是动态可变的,既不同的时刻根据不同的姓名来查询用户,在Mapper.xml文件中使用如下的生气了可以实现动态传递参数 name:Se...原创 2018-09-02 23:41:42 · 773 阅读 · 4 评论 -
Mybatis_plus学习(一)
Mybatis_plus学习(一)原创 2019-06-09 21:57:17 · 150 阅读 · 2 评论 -
Mybatis 学习(一)
文章目录概述Mybatis的历史及发展来源为什么使用MybatisJDBC七步骤Mybatis的优化 (1)连接获取和释放 (2)SQL统一存取 (3)传入参数映射和动态SQL (4)结果映射和结果缓存 (5)解决重复SQL语句问题小结概述Mybatis 是一款持久层框架。支持定制sql,存储过程以及高级映射,而且它避免了JDBC代码和手动设置参数,可以用XML或注解来配置和映射接口,jav...原创 2019-06-17 12:17:46 · 215 阅读 · 3 评论 -
Mybatis学习(二)
Mybatis学习(二)原创 2019-06-09 21:57:55 · 160 阅读 · 1 评论 -
Mybatis_plus学习(二)
Mybatis_plus学习(二)原创 2019-06-09 21:57:35 · 144 阅读 · 1 评论 -
数据库连接池
数据库连接池配置属性目前数据库连接池种类繁多,不同种类基本的配置属性大同小异,例如c3p0、Proxool、DDConnectionBroker、DBPool、XAPool、Druid、dbcp,这里我们以dbcp为例说说主要的配置项:#最大连接数量:连接池在同一时间能够分配的最大活动连接的数量,,如果设置为非正数则表示不限制,默认值8maxActive=15#最小空闲连接:连接池中容许...原创 2019-02-24 21:43:31 · 238 阅读 · 3 评论 -
Mysql跨表更新 多表update sql语句总结
今天和同事遇到一个同时更新多表的sql语句,有一些收获,和大家分享一下.假定我们有两张表,一张表为Product表存放产品信息,其中有产品价格列Price;另外一张表是ProductPrice表,我们要将ProductPrice表中的价格字段Price更新为Price表中价格字段的80%。 第一种方法UPDATE product p, productPrice pp SET pp.p...原创 2018-12-21 17:19:14 · 2206 阅读 · 2 评论 -
mysql日期函数,时间函数大全
mysql获取当前时间,日期函数获得当前日期函数 date(now()) 获得当前时间函数 time(now()) 获得当前日期+时间(date + time)函数:sysdate() MySQL 获得当前时间戳函数:current_timestamp, current_timestamp() MySQL 日期转换函数、时间转换函数 把日期时间转化为字符串格式 da...转载 2018-12-21 17:01:39 · 1701 阅读 · 1 评论 -
sql语句之日期比较
1.判断是否在某个日期区间内Where CheckDate Between startTime And endTimeWhere CheckDate >= '2013-01-01' And CheckDate < '2013-01-02'日期格式:2013-01-012.判断是否大于某天Where CheckDate >startTime 或大于等于:Whe...原创 2018-12-20 19:59:36 · 8131 阅读 · 1 评论 -
关于SQL Server的日期时间数据类型
SQL Server 2008除了DateTime和SmallDateTime之外,又新增了四种时间类型,分别为:date,time,datetime2和datetimeoffset。各时间类型范围、精度一览表:数据类型时间范围精度datetime1753-01-01 到 9999-12-3100:00:0原创 2018-01-14 21:13:43 · 4493 阅读 · 6 评论 -
如何配置文件DSN
机房收费系统错误381原创 2016-08-07 21:32:28 · 629 阅读 · 19 评论