速看要点:
本文重点:
数据是描述事物的符号记录,可以是数字、文字、图像、声音等形式。在计算机系统中,数据以二进制形式存储和处理。
数据的特点:
示例:
学生数据:
学号:2024001
姓名:张三
年龄:20
专业:计算机科学
成绩:85.5
数据库(Database,DB)是长期存储在计算机内、有组织、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性。
数据库的特征:
数据库的作用:
数据库管理系统(Database Management System,DBMS)是位于用户与操作系统之间的一层数据管理软件,用于科学地组织和存储数据、高效地获取和维护数据。
DBMS的主要功能:
| 功能 | 说明 |
|---|---|
| 数据定义 | 定义数据库结构、数据类型、约束条件 |
| 数据操作 | 插入、删除、修改、查询数据 |
| 数据控制 | 权限管理、并发控制、数据恢复 |
| 数据维护 | 数据备份、性能优化、故障恢复 |
| 数据通信 | 与应用程序交互、网络通信 |
商业数据库:
开源数据库:
NoSQL数据库:
数据库系统(Database System,DBS)是由数据库、数据库管理系统、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。
系统组成:
┌─────────────────────────────────────┐
│ 应用程序 │
├─────────────────────────────────────┤
│ 数据库管理系统(DBMS) │
├─────────────────────────────────────┤
│ 数据库(DB) │
├─────────────────────────────────────┤
│ 操作系统 │
├─────────────────────────────────────┤
│ 硬件 │
└─────────────────────────────────────┘
数据库管理员(DBA)职责:
关系模型是用二维表来表示实体及其联系的模型。一个关系就是一张表,表中的行称为记录或元组,列称为字段或属性。
关系模型术语:
| 术语 | 说明 | 示例 |
|---|---|---|
| 关系 | 一张表 | 学生表 |
| 元组 | 表中的一行 | 一条学生记录 |
| 属性 | 表中的一列 | 学号、姓名 |
| 候选键 | 能唯一标识元组的属性 | 学号、身份证号 |
| 主键 | 选定的候选键 | 学号 |
| 外键 | 引用其他表的主键 | 班级编号 |
| 域 | 属性的取值范围 | 性别:男/女 |
优点:
缺点:
关系型数据库使用表格存储数据,每个表包含若干行和列。
学生表结构:
| 学号 | 姓名 | 年龄 | 专业 |
|---|---|---|---|
| 2024001 | 张三 | 20 | 计算机科学 |
| 2024002 | 李四 | 21 | 软件工程 |
| 2024003 | 王五 | 19 | 数据科学 |
表的设计原则:
SQL(Structured Query Language)是结构化查询语言,是关系型数据库的标准语言。
SQL语言特点:
事务是数据库操作的逻辑单位,由一组操作组成,这些操作要么全部成功,要么全部失败。
事务特性(ACID):
| 特性 | 说明 |
|---|---|
| 原子性(Atomicity) | 事务是不可分割的工作单位 |
| 一致性(Consistency) | 事务必须使数据库从一个一致性状态变到另一个一致性状态 |
| 隔离性(Isolation) | 多个事务并发执行时,一个事务的执行不应影响其他事务的执行 |
| 持久性(Durability) | 事务一旦提交,对数据库的改变是永久性的 |
MySQL是最流行的开源关系型数据库管理系统,由瑞典MySQL AB公司开发,后被Sun公司收购,目前属于Oracle公司。
发展历程:
优势:
适用场景:
MySQL采用分层架构,从上到下分为连接层、服务层、存储引擎层和文件系统层。
架构层次:
┌─────────────────────────────────────┐
│ 连接层 │
│ 连接池、认证、线程管理 │
├─────────────────────────────────────┤
│ 服务层 │
│ SQL解析、优化、缓存、函数 │
├─────────────────────────────────────┤
│ 存储引擎层 │
│ InnoDB、MyISAM、Memory等 │
├─────────────────────────────────────┤
│ 文件系统层 │
│ 数据文件、日志文件、配置文件 │
└─────────────────────────────────────┘
各层功能:
连接层:
服务层:
存储引擎层:
文件系统层:
MySQL支持多种存储引擎,不同引擎有不同的特点和适用场景。
常用存储引擎对比:
| 特性 | InnoDB | MyISAM | Memory |
|---|---|---|---|
| 事务支持 | 支持 | 不支持 | 不支持 |
| 锁粒度 | 行锁 | 表锁 | 表锁 |
| 外键 | 支持 | 不支持 | 不支持 |
| 崩溃恢复 | 支持 | 不支持 | 不支持 |
| 全文索引 | 5.6+支持 | 支持 | 不支持 |
| 存储限制 | 64TB | 256TB | 内存大小 |
| 适用场景 | OLTP | 读密集 | 临时数据 |
选择建议:
DDL(Data Definition Language)用于定义数据库结构,包括创建、修改、删除数据库对象。
主要语句:
示例:
-- 创建数据库
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;
DML(Data Manipulation Language)用于操作数据库中的数据,包括插入、更新、删除。
主要语句:
示例:
-- 插入数据
INSERT INTO student VALUES (1, '张三', 20, '男');
-- 更新数据
UPDATE student SET age = 21 WHERE id = 1;
-- 删除数据
DELETE FROM student WHERE id = 1;
DQL(Data Query Language)用于查询数据库中的数据,是最常用的SQL语句。
主要语句:
完整语法:
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;
DCL(Data Control Language)用于控制数据库访问权限。
主要语句:
示例:
-- 创建用户
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
-- 授予权限
GRANT SELECT, INSERT ON school.* TO 'user'@'localhost';
-- 撤销权限
REVOKE INSERT ON school.* FROM 'user'@'localhost';
✅ 数据库是长期存储在计算机内有组织可共享的数据集合 ✅ DBMS是管理数据库的系统软件 ✅ 关系型数据库使用表格存储数据 ✅ MySQL是最流行的开源关系型数据库 ✅ SQL分为DDL、DML、DQL、DCL四类
完成本章学习后,请确认您能够: