【一】初步认识数据库
- 数据库概览
- 数据库 缘起
- 表(Table)的理解
- 用表来定义数据库
- 数据库系统的理解
- 概念层次的理解
- 实例层次的理解
- 数据库管理系统的理解
- 从用户角度看
- 从系统实现角度看
- 典型的数据库管理系统
- 数据库语言
- 数据库定义、操纵、控制语言
- 数据库语言 VS 高级语言
- 内容回顾
- 练习
数据库概览
走马观花快速一瞥,数据库为何方神圣?

假设你现在有很多很多表,为了快速 添加、删除、修改、查找 数据,你需要想办法管理这些表:
- 这些表中是一些 相互有关联关系的数据,这样的 表的集合叫做数据库 (Database);
- 管理数据库(也就是管理这些表)的 系统软件叫做 数据库管理系统(DBMS);
- 这些数据库管理系统 由谁来使用 呢?就是 数据库管理员(DBA);
- 那数据库管理员怎么使用这些系统?就需要 数据库语言(SQL);所以你要成为 DBA,就要先掌握这个语言,才能操作数据库;
- 如果有些人不学计算机,没有掌握数据库语言,怎么办呢?那我们学计算机的为他们开发 数据库应用程序(DBAP,图形界面);
- 不同的用户使用不同的能完成某功能的 数据库应用程序,通过数据库管理系统来操作数据库;
- 那如何根据数据库(那些表)设计 具体的数据库应用程序呢?需要从现实世界抽象出信息(ER图),再设计出关系模式,用数据库语言定义这些表,存储在计算机中;
- 学习了 数据库设计,再进一步学习 数据库的维护和控制,再学习 数据库的存储和查询,这又涉及到数据的一致性、可靠性,即 数据库事务处理。

- 数据库(DB): Database
- 数据库管理系统(DBMS): Database Management System
- 数据库管理员(DBA): DataBase Administrator
- 数据库应用(DBAP): DataBase Application
这就是,很多很多表引发的问题以及解决方法,即数据库。
【重点与难点】
- 一组概念的区分:数据库、数据库系统、数据库管理系统
- 表 的相关要素和术语
- 数据库系统 的构成、工作环境
- 了解 数据库管理系统 的功能:从 用户角度 和从 系统角度
数据库 缘起
数据库是一种技术,更是一种思维。
应用数据库,实现积累的收益。

表(Table)的理解
这里的数据,就是上文提到的一些有关联关系的 表(Table),表是以 按行按列 形式组织和展现的数据。
E.F.Codd, 基于对“表(Table)”的理解:
- 提出了“关系”及关系模型
- 提出了关系数据库理论
- 开创了数据库的时代
- 当前普遍应用的数据库管理系统的奠基者
- 获得了 计算机领域最高奖“图灵奖”
那么,表里有什么?
这需要 抽象,抽象就是要 理解 表的要素,然后 区分 开各个要素,再给它们 命名,用以 表达 表的信息。

Table 中描述了一些 相互有关联关系的数据。
- “学生成绩单” 是这个表的 表名;
- “班级”、“课程”、…、“成绩”这一行是表的 表标题(格式);
- 粉红色框框的一行行一列列的内容是表的 表内容(值);
- 表名 和 表标题 构成这个表的 关系(模式)。
- 表名、表标题和表内容 构成这个 表(关系)。
- 这个表内容的每一行又叫 行(row)/元组(tuple)/记录(record)。
- 这个表内容的每一列又包含 列名 和 列值。
用表来定义数据库
Database: 相互之间有关联关系的 Table 的集合。

除了表形式的关系数据库外,还有图像数据库和工程数据库。

数据库系统的理解
概念层次的理解
数据库系统(工作环境):
- 数据库(DB): Database
- 数据库管理系统(DBMS): Database Management System
- 数据库管理员(DBA): DataBase Administrator
- 数据库应用(DBAP): DataBase Application
- 计算机基本系统

实例层次的理解
数据库系统(工作环境):图书管理数据库系统

数据库管理系统的理解
- 怎样利用数据库管理系统管理数据库?
- 数据库管理系统应具有什么功能?
从用户角度看
- 数据库定义: 定义数据库中 Table 的名称、标题(内含的属性名称及对该属性的值的要求)等。
- DBMS 提供一套 数据定义语言 (DDL:Data Definition Language)给用户;
- 用户使用 DDL 描述 其 所要建立表的格式;
- DBMS 依照用户的定义,创建数据库及其中的 Table。

- 数据库操纵:向数据库的 Table 中 增加/删除/更新数据 及 对数据进行查询、检索、统计 等。
- DBMS 提供一套 数据操纵语言 (DML:Data Manipulation Language)给用户;
- 用户使用 DML 描述 其所要进行的 增、删、改、查 等操作;
- DBMS 依照用户的操作描述,实际执行 这些操作。

- 数据库控制:控制数据库中数据的使用—哪些用户可以使用,哪些不可以。
- DBMS 提供一套 数据控制语言 (DCL:Data Control Language)给用户;
- 用户使用 DCL 描述 其对数据库所要实施的控制;
- DBMS 依照用户的描述,实际进行控制。

- 数据库维护:转储/恢复/重组/性能监测/分析…
- DBMS 提供一系列 程序(实用程序/例行程序) 给用户;
- 在这些程序中提供了对数据库维护的各种功能;
- 用户使用 这些程序进行各种数据库维护操作。
数据库维护的实用程序,一般都是由数据库管理员(DBA)来使用和掌握的。

从系统实现角度看
“形式->构造->自动化”–数据库管理系统的实现。

DBMS 为完成 DB 管理,在后台运行着一系列程序…
- 语言编译器:将用数据库语言书写的内容,翻译成 DBMS 可执行的命令。(可以类比 C 编译器可以把 C 语言代码编译成 CPU 可以懂的二进制指令 来理解)例如:DDL 编译器, DML 编译器, DCL 编译器等;
- 查询优化(执行引擎)与查询实现(基本命令的不同执行算法):提高数据库检索速度的手段。例如:贯穿于数据存取各个阶段的优化程序;
- 数据存取与索引:提供数据在磁盘、磁带等上的高效存取手段。例如:存储管理器,缓冲区管理器,索引/文件和记录管理器等;
- 通信控制:提供网络环境下数据库操作与数据传输的手段。
- 事务管理:提供提高可靠性并 避免并发操作错误 的手段。
- 故障恢复:使数据库自动恢复到故障发生前正确状态的手段。例如:提供了备份、运行日志操控等实用程序;
- 安全性控制:提供合法性检验,避免非授权非法用户访问数据库的手段。
- 完整性控制:提供数据及数据操作正确性检查的手段。

典型的数据库管理系统
- Oracle
- MySQL
- PostgreSQL
- DB2(IBM)
- Sybase
- Microsoft SQL Server
- Microsoft Access
- Microsoft FoxPro
- MongoDB(面向文档)

【总结】
数据库管理系统,包括数据库语言,和数据库执行例行程序。

数据库语言
数据库语言:使用者通过数据库语言利用 DBMS 操作数据库;
SQL 语言是结构化的数据库语言。
数据库定义、操纵、控制语言
- 数据定义语言(DDL:Data Definition Language) ----DBMS 提供给用户,以便用户定义数据格式;
- 数据操纵语言(DML:Data Manipulation Language)----DBMS 提供给用户,以便用户对数据进行操作;
- 数据控制语言(DCL:Data Control Language)----DBMS 提供给用户,以便用户对数据进行控制;
- 数据库各种操作的执行----DBMS 按用户要求进行定义、操纵、控制和维护。

数据库语言 VS 高级语言
- 一条数据库语言语句相当于高级语言的一个或多个循环程序。

数据库语言(标准的 SQL 语言):
Select 学号,姓名 From 学生登记表 Where 性别 = ‘男’;
高级语言:
For K=1 to 最后一条记录 读第K条记录If 性别=‘男’ then显示第K条记录Endif
Next K
- 数据库语言可以嵌入到高级语言(宿主语言)中使用。
交互式数据库语言(标准的:SQL语言):
Select 学号,姓名
From 学生登记表
Where 性别=‘男’;
嵌入式数据库语言(SQL 语句嵌入到某一种高级语言中):

内容回顾

练习
- 关于数据库系统和数据库管理系统,下列说法正确的是__________。
A. 数据库系统和数据库管理系统指的是同一软件产品
B. 数据库系统和数据库管理系统指的是不同软件产品
C. 数据库管理系统是软件产品,而数据库系统不仅仅是软件产品
D. 数据库系统是软件产品,而数据库管理系统不仅仅是软件产品
正确答案:C
- 关于数据库系统,下列说法正确的是__________。
A. 数据库系统的构成包括计算机/网络基本系统、数据库和数据库管理系统
B. 数据库系统的构成包括计算机/网络基本系统、数据库、数据库管理系统和数据库应用程序
C. 数据库系统的构成包括计算机/网络基本系统、数据库、数据库应用程序和数据库管理员
D. 数据库系统的构成包括数据库、数据库管理系统、数据库应用程序、数据库管理员以及计算机与网络基本系统
正确答案:D
- 从用户角度看数据库管理系统的功能,下列说法正确的是__________。
A. 数据库管理系统就是通过数据库语言让用户操作进而提供数据库操纵功能的系统
B. 数据库管理系统就是通过数据库语言让用户操作进而提供数据库定义和数据库操纵功能的系统
C. 数据库管理系统就是通过数据库语言让用户操作进而提供数据库定义、数据库操纵和数据库控制功能的系统
D. 数据库管理系统就是通过数据库语言让用户操作进而提供数据库定义、数据库操纵和数据库控制功能的系统,同时提供了一系列程序能够实现对数据库的各种存储与维护
正确答案:D
- 从系统角度看数据库管理系统,其功能包括__________。
A. 数据库语言及其编译
B. 查询实现与查询优化
C. 事务处理
D. 不仅仅有(A)(B)(C )功能,还包括其他功能
正确答案:D
- 从系统角度看数据库管理系统,其功能包括__________。
A. X-查询实现与查询优化
B. Y-事务处理
C. Z-数据存储与索引
D. 不仅仅包含X-、Y-、Z-功能,还包括其他功能
正确答案:D
- 下列哪些功能不是数据库管理系统的功能__________。
A. 完整性控制
B. 并发控制
C. 通讯控制
D. 处理机控制
正确答案:D
- 关于数据库系统语言,下列说法正确的是__________。
A. 数据库系统语言包括了DDL和DML
B. 数据库系统语言包括了DDL、DML和DCL
C. 数据库系统语言包括了DDL、DML和C++/Java
D. 数据库系统语言包括了DDL、DML和程序设计语言
正确答案:B
- 关于DDL,下列说法正确的是__________。
A. DDL是数据库定义语言
B. DDL是数据库操纵语言
C. DDL是数据库控制语言
D. DDL是数据库维护语言
正确答案:A
- 关于DML,下列说法正确的是__________。
A. DML是数据库定义语言
B. DML是数据库操纵语言
C. DML是数据库控制语言
D. DML是数据库维护语言
正确答案:B
- 从用户角度看数据库管理系统,其功能包括__________。
A. 数据库定义
B. 数据库操纵
C. 数据库控制
D. 上述全部
正确答案:D
- 从用户角度看数据库管理系统,其功能包括__________。
A. 数据库定义
B. 数据库操纵
C. 数据库控制
D. 数据库维护
正确答案:A、B、C、D
相关文章:
【一】初步认识数据库
数据库概览数据库 缘起表(Table)的理解用表来定义数据库数据库系统的理解概念层次的理解实例层次的理解 数据库管理系统的理解从用户角度看从系统实现角度看典型的数据库管理系统 数据库语言数据库定义、操纵、控制语言数据库语言 VS 高级语言 内容回顾练习 数据库概览 走马观…...
HTML <section> 标签
实例 文档中的区段,解释了 PRC: <section><h1>PRC</h1><p>The Peoples Republic of China was born in 1949...</p> </section>定义和用法 <section> 标签定义文档中的节(section、区段&#x…...
PHP 之房贷计算器、组合贷
一、等额本金 // (等额本金) //$loanAmount>贷款金额 //$loanPeriod>贷款年限 //$interestRate>贷款利息 function calculateEqualPrincipalPayment($loanAmount, $loanPeriod, $interestRate) {$monthlyPrincipal $loanAmount / ($loanPerio…...
解决Vue+Element UI使用表单rules国际化时From表单验证信息不能实时更新
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 博主在工作之余开始进行自动化测试平台的开发,虽然已经996一个月了但是还是在使劲挤时间做这件事情,目前平台使用前端框架vu…...
友善之臂NanoPi NEO利用fbtft驱动点亮1.69寸ST7789V2屏幕
屏幕介绍 本文以中景园1.69寸LCD,驱动芯片ST7789V2该款屏幕示例,屏幕的分辨率为240*280 屏幕引脚说明 NanoPi NEO IO介绍 屏幕与板子的IO连接关系 屏幕NanoPi NEOGNDGNDVCC3.3VSCLPC2SDAPC0RESPG11DCPA1CSPC3BLKPA0 下载交叉编译器和linux内核源码并按教…...
MFC第三十天 通过CToolBar类开发文字工具栏和工具箱、GDI+边框填充以及基本图形的绘制方法、图形绘制过程的反色线模型和实色模型
文章目录 CControlBar通过CToolBar类开发文字工具栏和工具箱CMainFrame.hCAppCMainFrm.cppCMainView.hCMainView.cppCEllipse.hCEllipse.cppCLine.hCLine.cppCRRect .hCRRect .cpp CControlBar class AFX_NOVTABLE CControlBar : public CWnd{DECLARE_DYNAMIC(CControlBar)pro…...
Android Https
本质:在客户端和服务端使用非对称加密协商出一套对称密钥,每次发送数据前加密,收到后解密,达到加密传输 http ssl 在http之下增加了安全层,用于保障http的加密传输 HTTPS连接 TLS连接步骤 1.客户端发送 client h…...
Games101学习笔记2
参考博客:GAMES101 梳理 / 个人向图形学笔记_games101笔记_river_of_sebajun的博客-CSDN博客 lecture 05 Rasterization 1(Triangles) 光栅化 把东西画在屏幕上的过程就是光栅化的过程 视口变换 为什么模型用三角形? 最基本的几何平面;保…...
java字符串String类的常用方法
java字符串String类的常用方法 字符串的创建: (1)定义字符串直接赋值,在字符串池中开辟空间() String str1“Hello”;//在字符串池中写入字符串"hello" String str2“Hello”;//直接引用字符串池中的"Hello" System.out.println(s…...
自动化测试如何解决chrome自动更新问题
问题 调试好的自动化测试脚本,有时候总是在第一天或过几天就不好使了。产品并未进行功能逻辑,ui修改,一切还和调试自动化脚本的时候保持一致。运行自动化测试脚本时,控制台总是会在driver webdriver.Chrome()这一行报错。 问题…...
闲鱼卖货:新手容易踩坑的7个地方。赶紧看看有没有中招?
科思创业汇 大家好,这里是科思创业汇,一个轻资产创业孵化平台。赚钱的方式有很多种,我希望在科思创业汇能够给你带来最快乐的那一种! 这是我以前的一个学生收到的第一个非法通知。他告诉我,他当时很害怕,…...
PowerShell 获取某目录下所有的文件、文件夹,同时对获取到的文件路径字符串进行替换处理
PowerShell 获取某目录下所有的文件、文件夹,同时对获取到的文件路径字符串进行替换处理 前言: 为了将Windows系统下的Java编译文件与linux服务器上的文件进行比较,故进行此文件路径的获取及路径处理。 在只有文件路径 而没有实际文件的情况下…...
JUC并发编程之线程锁(一)
目录 1.ReentrantLock(互斥锁) 2.ReentRantReaderWriterLock(互斥读写锁) 3.StampedLock(无障碍锁) 4.Condition(自定义锁) 5.LockSupport 问题引出: 由于传统的线程控制需要用到同步机制Sy…...
Android AlertDialog标题居中
网上很多做法都是使用setCustomTitle方法实现的,我偏不,因为我已经找到了标题的textView了: 在show了之后可以拿到标题(注意一定是show之后才能拿得到,create之后拿也是空的): TextView title…...
k8s界面化平台dashboard、kubesphere、Rancher对比
k8s集群管理dashboard有很多,比如kuboard、官方发dashboard、kubesphere、Rancher等等。 Dashboard、KubeSphere 和 Rancher 都是流行的 Kubernetes 管理和操作界面。它们都提供了图形化的用户界面,以简化对 Kubernetes 集群的管理和监控。每个工具都有其…...
【字符串左旋】
字符串左旋 1.题目要求 实现一个函数,可以左旋字符串中的k个字符。 例如: ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 2.解法: 设计循环使其可以旋1次,然后让他执行n次是一个最简单的思路: 函数实现…...
Docker Dirtypipe(CVE-2022-0847)漏洞复现与分析容器逃逸
安装环境 ./metarget cnv install cve-2022-0847 --verbose 原理 同脏牛,通过写只读内存,对映射的内存做篡改 EXP docker run --rm -it -v $(pwd):/exp --cap-addCAP_DAC_READ_SEARCH ubuntu如果提示 Unknown capability to add: "CAP_CAP_DAC_RE…...
python接口自动化测试框架2.0,让你像Postman一样编写测试用例,支持多环境切换、多业务依赖、数据库断言等
项目介绍 接口自动化测试项目2.0 软件架构 本框架主要是基于 Python unittest ddt HTMLTestRunner log excel mysql 企业微信通知 Jenkins 实现的接口自动化框架。 前言 公司突然要求你做自动化,但是没有代码基础不知道怎么做?或者有自动化…...
Vue.js2+Cesium1.103.0 九、淹没分析效果
Vue.js2Cesium1.103.0 九、淹没分析效果 Demo <template><divid"cesium-container"style"width: 100%; height: 100%;"><spanid"button"style"position: absolute; right: 50px; top: 50px; z-index: 999; font-size: 24px…...
SpringBoot案例-部门管理-新增
根据页面原型,明确需求 页面原型 需求 阅读接口文档 接口文档链接如下: 【腾讯文档】SpringBoot案例所需文档 https://docs.qq.com/doc/DUkRiTWVaUmFVck9N 思路分析 前端在输入要新增的部门名称后,会以JSON格式将数据传入至后端…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
算法打卡第18天
从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...
