前言
在学完诸多Java框架之后,深感自己基础不牢。打算从头开始学习计算机的基本知识,为后续的发展做准备。在诸多计算机基础知识中,我选择了与我关联最大的数据库开始学习。数据库系统是一门非常抽象的学科,期望在完成这一系列文章之后,能结合自己的实践对数据库加入自己更深的理解
为什么要学数据库
- Everything Over DB:传统社会的业务工作已经无法满足现代社会的需求,我们需要计算机的帮助
- 信息积累运用的基础:帮助人们从繁重的数据管理中解脱出来
- 基于数据库的应用——大数据。一切以数据说话。
学习数据库重要的不是技术,而是思维。
对“表”的抽象
数据起源于表——人们对日常生活信息的整理。在数据库中,表也作为最重要的主体部分。表也不是胡乱选取的,需要我们对表做出正确的抽象:理解-区分-命名-表达。
我们需要对生活中的信息有着足够的理解,并从中抽取出需要的信息
表(Table)的常用术语
表由表名、表标题(格式)、表内容(值)组成。
其中表内容包括行(row)
与列(column)
,行又可以称为元组(tuple)
、记录(record)
,列又可以称为字段(field)
、属性(attribute)
、数据项(data item)
。
Table中描述了一批互相有关联关系的数据的集合。
数据库与表的关系
数据库是有关联关系的若干个table的集合。
数据库系统
基本术语
- 数据库(DB):DataBase。一组数据的集合
- 数据库管理系统(DBMS):DataBase Management System。数据库管理软件
- 数据库应用(DBAP):DataBase Application。基于数据库开发的应用
- 数据库管理员(DBA):DataBase Administrator。通过数据库管理系统管理数据库。
数据库管理系统(DBMS)
DBMS的功能
对于用户来说,对DBMS的要求有:
- 数据库定义:DBMS为用户提供一套数据定义语言(DDL,Data Definition Language),用户使用DDL创建数据库及其中的Table;
- 数据库操作:DBMS为用户提供一套数据操纵语言(DML,Data Manipulation Language),用户使用DML来实现数据库的CRUD(增删改查)操作;
- 数据库控制:DBMS为用户提供一套数据控制语言(DCL,Data Control Language),用户使用DCL描述其对数据库所要实施的控制(包括且不限于控制哪些用户能够访问哪些字段);
- 数据库维护:DBMS提供一系列程序(使用程序/例行程序)给用户,用户使用这些程序来实现数据库的转储、恢复、重组、性能检测和分析等功能。
上述1、2、3点综合起来,形成了我们操作数据库的SQL语言(结构化的数据库语言)
对于系统,DBMS的实现要求:形式->构造->自动化,实现解析语言并执行。
DBMS为了完成数据库的管理,在后台运行这一系列程序:
- 语言编译器:将用数据库语言书写的内容,翻译成DBMS可执行的命令。例如:DDL编译器、DML编译器、DCL编译器等;
- 查询优化(执行引擎)与查询实现(基本命令的不同执行算法):提高数据库检索速度的手段。例如穿插于数据存取各个阶段的优化程序;
- 数据存取与索引:提供数据在磁盘、磁带上高效存取的手段。例如:存储管理器、缓冲区管理器、索引/文件和记录管理器等;
- 通信控制:因为数据库与数据库应用的通信要求,且现代大型项目的数据库通常是分布式管理。所以提供网络环境下数据库操作和数据传输的手段是必要的;
- 事务管理:提高可靠性避免并发操作错误。如脏读…
- 是数据库 自动恢复到故障发生前正确状态的手段,例如提供了运行日志操控等实用程序
- 安全性控制:提供合法性检验,避免非授权非法用户访问数据库
- 完整性控制:提供数据及数据操作正确性检查的手段
- 数据字典管理:管理用户已经定义的信息
- 应用程序接口(API):提供应用程序使用DBMS特定功能的手段‘
- 数据库数据装载、重组等使用程序
- 数据库性能分析:统计在运行过程中数据库的各种性能数据,便于优化运行
数据库语言
数据库与高级语言
1.一条数据库语言语句相当于高级语言的一个或多个循环程序。
例如:
select id, name 名字 from table where id = 1;
相当于Java中的:
for(int i=0; i<n; ++i) {
if (user[i].id == id) {
return user[i];
}
}
2.数据库可以嵌入到高级语言(宿主语言)中使用
总结
本文是基于哈工大在慕课网发的《数据库系统》,待补充...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。