Jorgen's blog Jorgen's blog
首页
  • 平台架构
  • 混合式开发记录
  • 推送服务
  • 数据分析
  • 实时调度
  • 架构思想

    • 分布式
  • 编程框架工具

    • 编程语言
    • 框架
    • 开发工具
  • 数据存储与处理

    • 数据库
    • 大数据
  • 消息、缓存与搜索

    • 消息队列
    • 搜索与日志分析
  • 前端与跨端开发

    • 前端技术
    • Android
  • 系统与运维

    • 操作系统
    • 容器化与 DevOps
  • 物联网与安全

    • 通信协议
    • 安全
    • 云平台
newland
  • 关于我
  • 终身学习
  • 关于时间的感悟
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

jorgen

Love it, make mistakes, learn, keep grinding.
首页
  • 平台架构
  • 混合式开发记录
  • 推送服务
  • 数据分析
  • 实时调度
  • 架构思想

    • 分布式
  • 编程框架工具

    • 编程语言
    • 框架
    • 开发工具
  • 数据存储与处理

    • 数据库
    • 大数据
  • 消息、缓存与搜索

    • 消息队列
    • 搜索与日志分析
  • 前端与跨端开发

    • 前端技术
    • Android
  • 系统与运维

    • 操作系统
    • 容器化与 DevOps
  • 物联网与安全

    • 通信协议
    • 安全
    • 云平台
newland
  • 关于我
  • 终身学习
  • 关于时间的感悟
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 时序数据库
  • Postgres
  • MongoDB入门与实践
  • NewSQL数据库:关系型与NoSQL的完美结合
  • Redis入门与实践:高性能键值数据库指南
  • Redis入门与实践
  • SQL基础:关系型数据库的语言
  • 关系型数据库基础
  • 关系型数据库基础与SQL入门
  • 关系型数据库基础理论
    • 前言
    • 关系型数据库概述
      • 什么是关系型数据库?
      • 关系型数据库的特点
    • 数据库核心概念
      • 表、行和列
      • 键的概念
      • 数据类型
    • 数据库设计原则
      • 数据库范式
      • ER模型
    • SQL语言基础
      • DDL、DML和DCL
      • 常用SQL语句示例
    • 关系型数据库产品
    • 结语
  • 关系数据库设计与SQL基础
  • 数据库分类与选型指南
  • 数据库性能优化与调优实战指南
  • 数据库索引与性能优化
  • 数据库索引原理与优化
  • 数据库设计与数据建模:从概念到实践
  • 数据库事务与并发控制:保证数据一致性的核心技术
  • 数据库事务与并发控制:保证数据一致性的核心机制
  • 数据库安全与权限管理-保护数据的基石
  • 数据库备份与恢复策略-确保数据安全的最后一道防线
  • 数据库分布式架构:从CAP理论到分片策略的全面解析
  • 数据库监控与运维-确保数据库健康运行的守护者
  • 数据库高可用方案-构建永不掉线的数据库架构
  • 数据库连接池技术:提升应用性能的关键组件
  • 数据库查询优化与执行计划分析-提升SQL性能的关键技术
  • 数据库迁移策略:平滑过渡的关键步骤与技术实现
  • 数据库缓存策略:提升系统性能的关键武器
  • 数据库性能问题诊断与排查-从现象到根源的系统化方法
  • 数据库版本管理与演进-构建平滑升级的技术路径
  • 数据库分片与分布式数据管理-构建可扩展数据架构的核心技术
  • 数据库云服务与托管解决方案-构建现代化数据架构的必经之路
  • database
Jorgen
2023-11-15
目录

关系型数据库基础理论

# 前言

大家好,我是Jorgen!👋 在我的博客中,我们已经聊过时序数据库、PostgreSQL和MongoDB这些具体的技术。但是,我发现了一个重要的问题:我们好像跳过了数据库学习的第一步!就像学编程先不学语法直接写框架一样,有点本末倒置了不是吗?😅

今天,我想和大家一起回到基础,聊聊关系型数据库的那些基本概念。无论你是刚入门的小白,还是想巩固基础的老手,相信这篇文章都能帮你理清思路。准备好了吗?让我们一起开启这段基础之旅吧!

# 关系型数据库概述

# 什么是关系型数据库?

关系型数据库,简称RDBMS(Relational Database Management System),是我们最常见的一种数据库类型。简单来说,它就是通过"关系"来组织和存储数据的数据库系统。

提示

关系型数据库的核心思想是将数据存储在二维表格中,每个表都有明确的列定义和行记录,通过键值关联这些表之间的关系。 ::_

想象一下Excel表格,每一列都有固定的标题和类型,每一行都是一条完整的数据记录。关系型数据库就是这种结构的升级版,更强大、更安全、更高效!

# 关系型数据库的特点

关系型数据库有几个非常鲜明的特点:

  1. 数据以表格形式存储:数据被组织成行和列的表格,每个表都有一个唯一的名称。

  2. 使用结构化查询语言(SQL):SQL是与关系型数据库交互的标准语言,用于定义、操作和控制数据。

  3. 数据完整性:通过主键、外键、约束等机制确保数据的准确性和一致性。

  4. ACID特性:保证事务的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

  5. 支持复杂查询:可以通过JOIN操作关联多张表,执行复杂的数据分析。

# 数据库核心概念

# 表、行和列

在关系型数据库中,最基本的概念就是表、行和列:

  • 表(Table):类似于Excel中的工作表,存储特定类型的数据集合。
  • 行(Row):表中的一条记录,代表一个完整的实体。
  • 列(Column):表中的一个字段,定义了数据的属性和类型。
CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    email VARCHAR(100),
    age INT
);
1
2
3
4
5
6

上面的代码创建了一个名为users的表,包含4列:id、name、email和age。

# 键的概念

键是关系型数据库中非常重要的概念,它帮助我们建立表之间的关系:

  1. 主键(Primary Key):唯一标识表中每一行的字段或字段组合,不能为空且必须唯一。

  2. 外键(Foreign Key):一个表中的字段,引用另一个表的主键,用于建立表之间的关系。

  3. 候选键(Candidate Key):能够唯一标识表中每一行的字段或字段组合,一个表可以有多个候选键。

  4. 超级键(Super Key):包含候选键的键,能够唯一标识表中的每一行。

CREATE TABLE orders (
    id INT PRIMARY KEY,
    user_id INT,
    order_date DATE,
    total_amount DECIMAL(10,2),
    FOREIGN KEY (user_id) REFERENCES users(id)
);
1
2
3
4
5
6
7

在这个例子中,id是orders表的主键,user_id是外键,引用了users表的id字段。

# 数据类型

关系型数据库支持多种数据类型,常见的数据类型包括:

  1. 数值类型:INT、DECIMAL、FLOAT等
  2. 字符串类型:CHAR、VARCHAR、TEXT等
  3. 日期时间类型:DATE、TIME、DATETIME等
  4. 布尔类型:BOOLEAN
  5. 二进制类型:BLOB、BINARY等

选择合适的数据类型对于数据库性能和存储效率非常重要。例如,如果存储固定长度的字符串,使用CHAR比VARCHAR更高效;如果存储大段文本,使用TEXT比VARCHAR更合适。

# 数据库设计原则

# 数据库范式

数据库范式是数据库设计中的一系列规则,目的是减少数据冗余和提高数据一致性。常见的范式包括:

  1. 第一范式(1NF):要求数据库表的每一列都是不可分割的基本数据项,即列的原子性。

  2. 第二范式(2NF):在满足1NF的基础上,非主键列必须完全依赖于整个主键,而不是部分依赖。

  3. 第三范式(3NF):在满足2NF的基础上,非主键列之间不能传递依赖,即非主键列只能直接依赖于主键。

THEOREM

遵循数据库范式可以减少数据冗余,提高数据一致性,但过度范式化可能导致查询性能下降。在实际应用中,需要在范式化和性能之间找到平衡点。 ::_

# ER模型

ER模型(Entity-Relationship Model,实体-关系模型)是数据库设计中常用的建模方法,它通过实体、属性和关系来描述数据结构。

  • 实体(Entity):现实世界中可以区分的对象,如用户、订单、产品等。
  • 属性(Attribute):实体的特征,如用户的姓名、年龄、地址等。
  • 关系(Relationship):实体之间的联系,如用户与订单之间的"下单"关系。

ER模型通常用ER图来表示,通过矩形表示实体,椭圆表示属性,菱形表示关系。

# SQL语言基础

# DDL、DML和DCL

SQL语言可以分为几个主要类别:

  1. DDL(Data Definition Language,数据定义语言):

    • 用于定义和管理数据库结构
    • 主要命令:CREATE、ALTER、DROP、TRUNCATE等
  2. DML(Data Manipulation Language,数据操作语言):

    • 用于操作数据库中的数据
    • 主要命令:SELECT、INSERT、UPDATE、DELETE等
  3. DCL(Data Control Language,数据控制语言):

    • 用于控制数据库的访问权限
    • 主要命令:GRANT、REVOKE等

# 常用SQL语句示例

-- 创建表
CREATE TABLE products (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    price DECIMAL(10,2) NOT NULL,
    category_id INT,
    stock_quantity INT DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 插入数据
INSERT INTO products (name, price, category_id, stock_quantity)
VALUES ('笔记本电脑', 5999.99, 1, 50);

-- 查询数据
SELECT id, name, price 
FROM products 
WHERE price > 1000 
ORDER BY price DESC 
LIMIT 10;

-- 更新数据
UPDATE products 
SET price = price * 0.9 
WHERE created_at < '2023-01-01';

-- 删除数据
DELETE FROM products 
WHERE stock_quantity = 0;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

# 关系型数据库产品

市场上有许多优秀的关系型数据库产品,各有特点和适用场景:

  1. MySQL:最流行的开源关系型数据库之一,被广泛应用于Web应用开发。

  2. PostgreSQL:功能强大的开源对象关系型数据库,支持复杂查询和数据类型。

  3. Oracle Database:企业级商业数据库,功能全面,性能卓越,但价格昂贵。

  4. Microsoft SQL Server:微软开发的关系型数据库,与.NET生态系统集成良好。

  5. SQLite:轻量级的嵌入式数据库,无需服务器,适合移动应用和小型项目。

# 结语

关系型数据库作为数据存储的基础,其重要性不言而喻。通过今天的文章,我们一起回顾了关系型数据库的基本概念、核心原理和设计原则。

数据库设计就像建筑设计,好的设计能够支撑系统长期稳定运行,而糟糕的设计则可能导致系统频繁重构。

希望这篇文章能帮助你建立对关系型数据库的全面认识。如果你有任何问题或建议,欢迎在评论区留言交流!😊

在未来,我们还会继续深入探讨数据库性能优化、事务处理、分布式数据库等高级主题。敬请期待!


个人建议:无论你是前端开发者、后端工程师还是数据分析师,掌握关系型数据库基础都是必不可少的技能。它不仅能帮助你更好地理解数据,还能让你在系统设计和问题排查时更有底气。建议大家动手实践,创建一些示例表并执行SQL查询,理论与实践相结合才能真正掌握这些知识。

#关系型数据库#SQL#数据库设计
上次更新: 2026/01/28, 10:42:53
关系型数据库基础与SQL入门
关系数据库设计与SQL基础

← 关系型数据库基础与SQL入门 关系数据库设计与SQL基础→

最近更新
01
LLM
01-30
02
intro
01-30
03
intro
01-30
更多文章>
Theme by Vdoing | Copyright © 2019-2026 Jorgen | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式