数据库
数据库系统
数据库系统
-
基本概念
-
data
- 数据
-
DB
-
数据库
- 以特定的组织结构存放在计算机的存储介质中的相互关联的数据集合
-
-
DBS
-
数据库应用系统
- Database System
-
-
DBA
- 数据库管理员
-
-
DBS
- 硬件
- os
- DBMS
- DB
- APP
- 用户以及开发人员
数据模型
-
概念模型
- E - R 模型
- 语义对象模型
-
逻辑模型
- 层次模型
- 网状模型
- 关系模型
- 面向对象模型
- 对象关系模型
-
现实世界的数据化过程
-
三个世界
- 现实
- 信息
- 机器
-
-
概念模型中的基本概念
-
实体
- 客观存在并可相互区别的事物被成为实体
-
属性
- 实体所具有的某一特性称为属性
-
实体集
- 同型实体的集合
-
实体型
- 用实体名及属性名集合来抽象和刻画同类实体
-
码
- 唯一标识实体的最小属性集
-
联系
- 实体之间的联系
-
-
联系的分类
-
按实体集之间的映射类型分
- 1:1
- 1:n
- n:m
- Is-a
-
按实体集的个数分
- 自身联系
- 二元联系
- 多元联系
-
-
E-R模型及E-R图
-
数据模型的组成要素
-
数据结构
- 用于描述系统的静态特性
-
数据操作
- 。。。。。。的动态特性
-
数据完整性
- 数据完整性约束是一组完整性约束的集合,给数据及联系以制约
-
数据库系统结构
-
三级模式结构
-
外模式
-
子模式、用户模式、用户级
- 面向具体的应用
- 独立于 内模式和存储结构
- 定义在逻辑模式上
-
-
模式
-
概念模式、逻辑模式、设计者
- 模式,又称概念模式、逻辑模式、位于中间层
- 是数据库设计着综合所有用户数据的按照统一观点构造的 全局逻辑结构
- 是所有用户的公共数据视图(全局视图)
- 是数据库的中心与关键
- 独立于数据库的其他层次
-
-
内模式
-
存储模式、底层、物理存储
- 依赖于全局逻辑结构
- 独立于 数据库的用户视图(外模式)
- 独立于 具体的存储设备
-
-
-
两级映射
-
外模式/模式
- 模式变时可以保证外模式不变,这样可以保证数据逻辑独立
-
模式/内模式
- 存在唯一性,存储结构改变时,模式不变,也就意味着应用程序不用变,保证了数据与程序的物理独立性
-
数据库设计
-
数据库设计的主要方法
-
新奥尔良方法
- 需求分析
- 概念设计
- 逻辑设计
- 物理设计
- 数据库实施
- 数据库维护
-
E-R 模型方法
- 在需求分析的基础上,基于E-R模型的数据库设计方法来设计数据库的 概念模型 ,是概念模型阶段广泛应用的方法
-
3NF方法
-
以关系数据库设计理论指导
-
1NF
- 第一范式:关系模式R,R的属性不可分
-
2NF
-
第二范式:R∈1NF,且R的每一个非属性都完全依赖于候选码
-
(Sno,Cno)—f—>Grade
Sno->Sname,(Sno,Cno)—p—>Sname-
存在非主属性Sname对候选码(Sno,Cno)的部分依赖
-
将数据库拆开
- SD(Sno,Sname,…)
SC(Sno,Cno,Grade)
- SD(Sno,Sname,…)
-
-
-
第二范式规范化:是 将1NF通过投影分解,消除 部分函数依赖
-
-
3NF
-
第三范式:R∈2NF,非主属性对任何候选码都不存在传递依赖
-
(X, Y, Z, U)
-
(学号,姓名,所在系,系地址)
- X->U,=>Z->U,X->Z实现,存在传递性
- (系,系地址)
(学号,姓名,系)
-
-
性质:
- if R∈3NF,R∈2NF
if R∈2NF,R not necessarily ∈3NF
- if R∈3NF,R∈2NF
-
-
BCNF
-
R中的每一决定因素都包含码
-
SCN(sno,sname,cno,grade)
- 能看出sno<->sname
- 拆:
S(sno,sname)
SC(sno,cno,grade)
-
-
-
-
-
ODL 方法
- 对象定义语言 面向对象的数据库设计方法(UML)
-
-
数据库设计的基本步骤
- 需求分析
- 概念设计
- 逻辑设计
- 物理设计
- 数据库实施
- 数据库运维
-
概念设计的步骤
-
局部E-R模型设计
- 确定子系统的实体和属性
-
全局E-R模式设计
- 将多个局部ER图合并
-
-
逻辑设计的步骤
-
E-R模型向关系模型的转换
- 实体的属性== 关系的属性
实体的码 ==关系的码
- 实体的属性== 关系的属性
-
关系模型优化
-
确定数据依赖
-
对各关系之间的依赖做最小化处理,减少冗余
-
确定范式,依据要求分解合并
-
分解
-
垂直
- 把关系模式R的属性分解成诺干属性的子集合,定义每一个属性子集为子关系
-
水平
- 把基本关系的元组分为若干元组子集,定义一个子集为子关系以提高系统效率
-
-
-
关系数据库系统模型
关系模型
-
基本概念
-
域
- 域是一种管理边界,用于一组计算机共享共用的安全数据库
-
笛卡尔积
- 包含两个集合中任意取出两个元素构成的组合的集合
-
关系
- 实际上是一张二维表,表的每一行是一个元素,每一列是一项属性,而一个元组就是该关系所涉及的属性集的笛卡尔积的一个元素.
-
元组
- 行
-
属性
- 列
-
候选码
- 若关系中的某一属性或属性组的值能唯一的标识一个元组,而其任何真子集都不能再标识,则称该属性组为(超级码)候选码。
-
主码
- 在一个关系中有多个候选码,从中选定一个作为主码
-
-
关系的性质
-
列的同质性
- 每一列中的分量是同一类型的数据,来自同一个域
-
列的唯一性
- 每一列具有不同的属性名,但不同列的值可以来自同一个域
-
元组相异性
- 关系中任意两个元组的候选码不能相同
-
行序的无关性
- 行的次序可以互换
-
列序的无关性
- 列的次序可以互换
-
分量原子性
- 分量值是原子的,即每一个分量必须是不可分的数据项
-
-
关系的规范化
- 规范化要求关系必须满足一定的规范条件
- 每个分量必须是不可分的数据项
-
关系模式
-
可以形象化的表示为R(U,D,DOM,F)
- R是关系名,U是组成该关系的属性名的集合,D是属性来自的列,DOM是属性向域的映像集合,F是属性间的数据依赖关系集合
- 关系模式是静态的稳定的;关系是动态的,不断变化的,因为关系操作在不断的更新着数据库中的数据
-
-
关系完整性
-
实体完整性
-
主属性不能为空
- 针对基本关系而言,一个基本表对应现实的一个实体集
- 现实中,实体是区分的,即他们具有某种唯一性标识
- 相应的,关系模型中以主码作为唯一标识符
- 主码中的属性(主属性)不为空
-
-
参照完整性
- 多个实体之间的联系,B引用A的属性时,A中的一定要切实存在
- 一般用外码实现,是定义外码和主码之间的引用规则
-
用户自定义完整性
- 针对某一具体关系数据库的约束条件
-
关系代数
-
交
-
并
-
差
-
笛卡尔积
-
选择
- 选出满足条件得元组
-
投影
- 选出若干属性列组成新得关系
-
连接
-
从关系RS得笛卡尔积中选取属性值满足一定条件得元组
-
等值连接
- 从R和S的笛卡尔积R×S中选取A、B属性相等的值
-
自然连接
- 是出去重复属性的等值连接
-
外连接
-
左外
- 保留左边
-
右外
- 保留右边
-
全外
- 都保留
-
-
-
-
除
-
给定关系R(X,Y)和S(Y,Z),其中XYZ是属性组,R中得Y与S中的Y可以有不同的属性名,但必须有相同的域集,相除得到的P(X),P 是R中满足以下条件的元组在X上的投影
-
条件:元组X的分量值x的象集Yx包含S在Y上投影的集合
- 见书46
-
-
-
分量
- 设关系模式为R(A1,A2,…,An),将他的一个关系设为R,t∈R表示t是R的一个元组,则t[Ai]表示元组t中属性Ai上的一个分量
-
属性组
-
象集
关系数据库设计理论
函数依赖
-
函数依赖
-
R的所有关系实例都要满足的约束条件
-
X的属性值均不同,Y上可相同可不同
-
X->Y
- Y依赖于X
-
-
-
完全函数依赖
-
X是属性组,x∈X,X ->Y,但任意xi-/->Y ,则为完全函数依赖
- X-f->Y
-
-
部分函数依赖
-
Y函数依赖于X的真子集,存在xi->Y
- X-p->Y
-
-
传递依赖
-
X->Y,Y-/->X,Y->Z,则Z传递依赖于X
- X-t->Z
-
X->Y,Y–>X,(X<->Y),Y->Z,则Z传递依赖于X
- Z对X直接函数依赖
-
码
- 主码和候选码都简称为码
范式
- 见上面
触发器
1. 触发器的分类:
-
DML触发器
- 主要的作用是维护行级数据的完整性,而不是返回结果。
-
DDL触发器
- 主要用于防止对数据库架构、视图、表、存储过程等进行的某些修改
2. DML触发器的创建
- Create trigger
存储过程
1. 存储过程的分类:
-
存储过程
-
系统存储过程
-
用户存储过程
-
T-SQL 存储过程
- 保存的T-SQL语句集合,可以接受和返回用户提供的参数
-
CLR 存储过程
- 指对公共语言运行时方法的引用,可以接受和返回用户提供的参数。
-
-
扩展存储过程
-
2. T-SQL用户存储过程的创建、执行
3. 存储过程与函数的区别
-
函数
-
特点
- 注重结果的返回
-
参数
- 只允许输入参数
-
返回值
- 一定有返回值,返回值可以是标量值或表值
-
-
存储过程
-
特点
- 注重处理过程
-
参数
- 可以有输入和输出参数
-
返回值
- 如果未指定返回值只返回一个整数:0-正常执行;负数-出错
-
T-SQL编程
标识符
-
常规标识符
- 以字母下划线,@或#开头,可后续一个或若干个ASCII字符,Unicode字符,下划线,美元符号,@#开头,但不能全为下划线,@或#。
-
分隔标识符
- 包含在双引号或者方括号内的常规标识符或不符合常规标识符规则的标识符。
标识符允许的最大长度为128个字符,
符合常规标识符规则的标识符可以分隔也可以不分隔,对不符合标识符规则的标识符必须进行分隔。
- 包含在双引号或者方括号内的常规标识符或不符合常规标识符规则的标识符。
-
常量、变量P200
3. 系统变量
-
标量函数
-
数学函数
- abs绝对值,rand返回一个0~1的随机值
-
字符串函数
- left返回字符串从左边开始指定个数的字符,ltrim删除字符串中的前导空格并返回字符串,substring返回表达式中指定的部分数据,charindex用于在表达式2中搜索表达式1并返回其起始位置
-
日期时间函数
-
系统函数
- col_name根据指定的表标识号和列标识号返回列的名称。Convert/cast数据类型的转换。Case:分两种,一种是简单的case:函数比较;一种是搜索型case函数:计算一组布尔表达式以确定结果
-
-
聚合函数
- 多行函数,即表中的多条记录返回至一个数值,通常用于分组的相关信息。
- count(列名):统计一列中值的个数,其中重复的记录也会被当做有效的记录。(聚合的一种分类)
-
行集函数
- 指的是使用该类函数会返回一个结果集
4. 运算符和表达式
5. 流程控制语句
- 语句块: BEGIN…END
- 条件分支语句: IF…ELSE
- 循环语句: WHILE
- 开始下一次循环:CONTINUE
- 退出循环: BREAK
- 返回语句: RETURN
6. 用户自定义函数:标量函数、内联表值函数、多语句表值函数*
数据完整性
1. 域完整性和Check约束
- 域完整性指数据输入的有效性,又称列完整性,通过check约束,default约束,notnull约束等实现域完整性。
2. 实体完整性和Primary Key约束、Unique约束
- 实体完整性要求表中有一个主键,其值不能为空且能唯一标识。又称为行完整性,通过primary key,unique约束等实现数据的实体完整性。
3. 参照完整性和外键约束
- 参照完整性保证主表中的数据与从表中数据的一致性,又称位引用完整性。在数据库中通过定义主键与外键之间的对应关系实现参照完整性。参照完整性确保键值在所有表中一致。
参照完整性约束的实现策略:
-
插入
-
限制
- 在子表中插入记录时,外码的值如果不在对应的主表的主码值中,则限制插入
-
-
更新
-
限制
- 在子表中的更新记录时,如果修改外码的值,且新的外码值不在对应的主表的主码值中,则限制子表更新
-
级联
- 在主表中更新主码值时,子表中相关行的外码值同步更新
-
置空
- 在主表中更新主码值时,子表中相关行的外码值设置为NULL
-
-
删除
-
限制
- 在主表中删除记录时,如果该记录的主码值存在于相关的子表的外码中,则限制主表删除
-
级联
- 在主表中删除记录时,子表中相关行同步删除
-
置空
- 在主表中删除记录时,子表中相关行的外码值设置为NULL
-
索引
1. 索引的概念、作用及及分类
-
通过索引可以快速找到表中的特定行,是与表关联的存储在磁盘上的单独结构,它包含由表中的一列或多列生成的键,以及映射到指定表行的存储位置的指针。
-
作用
- 提高查询速度
-
保证数据作用的唯一性
-
查询优化依靠索引起作用
-
提高order by,group by的执行速度
-
分类
- 聚集索引:有顺序
-
非聚集索引:结构完全独立于数据行的结构
-
-
• 两者的根本区别是表记录的排列顺序和与索引的排列顺序是否一致。
- • 1.聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。
- • 2.聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续。
- 3.聚集索引查询数据速度快,插入数据速度慢;非聚集索引反之。
2. 索引的创建
-
P169
- CREATE TABLE 表名(
字段名 数据类型 [完整性约束条件],
……,
[UNIQUE | FULLTEXT | SPATIAL] INDEX | KEY
[索引名](字段名1 [(长度)] [ASC | DESC]) [USING 索引方法]
);
- UNIQUE:可选。表示索引为唯一性索引。
FULLTEXT:可选。表示索引为全文索引。
SPATIAL:可选。表示索引为空间索引。
INDEX和KEY:用于指定字段为索引,两者选择其中之一就可以了,作用是 一样的。
索引名:可选。给创建的索引取一个新名称。
字段名1:指定索引对应的字段的名称,该字段必须是前面定义好的字段。
长度:可选。指索引的长度,必须是字符串类型才可以使用。
ASC:可选。表示升序排列。
DESC:可选。表示降序排列。
注:索引方法默认使用B+TREE。
视图
1. 视图的概念及创建语句
-
视图是从一个或多个表或者其他视图导出的,用来导出视图的表称为基表,导出的视图成为虚表
- Create view 【数据库架构名】视图名称【列名】With。。。P157
T-SQL
SQL语句
-
DDL数据定义
-
create
- table
- index
- view
- procedure
- trigger
- function
-
drop
-
alter
-
-
DML数据操作
- insert
- delete
- update
-
DQL数据查询(核心):
- select * from where group by having order by
-
DCL 数据控制
DDL
- 数据库、表的创建、修改和删除
DML
- 插入、修改和删除表记录语句
DQL
-
投影、选择、连接、统计、排序和子查询
- 取结果中开头几行:Top n 或者 Top n percent
- 取消结果中重复行(Distinct)
- 表达式列;
- 数据源行的筛选:where子句,逻辑表达式;
- 分组查询:Group子句,分组查询后结果的筛选:having子句;
- 聚合函数:count(),sum(),avg(),min(),max()
- 排序查询结果:Order子句;
- 连接查询:交叉、内联接、外连接;
- 嵌套子查询:不相关子查询、相关子查询;
创建和使用表
1. 基本概念
-
表结构
- 包含一组固定的列,列由数据类型,长度,允许null值等组成
-
数据类型
-
整数型
-
精确数值型
- decimal,numeric
-
浮点型
- real,float
-
货币型
- money,small money
-
位型
- bit,true转为1,false转为0
-
字符型
- char,varchar
-
Unicode字符型
- nchar,nvarchar
-
文本型
- text,ntext
-
二进制型
- binary(n)varbinary(n)
-
日期时间类型
- datetime,smalldatetime,date,time,datetime2 ,datetimeoffset
-
时间戳型
- timestamp
-
图像数据类型
- image
-
其他数据类型
-
2. 表操作
-
创建、修改和删除表P106
- create table 表名称
(
列名1 数据类型1 约束1,
列名2 数据类型2 约束2,
列名3 数据类型3 约束3
) - 把stuinfo改成stu
- create table 表名称
EXEC sp_rename stuinfo , stu
- 删除stu表:
drop table stu
创建和修改数据库
1. 基本概念
-
P91
-
逻辑数据库
-
逻辑数据库有以下优点
- 1.预设的选择屏幕
- 2.逻辑数据库中可能包含多个数据表作为节点,在使用逻辑数据库的程序中,程序开发人员可以忽略具体的数据表之间通过外部关键字设定的关系,而是使用GET事件按照节点层次逐级获得数据。
- 3.逻辑数据库可以提高程序数据的筛选效率,并在数据筛选的同时进行用户数据库访问的权限检查。
- 4.逻辑数据的维护和设定可以独立于程序进行,如果数据源发生变化,也可以直接修改数据库,无需对所有程序进行修改
-
-
物理数据库
-
以内模式为框架所组成的数据库叫物理数据库(Physical Database),只有物理数据库是真实存在于计算机外存中。
- 控制文件,在线重做日志文件,数据文件
- 这些文件都是实实在在的物理存在的文件,在不同的操作系统平台具有不同的实现方式。
-
-
2. 数据库操作
-
创建、修改和删除数据库P94
- CREATE DATABASE - 创建新数据库
- ALTER DATABASE - 修改数据库
- CREATE TABLE - 创建新表
- ALTER TABLE - 变更(改变)数据库表
- DROP TABLE - 删除表
- CREATE INDEX - 创建索引(搜索键)
- DROP INDEX - 删除索引
SQL Server概述
服务器组件
-
数据库引擎
-
存储,处理,保护数据的核心服务
- 四个组件为:协议,关系引擎,存储引擎,SQLOS
-
-
分析服务SSAS
- 为商业智能应用程序提供 联机分析处理OLAP和数据挖掘功能
-
报表服务SSRS
- 可创建和管理包含关系数据源和多维数据源中的数据的表格,举证报表,图形报表,自由格式报表等
-
集成服务SSIS
- 主要用于清理,聚合,合并,复制数据的转换以及管理SSIS包,提供生产并调试SSIS包的图形向导工具,执行FTP,电子邮件消息传递等操作。
管理工具
-
SQL Server Management Studio
- 为数据库管理人员和开发 人员提供图形化和集成开发环境
-
SQL Server配置管理器
- 用于管理与SQL Server相关联的服务,管理服务器和客户端网络配置设置
-
SQL Server安全中心
- 安装,升级,更改SQL Server实例中的组件。
-
Reporting Services配置管理器
- 提供用于监视SQL Server数据库引擎实例或Analysis Services实例的图形用户界面。
-
数据库引擎优化顾问
- 它是一个性能优化工具,可以协助用户创建索引,索引视图和分区的最佳组合
3. SSMS启动步骤
- SSMS中的对象资源管理器,已注册的服务器,模板流览图
XMind: ZEN - Trial Version