关系型数据库和Mysql概述
关系型数据库和 MySQL 概述
一、关系型数据库概述
1. 数据持久化(Data Persistence)
教学说明:
- 数据持久化是指将程序运行过程中产生的数据,保存到非易失性存储介质(如硬盘)上,即使系统掉电也不会丢失。
- 数据库管理系统(DBMS)正是最常用的数据持久化解决方案之一。
使用场景:
- 网站用户注册信息存储
- 银行交易记录保存
- IoT 设备日志归档
最佳实践:
- 永远不要将重要数据仅保存在内存中
- 使用数据库前需理解其事务机制和恢复能力
- 结合日志文件 + 数据快照来增强数据安全性
2. 数据库发展简史
教学说明:
代际 | 类型 | 特点 |
---|---|---|
第一代 | 网状数据库、层次数据库 | 结构复杂,访问不灵活 |
第二代 | 关系型数据库 | 使用表格结构和 SQL 语言 |
第三代 | NoSQL 数据库 | 弱结构化、高扩展性(如 MongoDB) |
第四代 | NewSQL 数据库 | 结合关系型一致性 + NoSQL 性能(如 TiDB) |
核心事件:
- 1970 年 IBM 研究员 E.F. Codd 提出关系模型
- 引入范式理论,奠定关系数据库数学基础
使用场景:
- 传统业务系统(银行、企业 ERP)仍广泛使用关系型数据库
- 高并发社交媒体平台或日志系统偏向 NoSQL
最佳实践:
- 根据业务模型选型,避免“一把尺子量到底”
- 高一致性场景优选关系型数据库
- 强实时与弹性需求考虑 NewSQL 或混合架构
3. 关系型数据库的特点
教学说明:
- 结构:二维表(关系表),每张表由“列 + 行”组成
- 理论支撑:集合论 + 一阶逻辑 + 关系代数
- 查询语言:SQL(结构化查询语言)
SQL 四大类别:
类别 | 名称 | 示例 |
---|---|---|
DDL | 数据定义语言 | CREATE TABLE , ALTER |
DML | 数据操作语言 | SELECT , INSERT , UPDATE , DELETE |
DCL | 数据控制语言 | GRANT , REVOKE |
TCL | 事务控制语言 | BEGIN , COMMIT , ROLLBACK |
使用场景:
- 建立数据库模型
- 数据增删查改
- 权限控制和多用户协作
- 数据安全和回滚处理
最佳实践:
- 用 DDL 管理结构变化,应版本化(如 Flyway)
- 尽量使用预编译 DML 提高安全性与性能
- 精细化授权避免越权访问
- 尽量保证每条数据操作在事务中完成(TCL)
4. ER 模型与概念建模图
教学说明: ER 模型是用于概念设计的工具,包括三大基本元素:
- 实体(Entity):现实世界中的对象(矩形框)
- 属性(Attribute):实体的特征(椭圆)
- 关系(Relationship):实体之间的联系(菱形)
关系类型:
- 1:1(如:学生与学号)
- 1\:N(如:部门与员工)
- M\:N(如:学生与课程)
使用场景:
- 系统设计初期的数据建模
- 团队协作中统一建模语言
- 利用 PowerDesigner、ER/Studio 等工具自动转 SQL
最佳实践:
- 遵循范式设计 ER 模型
- 避免冗余字段导致更新异常
- 关系字段设定应明确外键、唯一性
5. 主流关系型数据库产品介绍
产品 | 公司 | 特点与适用场景 |
---|---|---|
Oracle | Oracle | 商业旗舰产品,功能全面,适合大中型企业 |
DB2 | IBM | 历史悠久,适用于 IBM 服务器环境 |
SQL Server | Microsoft | 与 Windows 生态集成度高,界面友好 |
MySQL | Oracle | 开源、高性能、广泛用于网站与中小企业 |
PostgreSQL | 社区驱动 | 强一致性、高扩展性,被称为最先进的开源数据库 |
MariaDB | MySQL 分支 | 由原作者创建,强调开源自由与兼容性 |
使用场景:
- Oracle:金融、制造等行业系统核心业务数据库
- MySQL:Web 开发主力数据库(如 WordPress、Shopify)
- PostgreSQL:地理信息系统(GIS)、复杂查询分析
- MariaDB:反对 Oracle 商业化路线的开源替代方案
最佳实践:
- 项目选型前需考虑授权费用、社区活跃度、性能需求
- 优先考虑支持 ACID 的数据库做关键数据持久化
- 对于 MySQL,了解 InnoDB 与 MyISAM 引擎的差异尤为重要
二、MySQL 简介与安装
1. MySQL 简介
教学说明:
- MySQL 是最流行的开源关系数据库之一,支持多平台部署
- 使用 C/C++ 编写,具备高性能、低成本、易部署等优势
- 当前由 Oracle 公司维护,社区版为免费版本
发展背景:
- 被 Sun Microsystems 收购 → Oracle 接手后商业化加剧
- 创始人创建 MariaDB 分支,吸引众多自由软件支持者
应用场景:
- 企业网站 / CMS 内容管理系统
- 后台管理系统的核心数据库
- 数据湖/数据仓库的中转层(可结合 ClickHouse、Kafka)
最佳实践:
- 生产环境优选 InnoDB 引擎(事务支持 + 外键 + 崩溃恢复)
- 避免公网开放 MySQL 端口
- 采用非 root 用户访问数据库,限制权限最小化
2. MySQL 安装(Windows / Linux / macOS)
Windows 安装步骤总结:
- 使用 MySQL Installer(建议离线版)
- 安装路径应避免空格/中文
- 安装组件包括 Server、Workbench、Shell 等
- 注意配置端口(默认 3306)、root 密码、服务名
- 添加 PATH 环境变量以便命令行访问
Linux 安装关键步骤:
- 推荐使用
.rpm
或.deb
包安装 - 必须卸载系统自带的 MariaDB(避免端口冲突)
- 关注配置文件
/etc/my.cnf
,可调整字符集、端口、日志等 - 使用
systemctl start mysqld
启动服务 - 初次登录需查找临时 root 密码并修改为强口令
macOS 安装说明:
- 使用 DMG 文件图形化安装
- 芯片架构需匹配(Intel vs Apple Silicon)
- 安装后可在“系统偏好设置”控制服务状态
- 命令行操作需配置环境变量
/usr/local/mysql/bin
三、MySQL 基本命令及使用技巧
1. 常用 SQL 命令
-- 查看数据库
SHOW DATABASES;
-- 选择数据库
USE mydb;
-- 查看数据表
SHOW TABLES;
-- 查看字符集 / 排序规则
SHOW CHARACTER SET;
SHOW COLLATION;
2. 获取命令帮助
? show
:查看show
命令用法? functions
:查看内置函数说明help data types
:获取数据类型帮助
3. 常用客户端命令
命令 | 作用 |
---|---|
\c |
清空当前 SQL 输入 |
edit |
打开系统编辑器 |
source |
执行 SQL 文件 |
status |
查看当前连接状态 |
prompt |
修改命令行提示符 |
system ls |
执行系统命令(如 Linux 的 ls) |
4. 初始密码与安全建议
- 使用
cat /var/log/mysqld.log | grep password
查找初始密码 - 修改 root 密码时应开启验证策略(validate_password_policy)
- 避免弱口令,避免使用 root 连接生产环境数据库
- 将数据库限制为仅内部访问,避免暴露 3306 端口
如果你希望我整理为课件/教学手册/PDF,或者深入展开如“SQL 语句实战练习”、“ER图建模案例”、“MySQL 优化与备份策略”等主题,请告诉我,我们可以继续按教学方式系统展开。