数据库知识点

一、基础概念

  1. 数据库 (DB):长期存储、有组织、可共享的数据集合。
  2. 数据库管理系统 (DBMS):管理数据库的软件(MySQL、Oracle、SQL Server)。
  3. 数据库系统 (DBS):DB+DBMS + 硬件 + 人员 + 应用程序。
  4. 数据模型 :层次模型、网状模型、关系模型(主流,二维表结构)。

二、关系型数据库核心术语

  • 表 (Table):二维数据表,行 + 列组成。
  • 行 / 记录 (Row/Record):一条完整数据。
  • 列 / 字段 (Column/Field):数据属性。
  • 主键 (Primary Key):唯一标识一行,非空、唯一。
  • 外键 (Foreign Key):关联两张表,保证参照完整性。
  • 唯一键 (Unique):值唯一,允许为空。
  • 非空 (Not Null):字段必须有值。
  • 默认值 (Default):字段未赋值时使用预设值。

三、三大完整性约束

  1. 实体完整性:主键非空、唯一。
  2. 参照完整性:外键取值必须在主表主键中存在,或为空。
  3. 用户自定义完整性:根据业务自定义规则(如年龄范围)。

四、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最小值
  • 字符 / 时间函数:CONCATSUBSTRNOW()

4. DCL 数据控制语言(权限管理)

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

5. TCL 事务控制语言

  • COMMIT:提交事务
  • ROLLBACK:回滚事务
  • SAVEPOINT:设置保存点

五、事务(ACID 四大特性)

  1. 原子性 (A):事务要么全部执行,要么全部回滚。
  2. 一致性 (C):事务前后数据状态合法。
  3. 隔离性 (I):多个事务互不干扰。
  4. 持久性 (D):事务提交后数据永久保存。

事务隔离级别(由低到高)

读未提交 → 读已提交 → 可重复读(MySQL 默认)→ 串行化 问题:脏读、不可重复读、幻读。

六、表关系

  1. 一对一:一张表一条记录对应另一表一条记录。
  2. 一对多:最常用(如:部门→员工),多方加外键。
  3. 多对多 :需中间表,两张主键作为中间表联合主键。

七、索引(优化查询核心)

  1. 作用 :加快查询速度,降低排序 / 分组开销;副作用:增删改变慢、占用空间。
  2. 分类:
    • 主键索引:默认创建,唯一 + 非空
    • 唯一索引:值唯一
    • 普通索引:最基础索引
    • 联合索引:多个字段组成,遵循最左前缀原则
  3. 索引失效场景:like %xx、字段运算、隐式类型转换、or无索引等。

八、范式(数据库设计规范)

目的:减少冗余、避免插入 / 更新 / 删除异常

  1. 1NF 第一范式:列不可再分(原子性)。
  2. 2NF 第二范式 :满足 1NF,消除部分依赖(非主键字段完全依赖主键)。
  3. 3NF 第三范式 :满足 2NF,消除传递依赖(非主键不依赖其他非主键)。

实际开发常适当反三范式,用冗余换查询效率。

九、连接查询(多表查询)

  • 内连接 (INNER JOIN):只取两表匹配数据
  • 左连接 (LEFT JOIN):左表全部保留,右表匹配显示,无则 null
  • 右连接 (RIGHT JOIN):右表全部保留
  • 全连接:两表数据都保留(MySQL 不支持,可用 union 模拟)

十、视图、存储过程、触发器

  1. 视图 (View):虚拟表,基于查询结果,简化复杂查询,不存真实数据。
  2. 存储过程:封装多条 SQL,预编译,反复调用,减少网络传输。
  3. 触发器:表发生增删改时自动执行指定 SQL。

十一、MySQL 高频补充

  1. 引擎
    • InnoDB:默认,支持事务、外键、行级锁
    • MyISAM:不支持事务,表级锁,查询快
  2. 锁机制
    • 行锁:InnoDB,粒度小,并发高
    • 表锁:MyISAM,粒度大,并发低
  3. 慢查询:记录执行慢的 SQL,用于性能调优。

十二、数据库安全与优化

  • 安全:账号权限、密码加密、备份恢复。
  • 优化方向:SQL 优化、索引优化、表结构优化、服务器配置优化。
相关推荐
雪的季节1 小时前
企业级 Qt 全功能项目
开发语言·数据库·qt
宋浮檀s2 小时前
应急响应——Web漏洞:命令执行+SSRF+弱口令
运维·数据库·sql·网络安全·oracle·应急响应
yurenpai(27届找实习中)3 小时前
redis_点评(21.好友关注——关注、取关功能实现;共同关注功能实现)
数据库·redis·缓存
Rick19933 小时前
索引的排序和分组
数据库·mysql
爱莉希雅&&&3 小时前
zabbix快速搭建和使用
android·linux·数据库·zabbix·监控
JohnYan3 小时前
工作笔记 - PG分组极值
数据库·后端·postgresql
清溪5493 小时前
DataEase H2 JDBC-RCE(CVE-2025-32966)复现
数据库·安全
ServBay4 小时前
不要再盲选了,PostgreSQL、MySQL与SQLite真实性能对比
数据库·mysql·sqlite
Trouvaille ~4 小时前
【Redis篇】Set 与 Zset:集合运算与排行榜的终极武器
数据库·redis·缓存·set·跳表·后端开发·zset