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

【Day 29 】Linux-数据库

一、数据库

(一)相关概念

        1、数据库

        数据库是存储数据的结构化仓库,其底层依赖文件系统来物理存储数据。但这些文件并非杂乱无章,而是通过特定的数据格式(如索引文件、数据页文件等)和组织方式(如行式存储、列式存储)来管理数据,以实现高效的查询、修改和查询。

维度结构化数据(如关系型数据库)非结构化数据(如文本、图片、视频)
存储格式固定格式(表、字段、数据类型)无固定格式(二进制、自由文本等)
组织方式按预定义模型和关系组织无序或松散组织,依赖元数据描述
查询方式支持 SQL 等结构化查询语言,精准高效依赖全文检索、特征提取等,查询复杂度高

        2、RDBMS

        (1)定义:

        关系型数据库管理系统(RDBMS)通过表格(Table) 来组织数据,表格之间通过关系(Relationship) 建立连接。是最常见的数据库类型。

        (2)逻辑结构层级(从高到低)
        1. 数据库

        一个独立的存储空间用于隔离不同业务的数据)。每个数据库包含独立的表、索引、视图等对象,且与其他数据库在逻辑上隔离(默认不共享数据)。

        2. 表

        数据库中最核心的逻辑单元,以二维表格形式组织数据(行 + 列)。例如 “用户表” 包含 “用户 ID、姓名、手机号” 等列,每一行对应一个用户的具体信息。

        3. 行(Row)与列(Column)
  • 行(记录,Record):表中的一行数据,对应一个具体实体。
  • 列(字段,Field):表中的一列数据,,定义了数据的类型和约束,描述实体的一个属性。
        4. 约束(Constraint)

        定义:用于限制数据取值的规则,保证数据的完整性、准确性和一致性。分为以下几类:

(1)主键约束(Primary Key)

        定义:用于唯一标识表中的每一行记录,是表中记录的 “唯一身份标识”。

        核心特性:

  • 唯一性:一个表只能定义一个主键(可由单个字段或多个字段组合而成,即 “复合主键”);
  • 非空性:主键字段的值不能为NULL(必须有具体值);

        作用:保障表的实体完整性(确保每条记录都能被唯一区分,无重复或歧义)。

(2)外键约束(Foreign Key)

        定义:在两个表之间建立关联关系的字段(或字段组合),子表的外键通过引用父表的特定字段,强制维护表之间的参照完整性(即子表的关联记录必须在父表中真实存在)。

        关联对象:子表的外键通常关联父表的主键或唯一键(需能唯一标识父表记录);

        作用:避免子表出现 “孤立数据”(即引用了父表中不存在的记录)。

        约束规则:

  • 插入约束:子表插入新记录时,外键字段的值必须匹配父表中被关联字段的已有值,否则插入失败(例:订单表的 “用户 ID” 必须对应用户表中已存在的 “用户 ID”)。
  • 更新约束:若父表中被关联字段的值更新,子表的外键值可按预设规则同步处理(如ON UPDATE CASCADE:子表外键值随父表同步更新),避免关联关系失效。
  • 删除约束:若删除父表中被关联的记录,子表的外键记录按规则处理,防止孤立数据:
  1. ON DELETE RESTRICT:禁止删除父表记录(若子表仍有关联);
  2. ON DELETE CASCADE:删除父表记录时,自动删除子表中所有关联记录;
  3. ON DELETE SET NULL:删除父表记录时,将子表外键字段设为NULL(需外键允许NULL)。

        关联的完整性保障:

  • 实体完整性:依赖父表的主键 / 唯一键确保被关联记录的唯一性(子表引用的父表记录唯一)
  • 域完整性:外键字段的数据类型、长度必须与父表被关联字段完全一致,避免类型不匹配导致的关联失效。
(3)域约束(Domain Constraint)

        定义:用于限制表中单个字段(列) 合法取值范围的约束集合,为字段定义一个 “域”(即允许的取值集合),确保该字段的所有值都属于这个集合,保障字段级数据的合法性。

        包含的具体约束类型:

  • 数据类型约束:通过定义字段的数据类型(如INTVARCHAR(50)DATE等),限制字段只能存储符合该类型的数据(例:age INT限制 “年龄” 只能是整数)。
  • 非空约束(NOT NULL):限制字段的值不能为NULL(必须填写具体内容,例:username VARCHAR(50) NOT NULL确保 “用户名” 必填)。
  • 检查约束(CHECK):通过自定义条件表达式限制字段的取值(如范围、格式等,例:score DECIMAL(5,2) CHECK (score >= 0 AND score <= 100)限制 “成绩” 在 0-100 之间)。
  • 默认值约束(DEFAULT):为字段指定默认值,当插入记录时未输入此字段的值,自动填充预设值(如 “状态” 默认 “活跃”)

        核心特点:仅作用于单个字段,与其他字段或表无关,专注于保障字段自身取值的合法性。

        5. 索引(Index)

        定义:逻辑上的 “快速查询工具”,基于表中的一列或多列构建,用于加速数据查询(类似书籍的目录)。索引不改变表的逻辑结构,但过多索引会降低数据写入速度,需按需创建。

        6. 视图(View)

        定义:由 SQL 查询定义的虚拟表,逻辑上可像表一样查询,但不实际存储数据。

        作用:简化复杂查询、隐藏敏感数据(如只显示用户的 “姓名” 而隐藏 “身份证号”)。

        7、RDBMS 的核心特性:
        ACID (保证数据操作的可靠性)
  • 原子性(Atomicity):事务要么全完成,要么全不完成(如转账操作要么双方账户都更新,要么都不更新)。
  • 一致性(Consistency):事务执行后,数据从一个合法状态变为另一个合法状态(如余额不能为负)。
  • 隔离性(Isolation):多个事务同时执行时,彼此不干扰。
  • 持久性(Durability):事务完成后,数据修改永久保存。
        8、操作 RDBMS 的标准语言:

        SQL(Structured Query Language,结构化查询语言)是管理关系型数据库的标准编程语言。主要功能包括:

  • 数据操作:查询、插入、更新、删除数据;
  • 结构定义:创建 / 修改 / 删除数据库、表、索引等;
  • 权限管理:控制用户对数据库 / 表的访问权限。
        9、常见的RDBMS:
国际主流数据库所属主体特点
MySQL最初由瑞典 MySQL AB 公司开发,后被 Sun 收购,最终随 Sun 被 Oracle 公司收购(现为 Oracle 旗下产品)

开源免费(社区版),企业版需付费授权,支持关系型数据模型。

轻量、易用,适合中小型应用,广泛用于 Web 开发(如 LAMP/LNMP 架构)。

存储引擎灵活(如 InnoDB 支持事务和外键,MyISAM 侧重读性能)

MariaDB由 MySQL 原开发团队主导,基于 MySQL 分支开发,开源社区维护

完全兼容 MySQL(语法、API 一致),可作为 MySQL 的替代方案,避免 Oracle 对 MySQL 的闭源风险。

新增部分特性(如更多存储引擎、性能优化工具),开源免费,社区活跃

Percona Server由 Percona 公司(开源组织)开发维护

基于 MySQL 的增强版,开源免费,兼容 MySQL 生态。

专注性能优化和高可用性,内置 Percona XtraBackup 等工具,适合对性能要求高的场景(如大型电商、金融)。

PostgreSQL(简称 Postgres 或 PG)开源项目,由加州大学伯克利分校发起,社区维护。

高度合规的关系型数据库,支持复杂数据类型(如 JSON、数组、地理信息)和高级特性(如事务、存储过程、复杂查询优化)。

开源免费,稳定性强,适合企业级应用和数据复杂度高的场景(如科研、政务)

Oracle DatabaseOracle 公司(甲骨文)的旗舰产品

闭源商业数据库,功能全面(支持分布式事务、高并发、容灾备份),稳定性和安全性极强。

适合超大型企业级应用(如金融、电信核心系统),但 licensing 费用高昂

SQL Server微软公司开发的商业数据库

闭源商业软件,与 Windows 系统、.NET 生态集成紧密,易用性强。

支持关系型和非关系型数据(如 JSON、XML),适合中小型企业及微软技术栈的应用(如ASP.NET开发)。

国产数据库所属主体特点
达梦数据库(DM)武汉达梦数据库股份有限公司

完全自主研发,兼容 Oracle 语法和生态,支持事务、高可用和分布式架构。

广泛用于政务、金融等对国产化要求高的领域,满足数据安全合规需求。

人大金仓(KingbaseES北京人大金仓信息技术股份有限公司,源于中科院计算所研究成果

支持关系型数据和多种数据模型,兼容 PostgreSQL 和 Oracle,适配国产化软硬件(如鲲鹏、麒麟系统)。

重点服务政务、能源等行业,强调自主可控和安全性

阿里云 OceanBase阿里巴巴集团自主研发的分布式数据库

原生分布式架构,支持海量数据存储和高并发访问(曾支撑双 11 峰值流量)。

兼容 MySQL 语法,开源社区版与商业版并存,适合互联网、金融等大规模场景。

华为高斯数据库(GaussDB)华为公司研发的系列数据库产品。

涵盖关系型(GaussDB T)、分布式(GaussDB 100)、云原生(GaussDB Cloud)等多种形态。

兼容 Oracle、MySQL 生态,强调与华为硬件(如鲲鹏芯片)的协同优化,服务政企、运营商等领域。

http://www.lryc.cn/news/624719.html

相关文章:

  • 设计模式(四)——责任链模式
  • 福彩双色球第2025095期篮球号码分析
  • 19.8 《3步实现OPT-6.7B无损量化:用自定义数据集省70%显存,精度仅跌2.3%》
  • 终极方案!lightRag/graphRag离线使用tiktoken持续报错SSLError,不改源码,彻底解决!
  • 海洋牧场邂逅海洋旅游:碰撞出新业态的璀璨火花
  • 北斗安心联车辆管理系统优势分析
  • 飞机起落架轮轴深孔中间段电解扩孔内轮廓检测 - 激光频率梳 3D 轮廓检测
  • Conda技巧:修改Conda环境目录,节省系统盘空间
  • 【每天学点‘音视频’】前向纠错 和 漏包重传
  • vue从入门到精通:搭建第一个vue项目
  • 表格内容对比及标记
  • PLC无线组网实现多台RGV搬运机器人输送系统通讯案例
  • SSM从入门到实战:1.4 Spring Bean的生命周期管理
  • 【STM32】STM32H750 CubeMX 配置 USB CDC 虚拟串口笔记
  • ThinkPHP的安装运行和调试
  • MCP协议演进:从SSE到Streamable HTTP的技术革命
  • SAP ABAP IS SUPPLIED
  • 【语法糖】什么是语法糖
  • Java+Vue构建资产设备管理系统,适配移动端与后台管理,实现全生命周期管理,涵盖采购、入库、使用、维护、报废等环节,提供完整源码,便于二次开发
  • 快速搭建项目(若依)
  • CentOS 7 LAMP快速部署WordPress指南
  • linux中的hostpath卷、nfs卷以及静态持久卷的区别
  • python+flask后端开发~项目实战 | 博客问答项目--数据库信息的基本配置与UserModel的创建,映射,关联
  • 【MySQL】超详细入门学习
  • Linux 系统(如 Ubuntu / CentOS)阿里云虚拟机(ECS)上部署 Bitnami LAMP
  • 【Python】Python Socket 网络编程详解:从基础到实践​
  • 云原生俱乐部-mysql知识点归纳(1)
  • 【前端面试题】JavaScript 核心知识点解析(第十四题解析到第二十二题)
  • 【牛客刷题】正六边形阴影面积计算
  • FastRTSP介绍