一、基础概念
- 数据库 (DB):长期存储、有组织、可共享的数据集合。
- 数据库管理系统 (DBMS):管理数据库的软件(MySQL、Oracle、SQL Server)。
- 数据库系统 (DBS):DB+DBMS + 硬件 + 人员 + 应用程序。
- 数据模型 :层次模型、网状模型、关系模型(主流,二维表结构)。
二、关系型数据库核心术语
- 表 (Table):二维数据表,行 + 列组成。
- 行 / 记录 (Row/Record):一条完整数据。
- 列 / 字段 (Column/Field):数据属性。
- 主键 (Primary Key):唯一标识一行,非空、唯一。
- 外键 (Foreign Key):关联两张表,保证参照完整性。
- 唯一键 (Unique):值唯一,允许为空。
- 非空 (Not Null):字段必须有值。
- 默认值 (Default):字段未赋值时使用预设值。
三、三大完整性约束
- 实体完整性:主键非空、唯一。
- 参照完整性:外键取值必须在主表主键中存在,或为空。
- 用户自定义完整性:根据业务自定义规则(如年龄范围)。
四、SQL 分类(重点)
1. DDL 数据定义语言(建库、建表、改结构)
CREATE:创建库、表、索引ALTER:修改表结构DROP:删除库、表TRUNCATE:清空表数据(不删结构,不可回滚)
2. DML 数据操作语言(增删改查)
SELECT:查询(使用频率最高)INSERT:插入数据UPDATE:更新数据DELETE:删除数据
3. DQL 数据查询语言(归属于 SELECT)
查询完整语法顺序
sql
SELECT 字段
FROM 表名
WHERE 条件
GROUP BY 分组字段
HAVING 分组后条件
ORDER BY 排序
LIMIT 分页
常用函数:
- 聚合函数:
COUNT计数、SUM求和、AVG平均、MAX最大值、MIN最小值 - 字符 / 时间函数:
CONCAT、SUBSTR、NOW()等
4. DCL 数据控制语言(权限管理)
GRANT:授权REVOKE:撤销权限
5. TCL 事务控制语言
COMMIT:提交事务ROLLBACK:回滚事务SAVEPOINT:设置保存点
五、事务(ACID 四大特性)
- 原子性 (A):事务要么全部执行,要么全部回滚。
- 一致性 (C):事务前后数据状态合法。
- 隔离性 (I):多个事务互不干扰。
- 持久性 (D):事务提交后数据永久保存。
事务隔离级别(由低到高)
读未提交 → 读已提交 → 可重复读(MySQL 默认)→ 串行化 问题:脏读、不可重复读、幻读。
六、表关系
- 一对一:一张表一条记录对应另一表一条记录。
- 一对多:最常用(如:部门→员工),多方加外键。
- 多对多 :需中间表,两张主键作为中间表联合主键。
七、索引(优化查询核心)
- 作用 :加快查询速度,降低排序 / 分组开销;副作用:增删改变慢、占用空间。
- 分类:
- 主键索引:默认创建,唯一 + 非空
- 唯一索引:值唯一
- 普通索引:最基础索引
- 联合索引:多个字段组成,遵循最左前缀原则
- 索引失效场景:
like %xx、字段运算、隐式类型转换、or无索引等。
八、范式(数据库设计规范)
目的:减少冗余、避免插入 / 更新 / 删除异常
- 1NF 第一范式:列不可再分(原子性)。
- 2NF 第二范式 :满足 1NF,消除部分依赖(非主键字段完全依赖主键)。
- 3NF 第三范式 :满足 2NF,消除传递依赖(非主键不依赖其他非主键)。
实际开发常适当反三范式,用冗余换查询效率。
九、连接查询(多表查询)
- 内连接 (INNER JOIN):只取两表匹配数据
- 左连接 (LEFT JOIN):左表全部保留,右表匹配显示,无则 null
- 右连接 (RIGHT JOIN):右表全部保留
- 全连接:两表数据都保留(MySQL 不支持,可用 union 模拟)
十、视图、存储过程、触发器
- 视图 (View):虚拟表,基于查询结果,简化复杂查询,不存真实数据。
- 存储过程:封装多条 SQL,预编译,反复调用,减少网络传输。
- 触发器:表发生增删改时自动执行指定 SQL。
十一、MySQL 高频补充
- 引擎
- InnoDB:默认,支持事务、外键、行级锁
- MyISAM:不支持事务,表级锁,查询快
- 锁机制
- 行锁:InnoDB,粒度小,并发高
- 表锁:MyISAM,粒度大,并发低
- 慢查询:记录执行慢的 SQL,用于性能调优。
十二、数据库安全与优化
- 安全:账号权限、密码加密、备份恢复。
- 优化方向:SQL 优化、索引优化、表结构优化、服务器配置优化。