Appearance
数据库基础知识包含了数据库设计、管理和操作的核心概念。
常见的一些概念👇
- 数据库和数据库管理系统(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中,DROP、DELETE和TRUNCATE都是用于移除数据的命令,但它们在用法和影响上有明显的区别:
- DELETE
- 用途:
DELETE用于删除表中的一行或多行记录。 - 特点:
- 可以带有
WHERE子句,提供了条件删除的功能。 - 影响的行数会记录在事务日志中,因此可以回滚。
- 触发器(如果有的话)会被激活。
- 较慢,特别是在删除大量数据时,因为它逐行删除。
- 可以带有
- 示例:
DELETE FROM table_name WHERE condition;
- TRUNCATE
- 用途:
TRUNCATE用于删除表中的所有记录。 - 特点:
- 不能带有
WHERE子句,它总是删除表中的所有记录。 - 执行速度比
DELETE快,因为它不逐行删除数据,而是直接移除数据页。 - 不记录详细的事务日志,只记录重建空表的操作,因此无法回滚(在某些数据库系统中,
TRUNCATE是事务安全的,并且可以回滚)。 - 重置表的自增计数器(如果有的话)。
- 不触发触发器。
- 不能带有
- 示例:
TRUNCATE TABLE table_name;
- DROP
- 用途:
DROP用于移除整个表结构,包括其数据和表定义。 - 特点:
- 删除表的结构及其数据,释放存储空间。
- 不能回滚(一旦执行,表就完全消失了)。
- 不触发触发器。
- 在删除大量数据且不再需要该表时使用。
- 示例:
DROP TABLE table_name;
总结
- 删除数据行:如果需要删除部分数据行,使用
DELETE。若需删除所有数据行且表结构仍需保留,使用TRUNCATE。 - 删除表:如果要删除整个表及其数据,使用
DROP。 - 性能考虑:当处理大量数据时,
TRUNCATE比DELETE更高效。 - 事务和回滚:
DELETE操作可以回滚,而TRUNCATE和DROP在大多数情况下不能。
选择使用哪个命令取决于具体的需求,如是否需要保留表结构、是否需要条件删除或是否关注性能优化。
数据库设计通常分为哪几步?
- 需求分析 : 分析用户的需求,包括数据、功能和性能需求。
- 概念结构设计 : 主要采用 E-R 模型进行设计,包括画 E-R 图。
- 逻辑结构设计 : 通过将 E-R 图转换成表,实现从 E-R 模型到关系模型的转换。
- 物理结构设计 : 主要是为所设计的数据库选择合适的存储结构和存取路径。
- 数据库实施 : 包括编程、测试和试运行。
- 数据库的运行和维护 : 系统的运行与数据库的日常维护
参考