SQL核心组成
第一章 数据库系统概述
第一节 数据库基本概念
数据库概念
数据库是长期存储在计算机中的有组织、可共享数据集合,且数据库中的数据按照一定的数据模型组织、描述、存储,具有较小冗余度、较高数据独立性、系统易于扩展,并可以被多个用户共享。
特点:永久存储、有组织、可共享
数据库管理系统 是计算机的 系统软件
数据库管理系统:
DBMS
专门用于建立和管理数据库一套软件,介于应用程序和操作系统之间。
负责科学有效地组织和存储数据,
并帮助数据使用者能够从大量的数据中快速获取所需数据
以及提供必要的安全性和完整性等统一控制机制,实现对数据的有效管理维护。
数据库管理系统的功能:
数据定义功能
数据操纵功能
数据库的运行管理能力
数据库建立和维护功能
数据组织、存储和管理能力
与其他软件网络通信功能、不同数据库管理系统之间的数据传输以及相互访问功能等。
数据定义功能:
数据库模式定义
表定义
索引定义
视图定义
数据库系统:
DBS
在计算机引入数据库技术之后系统。
一个完整的数据库系统包括:
数据库
数据库管理系统相关实用工具
应用程序
数据库管理员
用户
用户:程序员和数据库终端用户。
第二节 数据库管理技术的发展
数据库管理技术经历阶段:人工管理阶段》文件系统阶段》数据库系统阶段
人工管理阶段特点:
数据不保存
应用程序管理数据
数据面向应用
文件系统 将数据的逻辑结构与梳理结构分离,由“存放方法” 实现逻辑结构与物理结构之间的映射。产生时期:20世纪50年代后期到60年代中期。
数据库时代:20世纪70年代
物理设计:指对一个给定数据库逻辑结构,研究并构造物理结构的过程。
数据库系统的特点:
数据集成
数据共享性高
数据冗余小
数据一致性
数据独立性高
统一管理与控制
减少应用程序开发维护工作量
一个关系逻辑上对应一个 二维表。
表中的每一个字段表示同一类信息,具有相同数据类型。
在关系数据库中,关系模式是 型。
异名同义:
同一意义的实体类型或联系类型名在不同局部应用中具有不同的名字。
变量:
用于存储临时数据,其中的数据可以随着程序的运行而变化。
关系完整性约束:实体完整性,参照完整性,用户定义完整性
实体完整性:
关系的主属性,即主码的组成不能为空,也就是关系的主属性不能是空值或者NULL。
用户定义完整性:非空约束,CHECK约束,触发器
不好关系模式问题:数据冗余,更新异常,插入异常,删除异常
数据库设计方法:直观设计法,规范设计法,计算机辅助设计法
常见的规范设计法:新奥尔良设计方法,基于E-R模型的数据库设计方法,基于第三范式的设计方法
SQL2颁布年份1992
存储过程的好处:可增强SQL语言的功能和灵活性,良好封装性,高性能,可减少网络流量,可作为一种安全机制来确保数据库安全性和数据的完整性
存储过程与存储函数联系:
存储过程与存储函数都是由SQL语句和过程式语句组成代码片段;
可以被应用程序和其他SQL语句调用。
存储过程与存储函数的区别:
存储函数不能拥有输出参数,这是因为存储函数自身就是输出参数;而存储过程可以拥有输出参数;
可以直接对存储函数进行调用,且不需要CALL语句;而对于存储过程的调用,需要使用CALL语句;
存储函数必须包含一条RETURN语句,而这条特殊的SQL语句不允许包含在存储过程中。
什么是游标:
游标是SQL 的一种数据访问机制 ,游标是一种处理数据的方法。众所周知,使用SQL的select查询操作返回的结果是一个包含一行或者是多行的数据集,如果我们要对查询的结果再进行查询,比如(查看结果的第一行、下一行、最后一行、前十行等等操作)简单的通过select语句是无法完成的,因为这时候索要查询的结果不是数据表,而是已经查询出来的结果集。游标就是针对这种情况而出现的。
我们可以将“ 游标 ”简单的看成是结果集的一个指针,可以根据需要在结果集上面来回滚动,浏览我需要的数据。
游标的操作:
声明游标—打开游标—读取数据—关闭游标—删除游标
关系模型的组成:
数据结构、关系操作、数据完整性
关系操作:
特点:集合操作方式。
结构冲突:
同一对象在一个局部E-R图中作为实体,而在另一个局部E-R图作为属性;
同一实体在不同的E-R图中属性个数和类型不同;
实体之间的联系不同E-R图是不同的类型。
数据完整性:
控制数据在一定范围内有效或要求数据之间满足一定的关系,保证输入到数据库中的数据满足相应的约束条件,以确保数据有效、正确。
粒度:
是数据仓库的数据单位中保存数据的细化或综合程度的级别,细化程度越高,粒度级别就越小,相反,细化程度越低,粒度级就越大。
实体:
客观存在并可相互区别事物称为 实体。
属性:
实体所具有某种特性。
实体属性:
标识属性 说明属性。
查看表:
显示表的名称 显示表的结构
主码:
在一个关系的若干个候选码中指定一个用来唯一标识关系的元组,这个指定的候选键称为主码或主键。
全码:
一个关系模式的所有属性集合是这个关系的主码或主键,这样主码或主键 叫做 全码。
超码:指一个或多个属性的集合,这些属性的组合可以使我们在一个实体集中唯一地标识一个实体。
候选码:
若关系中的一个属性或属性组的值能够唯一地标识一个元组,且他的真子集不能唯一的标识一个元组,则称这个属性或属性组做候选码。
候选码是最小的超码
域:属性取值范围。
主键列需要遵守的规则:
每个表只能定义一个主键;
主键的值,必须唯一标识表中的每一行记录,不能为Null,表中两个不同的行在主键上是不能具有相同值的。
符合主键不能包含不必要的列。
一个列名复合主键的列表中只能出现一次。
简述主属性和非主属性概念:
包含在任何一个候选码中的属性称为主属性或者码属性,
不包含在任何一个候选码中属性称为非主属性或者非码属性。
二元专门关系操作包括连接运算和除运算。
数据聚集结构的一种有效方式是块结构方式。
活锁问题的解决与调度算法有关,一种最简单方法,先来先服务
数据库系统对数据安全管理是使用 身份认证、数据库用户权限确认等访问控制措施。
根据系统测试结果,以及用户的反馈意见,对系统第一步的修改、完善和维护工作。
数据仓库是面向主题、集成的、稳定、随时间变化的数据集合,用以支持管理决策的过程。
NoSQL是以互联网大数据应用为背景发展起来得到 分布式数据库管理系统。
简述关系数据库对关系限定具体要求:
每一个属性都是不可分割的
每一个关系仅是一种关系模式
每一个关系模式的属性必须命名,属性名不可重复
同一个关系中不允许出现候选码或者候选键完全相同的元祖。
在关系中元组的顺序是无关紧要(行序)
在关系中属性的顺序是无关紧要(列序)
简述数据定义语言功能及其包括主要SQL语句:
数据定义语言:对数据库及数据库中各种对象进行创建、修改、删除等操作。
主要语句:CREATE ALTER DROP
数据定义语言:DDL Data Defination Language
数据操纵语言:
SELECT、INSERT、DELETE、UPDATE
简述在MySQL使用游标的原因:
在使用SELECT语句进行数据检索时,若该语句成功被执行,则会返回一组称为结果集数据行,
该结果集中可能拥有多行数据,这些数据无法直接被一行一行的进行处理,因此,需要使用游标。
使用游标过程中注意事项:
游标只能用于存储过程或者存储函数中,不能单独用于查询中;
在存储过程或存储函数中,可以定义多个游标,但是一个BEGIN…END语句块只能有一个同名游标;
游标不是一条SELECT语句,而是被SELECT语句检索出来结果集。
简述完整性约束条件作用对象及其含义:
作用对象可以是列、元组和表。
列级约束:对列类型、取值范围、精度等约束。
元组约束:元组中各个字段之间相互约束
表级约束:若干元组之间、关系之间联系的约束。
建立索引的数据对象通常应具有较多的 查询操作。
数据库对象:
表
默认约束
规则
视图
触发器
存储过程
互联网网站架构:WAMP
外连接:
根据连接表顺序可分为:左外连接、右外连接
外连接适用于具有一对多关系的两个表连接;
左外连接结果集包括:包含左表与右表匹配的行、左表有的右表不匹配行;
在FROM子句中使用关键字:LEFT JOIN 进行左外连接。
使用内连接的情形有哪些:
等值连接
非等值连接
自连接
连接操作中常用:等值连接、自然连接。
导出备份语句:
SELECT INTO ~~~ OUTFILE
NoSQL系统支持的数据存储模型:键值模型、文档模型、列模型、图模型。
键值存储是
NoSQL数据库采用最多的数据存储式。
内模式 也称为 存储模式 Storage Schema。
关系代数是关系操作语言一种传统表示形式,它以集合代数为基础发展起来的。
关系数据库的优点:
不需要数据存储结构 和存取方法设计。
数据库应用软件设计与开发过程中可由
需求设计、
系统功能与数据库的设计、
系统功能与数据库的实现、
测试与运维等阶段组成。
数据库应用软件设计与实现中需求分析的种类:
功能性需求分析
非功能性需求分析
数据库的应用功能目标:
要求明确数据库应用范围及应达到的应用处理功能。
数据库系统开放性:
支持数据库语言标准
在网络上支持标准网络协议
系统具有良好的可移植性、可连续性、可扩展性和互操作性。
MapReduce技术是Google公司于2004年提出大规模并行计算解决方案,主要应用于大规模廉价集群上的大数据并行处理。
简述层次模型的数据结构和特点:
层次模型的数据结构是一颗“有向树”,树每一个节点对应一个记录表,也就是现实世界实体集。
有且仅有一个节点没有父节点,它称作根节点。
其他节点有且仅有一个父节点。
视图优点:
集中分散数据
简化查询语句
重用SQL语句
保护数据安全
共享所需数据
更改数据格式
局部变量注意事项:
局部变量的生命周期为该变量创建到该函数体结束(生命周期:变量被创建开始到被系统回收的这一个过程,存活期间内(在变量的生存周期内)可以使用这个变量)
简述局部变量和用户变量的区别:
局部变量声明时,在其前面没有@符号,并且它只能被声明它的BEGIN~END语句块中语句使用;
而用户变量声明时,会在其名称前面使用@符号,同时已声明的用户变量存在于整个会话中。
解决并发操作所带来的数据不一致性问题的方法:
封锁
时间戳
乐观控制法
多版本并发控制
事务:
是用户定义的一个数据操作序列,这些操作可作为一个完整工作单元,要么全部执行,要么全部不执行,是一个不可分割的工作单位。
封锁的基本思想:
需要时,事务通过向系统请求对它所希望数据对象(如数据库中记录)加锁,以确保它不被非预期改变。
封锁的级别也称为 一致性级别,或者隔离度。
封锁工作原理:
若事务T对数据D加了X锁,则所有事务对数据D锁请求都必须等待直到事务T释放锁。
若事务T对数据D加了S锁,则别事务还可以对数据D请求S锁,而对数据D的X锁请求都将必须等待直到事务T释放锁。
对读操作请求S锁,对更新(插入、删除、修改)请求X锁。
事务一直占有获得锁直到结束(COMMIT或ROLLBACK)时释放。
封锁类型:
S锁 =共享锁
X锁 =排他锁
最简单有效的保障封锁其调度是可串行性的方法是:两段封锁法。
遵循两段锁协议事务的任何并发调度都是可串行化。
防止丢失更新和读脏数据:2级封锁
防止丢失更新: 1级封锁
OLAP 主要用于 分析型处理
OLTP 主要用于 操作型处理。【数据汇总/聚集工具】
什么函数依赖:
函数依赖是指关系属性间的对应关系。
其定义为:设R为任一给定关系,如果对于R中属性X的每一个值,R中属性Y只有唯一值与之对应,则称X函数决定Y或者称Y函数依赖于X,记为:X→Y。
其中,X为决定因素,反之,对于关系R中属性X和Y,若X不能函数决定Y,则称 Y不函数依赖于X。
函数依赖根据其不同性质可分为:
完全函数依赖
部分函数依赖
传递函数依赖
什么是完全函数依赖:
设R为任一给定关系,X、Y为其属性集,若 X→Y,且X中的任何真子集X’,都有 X’!→Y,则称 Y 完全函数依赖于 X。(即函数依赖的基础上,我们的A属性是一个属性组,只有这个属性组中的全部属性才能确定唯一的B属性,A的任何一个子集都不可以。)
什么是部分函数依赖:
设R为任一给定关系,X,Y为其属性集,若X➡️Y,且X中存在一个真子集X‘满足X’➡️Y,则称Y部分函数依赖于X。
什么是传递函数依赖?
设R为任一给定关系,X,Y,Z为其属性集,若X➡️Y,Y!➡️X,Y➡️Z,X➡️Z,则称Z传递函数依赖于X。
一对一联系:
如果对于实体集A中每个实体,在实体集B中至多有一个实体与之对应联系(也可以没有),
反之亦然,则称实体集A与实体集B具有一对联系,记作1:1。
什么是多对多联系:
如果对于实体集A中每一个实体,在实体集B中都有M个实体与之联系,
反之,对于实体集B中每一个实体,在实体集A中都有N个实体与之联系,
则称实体集A与实体集B具有多对联系,记为M:N。
数据库设计:
将数据库系统与现实世界进行密切地、有机地、协调一致结合过程。
数据库设计目标:
满足应用功能需要。其主要是指当前与可预知的将来应用所需要的数据及其联系,应全部准确地存储在数据库中,从而可满足用户应用中所需要的对数据进行存、取、删、改等操作。
良好的数据库性能。其主要是指数据的高效率存取和空间的节省,并具有良好的数据共享性、完整性、一致性和安全保密性。
数据库设计的内容:
数据库结构设计
数据库行为设计
数据库设计的步骤:
需求分析
概念结构设计
逻辑结构设计
物理结构设计
数据库实施
数据库的运行和维护
数据库设计的过程:
需求设计阶段
结构设计阶段:概念结构设计、逻辑结构设计、物理结构设计
行为设计阶段:功能设计、事务设计和程序设计
数据库实施阶段:加载数据库数据、调试运行应用程序。
概念结构设计常用方法:
实体分析法、属性综合法
数据库实施阶段的工作:
加载数据
应用程序设计
数据库试运行
局部信息结构设计步骤:
确定局部范围
选择实体
选择实体的关键字属性
确定实体间联系
确定实体的属性
选择实体的任务:
是在确定局部范围内选择一些合适的信息单位作为局部信息结构的基本实体。
局部范围:
主要依据需求分析报告中标明的用户视图范围来确定的。
MySQL提供位运算符:
& 位与
| 位或
^ 位异或
~ 位取反
>> 位右移
<< 位左移
MySQL提供逻辑运算符:
NOT 逻辑非 !
AND 逻辑与 &&
OR 逻辑或 ||
XOR 逻辑异或
第一代网状、层次数据模型系统特点:
支持三级模式体系;(外模式、模式、内模式)
用存取路径来表示数据之间联系
独立数据定义语言
导航的数据操作语言
第一代数据库系统代表:IMS
第二代关系数据库系统特点:
具有模型简单清晰、
理论基础好、
数据独立性强、
数据库语言非过程化和
标准化等特点。
什么是大数据?
无法在可容忍时间内用现有信息技术和软、硬件工具对其进行感知、获取、管理、处理的服务的数据集合。
大数据特点:
数据量巨大,即大量化
数据种类繁多,则多样化
处理速度快,即快速化
价值密度低
常见分类模型及算法:
决策树模型
神经网络模型
线性回归模型
简述客户/服务器模式概念:
在客户/服务器模式结构中,
命令行客户端、图形化界面管理工具、应用程序等 称为 客户端,前台,或者表示层,主要完成与数据库使用者交互任务;
而数据库管理系统 称为 服务器,后台,或者数据层,其主要负责数据管理。
这种操作数据库模式称为 客户/服务器模式 C/S模式。
什么是概念层数据模型:
数据概念模型,信息模型。
描述现实世界的事物与具体的计算机无关,且独立于任何DBMS。
但容易向DBMS所支持的逻辑模型转换。
这类模型主要用于数据库的设计阶段,即在设计数据库时,通常用概念模型来协助抽象表示现实世界各种事物及其联系。
数据库设计人员进行需求分析的基本方法:
听取数据库应用部门工作人员的报告,并与之座谈。
需求分析人员可提交一份需求调查表,该表内容主要包括调查的内容和要求提供资料的格式,应用部门的业务人员则可根据该表进行准备和提交资料。
数据库设计人员还需查阅原始资料,以及跟班作业等。
MySQL的特点:
体积小
速度快
开源源代码
遵循GPL(GUN通用公共许可)
什么是默认值:
指向表插入数据时,如果没有明确给出某列所对应值,则DBMS此时允许为此列指定一个值。
并发操作问题有哪些:
丢失更新
不可重复读
读脏数据
数据挖掘:数据库中的知识发现。
数据挖掘功能:
概念描述
关联分析
分类与预测
聚类
孤立点检测
趋势和演变分析
关联:
简单关联、时序关联、因果关联
聚类的目的:
使属于同一个类别的对象之间距离尽可能小,而不同类别的对象间尽可能的大。
概念模型:椭圆表示 属性,长方形表示实体型,菱形表示 联系。
概念模型设计 主要目标:最大限度地满足应用需求。
关系数据库的概念结构设计与逻辑结构设计是关系数据库的整个设计过程的关键。
DBMS提供 模式描述语言 来严格地定义 模式。
DBMS提供 子模式描述语言 来严格地定义 子模式。
索引:
提高数据文件访问效率的有效方法。
单列索引,组合索引。
静态建立索引的概念:
应用人员预先建立索引,一旦建立索引,后续应用程序均可直接使用该索引存取数据,它多适用于用户较多且使用周期相对长数据。
数据流程图:
反映应用部门原始业务处理工作流程。
操作过程说明书:
根据数据流程图、任务分类表及数据操作特征表等,标明个任务的主要逻辑执行步骤。
数据操作特征表:
标明任务和数据间的联系及不同数据的不同操作特征与执行频率。
任务分类表:
标明不同任务功能及使用情况。
数据控制语言:GRANT REVOKE
SQL调用:
包括SQL例程和调用规则。
以提高SQL的灵活性、有效性、共享性以及使用SQL具有更多高级语言特征。
三级模式体系:(外模式、模式、内模式)
一个外模式只可为一个应用程序使用。
数据库核心:概念模式(模式)
关系数据库 以二维表形式组织数据。
产生数据不一致根本原因 是 数据冗余。
存储文件逻辑结构 组成了 内模式。
关系语言的优点:
高度非过程化。
条件判断语句:
IF…THEN …END语句
CASE语句
数据库技术和Web技术相结合 Web数据库系统
数据库技术和分布式理技术相结合 分布式数据库系统
维可以有细节程度的不同描述方面,这些不同的描述方面为维的层次。
什么是数据的安全性:
数据安全性是指保护数据,以防止不合法的使用而造成数据泄密破坏,
使每个用户只能按规定对某些数据以某种方式进行使用和处理,
即保证只有赋予权限的用户才能访问数据库中的数据,防止对数据非法使用。
第一范式 1NF:
设R为任一给定关系,如果R中的每个列与行的交点处的取值都是不可再分基本元素,则R为第一范式。
第二范式 2NF:
设R为任一给定关系,若R为1NF,且其所有非主属性都完全函数依赖于候选关键字,则R为第二范式。
第三范式 3NF:
设R为任一给定关系,若R为2NF,且其每一个非主属性都不传递函数依赖于候选关键字,则R为第三范式。
什么是BCNF:
设R为任一给定关系,X,Y为其属性集,F为其函数依赖集,
若R为3NF,且其F中的所有函数依赖X→Y(Y不属于X)中的X都包含候选关键字,则R为BCNF。
需求分析报告包含的内容:
数据库的应用功能目标
标明不同用户视图范围
应用处理过程需求说明
数据字典
数据量
数据约束
变量的属性有哪些:
变量名
数据类型
数据约束:
数据的安全保密性
数据完整性
响应时间
数据恢复
响应时间:
指某些特定应用要求数据存取时间限制。
什么是索引:
DBMS根据表中的一列或者多列按照一定的顺序建立的列值与记录行之间的对应关系表,
因而索引实质上就是描述索引列值与原表记录行之间一对应关系的有序表。
什么存储过程:
是一组为了完成某项特定功能的SQL语句集,
其实质上就是存储在数据库中代码,
它可以由声明式SQL(CREATE,UPDATE,SELECT)
过程式SQL(IF…THEN…END等控制结构语句)
组成。
存储过程常用循环语句:
REPEAT
LOOP
WHILE
事务的两个阶段:
发展或加锁阶段
收缩或释放锁阶段
简述事务ACID特征:
为了保证数据一致性和正确性,数据库必须保证事务具有四个特性:
原子性 Atomicity:所有的操作要么都做,要么都不做。
一致性 Consitency:事务执行完毕后将数据库从一个一致性状态转变到另一个一致性状态。
隔离性 Isolation:一个事务内部操作及使用的数据对并发的其他事务隔离的。
持续性 Durabilty: 事务一旦提交,对数据库改变是永久的。
数据集市基本思想:
自下而上数据仓库开发方法。
数据集市的分类:
独立数据集市
从属的数据集市
这两种数据集市的混合
图存储数据库:
节点表示实体
属性 保存与节点相关信息
边
文档型数据库:
CouchDB、MongDB
列存储数据库:
Cassanda、HBase
什么是分割:
分割是将数据分散到各自的物理单元中,以便能分别处理,以提高数据处理的效率。
分割后的单元:切片
数据库实现与操作阶段:
数据库的实现
操作与监督
数据库修改与调整
故障:
计算机产生硬件故障
操作员失误
人为破坏
故障恢复:
将数据库从一个错误状态恢复到某一已知正确状态的功能。
造成数据库运行事务异常中断的因素:
计算机硬件故障
软件故障
病毒
人为误操作
自然灾害
盗窃