数据库知识点

一、基础概念

  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 优化、索引优化、表结构优化、服务器配置优化。
相关推荐
程序员清风5 小时前
Java 后端高并发设计:线程池、限流、熔断与降级
java·数据库·oracle
天衍四九-5 小时前
MySQL中如何定位慢查询?如果SQL语句执行很慢,如何分析和优化?
数据库·sql·mysql
尚久龙5 小时前
mysql-5.7.26-winx64的安装步骤
数据库·mysql
医疗信息化王工5 小时前
DataForge:基于 Python 的数据库批量导出 Excel 工具——从架构到部署的全流程实战
数据库·python·excel
实心儿儿5 小时前
MySQL 的安装
数据库·mysql·adb
程序员阿鹏7 小时前
为什么MySQL InnoDB选择B+树?
数据结构·数据库·b树·sql·mysql·算法·缓存
瀚高PG实验室8 小时前
使用pg_stat_statements抓取数据库TOP SQL
数据库·sql·postgresql·瀚高数据库
yanwumuxi10 小时前
【数据库系列】opensearch数据备份和恢复
数据库
anxiao_m10 小时前
2026企业AI数字孪生选型攻略,不同场景对应不同解决方案
大数据·网络·数据库
SelectDB10 小时前
从 ClickHouse 迁移到 Doris:SQL 兼容、同步与验证清单(实战笔记)
大数据·数据库·数据分析