数据库系统概念

数据库管理系统,(DataBaseManagement System,DBMS)由一个互相关联的数据的集合和一组用以访问这些数据的程序组成。数据集合称作数据库。DBMS主要目标就是要提供一种方便,高效地存取数据库信息的途径。

数据的一个主要目的就是给用户提供数据的抽象视图

物理层,逻辑层,视图层

数据库结构的基础是数据模型,数据模型是一个描述数据,数据联系,数据语义以及一致性的概念工具的集合。


数据定义语言(DataDefinitionLanguage)来定义数据库模式

数据操纵语言(DataManinpulationLanguage)来表达数据库的查询和更新

域约束(domain constraint)每个属性都必须对应于一个所有可能的取值构成的域

参照完整性(referential integrity)我们常常希望,一个关系中给定属性集上的取值也在另一关系的某一属性集的取值中出现。数据库的修改会导致参照完整性的破坏,当参照完整性约束被违反时,通常的处理是拒绝执行完整性被破坏的操作。

断言(assertion)一个断言就是数据库需要时刻满足的某一条件。域约束和参照完整性约束是断言的特殊形式。

授权(authorization)用户加以区别的对数据库的访问,读权限,插入权限,更新权限,删除权限。

 

DDl以一些指令作为输入,生成一些输出。DDL的输出放在数据字典,数据字典包含了元数据,元数据是关于数据的数据。可把数据字典看作是一种特殊的表,这种表只能有数据库系统本身(不是常规用户)来访问和修改。在读取和修改实际的数据前,数据库系统先要参考数据字典。

 

关系型数据库

       关系型数据库基于关联模型,使用一系列表来表达数据以及这些数据之间的联系。

       关系模型是基于记录的模型的一个实例,基于记录的模型是因为数据库的结构是几种固定格式的记录。每个表包含一种特定类型的记录。

       通过提供应用程序接口(过程集),它可以用来将DML和DDL的语句发送给数据库,再取回结果。Java的JDBC就是如此。

       存储管理器和查询处理部件

       事务三个特性,原子性,一致性,持久性。

       事务是数据库应用中完成单一逻辑功能的操作集合。每一个事务是一个既具有原子性又具有一致性的单元。

 

并发控制管理器(concurrency-control manager)控制并发事务间的相互影响。事务管理器包括并发控制管理器和恢复管理器。

20170215

XML语言设计的初衷是为文本文档添加标签信息,但由于它在数据交换中的应用而变得日益重要。XML提供了含有嵌套结构的数据的方法,能够灵活组织数据结构。

关系型数据库

       表中一行代表了一组值之间的一种联系,一张表就是这种联系的一个集合。

Instructor即指代模式,又指代实例。

从section到teaches的约束是参照完整性约束(reterential intergrity constraint)的一个例子,参照完整性约束要求在参照关系中的任意元组在特定属性上的取值必然等于被参照关系中的某个元组在特定属性上的取值。

过程话语言(procedural language)和非过程化语言(nonprocedural language)中,用户只需描述所需信息,而不用给出获取该信息的具体过程。

 

关系的模式(schema)是指它的逻辑设计,而关系的实例是指它的特定时刻的内容。

DDL(Data-Definition-Language),SQL DDL提供定义关系模式,删除关系以及修复关系模式的命令。

DML(Data-Manipulation-Language),SQL DML提供从数据库中查询信息,以及在数据库中插入元组,修改元组的能力。

Integrity(完整性),View-Definition(视图定义),Transaction Control(事务控制),Authorizaiton(授权)。

 

ForeighKey表明关系中任意元组在属性上的取值必须对应于关系S中某元组主码属性上的取值。

 

SQL查询的基本结构由三个字句构成,select,from,where。

查询的数据是在from子句中列出的关系,在这些关系上进行where和select字句中指定的运算,然后产生一个关系作为结果。

去重关键字distinct

 

Select子句还可带有加减乘除运算符的算数表达式

为了回答查询,,instructor关系中的每个元组必须与department关系中的元组匹配。

       Select—From—Where三子句的运算顺序是先From—Where—Select

 

通过From子句定义了一个在该子句中所列出关系上的笛卡儿积,它可以用集合理论来形式化地定义。

 

有时候我们不仅希望将聚集函数作用在单个元组集上,而且也希望将其作用到一组元组集上,在SQL中可以用group by子句实现这个愿望。

 

Having子句中的谓语在形成分组后才起作用,因此可以使用聚集函数。

与select子句的情况类似,任何出现子啊Having子句中,但没有被聚集的属性必须出现在group by子句中,否则查询就被当成是错误的。

 

在一句SQL语句中,如果出现了group by子句,满足where谓词的元组通过group by子句形成分组,如果没有group by子句,满足where谓语的整个元组集被当作一个分组。

 

实例:对于2009年讲授的每个课程段,如果该课程段有至少两名学生选课,找出选秀该课程段的所有学生的总学分的平均值。

Select course-id,semester,year,sec-id,avg(tot-cred)

From tabks natural join studeng

Where year=2009

Group by course-id,semester,year,sec-id

Having count(id)>=2;

 

空关系测试   EXISTS,NOT EXISTS

重复元组测试 UNIQUE,NOT UNIQUE

 

中级SQL包括了更复杂形式的SQL查询,视图定义,事务,完整性约束。

ON条件允许在参与连接的关系上设置通用的谓词。该谓词的写法与where子句谓词类似。

 

左外连接(left outer join)只保留出现在左外连接运算之前(左边)的关系中的元组。

右外连接(right outer join)只保留出现在右外连接运算之后(右边)的关系中的元组。

 

为了与外连接运算相区分,不保留未匹配元组的连接运算被称为内连接(inner join)运算。当join子句中没有使用outer前缀,默认的连接类型是inner join。

视图

任何像这种不是逻辑模型的一部分,但作为虚关系对用户可见的关系称为视图。

       特定数据库系统允许存储视图关系,但是它们保证,如果用于定义视图的实际关系改变,视图也跟着修改,这样的视图被称为物化视图。保持物化视图一直在最新状态的过程称为物化视图维护。

       视图在作为查询的时候是一个有用的工具,但是如果用来表达更新,插入或者删除,就可能带来严重的问题。

 

20170217

Today is good day。

单个关系上的约束:Not Null,Unique,Check

ForeignKey:如果被参照关系上的删除或更新动作违反了约束,那么系统必须采取一些步骤通过修改参照关系中的元组来恢复完整性约束,而不是拒绝这样的动作。

Initially dererred:完整性约束在事务结束的时候检查,而不是在事务中间检查。

 

2012022

SQL提供字符数据的大对象数据类型(clod)和二进制数据的大对象数据类型(blob)。其中,字符”lob”代表”Large Object”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值