Tanky WooRSS

数据库理论基础

05 Feb 2012
这篇博客是从旧博客 WordPress 迁移过来,内容可能存在转换异常。

一、数据库的基本概念:

0.了解数据(data),数据库(DB),数据库管理系统(DBMS),数据库系统(DBS)的概念

1.数据库的发展(三个阶段)

2.DBMS的特点:数据的结构化,数据共享,数据的独立性,可控的冗余度

3.数据模型概念及三要素:数据结构,数据操作,完整性约束

4.概念模型:概念数据模型是面向用户、面向现实世界的数据模型,是与DBMS无关的。

了解概念:实体,实体类型,实体集,属性,码,域,联系(三种)

常用表示方法:E-R图

5.数据模型:

非关系型模型:层次模型(代表IMS)、网状模型(代表DBTG)

关系型模型: 关系模型(关系数据模型是由若干关系组成的集合)。术语”关系,元组,属性

6.模式结构:模式(schema)是数据库中全体数据的逻辑结构和特征的描述

> > 三级模式结构:外模式(子模式或用户模式),模式(逻辑模式),内模式(存储模式) *重要 > >

区别“型”和“值”的概念

7.从最终用户角度来看,数据库系统分为单用户结构、主从结构、分布式结构和客户/服务器结构。

8.数据库管理系统的功能与组成(数据库定义、操作、运行管理、组织|存储|管理、建立|维护、数据通信接口)

二、关系数据库:

0.SQL:SQL结构化查询语言是介于关系代数和关系演算之间的语言,不仅具有丰富的查询功能,而且具有数据定义和数据控制功能,是集查询、DDL(数据定义语言),DML(数据操纵语言),DCL(数据控制语言)于一体的关系数据语言,是关系数据库的标准语言。

1.如果关系中的某一个属性组的值能够唯一地标识一个元组,而其子集不行,则称该属性组为侯选码。若一个关系有多个侯选码,则选定其中一个为主码。侯选码的诸属性称为主属性。不包含在任何侯选码中的属性称为非码属性。在最简单的情况下,侯选码只包含一个属性,在最极端的情况下,关系模式的所以属性组是这个关系模式的侯选码,称为全码。

2.关系的完整性:关系模型的完整性是对关系的某种约束条件。

> > 关系模型中有三类完整性约束:实体完整性,参照完整性,用户自定义完整性 > >

3.集合运算:并,差,交,笛卡尔

4.选择,投影和连接运算

> > 选择:选择又称为限制,它是在关系R中选择满足给定条件的诸元组,记作:σf(R)={t|t∈R∧_F(t)_=‘真’},F表示选择条件 > >
> > 投影:关系R上的投影是从R中选择出若干属性列组成新的关系。记作:∏A(R) = { t[A] | t∈R },其中A为R中的属性列。 > >
> > 连接:连接也称为θ连接,它是从两个关系的笛卡儿积中选取属性间满足一定条件的元组,记作:![](http://kjwy.5any.com/sjkyl/Content/ch02/images/tp02040201.gif),其中A和B分别为R和S上度数相等且可比的属性组 > >

三、关系数据库标准语言SQL:

0.SQL(Structured Query Language):结构化查询语言SQL是一种介于关系代数与关系演算之间的语言,其功能包括查询、操纵、定义和控制4个方面。目前已成为关系数据库的标准语言。

1.特点:SQL语言功能极强,但由于结构巧妙,语言十分简洁,完成数据定义、数据查询、数据操纵、数据控制的核心功能只用了9个动词:CREATE、DROP、ALTER、SELECT、INSERT、UPDATE、DELETE、GRANT、REVOKE。如图:

sql

2.定义基本表:

> > CREATETABLE <表名> > > > > (<列名> <数据类型> [列级完整性约束条件] > > > > [, <列名> <数据类型> [列级完整性约束条件]…] > > > > [, <表级完整性约束条件>]); > >

3.修改基本表:

对表的修改包括增加新列、增加新的完整性约束条件、修改原有的列定义或删除已有的完整性约束条件等

> > ALTER TABLE <表名> > > > > [ADD <新列名> <数据类型>[完整性约束>]] > > > > [DROP <完整性约束名>] > > > > [MODIFY <列名> <数据类型>]; > >

4.删除基本表:

基本表一旦被删除,表中的数据和索引也将自动被删除。

> > DROP TABLE <表名> > >

5.索引

6.数据库查询:

数据库的查询的功能,是通过SELECT语句实现的,即通过SELECT语句不仅可以完成简单的单表查询,也可以完成复杂的多表之间的连接查询和嵌套查询,而且还可以完成视图的查询。

> > SELECT [ALL | DISTINCT ] <目标列表达式> [,<目标列表达式> ]… > > > > FROM <表名或视图名> [,<表名或视图名>]… > > > > [WHERE <条件表达式>] > > > > [GROUP BY <列名1> [HAVING <条件表达式> ] ] > > > > [ORDER BY <列名2> [ASD | DESC ] ] > >

通过在SELECT字句中指定DISTINCT短语,可以去掉结果表中的重复行。

GROUP BY字句即将结果按<列名1>进行分组,该属性值即列名1相等的元组为一组,每个组在结果表中产生一条记录

ORDER BY 即将结果按<列名2>的值进行升序或降序排序。

7.Where子句:

大小比较:=,>,<,> =,< =,! =,或<>,以及! >,! <

确定查询范围:BETWEEN…AND… 和 NOT BETWEEN…AND…

确定查询集合:谓词IN,IN 操作符允许我们在 WHERE 子句中规定多个值

字符匹配:谓词LIKE

空值的查询:IS NULL或IS NOT NULL

多重条件查询(*):用逻辑运算符AND和OR将几个查询条件联结起来

8.集函数:

COUNT(),SUM(), AVG(), MAX(), MIN()

9.Where与Having子句区别:

WHERE字句与HAVING短语的根本区别在于作用对象不同。WHERE字句作用于基本表或者视图,从中选择满足条件的元组。HAVING短语用于于组,从中选择满足条件的组。

10.插入数据:

SQL的数据插入语句INSERT通常有两种形式,一种是插入一个元组,另一个是插入子查询结果,后者可以一次插入多个元组。

插入单个元组:

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

插入子查询结果:

> > INSERT > > > > INTO <表名> [ (<属性列1> [, <属性列2>. . .] ) > > > > 子查询; > >

注意:这里插入的常量个数要和表名里的列数一样,否则插入几列,就要具体说明属性列。

11.修改数据:

修改操作又称为更新操作

> > UPDATE <表名> > > > > SET <列名> = <表达式> [, <列名> = <表达式>] . . . > > > > [WHERE <条件>]; > >

12.删除数据:

> > DELETE > > > > FROM <表名> > > > > [ WHERE <表名>]; > >

13.视图(View):

视图是从一个或几个基本表(或视图)导出的表,它与基本表不同,是一个虚表。

数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。基本表中的数据发生变化,从视图中查询出的数据也随之发生变化。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。

14.授权操作:

> > GRANT<权限>[,<权限]… > > > > [ON对象类型><对象名>] > > > > TO<用户>[,<用户>]… > > > > [WITH GRANT OPTION]; > >

15.收回权限:

> > REVOKE <权限>[,<权限>]… > > > > [ON<对象类型><对象名>] > > > > FROM<用户>[,用户>]… > >

16.不同对象类型允许的权限操作:

sql2

ALL PRIVILEGES是指几种权限的总和,例如在属性列和视图的操作权限中:ALL PRIVILEGES是查询、插入、修改、删除四种权限的总和。


By Tanky Woo

仅作复习时快速回顾,具体看萨师煊老师的《数据库系统概论》。