Skip to content

数据库_基础知识

数据库基础知识包含了数据库设计、管理和操作的核心概念。

常见的一些概念👇

  • 数据库和数据库管理系统(DBMS)
  • 数据模型(关系模型与非关系模型)
  • 数据库设计
    • ER图
    • 数据库范式
  • 元组, 码, 候选码, 主码, 外码, 主属性, 非主属性
  • 主键和外键
  • 为什么不推荐使用外键与级联
  • 存储过程
  • 数据库设计
  • 字符集

SQL(结构化查询语言)

  • 数据定义语言(DDL):定义数据库结构,包括CREATE、ALTER、DROP等命令。
  • 数据操纵语言(DML):用于数据访问和处理,包括INSERT、UPDATE、DELETE、SELECT等命令。
  • 数据控制语言(DCL):用于权限和事务控制,包括GRANT、REVOKE、BEGIN TRANSACTION等。

DDL 和 DML

DDL代表数据定义语言(Data Definition Language),它用于定义数据库结构,包括创建、修改和删除数据库对象。

DML代表数据操作语言(Data Manipulation Language),它用于操作和管理数据库中的数据,包括查询、插入、更新和删除数据

drop、delete 与 truncate 区别?

  • drop 移除整个表结构,包括其数据和表定义 不能回滚(DDL)
  • delete 删除表中的一行或多行记录 能回滚(DML)
  • truncate 删除表中的所有记录 不能回滚(DDL)

执行速度:一般来说:drop > truncate > delete

在MySQL中,DROPDELETETRUNCATE都是用于移除数据的命令,但它们在用法和影响上有明显的区别:

  1. DELETE
  • 用途DELETE用于删除表中的一行或多行记录。
  • 特点
    • 可以带有WHERE子句,提供了条件删除的功能。
    • 影响的行数会记录在事务日志中,因此可以回滚。
    • 触发器(如果有的话)会被激活。
    • 较慢,特别是在删除大量数据时,因为它逐行删除。
  • 示例DELETE FROM table_name WHERE condition;
  1. TRUNCATE
  • 用途TRUNCATE用于删除表中的所有记录。
  • 特点
    • 不能带有WHERE子句,它总是删除表中的所有记录。
    • 执行速度比DELETE快,因为它不逐行删除数据,而是直接移除数据页。
    • 不记录详细的事务日志,只记录重建空表的操作,因此无法回滚(在某些数据库系统中,TRUNCATE是事务安全的,并且可以回滚)。
    • 重置表的自增计数器(如果有的话)。
    • 不触发触发器。
  • 示例TRUNCATE TABLE table_name;
  1. DROP
  • 用途DROP用于移除整个表结构,包括其数据和表定义。
  • 特点
    • 删除表的结构及其数据,释放存储空间。
    • 不能回滚(一旦执行,表就完全消失了)。
    • 不触发触发器。
    • 在删除大量数据且不再需要该表时使用。
  • 示例DROP TABLE table_name;

总结

  • 删除数据行:如果需要删除部分数据行,使用DELETE。若需删除所有数据行且表结构仍需保留,使用TRUNCATE
  • 删除表:如果要删除整个表及其数据,使用DROP
  • 性能考虑:当处理大量数据时,TRUNCATEDELETE更高效。
  • 事务和回滚DELETE操作可以回滚,而TRUNCATEDROP在大多数情况下不能。

选择使用哪个命令取决于具体的需求,如是否需要保留表结构、是否需要条件删除或是否关注性能优化。

数据库设计通常分为哪几步?

  1. 需求分析 : 分析用户的需求,包括数据、功能和性能需求。
  2. 概念结构设计 : 主要采用 E-R 模型进行设计,包括画 E-R 图。
  3. 逻辑结构设计 : 通过将 E-R 图转换成表,实现从 E-R 模型到关系模型的转换。
  4. 物理结构设计 : 主要是为所设计的数据库选择合适的存储结构和存取路径。
  5. 数据库实施 : 包括编程、测试和试运行。
  6. 数据库的运行和维护 : 系统的运行与数据库的日常维护

参考