当前位置: 首页 > news >正文

设计一个学院网站外贸网站有哪些

设计一个学院网站,外贸网站有哪些,网络运维与安全就业方向,wordpress调用上传一:数据库系统概论期末复习 1.1数据库系统基础 1.1.1数据库系统概述 数据:描述事物的符号记录 数据库:数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合 DBMS:数据库管理系统 数据库系统:数据库系统是…

一:数据库系统概论期末复习

1.1数据库系统基础

1.1.1数据库系统概述

数据:描述事物的符号记录

数据库:数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合

DBMS:数据库管理系统

数据库系统:数据库系统是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员(DataBase Administrator,DBA)组成的存储、管理、处理和维护数据的系统

DBMS的体系结构:3层

数据源(DATA SOURCE):远程数据库的别名

ODBC:开发工具访问数据库统一的平台

JDBC:Java数据库连接


1.1分解问题

一个低一级范式的关系模式通过模式分解(schema decomposition)可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化(normalization)

 函数依赖
属性闭包!

阿姆斯特朗公理!

等价的最少的函数依赖集!

 第二范式(2NF)
若R∈1NF,且每一个非主属性完全函数依赖于任何一个候选码,则R∈2NF

例如:SLC的码为(Sno,Cno),Sdept和Sloc依赖于Sno,不依赖于Cno,则不满足第二范式

第三范式(3NF)
若R∈2NF,且非主属性不能有传递依赖

例如:SLC的码为(Sno,Cno),Sno决定Sdept,Sdept决定Sloc,存在Sno->Sdept->Sloc这样的传递依赖,则不满足第三范式

 BCNF(Boyce Codd Normal Form)
若R∈3NF,且不能有主属性对码的部分依赖和传递依赖
注意:

若要求分解具有无损连接性,那么模式分解一定能够达到4NF。
若要求分解保持函数依赖,那么模式分解一定能够达到3NF,但不一定能够达到BCNF。
若分解既具有无损连接性,又保持函数依赖,则模式分解一定能够达到3NF,但不一定能够达到BCNF。

1.2动态维护日志文件的方法

周期性地执行如下操作:建立检查点,保存数据库状态。
具体步骤是:
(1)将当前日志缓冲区中的所有日志记录写入磁盘的日志文件上
(2)在日志文件中写入一个检查点记录
(3)将当前数据缓冲区的所有数据记录写入磁盘的数据库中
(4)把检查点记录在日志文件中的地址写入一个重新开始文件

不同的封锁协议使事务达到的一致性级别不同
封锁协议级别越高,一致性程度越高


1.3数据库系统

1.3.1数据库系统的组成

1、数据库
2、数据库管理系统
3、应用程序
4、数据库管理员

数据库系统是用来存储、管理、处理和维护数据的系统

1.3.2数据库阶段的特点:

1、数据结构化
2、数据共享性高、冗余度低且易扩充
3、数据独立性高
数据独立性包括逻辑独立性和物理独立性
4、数据由数据库管理系统统一管理和控制DBMS的功能
(1)数据的安全性保护
(2)数据的完整性检查
(3)并发控制
(4)数据库恢复

1.3.4数据库系统的组成


1、硬件平台及数据库
2、软件
3、人员

人员包括
1、数据库管理员
2、系统分析员和数据库设计人员

1.3.5三级模式两级映像

外模式
也称子模式或者用户模式
一个数据库可以有多个外模式
模式:
也称逻辑模型
一个数据库只有一个模式
内模式:
也称为存储模式
一个数据库只有一个内模式

1.3.6数据独立性:

包括物理独立性、逻辑独立性

两个独立性
逻辑独立性
当模式结构改变的时候,只要修改外模式/模式映像即可保持逻辑独立性

物理独立性
当内模式结构改变的时候,只需要修改模式/内模式映像就可以保持物理独立性

1.3.7重点:关系模型

术语
1、关系
一个关系通常来说是一张表
2、元组
表中的一行
3、属性
一列是一个属性
4、码
可以唯一确定一个元组。
比如学号 能确定学生
学号和课程 可以确定成绩
5、域
是属性的取值范围
比如说考驾照的年龄设置为18-60
6、分量
元组中的一个属性值
7、关系模式
是对关系的描述,一般表示为:关系名(属性1,属性2,属性3)

比如学生(学号,姓名,年龄)

关系模型的最基本要求:关系必须规范化,满足一定规范条件。

关系每一个分量必须是一个不可分的数据项,不允许表中还有表

关系模型的完整性约束:

1、实体完整性
主码唯一且非空
2、参照完整性
外码要么为空,要么在另一个表中的主码
3、用户定义完整性
自定定义的,比如年龄在12-30岁之间


二:第一节:绪论

2.1相关概念

​ 1. Data:数据,是数据库中存储的基本对象,是描述事物的符号记录。

(数据种类,文字,图形,图像,音频,视频)
2. Database:数据库,是长期储存在计算机内、有组织的、可共享的大量数据的集合。

(特点:永久存储,有组织,可共享)
​ 3. DBMS:数据库管理系统,是位于用户与操作系统之间的一层数据管理软件,用于科学地组织、存储和管理数据、高效地获取和维护数据。(科学地组织和存储数据,搞笑获取和维护数据)
​ 4. DBS:数据库系统,指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统、应用系统、数据库管理员(DBA)构成。
​ 5. 数据模型:是用来抽象、表示和处理现实世界中的数据和信息的工具,是对现实世界的模拟,是数据库系统的核心和基础;其组成元素:数据结构、数据操作和完整性约束。
6. 概念模型:也称信息模型,是按用户的观点来对数据和信息建模,主要用于数据库设计。
​ 7. 逻辑模型:是按计算机系统的观点对数据建模,用于DBMS实现。(包括网状模型,层次模型,关系模型,面向对象数据模型,对象关系数据模型)层次模型和网状模型统称为格式化模型
​ 8. 物理模型:是对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的。
9. 实体和属性,码:客观存在并可相互区别的事物称为实体。实体所具有的某一特性称为属性,唯一标识实体店属性集称为码。

实体型:实体名及其属性集合来抽象和刻画同类实体称为实体型。

实体集:同一类型实体集合称为实体集。
​ 10.E-R图:即实体-关系图,用于描述现实世界的事物及其相互关系,是数据库概念模型设计的主要工具。
​ 11.关系模式:从用户观点看,关系模式是由一组关系组成,每个关系的数据结构是一张规范化的二维表。
12.型/值:型是对某一类数据的结构和属性的说明;值是型的一个具体赋值,是型的实例。
13.数据库模式:是对数据库中全体数据的逻辑结构(数据项的名字、类型、取值范围等)和特征(数据之间的联系以及数据有关的安全性、完整性要求)的描述。
14.数据库的三级系统结构:外模式、模式和内模式。
15.数据库内模式:又称为存储模式,是对数据库物理结构和存储方式的描述,是数据在数据库内部的表示方式。一个数据库只有一个内模式。
​ 16.数据库外模式:又称为子模式或用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图。通常是模式的子集。一个数据库可有多个外模式。
​ 17.数据库的二级映像:外模式/模式映像、模式/内模式映像。

2.2重点知识点

​ 1. 数据库系统由数据库、数据库管理系统、应用系统和数据库管理员构成。

​ 2. 数据模型的组成要素是:数据结构、数据操作、完整性约束条件。

​ 3. 实体型之间的联系分为一对一、一对多和多对多三种类型。

​ 4. 常见的数据模型包括:关系、层次、网状、面向对象、对象关系映射等几种。

​ \5. 关系模型的完整性约束包括:实体完整性、参照完整性和用户定义完整性。

\6. 阐述数据库三级模式、二级映象的含义及作用
数据库三级模式反映的是数据的三个抽象层次: 模式是对数据库中全体数据的逻辑结构和特征的描述。内模式又称为存储模式,是对数据库物理结构和存储方式的描述。外模式又称为子模式或用户模式,是对特定数据库用户相关的局部数据的逻辑结构和特征的描述。

​ 数据库三级模式通过二级映象在 DBMS 内部实现这三个抽象层次的联系和转换。外模式面向应用程序, 通过外模式/模式映象与逻辑模式建立联系, 实现数据的逻辑独立性。 模式/内模式映象建立模式与内模式之间的一对一映射, 实现数据的物理独立性。

三:第二节

3.1关系

关系:单一数据结构(现实世界的实体以及实体之间的各种联系均用关系来表示)

二维表:逻辑结构(从用户角度,关系模型中数据的逻辑结构是一张二维表)

建立在集合代数的基础之上

1.域:域是一种相同数据类型的值的集合。

如:整数,实数,介于某个取值范围的整数,指定长度的字符串集合

2.笛卡尔积(重点)

(1) 笛卡尔乘积,选择和投影运算如下:

给定一组域D1,D2,…,Dn允许其中某些域是相同的。D1,D2,…,Dn的笛卡尔积为:

    

注:所有域的所有取值的一个组合

不能重复

例:给出三种域:

D1:年龄集合={2003,2004};

D2:名字集合={小李,小红};

D3:成绩集合={78,89};

则D1,D2,D3的笛卡尔集合为

D1×D2×D3={(2003,小李,78),(2003,小李,89),(2003,小红,78),(2003,小红,89),(2004,小李,78),(2004,小李,89),(2004,小红,78),(2004,小红,89)}

(2)元祖:笛卡尔积中每一个元素(d1,d2,...,dn)叫作一个n元祖

(3)分量:笛卡尔积元素(d_{1},d_{2},...,d_{n})中每一个值d_{i}叫作一个分量

(4)基数:若D_{i}(i=1,2,...,n)为有限集其基数为m_{i}(i=1,2,...,n),则D_{1}×D_{2}×...×D_{n}的基数为·M为:

 注:笛卡尔积表示方法:笛卡尔积可表示为一张二维表,表中每行对应一个元祖,每列对应一个域。

3关系

(1)关系:

D1×D2×...×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为:

R(D1,D2,…,Dn)

R:关系名

n:关系的目的或度

(2)单元关系与二元关系:R(D_{1},D_{2},...,D_{n}

当n=1时称关系为单元或一元关系

当n=2时称该关系为二元关系

(3)元祖:关系中每个元素是关系中的元祖,通常用t表示。

(4)关系表示:关系也是一个二维表,表的每行对应一个元祖,表的每行对应一个域。

(5)属性:a关系中不同列可以对应相同的域。

b为了区分,必须对每列起一个名字,称为属性。

c:n目关系必有n个属性,n个列

(6)码:

候选码:若关系中某一属性组的值能唯一标识一个元祖,则称该属性为候选码。(候选码只包含一个属性)

全码:关系模式的所有属性组是这个关系模式的候选码,称为全码。

主码:若一个关系有多个候选码,则选定其中一个为主码。

主属性:候选码的诸属性称为主属性,不包含在任何候选码的属性称为非属性。

(7)三类关系:

A:基本关系:实际存在的表,是实际存储数据的逻辑表示。

B:查询表:查询结果对应的表

C:视图表:由基本表或其他视图表导出的表,是虚表,不对应实际数据。

(8)基本关系的性质:

①列是同质的

②不同的列可以出自同一个域(其中每一列称为一个域,不同的属性要给予不同的属性名)

③列和行的顺序随机,列和行的次序可以任意交换。

④任意两个元组的候选码不能相同。

3.2关系模式

3.2.1关系模式含义:

关系模式是对关系的描述(元组构成集合:属性构成,属性来自的域,属性与域之间的关系)

完整约束条件

3.2.2定义关系模式:

关系模式可以表示为:R(U,D,DOM,F)

R:关系名

U:组成该关系的属性名集合

D:U中属性所来自的域

DOM:属性向域的映象集合

F属性间数据的依赖关系的集合

R(U)或R(A1,A2,...,An)

关系模式:对关系的描述,静态的稳定的

关系:关系的模式在某一时刻的状态或内容,动态的,随时间不断变化。

3.2.3关系数据库

关系数据库:在一个给定的应用领域中,所有关系的集合构成一个关系数据库。

关系数据库的型与值:

型:关系数据模式,是对关系数据库的描述

值:关系模式在某一时刻对应的关系的集合,通常称为关系数据库。

3.3关系操作

3.3.1基本的关系操作

常用的关系操作:

查询的关系操作:选择,投影,连接,除,并,差,交,笛卡尔积

基本操作:选择,投影,并,差,笛卡尔积

数据更新:插入,删除,修改

关系操作特点:集合操作方式:操作的对象和结果都是集合,一次一集合的方式

非关系数据模型数据操作方式:一次一记录的方式。

3.5关系完整性 

3.5.1实体完整性:

若属性A是基本关系R的主属性,则属性A不能取空值。

空值为“不知道”,“不存在”,“无意义”的值。

3.5.2参照完整性

1:关系间的引用:在关系模型中实体及实体间的联系都是用关系来描述的,存在关系与关系间的引用。

2外码:设F为基本关系R的一组属性,但不是关系R的码,如果 F与基本关系S和Ks相对应,则称F为R的外码。

基本关系R称为参照关系

基本关系S称为被参照关系或目标关系

参照完整性规则:若属性F是基本关系R的外码,它与基本关系S的主码Ks相对应,则对于R中每个元组在F上的值必须为:

或者取空值(F的每个属性值均为空值)

或者等于S中某个元组的主码值。

3.5.3用户定义完整性

针对某一约束条件,反映某一具体应用所涉及的数据必须满足语义要求。

3.6关系代数

3.6.1关系代数基础

关系代数是一种抽象的查询语言,他对关系运算来表达查询。

关系代数:

①运算对象是关系

②运算结果是关系

③关系代数的运算符:集合运算符和专门的关系运算符。

关系代数运算符:

传统运算集合: 

(1)并

R和S:具有相同的目n(即两个关系都有n个属性),相应属性取自同一个域。

R∪S:仍为n为目关系,由属于R或属于S的元组组成R∪S={t|∈RVt∈S}

(2)差

R和S:具有相同的目n,相应的属性取自同一个域。

R-S:仍为n目关系,由属于R而不属于S的所有元组组成:

(3)交

R和S:具有相同的目n,相应的属性取自同一个域

R∩S:仍为n目关系,由既属于R又属于S的元组组成。

(4)笛卡尔积

R:n目关系,K1个元组

S:m目关系,K2个元组

R×S

列:(n+m)列元组集合

①元组的前n列是关系R的一个元组

②后m列是关系S的一个元组

行:K1×K2个元组

R×S={ t_{r}t_{r}|=t_{r}\in R\wedge t_{s}\in S}

四:第三节:关系数据库标准语言

4.1概述

​ 1. SQL:结构化查询语言的简称, 是关系数据库的标准语言。SQL 是一种通用的、 功能极强的关系数据库语言, 是对关系数据存取的标准接口, 也是不同数据库系统之间互操作的基础。集数据查询、数据操作、数据定义、和数据控制功能于一体。

考试:SQL语言是非过程语言

SQL是关系数据库语言

SQL语言具有数据定义,数据操纵,数据控制的功能。

SQL语言具有两种使用方式,分别称为交互式SQL和嵌入式SQL

建立数据库三级模式的功能由SQL语句的数据定义功能完成。

数据库中只存放视图的是定义

视图的优点:简化查询语句。提高安全性。屏蔽真实表结构安全带来的影响。实现了逻辑数据独立性。

非关系数据模型操纵数据语言“面向过程”

​ 2. 数据定义:数据定义功能包括模式定义、表定义、视图和索引的定义。

​ 3. 嵌套查询:指将一个查询块嵌套在另一个查询块的 WHERE 子句或 HAVING 短语的条件中的查询。

SQL相关知识

​ 1SQL 数据定义语句的操作对象有:模式、表、视图和索引。
​ 2. SQL 数据定义语句的命令动词是:CREATE、DROP 和 ALTER。
​ 3. RDBMS(关系型数据库管理系统) 中索引一般采用 B+树或 HASH 来实现。
​ 4. 索引可以分为唯一索引、非唯一索引和聚簇索引三种类型。

SQL动词:

SQL功能动词
数据查询SELECT
数据定义CREATE,DROP,ALTER
数据操纵INSERT,UPDATE,DELETE
数据控制GRANT,REVOKE

SQL支持关系数据库的三级模式结构:

4.2数据定义:

 4.2.1SQL数据定义语句:
操作对象    操作
创建         删除修改
模式CREATE SCHEMADROP SCHEMA
CREATE TABLEDROP TABLEALTER TABLE
视图CREATE VIEWDROP VIEW
索引CREATE INDEXDROP INDEXALTER INDEX
4.2.1数据定义与删除

4.2.1.1定义模式:定义模式实际上定义了一个命名空间,这个空间可以定义该模式包含的数据库对象,如:基本表,视图索引等。

在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW 和GRANT 字句。

CREATE SCHEMA<模式名>AUTHORIZATION<用户名>[<表定义子句>]|<视图定义子句>|<授权定义子句>]

例:在用户ZHANG创建一个模式TEST,并在其中定义一个TAB1,代码段如下:

CREATE SCHEMA TEST AUTGHORIZATION ZHANG
CREATE TABLE TAB1(COL1 SMALLINT,COL2 INT,COL3 CHAR(20),COL4 NUMERIC(10,3),COL5 DECIMAL(5,2));

 4.2.1.2删除模式

CASCADE(联级)——删除模式的同时把该模式中所有数据库对象全部删除

RESTRICT(限制)——如果该模式定义了下属的数据对象(如表,视图等),则拒绝该删除语句执行。仅当该模式中没有任何下属的对象时才能执行。

DROP SCHEMA<模式名><CASCADE|RESTRICT>

4.3基本表的定义,删除与修改 

4.3.1定义基本表

CREATEBTABLE<表名>

    (<列名><数据类型>[<列级完整性约束条件>]

    [,<列名><数据类型>[<列级完整性约束条件>]]

    ...

    [,<表级完整性约束条件>]);

<表名>:所要定义的基本表的名字

<列名>:组成该表的各个属性(列)

<列级完整性约束条件>:涉及相应属性列的完整性约束条件

<表级完整性约束条件>:设计一个或多个属性列的完整性约束条件

例:建立“学生”表Student。学号是主码,姓名取值唯一。则代码如下:

CREATE BTABLE Student
(Sno CHAR(10)PRIMARY KEY,Sname CHAR(20)UNIQUE,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20)
);

注:执行CREATE TABLE语句后:有关表的定义,约束条件等翻译成内部表示存储在系统的数据字典,在数据库中为基本表分配了(预留了) 存储时间。

4.3.2创建数据库:

create database Student;      --创建数据库

use student;                          --使用数据库

drop database Student;     --删除数据库

注:两种注释方式:(1)两个减号--,注释单行。(2)/**/注行

不能在当前数据库删除当前数据库

4.3.3SQL常用数据类型:
数据类型描述
integer(size),int(size),smallint(size),tinyint(size)仅容纳整数,在括号内规定数字最大位数
decimal(size,d),numeric(size,d)容纳带有小数的数字,size规定数字最大位数,d规定小数点右侧最大位数
char(size)容纳固定长度的字符串(可容纳字母,数字以及特殊符号),在括号内规定字符串长度
varchar(size)容纳可变长度的字符串(可容纳字母,数字以及特殊字符),在括号内规定字符串的最大长度
data(yyyymmdd)容纳日期

​ 4.3.4SQL 创建表语句的一般格式为

​ CREATE TABLE <表名>

​ ( <列名> <数据类型>[ <列级完整性约束> ]

​ [,<列名> <数据类型>[ <列级完整性约束>] ] …

​ [,<表级完整性约束> ] ) ;

其中<数据类型>可以是数据库系统支持的各种数据类型,包括长度和精度。

列级完整性约束为针对单个列(本列)的完整性约束, 包括 PRIMARY KEY、 REFERENCES表名(列名)、UNIQUE、NOT NULL 等。

表级完整性约束可以是基于表中多列的约束,包括 PRIMARY KEY ( 列名列表) 、FOREIGN KEY REFERENCES 表名(列名) 等。

​ 4.4索引的建立与删除

4.4.1SQL 创建索引语句的一般格式为:

​ CREATE [UNIQUE] [CLUSTER] INDEX <索引名>

​ ON <表名> (<列名列表> ) ;

其中UNIQUE:表示创建唯一索引,缺省为非唯一索引;

CLUSTER:表示创建聚簇索引,缺省为非聚簇索引;

<列名列表>:一个或逗号分隔的多个列名,每个列名后可跟 ASC 或 DESC,表示升/降序,缺省为升序。多列时则按为多级排序。

4.4.2SQL修改索引的一般格式为:

ALTER INDEX <旧索引名>RENAME TO<新索引名>

4.4.3SQL删除索引一般格式为:

 DROP INDEX<索引名>;

​ 4.5SQL 数据查询

4.5.1SQL数据查询语句的一般格式为

​ SELECT [ALL|DISTINCT] <算术表达式列表> FROM <表名或视图名列表>

​ [ WHERE <条件表达式 1> ]

​ [ GROUP BY <属性列表 1> [ HAVING <条件表达式 2 > ] ]

​ [ ORDER BY <属性列表 2> [ ASC|DESC ] ] ;

其中

ALL/DISTINCT: 缺省为 ALL, 即列出所有查询结果记录, 包括重复记录。 DISTINCT则对重复记录只列出一条。

​ 算术表达式列表:一个或多个逗号分隔的算术表达式,表达式由常量(包括数字和字符串)、列名、函数和算术运算符构成。每个表达式后还可跟别名。也可用 *代表查询表中的所有列。

<表名或视图名列表>: 一个或多个逗号分隔的表或视图名。 表或视图名后可跟别名。

条件表达式 1:包含关系或逻辑运算符的表达式,代表查询条件。

条件表达式 2:包含关系或逻辑运算符的表达式,代表分组条件。

<属性列表 1>:一个或逗号分隔的多个列名。

<属性列表 2>: 一个或逗号分隔的多个列名, 每个列名后可跟 ASC 或 DESC, 表示升/降序,缺省为升序。

4.5.2单表查询

4.5.2.1选择表中若干列

1.查询全部列:

选出所在属性列:①在SELECT关键字后面列出所有列名②将<目标列表达式>指定为*

例:查询全体学生详细信息:

SELECT Sno,Sname,Ssex,Sdept
FROM Student;
或
SELECT*
FROM Student;

2查询经过计算的值

SELECT 子句的<目标列表达式>不仅可以为表中属性列,也可以是表达式

例:查找全体学生的成绩和姓名

 SELECT Sname,Sgrade

FROM  Student;

4.5.2.2选择表中若干元组

取消取值重复的行:如果没有指定DISTINCT关键词,则缺省为ALL

指定DISTINCT 关键词,去掉表中重复的行

查询满足条件的元组:

常用查询条件
查询条件谓词
比较=,>,<,>=,<=,!>,!<,<>,!=;NOT+上述运算符
确定范围BETWEEN AND,NOT BETWEEN AND
确定集合IN,NOT,IN
字符匹配LIKE,NOT LIKE
空值IS NULL,IS NOT NULL
多重条件AND,OR,NOT

4.5.2.3ORDER BY子句

可以按一个或多个属性排序

升序:ASC;降序:DESC;缺省值为升序

对于空值,排序时显示次序由系统实现来决定

4.5.2.4聚集函数

统计元组个数:COUNT(*)

统计一列中值的个数:COUNT([DISTINC|ALL]<列名>)

计算一列值的总和(此列必为数值型):SUM([DISTINCT|ALL]<列名>)

计算一列值的平均值(此列必为数值型):AVG([DISTINCT|ALL]<列名>)

求一列中的最大值和最小值:MAX([DISTINCT|ALL]<列名>)

MIN([DISTINCT|ALL]<列名>)

4.5.2.5GROUP BY 子句

细化聚集函数的作用对象

如果未对查询结果分组,聚集函数将作用于整个查询结果

对查询结果分组后,聚集函数将分别作用于每个组

按指定的一列或多列分组,值相当为一组。

4.5.3连接查询

连接查询同时涉及两个以上的表的查询。

连接条件或连接谓词:用来连接两个表的条件,其一般格式为:

[<表名1>.]<列名1><比较运算符>[<表名2>.]<列名2>

[<表名1>.]<列名1>BETWEEN[<表名2>.]<列名2>AND[<表名2>.]<列名3>

4.5.3.1等值和非等值连接查询

4.5.3.2自身连接

自身连接:一个表与其自己进行连接。

需要给表起别名以示区别。

由于所有属性名为同名属性,因此必须使用别名前缀。

4.5.3.3外连接

外连接操作以指定表连接为主体,将主体表中不满足连接条件的元组一并输出。

左外连接:列出左边关系中的所有元组。

右外连接:列出右边关系中的所有元组。

4.5.3.4多表连接

多表连接:两个以上的表进行连接。

4.5.4嵌套查询

4.5.4.1嵌套查询:一个SELECT-FROM-WHERE语句为一个查询块。

将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短句的条件查询称为嵌套查询

SELECT Sname       /*外层查询/父查询*/
FROM Student
WHERE Sno IN (SELECT Sno   /*内层查询/子查询*/FROM SCWHERE Cno='2');

 上层查询块称为嵌套查询或父查询

下层查询块称为内层查询或子查询

SQL语言为多层嵌套查询:一个字查询还可以嵌套为其他子查询。

子查询限制:不能使用ORDER BY子句

不相关子查询:子查询的查询条件不依赖于父查询。

相关子查询:子查询的查询条件依赖于父查询。

4.5.5集合查询

4.5.5.1Group By子句

Group By操作含义是对SELECT-FROM-WHERE查询结果进行分组,Group By指出分组属性。

注:1.使用Group By子句时,SELECT 列表中的非汇总列必须为Group By列表中的项。

2.分组时,所有NULL值分为一组。

3.Group By列表中一般不允许出现复杂的表达式,显示标题以及SELECT列表中的位置标号。

Having子句是对分组的约束。

  Having条件对分组的约束:HAVING中条件一般用于对一些集合函数比较,如COUNT(),除此之外,一般条件应该写在WHERE子句中。

Order By子句

如果指定了SELECT DISTINCT ,那么ORDER By子句中项就必须出现在选择列表中。

注:ORDER BY子句只能用于对最终查询结果的排序,不能对中间结果排序。

任何情况下,ORDER BY 子句只能出现在最后

对集合操作结果排序时,ORDER BY子句中用数字指定排序属性

例:

SELECT Sname,Sage,Sdept
FROM Student
UNION ALL
SELECT A_Sname,H_Sage,H_Sdept
FROM History_Student
ORDER BY1;

集合操作:

并操作:UNION

并操作:INTERSECT

差操作:EXCEPT

形式:

<查询块>;

UNION [ALL]

<查询块>

参加UNION操作的各结果表列数 必须相同,对应项的数据类型必须相同。

UNION:将多个查询结果合并起来,系统自动去掉重复元组。

UNION ALL:将多个查询结果合并起来,保留重复的元组。

4.5.6基于派生表的查询

子查询可以出现在WHERE子句中,也可以出现在FROM子句中,子查询生成的临时派生表成为主查询的查询对象。

派生表是一种从查询表达式派生出虚拟结果表的表达式,与其他表一样出现在FROM子句中,派生表存在于外部查询中。使用派生的一般形式如下:

FROM(SELECT*FROM TA WHERE...)AS T

注:如果子查询没有聚集函数,派生表可以不指定属性列,子查询SELECT子句后面的列名为其缺省属性。

4.5.7SELECT语句的一般形式

SELECT语句一般形式:

SELECT[ALL|DISTINCT]

<目标列表达式>[别名][,<目标列表达式>[别名]]

...

FROM<表名或视图名>[别名]

          [,<表名或视图名>[别名]]...

          |(<SELECT语句>)[AS]<别名>

[WHERE <条件表达式>]

[GROUP BY<列名1>[HAVING<条件表达式>]]

[ORDER BY<列名2>[ASC|DESC]];

 目标列表达式格式

(1)*

(2)<表名>.*

(3)COUNT([DISTINCT|ALL]*)

(4)[<表名>.]<属性列名表达式>[.<表名>.]<属性列名表达式>]...

其中<属性列名表达式>可以是属性列,作用于属性列的聚集函数和常量的任意算术运算组成的。

2.聚集函数一格式:

3.WHERE子句的条件表达式                                                                                                                                                                                                                                                                                                                         

4.6数据更新   

4.6.1插入数据     

两种插入方式:  插入元组,插入子查询结果。

4.6.1.1插入元组:将新元组插入指定表中

语句格式:

INSERT

INTO<表名>[(<属性列1>[,<属性列2>...)]

VALUES(<常量1>[,<常量2>]...);

INTO子句:

1.指定要插入数据的表名及属性列

2.属性列的顺序可以与表义中的顺序不一致。

3.没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义的顺序一致。

4.指定部分属性列:插入元组在其余属性列上取空值。

 4.6.1.2插入子查询结果

语句格式:

INSERT

INTO<表名[(<属性列1>[,<属性列2>...)]

子查询;

 4.6.2修改数据

修改指定表中满足WHERE子句条件元组。

SET子句给出<表达式>的值用于取代相应的属性列。

如果省略WHERE子句,表示要修改表中所有元组。

语句格式:

UPDATE<表名>

SET<列名>=<表达式>[,<列名>=<表达式>]...

[WHERE<条件>];

4.6.3删除数据

删除指定表中满足WHERE子句条件元组。

WHERE子句

指定要删除的元组

缺省表示要删除表中的全部元组,表的定义仍在字典中。

语句格式:

DELETE

FROM<表名>

[WHERE<条件>];

三种删除方式:

1.删除某一个元组

2.删除多个元组的值

3.带子查询的删除语句

4.7空值处理 

4.7.1空值的处理

空值就是“不知道”或不存在或“无意义”的值

一般有以下几种情况:该属性可能有一个值,氮目前不知道它的具体值。

该属性不应该有值。

由于某种原因不便于填写。

4.7.2空值的产生

空值是一个很特殊的值,含有不确定性。对关系运算有特殊问题,需要特殊处理。

4.7.3空值的判断

判断一个属性的值是否为空值,用IS NULL或IS NOT NULL来表示

4.7.4空值约束条件

属性定义中:

有NOT NULL约束条件不能取空值

加上UNIQUE限制的属性不能取空值。

码属性不能取空值。

4.7.5空值运算:

空值与另一个值(包括另一个空值)的算术运算的结果为空值。

空值与另一个值(包括另一个值)的比较运算结果为UNKNOWN。

有UNKNOWN后,传统二值(TRUE,FALSE)逻辑上扩展为三值逻辑。

逻辑运算符真值表
x     y

x AND   y

x   OR   yNOT   x
T     TTTF
T     UUTF
T     FFTF
U     TUTU
U     UUUU
U     FFUU
F     TFTT
F     UFUT
F     FFFT

4.8视图

4.8.1定义视图

4.8.1.1建立视图

语句格式:

CREATE VIEW

<视图名>[(<列名>[,<列名>]...)]

AS<子查询>

[WITH CHECK OPTION];

*WITH CHECK OPTION

对视图进行UPDATE,INSERT和DELETE操作时保证更新,插入或删除的行满足视图定义的谓词条件。

*子查询可以是任意SELECT语句,是否可以含有ORDER BY 子句和DISTINCT短句,则决定具体系统的实现。

*组成视图的属性列名:全部省略·或全部否定。

*关系数据库管理系统执行CREATE VIEW语句时只是把视图定义存入数据字典,并不执行其中SELECT语句。

*在对视图查询时,按视图的定义从基本表中将数据查出。

*定义IS——Student视图加上WITH CHECK OPTION子句,对视图进行插入,修改和删除操作时,RDBMS会自动加上Sdept='IS’的条件。

4.8.1.2删除视图

语句格式定义:

DROP VIEW <视图名>[CASCADE]

*该语句从数据字典中删除指定的视图定义。

*如果该视图导出其他视图 ,使用CASCADE级联删除语句,把该视图和由他导出的所有视图一起删除。

*删除基表时,由该基表导出的所有视图定义都必须显示使用DROP VIEW语句删除。

4.8.2查询视图:

用户角度:查询视图与查询基本表相同

关系数据库管理系统实现视图查询的方法。

视图消解法:

进行有效性检查

转换成对基本表的查询

执行修正后查询

4.8.3更新视图

*允许对行列子集视图进行更新。

*对其他类型视图的更新不同系统有不同限制。

五:第四节数据库的安全性

 5.1安全性概述

计算机系统安全:指为计算机系统建立和采取的各种安全保护措施,以保护计算机系统中的硬件,软件和数据,防止因偶然或恶意原因使系统遭到破坏,数据遭到更改或泄露。

计算机系统安全问题分类:

技术安全:防火墙,防篡改

管理安全:软硬件管理,数据备份

政策法律类安全:审查,管理办法

TCSEC/TDI安全级别划分:

安全级别定义
A1验证设计
B3安全域
B2结构化保护
B1标记安全保护
C2受控存取保护
C1自主安全性保护
D最小保护

5.2 计算机系统安全性控制:

5.2.1用户标识和鉴定

用户标识,口令

系统提供最外层安全措施保护

系统提供方式让用户表示自己的名字和身份。

5.2.2身份鉴别

静态口令鉴别,动态口令鉴别,生物特征鉴别,智能卡鉴别。

5.2.3存取控制

定义用户权限,并将其登记到数据字典中。用户对某一数据对象操作称为权限。

合法权限检查:按照安全规则进行权限检查

自主存取控制(DAC)——GRANT和REVOKE

用户权限的两个因素:数据库对象和操作类型

定义用户存取权限称为授权

强制存取控制(MAC)

对象类型对象操作类型
数据库模式CREATE SCHEMA
基本表CREATE TABLE,ALTER TABLE
模式视图CREATE VIEW
索引CREATE INDEX
数据基本表和视图

SELECT,INSERT,UPDATE,DELETE,REFERENCES,

ALL PRIVILEGES

属性列

SELECT,INSERT,UPDATE,REFERENCES,

ALL PRIVILEGES

 5.2.4授权与回收

5.2.4.1GRANT语句(授权)

GRANT<权限>[,<权限>]...    (指定操作)

[ON<对象类型><对象名>]     (指定对象)

TO<用户>[,<用户>]...            (指定用户)

[WITH GRANT OPTION];

 5.2.4.2REVOKE语句

REVOKE<权限>[,<权限>]...

[ON<对象类型><对象名>]

FROM<用户>[,<用户>]...;

5.2.5数据库角色

数据库角色:被命名的一组或数据库操作相关的 权限。

角色是权限的集合,可以为一组相同权限的用户创建一个角色,简化授权过程。

一:角色的创建

CREATEB ROLE<角色名>

二:给角色授权

GRANT <权限>[,<权限>]... 

ON<对象类型>对象名

TO<角色>[,<角色>]...

三:将一个角色授予其他的用户或角色。

GRANT <角色1>[,<角色2>]... 

TO <角色3>[,<用户1>]...

[WITH ADMIN OPTION]

四:角色权限的收回

REVOKE<权限>[,<权限>]...

ON<对象类型><对象名>

FROM<角色>[,<角色>] 

 5.2.6强制存取控制(MAC)

MAC是指系统为保证更高程度的安全性,按照TDI/TCSEC标准中安全策略要求,所采取的强制存取检查手段。

在MAC中,DBMS所管理的全部实体被分为主体和客体两大类。

主体:在系统中的活动实体,包括DBMS所管理的实际用户,也包括代表用户的各进程。

客体:系统中的被动实体,包括文件,基表,索引,视图等。

DBMS为主体和客体的每个实例指派一个敏感度标记

绝密,机密,可信,公开

主体的敏感度标记称为许可证级别。

客体的敏感度标记称为密级。

强制存取控制规则

(1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体。

(2)仅当主体的许可证的密级时,该主体才能写相应的客体。

视图机制

把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。

审计:

审计日志:将用户对数据库的所有操作记录在上面。

DBA利用审计日志:找出非法存取数据的人,时间和内容。

审计分为:用户级审计和系统级审计。

数据加密:

数据加密:防止数据库数据在存储和传输过程中失密的有效手段。

加密方法:替换方法,置换方法,混合方法。

其他安全性保护

推理控制,隐蔽信道,数据隐私。

六:第五节数据库完整性

6.1实体完整性

6.1.1实体完整性定义

关系模型的实体完整性:CREATE TABLE 中用PRIMARY KEY定义

单属性构成的码有两种说明:定义为列级约束条件,定义为表级约束条件。

对多个属性构成的码只有一种说明方法。

例:将Student表中的Sno属性定义为码。

(1)在列级定义主码

CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY,Sname CHAR(20) NOT NULL,Ssex CHAR(2),Sage SMALLINT,
);

(2)在表级中定义主码

CREATE TABLE Student
(Sno CHAR(9),Sname CHAR(20) NOT NULL,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20),PRIMARY KEY(Sno),
);

实体完整性检查:检查主码值是否唯一,如果不唯一则拒绝或修改。

检查主码的各个属性是否为空,只要有一个为空则拒绝插入或修改。 

6.2参照完整性

 6.2.1参照完整性定义

在CREATE TABLE 中用FOREIGN KEY 短语定义哪些列为外码

用REFERNCES短语指明这些外码参照哪些表的主码

FOREIGN KEY(属性名)——定义

REFERENCES 被参照表名(被参照表主码)——引用

例关系SC中(Sno,Cno) 是主码。Sno,Cno分别参照Student表的主码和Course表的主码,定义SC参照完整性。

CREATE TABLE SC
(Sno CHAR(9) NOT NULL,
Cno CHAR(9) NOT NULL,Grade SMALLINT,
PRIMARY KEY(Sno,Cno)2,
FOREIGN KEY(Sno) REFERENCES Student(Sno),
FOREIGN KEY(Cno) REFERENCES Course(Cno)
);

参照完整性检查与违约处理

一个参照完整性将两个表中的相应元组联系起来

对被参照表和参照表进行增删改操作时有可能破坏参照完整性,必须进行检查。

参照完整性违约处理

(1) 拒绝(NO ACTION)        执行

(2)级联(CASCADE)操作

当删除或修改被参照表的元组造成了与参照表(SC)不一致,则删除或修改参照表中的所有造成不一致元组。

(3)设置空值(SET-NULL)

当删除或修改被参照表的元组造成了与参照表(SC)不一致,则将参照表中所有造成不一致的元组的对应属性设置为空值。

6.3用户定义完整性

用户定义完整性:针对某一具体应用的数据必须满足的语义要求。

关系数据库管理系统提供了定义和检验用户定义完整性机制,不必由应用程序承担。

6.3.1属性上的约束条件

CREATE TABLE 时定义属性上的约束条件

列值非空(NOT NULL)

列值唯一(UNIQUE)

检查列值是否满足一个条件表达式(CHECK)

例1:在定义SC表时,说明Sno,Cno,Grade属性不允许取空值 

CREATE TABLE SC
(Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT NULL,Grade SMALLINT NOT NULL,PRIMARY KEY(Sno,Cno),
...
);

例2:建立部门表DEPT,要求部门名称Dname列值唯一,部门编号Deptno为主码。

CREATE TABLE DEPT
(Deptno NUMERIC(2),Dname CHAR(9) UNIQUE NOT NULL,/*要求Dname列值唯一,并且不能取空值*/Location CHAR(10),PRIMARY KEY(Deptno)
);

例3:利用CHECK指定列值满足的条件,Student表中只允许取“男” 或“女”

CREATE TABLE Student1
(Sno CHAR(9)PRIMARY KEY,Sname CHAR(8)NOT NULL,Ssex CHAR(2) CHECK(Ssex IN('男','女')),/*性别属性Ssex只允许取男或女*/Sage SMALLINT,Sdept CHAR(20)
);
6.3.2元组上的约束条件

在CREATE TABLE 时可以用CHECK定义元组上的约束条件,即元组级的限制

同属性限制相比,元组级的限制可以设置不同属性间的取值的相互约束条件。

元组上的约束条件检查和违约处理

插入元组修改属性的值时,关系数据库管理检查元组上的约束条件是否被满足;如果不满足则操作拒绝执行。

例:当学生的性别是男时,其名字补位MISS打头

CREATE TABLE Student1
(Sno CHAR(9),Sname CHAR(8) NOT NULL,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20),PRIMARY KEY (Sno),
);

6.4完整性约束命令子句

6.4.1完整性约束命令子句

CONSTRAINT<完整性约束条件名><完整性约束条件>

<完整性约束条件>:NOTNULL,UNIQUE,PRIMARY KEY短句,FOREIGN KEY短语,CHECK短句。

例:建立学生登记表Student,要求学号在0-100之间,姓名不为空值,年龄小于20,性别只能是N男或女。

思路:在Student表上建立5个约束条件,包括主码约束StudentKey和C1,C2,C3,C4

CREATE TABLE Student
(Sno NUMERIC(4)CONSTRAINT C1 CHECK(Sno BETWEEN 1 AND 100),Sname CHAR(20)CONSTRAINT C2 NOT NULL,Sage NUMERIC(3)CONSTRAINT C3 CHECK (Sage<20),Ssex CHAR(2)CONSTRAINT C4 CHECK(Ssex IN('男','女')),CONSTRAINT StudentKey PRIMARY KEY(Sno)
);
6.4.2修改表中完整性限制

使用ALTER TABLE 语句修改表中的完整性限制

例:修改表Student1中的约束条件,要求学号修改为50-200之间,年龄由20改为小于25

步骤:删除原来的约束条件,再增加新的约束条件。

ALTER TABLE Student1
DROP CONSTRAINT C1;
ALTER TABLE Student
ADD CONSTRAINT C1 CHECK(Sno BETWEEN 50 AND 200),
ALTER TABLE Student
DROP CONSTRAINT C3;
ALTER TABLE Student
ADD CONSTRAINT C3CHECK(Sade<25);

6.5断言

6.5.1创建断言的语句格式

CREATE ASSERTION<断言名>

<CHECK子句>

CREATE ASSERTION 指定约束:

可以定义涉及多个表的或聚集操作的比较复杂的完整性约束

断言不为真值的操作会被拒绝执行

每个断言都被赋予一个名字,<CHECK子句>中的约束条件与WHERE子句的条件表达式相似。

例:限制每一门课程最多60名学生选修

CREATE ASSERTION ASSE_SC_CNUM1
CHECK (60>=ALL(SELECT COUNT(*)FROM SCGROUP BY Cno)
);
6.5.2删除断言的语句格式

DROP ASSERTION<断言名>;

6.6触发器(Trigger)

6.6.1定义触发器

触发器是用户定义在关系表上的一类由事件驱动的特殊过程。

触发器又叫事件-条件-动作规则。

事件发生时,如果条件成立则执行规则中的动作,否则不执行该动作。

语句格式:

CREATE TRIGGER<触发器名>

{BEFORE|AFTER<触发事件>ON<表名>

 REFERENCING NEW|OLD ROW AS<变量>

FOR EACH{ROW|STATEMENT}

[WHERE<触发条件>]<触发动作>

CREATE TRIGGER<触发器名>

{BEFORE|AFTER<触发事件>ON<表名>

(1)表的拥有者才可以在表上创建触发器

(2)触发器名

触发器名可以包含模式名也可以不包含模式名;同一模式下,触发器名必须是唯一的;触发器名和表名必须在同一模式下。

(3)表名

触发器只能定义在基本表上,不能定义在视图上。

(4)触发事件

可以是INSERT DELETE或UPDATE,也可以是几个事件的组合;还可以是UPDATE OF<触列,...>,进一步指明修改哪些列的激活触发器。

ALTER/BERORE是触发器的时机

AFTER表示执行之后激活触发器。

BEFORE表示执行之前激活触发器。

(5)触发器类型

行级触发器(FOR EACH ROW)

语句级触发器(FOR EACH STATEMENT)

(6)触发条件

当触发条件为真时触发动作才执行;否则触发动作体不执行。

如果省略WHERE触发条件,则触发动作体在触发器激活后立即执行。

(7)触发体动作

触发动作可以是一个匿名的PL/SQL过程块,也可以是对已创建存储过程的调用

行级触发器:用户在过程体中使用NEW和OLD引用事件之后的新值事件之前的旧值。

语句级触发器:不能在触发动作体中使用NEW或OLD进行引用。

如果触发动作体执行失败,激活触发器的事件就会终止执行。

 7.数据恢复技术
7.1 事务的概念及事务的4个特性及恢复技术能保证事务的哪些特性
ACID

原子性,事务是数据库中的逻辑工作单元,里面的操作要么全做,要么不做

一致性,事务执行结果必须是一个事务从一个一致性状态转到另一个一致性状态

隔离性,一个事务的执行不能受其他事务的影响

持久性,一旦一个事务完成提交了,那么对数据库的改变是永久的,保证了事务的原子性和隔离性

7.2故障种类(数据库的高可用性技术


(备份、恢复、复制、分区、主库(master)、从库(standby),cluster,data guard)

7.3事务内部的故障

系统故障

介质故障

计算机病毒

7.4. 恢复技术


恢复机制两个关键问题:如何建立冗余数据,以及如何利用这些冗余数据实施数据库恢复。建立数据库冗余数据最常用的技术是数据转储和登记日志文件

数据库相关问答题

为什么事务的非正常结束会影响数据库数据的正确性?


如果数据库运行过程中出现故障导致事务非正常结束,有些事务尚未完成就被中断,那么就破坏了事务的原子性,这些事务的一部分操作已经写入了数据库,这时数据库处于不一致的状态,例如银行转账。

登记日志文件时为什么必须先写日志文件,后写数据库?


因为这是两个不同的操作,如果中间发送故障,两个只能完成一个。如果先写了数据库操作,而在日志中没有这个记录,那么就无法恢复这个修改了。如果先写了日志,但没有写入数据库。那么恢复时只要多执行一次UNDO操作,并不会影响数据库操作。

针对不同的故障的恢复策略和方法


 事务内部故障


反向扫描文件日志,查找到该事务的更新操作

对该事务的更新操作执行逆操作,直到读到改事务的开始标记

 系统故障


正向扫描日志文件,找出在故障前已经提交的事务队列和未完成队列

对未完成队列执行中各个事务执行UNDO操作

对已经提交的各个事务执行REDO操作

 介质故障

装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态

装入转储结束时刻的日志文件副本

启动系统恢复命令,由DBMS完成恢复功能

什么是检查点记录,包括什么内容


检查点记录是一类新的日志记录。它的内容包括:

建立检查点时刻所有正在执行的事务清单
这些事务的最近一个日志记录的地址
10.8. 具有检查点恢复技术有什么优点?
节约时间,利用日志技术进行数据库恢复时,恢复子系统必须搜索整个日志,这将耗费大量时间

需要REDO的操作实际上已经将它们的更新操作结果写到数据库了,恢复子系统又重新执行了这些操作,浪费了大量时间

使用检查点方法进行恢复的步骤


找到最后一个检查点记录在日志文件的地址,由该地址在日志文件中找到最后一个检查点记录

由该检查点记录得到检查点建立时刻所有正在执行的事务清单,建立两个事务队列UNDO和REDO

从检查点开始正向扫描日志文件,根据提交与否选择重做还是撤销

对队列执行事务操作

什么是数据库镜像?它有什么用途


自动将整个数据库或者关键数据复制到另一个磁盘上。每当主数据库更新时,把更新后的数据复制过去,即自动保证镜像数据和主数据的一致性。

用途:

数据恢复
提升数据库利用率。例如被加了排他锁,可以在镜像数据库上读。
 

为什么UNDO是反向扫描日志,REDO是正向扫描日志


UNDO是恢复到第一个失败的事务就OK了,正向做不到。REDO是恢复到最后一个成功的事务之后。

 恢复系统是否可以保证事务的原子性和持续性


UNDO保证原子性,REDO保证持续性


数据库中为什么要并发控制?并发控制技术能保证事务的哪些特性?


数据库时共享资源,通常有多个事务同时执行。当多个事务同时并发地存取时就会产生同时读/写同一个数据。若对并发操作不加以控制就可能导致存取不正确的数据,破坏事务的一致性。

并发控制保证了事务的一致性和隔离性

并发操作会产生哪几类数据的不一致?用什么方法可以避免


丢失修改,两个事务对同一个数据同时进行修改,那么就会有一个事务的操作被另一个事务的修改覆盖掉。

不可重复读,一个事务读了某一数据以后,另一个事务对其进行了更新操作,那么再次读的时候就会得到与上次不一样的数据。

读取脏数据,一个事务修改了某一数据并把其写回磁盘,另一个事务读取了这个数据以后,之前那个事务因为某种原因撤销了。

避免不一致性的方法就是并发控制,常用的并发控制有封锁法、时间戳法、乐观控制法、多版本并发控制法等

什么是封锁?封锁类型有哪几种?


封锁就是事务T对某一数据进行操作前,先向系统发送请求,对其加锁,加锁以后事务就对这个数据有了一定的控制权,在事务T释放锁之前,其他事务不能对该数据进行更新或者读取

封锁类型有:排它锁、共享锁

. 三级协议分别能解决哪些问题


加X锁,直到事务结束再释放。解决了丢失修改问题。

在1基础上加S锁,读完后可以释放,解决了读取脏数据的问题。

在1基础上加S锁,直到事务结束再释放,解决了不可重复读问题

什么是活锁,产生原因和解决办法


当一系列封锁操作无法按照其正确顺序执行时,就可能导致事务无限等待某个封锁。

避免活锁的方法就是使用FCFS

 什么是死锁,解决死锁的办法,举例说明什么是死锁。

防止死锁的方法有两种:预防死锁、死锁诊断与解除

预防死锁有两种办法:一次封锁法、顺序封锁法

死锁诊断与解决:超时法、事务等待图法

解除法:选择处理死锁代价最小的事务,将其解除

Alter session kill ‘sessionid,pid ’;

什么样的并发调度是正确的调度


可串行化的并发调度是正确的调度。可串行化调度定义:多个事务并发执行是正确的,当且仅当其结果与按某一次序执行的串行执行的结果相同。

如何保证并发调度的正确性


冲突可串行化,使用两段锁协议

 NoSQL和New数据库


自1970年以来,数据库技术发展到了第四代,第一代是60~70年早期的层次和网状数据库系统,第二代是70年代中期开始的关系数据库系统,第三代是80年出现的对象数据库系统和以及90年出现的对关系模型进行扩展,使关系数据库系统具有面向对象功能。

自2000年以来,Web技术、社交网络、移动计算和物联网的进步导致全球范围应用程序生成的半结构化、非结构化数据呈现爆炸式增长势态,此类应用程序产生了各种不同的需求,包括水平可扩展能力、支撑大规模海量数据处理能力,系统要具有高可用性和容错能力以应对硬件和软件故障,并且可以通过利用额外资源响应客户端请求,从而提高查询处理速率,这就导致了第四代数据库技术NoSQL和NewSQL技术的出现。

NoSQL数据库的关键特征是:(1)采用图形、树、键值、文档等表格模型以外的数据模型;(2)数据库设计时没有固定的模式定义;(3)提供对水平可扩展性的隐式支持;(4)具有最终一致性而不是强一致性。NoSQL的另一个重要概念是CAP定理,它对分布式系统至关重要的属性提供了一些约束,即:一致性、可用性和分区容错性。CAP定理表明,分布式系统在任何给定时间最多只能满足其中2个属性。

Json格式!!!

NewSQL是最新一代的数据库系统,它不仅提供NoSQL数据库系统具有的可扩展性和可用性,还保留了传统关系数据库的ACID特性、关系数据模型和SQL查询语言。

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     

http://www.15wanjia.com/news/2010.html

相关文章:

  • 深圳手机网站设计常用的关键词优化策略有哪些
  • 打开网站8秒原则模板建站价格
  • 大连提高网站排名软文范例大全500
  • 手机网站素材网成都关键词排名推广
  • 开个淘宝店做网站设计好吗百度收录提交申请
  • 做外贸为什么要知道b2b网站广州网站优化推广
  • 怎么建设手机网站上海建站seo
  • ppt免费下载的网站seo谷歌
  • 做网站得多钱不用流量的地图导航软件
  • html网站建设实录深圳网络推广培训
  • 阿里云做外贸网站疫情防控最新政策
  • 收费的网站怎么做的刷移动关键词优化
  • 做视频聊天网站永久免费自助建站平台
  • 永川网站设计网片
  • 沈阳 网站开发制作企业网站管理
  • 为什么大公司开发网站聚名网官网
  • 做通信毕业设计的网站汽车网络营销推广方案
  • 阿里做的网站后台怎么进曲靖新闻今日头条
  • 专门查建设项目的网站阿里巴巴关键词排名优化
  • 网站建设公司排名及费用手机网站免费客服系统
  • 上海网站推广提供商网上做广告怎么收费
  • 中山企业营销型网站制作恶意点击软件哪个好
  • 建网站有什么要求高端企业建站公司
  • 便宜做网站怎么样搜索引擎优化不包括
  • 企业做网站的费用怎么入账杭州最好的seo公司
  • 杭州网站设计手机长沙百度首页排名
  • 用liferay做的网站朋友圈广告投放价格表
  • 东莞网站建设河北seo网络推广
  • 怎么做简单的网站b站网页入口
  • 建设网站的工作职责百度 站长工具