数据库原理及应用技术教程个人总结,可供参考,复习。

一,数据库绪论

数据库的起源与发展:

手工管理阶段(1.数据不保留 2应用程序管理数据 3.数据不共享 4.数据没有独立性)——>

文件系统阶段(1.数据可以长期保存 2.用文件系统管理数据 3.数据可以共享,共享性较差         4.数据和应用程序有了一定的独立性)——>

数据库系统阶段(1.数据结构化 2.数据共享性高 3.数据独立性高 4.统一的数据管理与控制5.方便的用户接口)

数据模型概述

1.模型与数据模型     --->1.模型         2. 数据模型

2.数据模型的分类     --->1  概念数据模型   2.逻辑数据模型  3.物理数据模型

3.数据模型的组成     --->1.数据结构  2.数据操作 3.完整性约束

层次数据模型    网状数据模型  关系数据模型  面向对象数据模型

数据库系统:

consist of:数据库、软件系统,硬件系统和人员组成

数据库管理系统:

consist of:1.数据和元数据   2.查询处理器  3.存储管理器 4.事务管理器

function:1.数据定义  2.数据组织、存储和管理 3、数据操控 4.事务管理和运行管理

5.数据库的维护  6.其他

数据库体系:

1.三级模式体系:外模式---->模式--->内模式

外模式可以有很多个,是模式的子集,也称子模式或用户模式

模式:也称为概念模式或逻辑模式

内模式:也称存储模式

2.两级映像

外模式/模式映像:外模式与模式之间的对应关系,也就是数据的局部逻辑结构与全局逻辑结构之间的关系。

模式/内模式映像:模式与内模式之间的对应关系,也就是数据全局逻辑结构与存储结构之间的对应关系。

3.数据的独立性

1.逻辑数据独立性  2。物理数据独立性.

数据库系统包括数据库管理系统和数据库

 

二,关系数据库基础

关系模型:

关系数据结构:

define:关系:一张规范的二维表

      元组:表中的一行

 属性:表中的一列

 域:属性的取值范围

 分量:元祖中的一个属性值

 候选码:能够唯一表示一个元祖的某个属性或属性组

 主码:主键,候选码中选出来表示改关系中元组

 主属性:包含在候选码中的属性

 非主属性:不包含任何候选码中的属性

性质:

列的同质性   异列同域性  列的无序性  行的无序性 元祖相异性 属性值的原子性

关系模式

关系数据库

关系的完整性约束

1.实体完整性约束     ------主码中属性不能为空

2.参照完整性约束     ------如读者借书的ISBN    取值为    书的ISBN

3.用户定义的完整性规则   -----自定义的如      0<age<100

关系操作

关系操作类型   关系操作语言(SQL  structured  query language)

关系代数

含义

运算符

含义

 
 

集合运算符

 

 

 

×

笛卡尔积

 

专门的关系运算符

σ

选择

 

投影

 

连接

 

÷

 

比较运算符

大于

 

小于

 

>=

大于等于

 

<=

小于等于

 

=

等于

 

不等于

 

逻辑运算符

 

 

 

1.并:R和S属性相同,合并同一数据只出现一次

2.差:R中有S中没有

3.交:R和S中都有

4.笛卡尔积:

R:

属性X

属性Z

A

B

C

D

S:

属性1

属性2

属性3

1

2

3

4

5

6

R×S =

属性X

属性Z

属性1

属性2

属性3

A

B

1

2

3

A

B

4

5

6

C

D

1

2

3

C

D

4

5

6

5.选择:   σage="5"(R)         在R中age等于5的行

6.投影:  ∏age(R)      选择age元祖显示

7.连接:

等值连接:会在⋈下面显示要相等的属性,将两个表中树形象等的元祖显示,相同属性会出现两次

自然连接:⋈下面没有任何条件   在等值连接的基础上消除相同属性列

左连接:只看左边的R表,右边的S表值在生成的新表中可以为空

右连接:与左连接相反。

8除:

R:

属性1

属性2

属性3

a1

b1

c1

a1

b2

c1

a2

b3

c2

a2

b1

c1

a2

b2

c1

a3

b3

c2

a1在R中像集为{(b1,c1),(b2,c1)}

a2在R中像集为{(b3,c2),(b1,c1),(b2,c1)}

a3在R中像集为{(b3,c2)}

S:

属性4

属性5

属性6

b1

c1

d1

b2

c1

d2

S在属性4,属性5上投影为:

{(b1,c1),(b2,c1)}

 

所以

R÷S = a1 , a2

关系代数表达式优化*----------*不写

关系演算*--------*不写

三,关系数据库标准语言SQL

SQL概述

SQL组成:

数据定义语言

对模式,基本表,视图,索引,域等的创建,修改和删除操作

数据操控语言

查询和更新

数据控制语言

对基本表和视图的授权,完整性规则的描述、事务控制

嵌入式SQL

SQL特点:

综合统一

高度非过程化

面向集合的操作方式

语言简洁、易学易用

一种语法结构两种使用方式

支持三级模式结构

SQL基本知识

基本概念:

SQL中,关系被称为基本表,元祖被称为行或者记录,属性被称为列或者字段

  表有三种基本类型:基本表   视图  查询表

 数据类型:

1.数值型

int:长整数

smallint;短整数

real:单精度浮点数

double precision:双精度浮点数

float(n):能够设置精度的浮点数,其精度至少为n位数字

numeric/decimal(p,d)::定点数

2.字符型

char(n)::长度为n的定长字符串

varchar(n)::最大长度为n的变长字符串

3.日期型

date:日期,包括年月日,一般格式为“YYYY-MM-DD”

time:时间,包括时分秒,一般格式为“HH:MM:SS”

4.位串型

binary(n):长度为n的二进制位串

varbinary(n):最大长度为n的变长二进制位串

常量

1.数值型常量

2.字符型常量

3.日期型常量

运算符与表达式

1.比较运算符

2.逻辑运算符

AND    OR

3.谓词

BETWEEN  AND     ||||   OR   ||||  IN  ||||  NOT IN ||||| LIKE  ||| NOT  LIKE  |||| IS NULL |||| IS  NOT  NULL

4.算术运算负

5.运算符的优先级

数据定义

1.模式定义

1.创建模式

CREATE SCHEMA  模式名  AUTHRIZATION  用户名

表定义子句  |   视图定义子句  |   授权定义字句

 1.在创建模式时,直接创建数据库对象

CREATE SCHEMA  reader_borrow;

CREATE SCHEMA  reader_borrow AUTHRIZATION  用户;

 

CREATE SCHEMA  reader_borrow AUTHRIZATION  用户

CREATE TABLE reader(

rno CHAR(5) PRIMARY KEY,

rname  CHAR(20),

rgender  CHAR(2),

rage  INT,

rspecialty CHAR(20)

);

 2.在创建模式时,直接创建数据库对象

CREATE SCHEMA  reader_borrow.reader(

rno CHAR(5) PRIMARY KEY,

rname  CHAR(20),

rgender  CHAR(2),

rage  INT,

rspecialty CHAR(20)

);

 3.使用SET SCHEMA  语句指定当前模式

SET SCHEMA read_borrow;

2.删除模式

DROP SCHEMA 模式名     CASCADE   |  RESTRICT

2基本表定义:

CREATE TABLE reader(

rno CHAR(5) PRIMARY KEY,

rname  CHAR(20),

rgender  CHAR(2),

rage  INT,

rspecialty CHAR(20)

);

3.实现完整性约束:

1.实现完整性约束

1.列级完整性

加 PRIMARY KEY

2.表级完整性约束

加 PRIMARY  KEY(属性1.属性2......)

3.完整性约束命名子句

CONSTRAINT  完整性约束条件名[PRIMARY  KEY 短语 | FOREIGN  KEY短语 | CHECK短语]

 

CONSTRAINT  bookkey PRIMARY KEY(bisbn)

2.实现实体完整性约束

PRIMARY  KEY(属性列名)

3.实现参照完整性约束

FOREIGN KEY(属性列名)

REFERENCES 被参照表名 (属性列名)

4.实现用户定义的完整性约束

  1. NOT NULL  与  DEFAULT约束
  2. UNIQUE约束
  3. CEHCK约束

4.更新基本表

1.修改基本表

1.增加属性列

ALTER TABLE 基本表名 ADD 新属性列名  数据类型  [完整行约束]

   2.增加完整性约束

  ALTER  TABLE  基本表名 ADD 完整性约束

   3.删除属性列

  ALTER  TABLE  基本表名   DROP  COLUMN 属性列名

   4.删除完整性约束

  ALTER  TABLE  基本表名   DROP  CONSTRAINT  完整性约束名

   5.修改属性列

  ALTER  TABLE  基本表名   ALTER   COLUMN  属性列名  数据类型

2.删除基本表

DROP  TABLE  基本表名  [RESTRICT  |  CASCADE]

3.简单查询

1.查询特定列

SELECT [ALL  |  DISTINCT] 目标列表达式 [,目标列表达式,....]

 2.查询多列

  select  rname,rno,rspecialty

from  reader;

 3.查询所有列

  select   *  from   reader;

 4.表达式列

  secect  rname,2014 - rage

from  reader;

  5.为列指定别名

  select rname 姓名,2014 - rage 出生年份

from reader;

  6.除掉重复值

  select  distinct  rno  FROM  borrow;

3.3.2条件查询

WHERE  田间表达式

1.用关系表达式表示的条件

 select rname  from  reader  where  rage = “15”

 2.用逻辑表达式表示的条件

  select rname  from  reader  where  rage = “15” AND/OR  rgender = “男”

 3.在指定范围内匹配值

  用 between 和 大于等符号

 4.在指定集合内匹配值

  IN关键字

3.3.3 聚集函数

       COUNT   SUM   AVG   MAX   MIN

 

select max(rage) age  from  borrow;

3.3.4模糊查询

[NOT] LIKE 匹配串 [ESCAPE 转义字符]

3.3.5对查询的结果排序

ORDER BY 列表 [ASC|DESC]默认为升序

3.3.6分组查询

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

select bpublisher,COUNT(bpublisher) quality 

from book

GROUP BY bpublisher;

3.3.7设计空值的查询

 select bisbn,startdate  from  borrow  where enddate  IS  NULL;

3.3.8连接查询

 1.连接的两种表示方法

1.使用where子句进行连接 

where A.rno = B.rno

   2.使用FROM

  FROM  表名1  JOIN  表名2  ON  表名1.列名1  比较运算符 表名2.列名2

  2.复合条件连接

  就是在WHERE子句中包含多个连接条件

  3.多表连接

select  r.rno,r.rname,bk.name

from reader  r,borrow  b, book  bk

where  r.rno = b.rno AND b.isbn = bk.isbn;

  4.自身连接

SELECT b1.rno,b1.isbn ,b2.isbn

FROM borrow b1,borrow b2

WHERE  b1.rno = b2.rno

AND b1.isbn = 'xxxxxx' AND b2.isbn = 'xxxxxx'

  5.外连接

左连接  LEFT  OUTER   ////右连接   RIGHT  OUTER

FROM  reader LEFT  OUTER  JOIN  borrow ON(reader.rno = borrow.rno);

3.3.9嵌套查询

1.带着IN谓词的子查询

select  rname

from  reader

where rno IN(

xxxxxxxxxxxxxx

);

 2.带有比较运算符的子查询

带上符号如   大于等等

 3.带有ANY(SOME)或ALL谓词的子查询

 如题

 4.相关子查询

子查询的查询条件不依赖于父查询,这类子查询成为不相关子查询

子查询的查询条件依赖于父查询,这类子查询成为相关子查询

 5.带有EXISTS谓词的子查询

 EXIST::存在

where  EXIST////NOT  EXIST

3.3.10集合查询

1.并操作

查询1

UNION

查询2

 2.交操作

查询1

INTERSECT

查询2

 3.差操作

查询1

EXCEPT

查询2

3.4数据更新

3.4.1插入数据

1.插入新数据

insert into 表名[(属性列名 1[,属性列名 2,.............])]

values(常量1[,常量2...]);

  2.复制现有数据

insert  into 表名[(属性列名 1[,属性列名 2,.............])]

子查询

3.4.2修改数据

1.修改全部数据

update  表名

set 属性列名1 = 表达式1[,属性列名2 = 表达式2,....]

[where 条件

2.修改指数据

在修改中使用where

3.带有子查询的修改

3.4.3删除数据

DELETE FROM 表名

[where 条件]

1.删除全部数据

DELETE  from  borrow;

2.删除指定数据

DELECT from borrow  where rno = ’xxxxx‘

3.带子查询的删除

DELECT from borrow  where rno = (查询)

3.5索引

3.5.1创建索引

CREATE [UNIQUE | CLUSTER]  INDEX 索引名

ON  表名(属性列名1[次序1][,属性列名2 [次序2],......])

3.5.2删除索引

DROP  INDEX 索引名;

3.6视图

3.6.1创建视图

CREATE  VIEW  试图名[(属性列名 1[属性列名2,...])]

AS  子查询

  [WITH  CHECK OPTION];

3.6.2创建索引

  DROP VIEW 视图名 [CASCADE]

3.6.3查询视图

  使用select

3.6.4更新视图

  INSERT    INTO reader_cp VALUES(xxxxxxxxx)

UPDATE reader_cp  SET rage = 20  WHERE rno = ‘14004’

四,关系数据理论

4.2基本概念

.4.2.1函数依赖的定义及性质

1.函数依赖的概念

关系模式R(U,F),U是属性全集,F是U上的函数依赖集,X和Y是U的自己,如果对于R(U)的任意一个可能的关系r,对于X的每一个具体值,Y都有唯一的具体值与之对应成为,X函数决定Y,或Y的函数依赖于X,记作X→Y,我们成X为决定因素,Y为依赖因素。

       1.平凡的函数依赖与非平凡的函数依赖

不依赖时箭头打叉,双向依赖时双向箭头。

Y是X子集时,称为平凡的函数依赖,不是的时候称为非平凡的函数依赖

2.函数依赖是语义范畴的概念

3.函数依赖与属性之间的联系类型有关

4.函数依赖关系的存在与时间无关

5.函数依赖可以保证关系分解的无损连接性

X的真子集可以与Y意义对应则Y部分函数依赖X   p   ,否则是完全函数依赖  f

Y依赖于X,X不依赖于Y,Z依赖于Y,则Z对X传递依赖   t

Y依赖于X,X依赖于Y,,Z依赖于Y,则Z对X直接依赖

2.函数依赖的基本性质

投影性     扩张性  合并性   分解性

4.2.2码

K为R(U,F)中的属性或属性组合。如果U完全依赖K,则K称为R的候选码,如果候选码多于一个,则选一个作为主码

包含在任何一个候选码中的属性,则成为主属性,不包含在任何码中的属性成为非属性吗,或非码属性。整个属性组是码,成为全码。

外码就是不是R中的码,但确是另一个关系模式的码。

4.3范式

第一范式:无法细分

第二范式:无部分传递依赖

第三范式:无传递依赖

BC范式     第四范式   第五范式

对1NF投影,消除非主属性对码部分函数依赖

对2NF投影,消除非主属性对码传递函数依赖

对3NF投影,消除主属性对码的部分和传递函数依赖

对BCNF投影,消除原关系中属性间非平凡且非函数依赖的多值依赖。

五,数据库设计

5.1.3数据设计的基本步骤:

需求分析

概念结构设计

逻辑结构设计

物理逻辑设计

数据库实施

数据库运行和维护

数据流图

ER图

六,事务和并发控制

6.1事务

6.1.1事务概念

事务是值用户定义的一个数据库操作序列,要么全做,要么全不做。

6.1.2事务的他正

1.原子性

2.一致性

3.隔离性

4.持续性

6.2并发控制

6.2.1并发执行

1.丢失修改

2.不可重复度

3.读脏数据

6.2.2可串行化调度

多个事务的并发执行是正确的,当且仅当其结果与按某一顺序串行地执行这些事务时的结果相同,则称这种调度是可串行化调度。

6.2.3 冲突可串行化调度

6.3基于锁的协议

6.3.1封锁

封锁机制是确保事务可串行化的方法之一,封锁是使事务对它要操作的数据有一定的控制能力,实现事务对数据项的访问以互斥的方式进行。

1.排他所

X锁:加锁后,只允许自己对对象读取和修改,其他事务不能对对象加锁。

2.共享锁

S锁,允许其他事务对对象加S锁但不能加X锁。

6.3.2封锁协议

1.一级封锁协议

修改数据之前加X锁,直到事务结束才释放

2.耳机封锁协议

在一级锁协议上加读取数据加上S锁,读完后释放

3.三级封锁协议

在一级锁协议上加读取数据加上S锁,事务结束后释放

6.3.3两段锁协议

 在读,写之前加锁

释放一个封锁后,不再获得和申请任何其他锁。

6.4活锁和死锁

1.活锁

2.死锁

1.死锁预防

1.一次封锁法

2.顺序封锁法

2.死锁的诊断和解除

1.超时法

2.等待图法

猜你喜欢

转载自www.cnblogs.com/tjvz/p/10045010.html