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,应用场景

数据处理和转换

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

业务逻辑封装

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

系统维护和管理

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

打赏链接:

相关推荐
邂逅you3 小时前
用python操作mysql之pymysql库基本操作
数据库·python·mysql
心 一3 小时前
接口安全测试实战:从数据库错误泄露看如何构建安全防线
数据库·安全
点灯小铭4 小时前
基于单片机的PID调节脉动真空灭菌器上位机远程监控设计
数据库·单片机·嵌入式硬件·毕业设计·课程设计
合作小小程序员小小店4 小时前
web开发,学院培养计划系统,基于Python,FlaskWeb,Mysql数据库
后端·python·mysql·django·web app
小高Baby@4 小时前
Redis Key的设计
数据库·redis·缓存
白鲸开源4 小时前
最佳实践:基于Apache SeaTunnel从MySQL同步到PostgreSQL
大数据·mysql·postgresql
灰灰老师4 小时前
在Ubuntu22.04和24.04中安装Docker并安装和配置Java、Mysql、Tomcat
java·mysql·docker·tomcat
q_19132846955 小时前
基于RuoYi框架+Mysql的汽车进销存后台管理系统
数据库·vue.js·spring boot·mysql·汽车·个人开发·若依
wuyunhang1234565 小时前
MySQL----锁
数据库·mysql