数据库概述

数据库概述

📖 快速导航

速看要点

  • 数据库基本概念:数据、数据库、数据库管理系统
  • 关系型数据库特点:表格结构、SQL语言、事务支持
  • MySQL优势:开源免费、性能优秀、生态完善
  • SQL语言分类:DDL、DML、DQL、DCL

本文重点

  • ✅ 理解数据库核心概念
  • ✅ 掌握关系型数据库特点
  • ✅ 了解MySQL数据库优势
  • ✅ 熟悉SQL语言分类

一、数据库基本概念

1.1 数据与数据库

1.1.1 什么是数据

数据是描述事物的符号记录,可以是数字、文字、图像、声音等形式。在计算机系统中,数据以二进制形式存储和处理。

数据的特点

  • 客观性:数据是对客观事物的记录
  • 多样性:数据形式多种多样
  • 可处理性:数据可以被存储、检索、修改
  • 价值性:数据包含有用的信息

示例

学生数据:
学号:2024001
姓名:张三
年龄:20
专业:计算机科学
成绩:85.5

1.1.2 什么是数据库

数据库(Database,DB)是长期存储在计算机内、有组织、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性。

数据库的特征

  • 持久化存储:数据长期保存在存储设备上
  • 有组织:数据按照特定结构组织
  • 可共享:多个用户可以同时访问
  • 独立性:数据与应用程序相互独立

数据库的作用

  • 集中管理数据
  • 减少数据冗余
  • 保证数据一致性
  • 提供数据安全性
  • 支持并发访问

1.2 数据库管理系统

1.2.1 DBMS定义

数据库管理系统(Database Management System,DBMS)是位于用户与操作系统之间的一层数据管理软件,用于科学地组织和存储数据、高效地获取和维护数据。

DBMS的主要功能

功能 说明
数据定义 定义数据库结构、数据类型、约束条件
数据操作 插入、删除、修改、查询数据
数据控制 权限管理、并发控制、数据恢复
数据维护 数据备份、性能优化、故障恢复
数据通信 与应用程序交互、网络通信

1.2.2 常见DBMS

商业数据库

  • Oracle:功能最强大,适用于大型企业
  • SQL Server:微软产品,与Windows集成度高
  • DB2:IBM产品,适用于大型机环境

开源数据库

  • MySQL:最流行的开源数据库,Web应用首选
  • PostgreSQL:功能强大的对象关系型数据库
  • MariaDB:MySQL分支,完全兼容MySQL
  • SQLite:轻量级嵌入式数据库

NoSQL数据库

  • MongoDB:文档型数据库
  • Redis:键值对数据库
  • Elasticsearch:搜索引擎数据库

1.3 数据库系统

1.3.1 数据库系统组成

数据库系统(Database System,DBS)是由数据库、数据库管理系统、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。

系统组成

┌─────────────────────────────────────┐
│         应用程序                     │
├─────────────────────────────────────┤
│      数据库管理系统(DBMS)           │
├─────────────────────────────────────┤
│         数据库(DB)                 │
├─────────────────────────────────────┤
│         操作系统                     │
├─────────────────────────────────────┤
│         硬件                         │
└─────────────────────────────────────┘

数据库管理员(DBA)职责

  • 数据库设计
  • 权限管理
  • 性能优化
  • 数据备份
  • 故障恢复

二、关系型数据库

2.1 关系模型

2.1.1 关系模型概念

关系模型是用二维表来表示实体及其联系的模型。一个关系就是一张表,表中的行称为记录或元组,列称为字段或属性。

关系模型术语

术语 说明 示例
关系 一张表 学生表
元组 表中的一行 一条学生记录
属性 表中的一列 学号、姓名
候选键 能唯一标识元组的属性 学号、身份证号
主键 选定的候选键 学号
外键 引用其他表的主键 班级编号
属性的取值范围 性别:男/女

2.1.2 关系模型特点

优点

  • 简单直观:用表格表示数据,易于理解
  • 数学基础:建立在严格的数学理论基础上
  • 数据独立:物理独立性和逻辑独立性
  • 操作方便:支持复杂的数据查询

缺点

  • 查询效率:多表连接查询性能较低
  • 扩展性:表结构修改较为困难
  • 大数据量:海量数据处理性能下降

2.2 关系型数据库特点

2.2.1 表格结构

关系型数据库使用表格存储数据,每个表包含若干行和列。

学生表结构

学号 姓名 年龄 专业
2024001 张三 20 计算机科学
2024002 李四 21 软件工程
2024003 王五 19 数据科学

表的设计原则

  • 每个表有唯一的表名
  • 每列有唯一的列名
  • 每列的数据类型相同
  • 行的顺序不重要
  • 列的顺序不重要
  • 不允许完全相同的行

2.2.2 SQL语言

SQL(Structured Query Language)是结构化查询语言,是关系型数据库的标准语言。

SQL语言特点

  • 非过程化:只需说明"做什么",不需说明"怎么做"
  • 集合操作:一次操作多个记录
  • 统一语言:定义、操作、控制使用同一语言
  • 标准化:国际标准语言

2.2.3 事务支持

事务是数据库操作的逻辑单位,由一组操作组成,这些操作要么全部成功,要么全部失败。

事务特性(ACID)

特性 说明
原子性(Atomicity) 事务是不可分割的工作单位
一致性(Consistency) 事务必须使数据库从一个一致性状态变到另一个一致性状态
隔离性(Isolation) 多个事务并发执行时,一个事务的执行不应影响其他事务的执行
持久性(Durability) 事务一旦提交,对数据库的改变是永久性的

三、MySQL数据库

3.1 MySQL简介

3.1.1 MySQL历史

MySQL是最流行的开源关系型数据库管理系统,由瑞典MySQL AB公司开发,后被Sun公司收购,目前属于Oracle公司。

发展历程

  • 1995年:MySQL第一版发布
  • 2000年:MySQL开源
  • 2008年:Sun公司收购MySQL
  • 2010年:Oracle公司收购Sun
  • 2016年:MySQL 8.0发布

3.1.2 MySQL特点

优势

  • 开源免费:社区版完全免费
  • 跨平台:支持Windows、Linux、macOS
  • 性能优秀:查询速度快,支持大数据量
  • 简单易用:安装配置简单,学习成本低
  • 生态完善:文档丰富,社区活跃
  • 支持多种存储引擎:InnoDB、MyISAM、Memory等

适用场景

  • Web应用
  • 电商平台
  • 内容管理系统
  • 日志系统
  • 数据仓库

3.2 MySQL架构

3.2.1 架构组成

MySQL采用分层架构,从上到下分为连接层、服务层、存储引擎层和文件系统层。

架构层次

┌─────────────────────────────────────┐
│         连接层                       │
│   连接池、认证、线程管理              │
├─────────────────────────────────────┤
│         服务层                       │
│   SQL解析、优化、缓存、函数           │
├─────────────────────────────────────┤
│       存储引擎层                     │
│   InnoDB、MyISAM、Memory等           │
├─────────────────────────────────────┤
│       文件系统层                     │
│   数据文件、日志文件、配置文件        │
└─────────────────────────────────────┘

各层功能

连接层

  • 处理客户端连接
  • 认证用户身份
  • 管理连接线程

服务层

  • SQL解析器
  • 查询优化器
  • 查询缓存
  • 内置函数

存储引擎层

  • 数据存储
  • 索引管理
  • 事务处理

文件系统层

  • 数据文件
  • 日志文件
  • 配置文件

3.2.2 存储引擎

MySQL支持多种存储引擎,不同引擎有不同的特点和适用场景。

常用存储引擎对比

特性 InnoDB MyISAM Memory
事务支持 支持 不支持 不支持
锁粒度 行锁 表锁 表锁
外键 支持 不支持 不支持
崩溃恢复 支持 不支持 不支持
全文索引 5.6+支持 支持 不支持
存储限制 64TB 256TB 内存大小
适用场景 OLTP 读密集 临时数据

选择建议

  • 需要事务支持:选择InnoDB
  • 读密集型应用:选择MyISAM
  • 临时数据存储:选择Memory
  • 默认推荐:InnoDB

四、SQL语言分类

4.1 DDL数据定义语言

4.1.1 DDL概述

DDL(Data Definition Language)用于定义数据库结构,包括创建、修改、删除数据库对象。

主要语句

  • CREATE:创建数据库对象
  • ALTER:修改数据库对象
  • DROP:删除数据库对象
  • TRUNCATE:清空表数据

示例

-- 创建数据库
CREATE DATABASE school;

-- 创建表
CREATE TABLE student (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);

-- 修改表
ALTER TABLE student ADD COLUMN gender CHAR(1);

-- 删除表
DROP TABLE student;

4.2 DML数据操作语言

4.2.1 DML概述

DML(Data Manipulation Language)用于操作数据库中的数据,包括插入、更新、删除。

主要语句

  • INSERT:插入数据
  • UPDATE:更新数据
  • DELETE:删除数据

示例

-- 插入数据
INSERT INTO student VALUES (1, '张三', 20, '男');

-- 更新数据
UPDATE student SET age = 21 WHERE id = 1;

-- 删除数据
DELETE FROM student WHERE id = 1;

4.3 DQL数据查询语言

4.3.1 DQL概述

DQL(Data Query Language)用于查询数据库中的数据,是最常用的SQL语句。

主要语句

  • SELECT:查询数据

完整语法

SELECT 字段列表
FROM 表名
[WHERE 条件]
[GROUP BY 分组]
[HAVING 分组条件]
[ORDER BY 排序]
[LIMIT 限制];

示例

-- 查询所有学生
SELECT * FROM student;

-- 条件查询
SELECT * FROM student WHERE age > 18;

-- 排序查询
SELECT * FROM student ORDER BY age DESC;

-- 分组统计
SELECT gender, COUNT(*) FROM student GROUP BY gender;

4.4 DCL数据控制语言

4.4.1 DCL概述

DCL(Data Control Language)用于控制数据库访问权限。

主要语句

  • GRANT:授予权限
  • REVOKE:撤销权限

示例

-- 创建用户
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';

-- 授予权限
GRANT SELECT, INSERT ON school.* TO 'user'@'localhost';

-- 撤销权限
REVOKE INSERT ON school.* FROM 'user'@'localhost';

五、本章小结

5.1 核心要点

✅ 数据库是长期存储在计算机内有组织可共享的数据集合 ✅ DBMS是管理数据库的系统软件 ✅ 关系型数据库使用表格存储数据 ✅ MySQL是最流行的开源关系型数据库 ✅ SQL分为DDL、DML、DQL、DCL四类

5.2 验证清单

完成本章学习后,请确认您能够:

  • 理解数据库基本概念
  • 了解关系型数据库特点
  • 知道MySQL的优势
  • 区分SQL语言的四种类型