mysql数据库高级特性(一)

目录

一,主键

1,特点

2,作用

二,外键

1,特点

2,作用

三,索引

1,特点

2,类型

四,check约束

1,特点

2,作用

3,注意事项

五,存储过程

1,特点

2,作用

3,应用场景


一,主键

1,特点

唯一标识一条记录,不能有重复值

一个表只能有一个主键

可以是单列和多列的组合

自动定义为NOT NULL

2,作用

数据的唯一标识:通过主表之内的每一行数据分配一个唯一的主键值,可以在整个表甚至整个数据库的范围之内识别和差别每一条记录

数据的完整性维护:主键的非空和唯一性约束保证了数据的完整性,当数据库变动时,数据库会自动检查主键值是否满足需要,不满足则拒绝操作,防止出现重复和无效的数据

提高查询性能:由于主键自带索引,再根据主键进行查询时,数据库能够快速定位到目标记录,大大减少了查询所需的时间和资源,尤其是在处理大型数据集更为显著

建立表间关系的基础:在关系型数据库之内,主键常用于建立不同表之间的关联关系,通过将一个表的主键作为另一个表的外键,可以实现多表之间的数据管理和操作

二,外键

1,特点

保证子表之内的数据在附表之内有对应值

可以实现级联更新和删除

外键一定是某一张表的主键

2,作用

维护数据的一致性:外键约束从表之内的外键值必须和主表之内的主键值相对应,防止出现孤立的数据和无效的引用,当在主表之内删除和更新一条记录,数据库会根据外键约束的设置,自动处理从表之内与之关联的记录,保证数据的一致性和完整性

实现多表关联操作

通过外键可以方便的将多个表关联,以便在查询和操作数据时能够从多个有关表之内得到所需的信息,这种关联使得数据库能够模拟现实世界之内的复杂关联,从而更好地组织和管理数据

简化数据模型设计:用外键可以明白的表达不同表之间的关系,用数据库的数据模型更加规范化和易于理解,在设计数据库结构时,合理的用外键可以避免数据的多于存储,提升数据的存储效率和可维护性

三,索引

1,特点

通过快速定位来提升查询速度

可以是唯一的和非唯一的

2,类型

按数据结构分类可分为:B+tree索引,hash索引,fulltext索引

按物理存储分类可分为:聚簇索引,二级索引

按字段特性分类可分为:主键索引,普通索引,前缀索引

按字段个数分类可分为:单列索引,联合索引

四,check约束

1,特点

保证列数满足特定条件

2,作用

数据验证:check约束提供了一种在数据库层面验证数据有效性的机制,它可以防止用户输不符合特定业务规则和逻辑需要的数据,保证数据的精准性和唯一性

维护数据完整性:和主键约束,外键约束等一同,共同构成了维护数据库数据完整性的体系,通过在列上设置check约束,可以避免数据因误操作出现错误,从而保证数据库之内数据的质量和可靠性

简化应用程序逻辑:将数据验证逻辑放在数据库之内,运用check约束,可以减少应用程序之内对数据验证的重复代码的编写,对于应用程序和接口进行更新,可以自动遵循相同的验证规则,提升了代码的可维护性和复用性

3,注意事项

性能影响:虽然check约束有助于保证数据的精准性,但过多复杂的check约束可能会对数据库产生一定影响,特别是在进行大量数据更新操作时,因为每次操作都需要对约束条件进行检查和计算,增加了数据库的处理负担,因此,在运用时应避免设置过于复杂和不必要的约束条件

约束条件的合理性:设置的约束条件应基于合理的业务规则和数据逻辑,既要保证有效的验证数据的有效性,以免影响正常的数据操作和业务流程,同时要考虑到数据的变化和扩展性,避免因为业务需要的变化而导致约束条件频繁更改

数据库兼容性:不同的数据库管理系统对check约束的支持和实现方式不同,在开发跨数据库的应用程序时,需要注意兼容性问题,并进行充分的测试

五,存储过程

一组为了完成特定功能而预先编译好并存储在数据库之内的SQL语句集合

1,特点

封装一段SQL语句,易于复用和维护

可以包含业务逻辑

2,作用

提高性能

存储过程在创建时就经过了预编译和优化,当被调用执行时,无需再次进行编译,可以直接运行,减少了执行时间和资源消耗,提高了数据库的运行效率

增加数据完整性

通过存储过程,数据库管理员可以对用户的操作进行限制和授权,用户只能通过执行特定的存储过程来访问和更改数据,而不能直接对底层表进行操作,从而保证了数据的完整性

简化复杂操作

可以将一系列复杂的SQL语句和业务逻辑封装在一起,形成一个独立的单元,代码更加模块化,易于理解和维护,当需要执行这些复杂操作时,只需调用相应的存储过程即可,无需在应用程序之内重复编写大量的SQL语句

减少网络流量

应用程序和数据库之间的通信通常是通过网络进行的,当运用存储过程时,只需在网络上传输存储过程的名称和参数,而不需要传输大量的SQL语句文本,从而减少了网络传输的数据量,提升了系统的响应速度

3,应用场景

数据处理和转换

当需要对大量数据进行复杂的处理和转换操作时,存储过程是一个很好的选择

业务逻辑封装

对于一些特定的业务逻辑,可以将其封装在存储过程之内,以便在不同的应用程序和模块之内重复运用,这样不仅提升了代码的复用性,还能保证业务逻辑的一致性

系统维护和管理

存储过程可用于执行一些系统维护和管理,通过编写存储过程,可以将这些自动化,定时执行,减少自主操作的工作量和风险

打赏链接:

相关推荐
余槐i6 分钟前
数据没回滚也不报错:@Transactional 自调用失效的 3 种复现与修复
spring boot·mysql·多线程·spring 事务
EatFan22 分钟前
从“框架混战“到“运行时收敛“:2026 年 AI Agent 开发框架的三条路线之争
java·数据库·人工智能·多智能体·ai agent·mcp·agent 框架
小蒜学长29 分钟前
基于SpringBoot的佳新超市管理系统设计与实现系统(代码+数据库+LW)
java·数据库·spring boot·后端·佳新超市管理系统
jinyishu_1 小时前
向量数据库入门:记录结构、索引、检索与选型
数据库
写后端的胖头鱼5 小时前
【高频面试题】FullText 全文索引(MySQL)
数据库·mysql·索引·全文索引
路远的数据库笔记5 小时前
SQL Server迁移国产数据库怎么做?九套口岸库零停机割接实战
数据库·经验分享·sqlserver·dba
樱花落木兰5 小时前
分布式登录实战:Session 会话共享改造,Redis 存储用户登录状态
java·javascript·数据库·redis·分布式·缓存
kaiyou20265 小时前
用户研究岗秋招,统计分析能力怎么学习和证明?
数据库·python·学习
mjhcsp6 小时前
DeepSeek V4.1 Flash 批量处理效能实测
java·前端·数据库
ShineWinsu6 小时前
对于Redis:Steam、Geospatial、Hyperloglog、Bitmap、Bitfield类型的解析
数据库·c++·redis·分布式·缓存·面试·zset