数据库原理及应用教程基础
数据库,简单地说就是数据的仓库,即数据存放的地方
数据库系统概述
信息
信息的特征:
信息源于物质
信息是可以感知的
信息是可储存、加工、传递、和再生的数据
数据的表现形式:数字、文字、图形、图象、声音和视频
信息与数据之间的联系:数据是信息的符号表示,信息是对数据的语义解释
数据库:存储在计算机中的数据集合
数据管理经过了三个发展阶段:人工管理、文件系统和数据库系统
人工管理阶段数据没有专门的存取设备,没有专门的管理软件、数据不共享、数据不具有独立性
数据独立性指数据库中数据与应用程序间相互独立,逻辑结构、存储结构及存取方式改变不影响应用程序
独立性有物理独立性和逻辑独立性
物理独立性指物理结构(存储结构、外部存储设备)发生变化,通过修改映射,用户逻辑结构和应用程序不改变
逻辑独立性指逻辑结构(修改数据定义、增加数据类型)发生变化,通过修改映射,用户逻辑结构和应用程序不改变文件系统阶段数据以文件形式长期保存,有程序与数据之间有独立性,数据有一定共享性
数据库系统阶段数据结构化,数据共享型高,独立性高,有统一的数据管理和控制功能
数据控制功能:数据的安全性控制、完整性控制、并发控制、数据恢复
数据库系统
数据库系统包括数据库和数据库管理系统
数据库系统的组成:数据库、用户、软件系统、硬件系统
第一类用户:最终用户->非计算机专业人员
第二类用户:应用程序员->调试和安装
第三类用户:数据库管理员->设计、管理、维护数据库,协调用户
三级模式:外模式、模式、内模式(用户模式、概念模式、物理模式)
模式(概念模式):是数据库中全体数据的逻辑结构和特征的描述
外模式(子模式/用户模式):是数据库用户能看到看到并允许使用的数据的逻辑结构和特征的描述
内模式(存储模式/物理模式):是对数据库存储结构的描述
外模式可以有多个,模式和内模式只能各有一个
外模式/模式映像,描述数据的全局逻辑结构
模式/内模式映像,描述数据的全局物理结构
二级映像的优点:保证数据的独立性、简化了用户接口、有利于数据共享、有利于数据的安全保密
数据库管理系统(DBMS)
数据库管理系统(DBMS)是数据库系统的核心组成部分,包括定义、查询、更新(插入、删除和修改)及各种控制
用户在数据库系统中的一切操作都是通过数据库管理系统进行的
DBMS主要功能:数据定义功能、数据操操纵功能、数据库运行管理功能、数据库的建立和维护功能、数据通信接口及数据组织、存储和管理功能
数据库运行管理是DBMS运行的核心部分
数据模型的组成要素
数据结构、数据操作、数据的完整性约束
数据结构:层次结构、网状结构、关系结构
数据操作有查询和更新(插入、删除和修改)
完整性约束保证数据正确、有效、相容
四种数据模型
层次模型、网状模型、关系模型、面向对象模型
层次模型采用树形结构表示各类实体以及实体间的联系
网状模型采用有向图结构表示记录型与记录型之间联系的数据模型
关系模式的数据结构是一张规范化的二维表
面向对象模型中最基本的概念是对象和类
关系数据库
候选码:能标识关系中元组的一个属性或属性集,如:学号、身份证号或二者相加
主码:如果一个关系中有多个候选码,选择其中一个作为主码
关系代数运算
基本代数运算:并、差、笛卡儿积、选取、投影
传统的代数运算:并、差、交、笛卡尔积
专门的代数运算:选取、投影、连接、
除
关系数据库标准语言——SQL
SQL是结构化查询语言(Structured Query Language)的缩写
SQL语句
数据定义:CREATE(创建)、ALTER(修改)、DROP(删除)
数据操纵:INSERT INTO(插入表中记录)、UPDATE(修改表中记录)、DELETE(删除表中记录)
数据查询:SELECT(查询)
聚合函数:AVG(平均值)、SUM(总和)、MAX(最大值)、MIN(最小值)、COUNT(统计个数)
WHERE和HAVING
WHERE:筛选出表中满足条件的行,不可与聚合函数连用
HAVING:筛选出满足条件的组,可与聚合函数连用,通常与GROUP BY连用
数据表中数据的操纵
添加表中数据,INSERT INTO
1
2
3/*在 S 表中添加一条学生记录*/
INSERT INTO S (sno, sn, age, sex, dept)
VALUES ('s1', '张三', 20, '男', '计算机')1
2
3
4
5
6
7/*添加多行记录
INSERT INTO 表名
子查询*/
INSERT INTO S
SELECT dept, AVG(sal)
FROM T
GROUP BY dept修改表中数据,UPDATE
1
2
3UPDATE T
SET dept='会计'
WHERE TN='刘伟'删除数据,DELETE
1
2
3DELETE
FROM S
WHERE sn='张三'
视图
视图的概念:视图是一个虚拟表,其内容由查询定义,视图包含带有行和列的数据,但是视图并不存储数据。
视图的作用:通常用来简化用户操作,使用户以多种角度看待同一数据,对重构数据库提供了一定程度的逻辑独立性,更清晰的表达查询
视图可以用作安全机制,允许用户通过视图访问数据,而不授予访问数据表的权限,视图本身并不包含数据,保存的是查询语句
创建视图
1
2
3
4CREATE VIEW 视图名(属性1,属性2,属性3...)
AS SELECT 属性1,属性2,属性3...
FROM 表名1,表名2...
WHERE ...索引
两种基本类型的索引:聚集索引、非聚集索引
数据库安全保护
数据库安全性的含义
数据库的安全性是指保护数据库以防止非法使用所造成的数据泄露、更改或破坏(防止非法操作)
SQL Server身份认证,认证的是和服务器的连接
数据库完整性的含义
数据库的完整性是指保护数据库中数据的正确性、有效性和相容性,防止错误的数据进入数据库造成无效操作(保护数据的一致性)
实时数据库完整性的方法有:约束、默认值、规则、存储过程和触发器
事务
事务是数据库中执行的一个工作单位,由用户定义的一组操作。可以是一组SQL语句、一条SQL语句或整个程序
定义事务的语句有三条
1
2
3
4
5
6BEGIN TRANSACTION
COMMIT
ROLLBACK
其中BEGIN TRANSACTION表示事务的开始;
COMMIT表示事务的提交,正常结束;
ROLLBACK表示事务的回滚,即运行过程中发生了某种故障,回滚到开始状态事务有四个特征:原子性、一致性、隔离性、持久性(ACID准测)
并发操作与数据的不一致性
数据库的并发操作导致的数据库不一致性主要有三种:丢失更新、污读(读脏数据)、不可重读
封锁
封锁类型:排他型封锁(X锁)、共享封锁(S锁)
排他型封锁:禁止并发操作(事务T对某个数据对象R实现X封锁后,其他事务要等T解除X封锁以后,才能对R进行封锁,这就保证了其他事物在T释放R上的封锁之前,不能再对R进行操作)
共享封锁:允许其他用户对同一数据对象进行查询,但不能对该数据对象进行修改
封锁协议:
一级封锁协议(不能防止“污读”和“不可重读”)
二级封锁协议(能防止“污读”,不能防止“不可重读”)
三级封锁协议(既能防止“污读”,也能防止“不可重读”)
封锁粒度:封锁的数据对象大小称为封锁粒度,封锁粒度越小能够被封锁的对象就越多,并发度越高,烦封锁机构越复杂,系统开销也越大,反之亦然,选择封锁粒度时应考虑封锁机构和并发度两个因素,以求得最优解。
活锁和死锁
死锁产生的条件:
互斥条件:一个对象只能被一个事务使用,即对数据的封锁采用排他式
不可抢占条件:一个数据对象只能被占有它的事务所释放,而不能被别的事务强行抢占
部分分配条件:一个事务已经封锁分给它的数据对象,但仍然要求封锁其他数据
循环等待条件:允许等待其他事务释放数据对象,系统处于加锁请求互相等待的状态
死锁的预防:一次加锁法、顺序加锁法
死锁的诊断与解除:选择一个处理死锁代价最小的事务,将它撤销,解除它的死锁,释放此事务占用的所有数据资源,分配给其他事务
数据库的故障和恢复的策略
事务故障及其恢复、系统故障及其恢复、介质故障及其恢复
数据库设计
- 数据库设计步骤:系统需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库运行和维护
SQL Server高级应用
Transact-SQL
全局变量:全局变量是SQL Server系统内部使用的变量,使用全局变量必须以“@@”开头
局部变量:局部变量使用户可以自定义的变量,且局部变量名前必须以@为前缀
局部变量必须先用DECLARE命令声明后才可以使用
1
2
3/*声明一个长度为8个字符的局部变量id*/
DECLARE @id char(8)
SELECT @id='12345678'1
2
3
4DECLARE @sno varchar(10),@sn varchar(10)
SELECT @sno=SNo,@sn=SN
FROM S
WHERE SNo='S7'触发器是一种特殊的存储过程,但触发器能够自动执行并且不含有参数
触发器的种类:
DML触发器:DML触发器是在执行数据操作语言(DML)事件时被激活而自动执行的触发器
根据触发器代码执行的时机,DML触发器可以分为两种:After触发器和Instead of触发器
After触发器是在执行了INSTERT、UPDATE或DELETE语句操作之后激活执行的触发器,也是就在记录已经变完之后(After)才会激活执行,这种触发器只能在表上定义,不能在视图上
Instead of触发器是在执行INSTERT、UPDATE或DELETE语句操作之前激活执行的触发器,也就是记录变更之前,不去执行SQL语句里插入、修改或删除操作,而去执行触发器种的代码所定义的操作,可以定义在表和视图上
DDL触发器:DDL触发器是在响应各种数据定义语言(DDL)事件时而激活执行的存储过程
登陆触发器:由登陆(LOGON)事件而激活的触发器,建立用户会话时将引发此事件
每个触发器都有两个特殊表:插入表(Inserted)和删除表(Deleted),这两个表都是系统在线生成的、动态驻留在内存种的临时表,是由系统管理的逻辑表
备份和还原
备份类型:数据库完整备份、差异备份、事务日志备份、文件及文件组备份
还原模式:简单还原、完全还原、批日志还原
数据库原理及应用教程基础