数据库总结

第一章绪论

一、数据库系统概述

1. 数据库的4个基本概念

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

2.数据库:长期储存 在计算机内、有组织的可共享的大量数据的集合。较小的冗余度、较高的数据独立性、易扩展性

3.数据库管理系统:位于用户与操作系统之间的一层数据管理软件。

数据定义功能,数据组织、存储和管理,数据操纵功能,数据库的事务管理和运行管理,数据库的建立和维护功能,其他功能

4.数据库系统:数据库、数据库管理系统、应用程序和数据库管理员。

好处:提高应用开发的效率,不必考虑数据管理的细节;数据与程序之间的独立性,只修改逻辑结构,不必修改应用程序;减轻管理人员维护系统的负担

2. 数据管理技术的产生和发展

1.人工管理阶段:无直接存取设备,没有操作系统,批处理,某一应用程序,无共享独立

2.文件系统阶段:磁盘、磁鼓,文件系统(是操作系统的一部分),联机实时处理、批处理,某一应用,共享独立差,临时数据

3.数据库系统阶段:独立于操作系统、现实世界,安全,完整,并发,恢复

二、数据模型

1.分类

概念模型

逻辑和物理模型:层次、网状、关系、面向对象数据、对象关系数据、半结构化数据

关系模型优点:

1.建立在严格的数学概念基础上;

2.概念单一,联系都用关系来表示。数据结构简单,清晰,用户易懂易用;

3.存取路径对用户透明,独立保密。

缺点:由于存取路径对用户透明,查询效率不如格式化数据模型。DBMS进行优化。

2. 组成要素

数据结构、数据操作、数据的完整性约束

3. 数据库系统的三级模式

模式:所有用户的公共数据视图;

外模式:用户模式,模式的子图;

内模式:存储模式,只有一个。

数据与程序的物理独立性:当数据库的存储结构改变,管理员对模式/内模式映像做相应改变,可以使模式保持不变,从而应用程序也不必改变。

数据与程序的逻辑独立性:当模式改变时,管理员对各个外模式/模式的映像做相应改变,可以使外模式保持不变。应用程序是依据数据的外模式编写的。

第二章关系数据库

一、关系数据结构及形式化定义

1.关系

域:具有相同数据类型的值的集合

关系:是笛卡尔积D1*D2*...*Dn的子集。候选码:唯一标识一个元组,选定其中一个为主码。候选码的诸属性为主属性,不包含在任何候选码中的属性为非主属性。

2.关系模式

型,对关系的描述。R(U,D,DOM,F)R为关系名,U为组成关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映像集合,F为属性间的依赖关系集合。关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的。

二、关系操作

1. 基本操作

查询:select、project、join、divide、union、except、intersection、Cartesian Product

插入、删除、修改操作。

2. 关系数据语言的分类

关系代数语言:基本运算 并、差、笛卡尔积、投影、选择 (交、连接、除均可用5种基本运算来表达)

关系演算语言(元组、域)

具有关系代数和关系演算双重特点的语言

三、关系的完整性

1. 实体完整性

主属性不能取空

2. 参照完整性

外码与主码之间的引用规则。关系R在外码F上的值必须取空值,或者等于S中某个元组的主码值。

(在参照完整性中,外码属性值可以为空,它表示该属性的值尚未确定,但前提条件是该外码属性不是其所在参照关系的主属性。)

3.用户定义完整性

四、关系运算符

1.传统集合运算

并、差、交、笛卡尔积

2.专门的关系运算

选择、投影、连接(自然连接是一种特殊的等值连接)、除运算(给定关系R (X,Y) 和S (Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。)

示例:至少用了供应商S1所供应的全部零件的工程项目代码

解释:有关系:R(x,y) S(y,z)

R S

A B C B C D

a1 b1 c2 b1 c2 d1

a1 b2 c3 b2 c1 d1

a1 b2 c1 b2 c3 d2

R÷S的结果为a1

x相当于A y 相当于B,C z相当于D

按照除运算规则规则,我们不必关注D

只需比较B,C当S关系中的B,C所有的组合(b1,c2)(b2,c3)(b2,c1)都出现在R关系中时,结果才为A

Yx:x在R中的象集,x = tr[X]

a1的象集为:{(b 1,c 2),(b 2,c 3),(b 2,c1)}

a2的象集为:{(b 3,c 7),(b 2,c3)}

a3的象集为:{(b 4,c6)}

a4的象集为:{(b 6,c6)}

S在(B,C)上的投影为{(b 1,c 2),(b 2,c 3),(b 2,c1)}。

显然只有R的象集a1包含S在(B,C)属性组上的投影,所以R÷S={a1}。

除操作是同时从行和列角度进行运算

第三章 关系数据库标准语言SQL

一、SQL概述

1. SQL特点

(1)综合统一:SQL语言集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体。在关系模型中实体和实体间的联系均用关系表示,这种数据结构的单一性带来了数据操作符的统一性,查找、插入、删除、更新等每一种操作都只需一种操作符,从而克服了非关系系统由于信息表示方式的多样性带来的操

作复杂性。

(2)高度非过程化:用SQL语言进行数据操作,只要提出"做什么",而无需指明"怎么做",因此无需了解存取路径、存取路径的选择以及SQL语句的操作过程。这有利于提高数据独立性。

(3)面向集合的操作方式:SQL语言采用集合操作方式,不仅操作对象和查找结果可以是元组的集合,而且插入、删除、更新操作的对象也可以是元组的集合。

(4)以同一种语法结构提供两种使用方式:SQL语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式;作为嵌入式语言,它能够嵌入到高级语言程序中,供程序员设计程序时使用。

(5)语言简捷,易学易用。

2.基本概念

基本表:本身独立存在的表,一个关系对应一个基本表。一个或多个基本表对应一个存储文件,一个表可以带若干索引,索引也存放在存储文件中。

视图:虚表

二、数据定义

1.定义模式

模式嵌套定义的语句:

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

删除模式语句:

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

其中CASCADE和RESTRICT两者必选其一。选择了CASCADE(级联),表示在删除模式的同时把该模式中所有的数据库对象全部删除;选择了RESTRICT(限制),表示如果该模式中已经定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。只有当该模式中没有任何下属的对象时才能执行DROP SCHEMA语句。

2. 索引的建立与删除

顺序文件上的索引、B+树索引、散列索引、位图索引

三、数据查询

1. 常用查询条件

  1. 确定范围:BETWEEN AND, NOT BETWEEN AND

确定集合:IN, NOTIN

字符串匹配:LIKE, NOT LIKE (%任意长度,_单个字符,ESCAPE'<换码字符>',对通配符进行转义)

空值:ISNULL, ISNOTNULL

  1. AND的优先级高于OR,ORDER BY默认为ASC

  2. WHERE子句中不能用聚集函数作为条件表达式。

  3. GROUP BY子句

对查询结果分组的目的是为了细化聚集函数的作用对象。分组后还要对组进行筛选,输出满足条件的组用HAVING。

2. 嵌套查询

1.带有IN谓词的子查询

2.带有比较运算符的子查询:父查询与子查询之间用比较运算符进行连接。当确切知道是单值时,可以用>、<、=等比较运算符。

3.带有ANY或ALL谓词的子查询:>ANY =ALL

  1. 带有EXISTS谓词的子查询:只产生逻辑真值"true"或逻辑假值"false"

3. 集合查询

UNION、INTERSECT、EXCEPT

4. 基于派生表的查询

子查询不仅可以出现在WHERE子句中,还可以出现在FROM子句中,这时子查询生成的临时派生表(derivedtable)成为主查询的查询对象。

如果子查询中没有聚集函数,派生表可以不指定属性列,子查询SELECT子句后面的列名为其默认属性。通过FROM子句生成派生表时,AS关键字可以省略,但必须为派生关系指定一个别名。而对于基本表,别名是可选择项。

四、数据更新

1. 插入数据

插入元组、插入子查询结果

2. 修改数据

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

3. 删除数据

删除表中的数据,不是关于表的定义。

五、空值的处理

1.空值的可能性

目前不知道;不应该有值;不便于填写。

2.空值的处理

空值的产生,判断,约束条件,算术比较逻辑运算

六、视图

1. 定义查询更新

定义视图:CREATE VIEW 2.删除视图:DROP VIEW

2. 视图的作用

(1)视图能够简化用户的操作。

(2)视图使用户能以多种角度看待同一数据。

(3)视图对重构数据库提供了一定程度的逻辑独立性。

(4)视图能够对机密数据提供安全保护。

(5)适当的利用视图可以更清晰的表达查询。

相关推荐
小小不董7 分钟前
深入理解oracle ADG和RAC
linux·服务器·数据库·oracle·dba
胚芽鞘68143 分钟前
查询依赖冲突工具maven Helper
java·数据库·maven
宇钶宇夕1 小时前
SIMATIC S7-1200的以太网通信能力:协议与资源详细解析
运维·服务器·数据库·程序人生·自动化
LuckyLay1 小时前
1.1.1数据类型与变量——AI教你学Django
数据库·django·sqlite
汤姆大聪明2 小时前
Redis 持久化机制
数据库·redis·缓存
brevity_souls3 小时前
什么是时序数据库?——原理、特点与应用
数据库·时序数据库
SelectDB3 小时前
Apache Doris 实时更新技术揭秘:为何在 OLAP 领域表现卓越?
数据库·数据分析·apache
kk在加油4 小时前
Redis数据安全性分析
数据库·redis·缓存
DolphinDB5 小时前
更高效的因子研究工具:基于 DolphinDB 的因子评价框架详解
数据库
此乃大忽悠5 小时前
身份认证缺陷
java·数据库·webgoat·身份认证缺陷