关系型数据库

已有人阅读此文 - - admin

关系型数据库知识,关系型数据库图片 关系型数据库内容,关系型数据库介绍,关系型数据库,关系型,数据库,当前,数据库,分为,关系型,和,的正文:

关系型数据库包含:关系型数据库介绍的方法与命令流程等可以帮助到读者。

关系型数据库例图

当前数据库分为关系型数据库和非关系型数据库

关系型数据库

关系型数据库:指采用了关系模型来组织数据的数据库。

关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。

关系模型中常用的概念:

关系:一张二维表,每个关系都具有一个关系名,也就是表名

元组:二维表中的一行,在数据库中被称为记录

属性:二维表中的一列,在数据库中被称为字段

域:属性的取值范围,也就是数据库中某一列的取值限制

关键字:一组可以唯一标识元组的属性,数据库中常称为主键,由一个或多个列组成

关系模式:指对关系的描述。其格式为:关系名(属性1,属性2, ... ... ,属性N),在数据库中成为表结构

关系型数据库的优点:

1.容易理解:二维表结构是非常贴近逻辑世界的一个概念,关系模型相对网状、层次等其他模型来说更容易理解

2.使用方便:通用的SQL语言使得操作关系型数据库非常方便

3.易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率

关系型数据库存在的问题

1.网站的用户并发性非常高,往往达到每秒上万次读写请求,对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈

2.网站每天产生的数据量是巨大的,对于关系型数据库来说,在一张包含海量数据的表中查询,效率是非常低的

3.在基于web的结构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,数据库却没有办法像web server和app server那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。当需要对数据库系统进行升级和扩展时,往往需要停机维护和数据迁移。

4.性能欠佳:在关系型数据库中,导致性能欠佳的最主要原因是多表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询。为了保证数据库的ACID特性,必须尽量按照其要求的范式进行设计,关系型数据库中的表都是存储一个格式化的数据结构。

数据库事务必须具备ACID特性,ACID分别是Atomic原子性,Consistency一致性,

Isolation隔离性,Durability持久性。

当今十大主流的关系型数据库

Oracle,Microsoft SQL Server,MySQL,PostgreSQL,DB2,

Microsoft Access, SQLite,Teradata,MariaDB(MySQL的一个分支),SAP

非关系型数据库

非关系型数据库:指非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统。

非关系型数据库结构

非关系型数据库以键值对存储,且结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,不局限于固定的结构,可以减少一些时间和空间的开销。

优点

1.用户可以根据需要去添加自己需要的字段,为了获取用户的不同信息,不像关系型数据库中,要对多表进行关联查询。仅需要根据id取出相应的value就可以完成查询。

2.适用于SNS(Social Networking Services)中,例如facebook,微博。系统的升级,功能的增加,往往意味着数据结构巨大变动,这一点关系型数据库难以应付,需要新的结构化数据存储。由于不可能用一种数据结构化存储应付所有的新的需求,因此,非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。

不足:

只适合存储一些较为简单的数据,对于需要进行较复杂查询的数据,关系型数据库显的更为合适。不适合持久存储海量数据

非关系型数据库的分类

非关系型数据库都是针对某些特定的应用需求出现的,因此,对于该类应用,具有极高的性能。依据结构化方法以及应用场合的不同,主要分为以下几类:

面向高性能并发读写的key-value数据库:

key-value数据库的主要特点是具有极高的并发读写性能

Key-value数据库是一种以键值对存储数据的一种数据库,类似Java中的map。可以将整个数据库理解为一个大的map,每个键都会对应一个唯一的值。

主流代表为Redis, Amazon DynamoDB, Memcached,

Microsoft Azure Cosmos DB和Hazelcast

面向海量数据访问的面向文档数据库:

这类数据库的主要特点是在海量的数据中可以快速的查询数据

文档存储通常使用内部表示法,可以直接在应用程序中处理,主要是JSON。JSON文档也可以作为纯文本存储在键值存储或关系数据库系统中。

主流代表为MongoDB,Amazon DynamoDB,Couchbase,

Microsoft Azure Cosmos DB和CouchDB

 

面向搜索数据内容的搜索引擎:

 

搜索引擎是专门用于搜索数据内容的NoSQL数据库管理系统。

主要是用于对海量数据进行近实时的处理和分析处理,可用于机器学习和数据挖掘

主流代表为Elasticsearch,Splunk,Solr,MarkLogic和Sphinx

 

面向可扩展性的分布式数据库:

 

这类数据库的主要特点是具有很强的可拓展性

普通的关系型数据库都是以行为单位来存储数据的,擅长以行为单位的读入处理,比如特定条件数据的获取。因此,关系型数据库也被成为面向行的数据库。相反,面向列的数据库是以列为单位来存储数据的,擅长以列为单位读入数据。

这类数据库想解决的问题就是传统数据库存在可扩展性上的缺陷,这类数据库可以适应数据量的增加以及数据结构的变化,将数据存储在记录中,能够容纳大量动态列。由于列名和记录键不是固定的,并且由于记录可能有数十亿列,因此可扩展性存储可以看作是二维键值存储。

主流代表为Cassandra,HBase,Microsoft Azure Cosmos DB,

Datastax Enterprise和Accumulo

 

CAP理论

 

NoSQL的基本需求就是支持分布式存储,严格一致性与可用性需要互相取舍

CAP理论:一个分布式系统不可能同时满足C(一致性)、A(可用性)、P(分区容错性)三个基本需求,并且最多只能满足其中的两项。对于一个分布式系统来说,分区容错是基本需求,否则不能称之为分布式系统,因此需要在C和A之间寻求平衡

C(Consistency)一致性

一致性是指更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致。与ACID的C完全不同

A(Availability)可用性

可用性是指服务一直可用,而且是正常响应时间。

P(Partition tolerance)分区容错性

分区容错性是指分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。

 

关系型与非关系型数据库的比较

 

1.成本:Nosql数据库简单易部署,基本都是开源软件,不需要像使用Oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。

2.查询速度:Nosql数据库将数据存储于缓存之中,而且不需要经过SQL层的解析,关系型数据库将数据存储在硬盘中,自然查询速度远不及Nosql数据库。

3.存储数据的格式:Nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。

4.扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。Nosql基于键值对,数据之间没有耦合性,所以非常容易水平扩展。

5.持久存储:Nosql不使用于持久存储,海量数据的持久存储,还是需要关系型数据库

6.数据一致性:非关系型数据库一般强调的是数据最终一致性,不像关系型数据库一样强调数据的强一致性,从非关系型数据库中读到的有可能还是处于一个中间态的数据,

Nosql不提供对事务的处理。

1、数据存储方式不同。

关系型和非关系型数据库的主要差异是数据存储的方式。关系型数据天然就是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。

 

与其相反,非关系型数据不适合存储在数据表的行和列中,而是大块组合在一起。非关系型数据通常存储在数据集中,就像文档、键值对或者图结构。你的数据及其特性是选择数据存储和提取方式的首要影响因素。

 

2、扩展方式不同。

 

SQL和NoSQL数据库最大的差别可能是在扩展方式上,要支持日益增长的需求当然要扩展。

 

要支持更多并发量,SQL数据库是纵向扩展,也就是说提高处理能力,使用速度更快速的计算机,这样处理相同的数据集就更快了。

 

因为数据存储在关系表中,操作的性能瓶颈可能涉及很多个表,这都需要通过提高计算机性能来客服。虽然SQL数据库有很大扩展空间,但最终肯定会达到纵向扩展的上限。而NoSQL数据库是横向扩展的。

 

而非关系型数据存储天然就是分布式的,NoSQL数据库的扩展可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载。

3、对事务性的支持不同。

如果数据操作需要高事务性或者复杂数据查询需要控制执行计划,那么传统的SQL数据库从性能和稳定性方面考虑是你的最佳选择。SQL数据库支持对事务原子性细粒度控制,并且易于回滚事务。

虽然NoSQL数据库也可以使用事务操作,但稳定性方面没法和关系型数据库比较,所以它们真正闪亮的价值是在操作的扩展性和大数据量处理方面。

当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。

关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。

Oracle。

Oracle是1983年推出的世界上第一个开放式商品化关系型数据库管理系统。它采用标准的SQL结构化查询语言,支持多种数据类型,提供面向对象存储的数据支持,具有第四代语言开发工具,支持Unix、Windows NT、OS/2、Novell等多种平台。除此之外,它还具有很好的并行处理功能。Oracle产品主要由Oracle服务器产品、Oracle开发工具、Oracle应用软件组成,也有基于微机的数据库产品。主要满足对银行、金融、保险等企业、事业开发大型数据库的需求。  

2.SQL Server。

SQL即结构化查询语言(Structured Query Language,简称为SQL)。SQL Server最早出现在1988年,当时只能在OS/2操作系统上运行。2000年12月微软发布了SQL Server 2000,该软件可以运行于Windows NT/2000/XP等多种操作系统之上,是支持客户机/服务器结构的数据库管理系统,它可以帮助各种规模的企业管理数据。随着用户群的不断增大,SQL Server在易用性、可靠性、可收缩性、支持数据仓库、系统集成等方面日趋完美。特别是SQL Server的数据库搜索引擎,可以在绝大多数的操作系统之上运行,并针对海量数据的查询进行了优化。目前SQL Server已经成为应用最广泛的数据库产品之一。由于使用SQL Server不但要掌握SQL Server的操作,而且还要能熟练掌握Windows NT/2000 Server的运行机制,以及SQL语言,所以对非专业人员的学习和使用有一定的难度。  

3.Sybase。

1987年推出的大型关系型数据库管理系统Sybase,能运行于OS/2、Unix、Windows NT等多种平台,它支持标准的关系型数据库语言SQL,使用客户机/服务器模式,采用开放体系结构,能实现网络环境下各节点上服务器的数据库互访操作。技术先进、性能优良,是开发大中型数据库的工具。Sybase产品主要由服务器产品Sybase SQL Server、客户产品Sybase SQL Toolset和接口软件Sybase Client/Server Interface组成,还有著名的数据库应用开发工具PowerBuilder。  

关系型数据库个人感觉应该这样解释:一是关系型数据库在表现出来的时候就是一张表格,不过这张表格有一些要求,一定是不可分的表格,就是基本单元是二元的没有表中表。这个也就是你说的数据表; 表是有横列有竖列的。字段就是相当于其中竖列上写的内容,记录就是其中横列上的内容,有几条记录即使表中有几行内容。

什么是数据库事务

  数据库事务是指作为单个逻辑工作单元执行的一系列操作。

  设想网上购物的一次交易,其付款过程至少包括以下几步数据库操作:

  · 更新客户所购商品的库存信息

  · 保存客户付款信息可能包括与银行系统的交互

  · 生成订单并且保存到数据库中

  · 更新用户相关信息,例如购物数量等等

  正常的情况下,这些操作将顺利进行,最终交易成功,与交易相关的所有数据库信息也成功地更新。但是,如果在这一系列过程中任何一个环节出了差错,例如在更新商品库存信息时发生异常、该顾客银行帐户存款不足等,都将导致交易失败。一旦交易失败,数据库中所有信息都必须保持交易前的状态不变,比如最后一步更新用户信息时失败而导致交易失败,那么必须保证这笔失败的交易不影响数据库的状态库存信息没有被更新、用户也没有付款,订单也没有生成。否则,数据库的信息将会一片混乱而不可预测。

  数据库事务正是用来保证这种情况下交易的平稳性和可预测性的技术。

  数据库事务的ACID属性

  事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性:

  · 原子性

  事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。通常,与某个事务关联的操作具有共同的目标,并且是相互依赖的。如果系统只执行这些操作的一个子集,则可能会破坏事务的总体目标。原子性消除了系统处理操作子集的可能性。

  · 一致性

  事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。某些维护一致性的责任由应用程序开发人员承担,他们必须确保应用程序已强制所有已知的完整性约束。例如,当开发用于转帐的应用程序时,应避免在转帐过程中任意移动小数点。

  · 隔离性

  由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。当事务可序列化时将获得最高的隔离级别。在此级别上,从一组可并行执行的事务获得的结果与通过连续运行每个事务所获得的结果相同。由于高度隔离会限制可并行执行的事务数,所以一些应用程序降低隔离级别以换取更大的吞吐量。

  · 持久性

   事务完成之后,它对于系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保持。

DBMS的责任和我们的任务

  企业级的数据库管理系统(DBMS)都有责任提供一种保证事务的物理完整性的机制。就常用的SQL Server2000系统而言,它具备锁定设备隔离事务、记录设备保证事务持久性等机制。因此,我们不必关心数据库事务的物理完整性,而应该关注在什么情况下使用数据库事务、事务对性能的影响,如何使用事务等等。

概叙

关系数据库的基本特征是使用关系模型的组织数据,20世纪80年代以后,在商用DBMS中,关系模型逐步取代早期的网状模型和层次模型。

关系数据模型

作为数据模型,关系模型包含三个组成要素:关系数据结构、关系操作集合和关系完整性约束。

关系数据结构 

结构只包含单一的数据结构(关系),现实世界的实体与实体间的各种联系均用关系来表示。关系模型是吧数据库比赛为关系的集合,并以二维表格的形式组织数据。

录入一张二维表格如:

学号 姓名 性别 籍贯 民族 ...
001 张三 陕西 ...
002 李四 湘西 ...
003 王五 河北 ...
004 赵六 东北 ...
...  

基本术语

  1. 表(Table):也称为关系,是二维数据结构,由表名、构成表的各列及若干行数据组成,每个表由唯一的表名,每一行数据描述一条具体的记录值。
  2. 关系(Relation):一个关系逻辑上对应一张二维表,可以为每个关系取一个名称来标识。关系有三种类型:基本关系(基表,实际存在的表,是实际存储数据的逻辑表示)、查询表(查询结构对应的表)和视图表(由基本表或其他视图导出的表,不对应实际存储的数据)。
  3. 列(Column):称为字段(Field)或属性(Attribute)。每一列有一个名称,表示实体属性,具有相同数据类型。在一个数据库中,表名,字段名必须唯一,不同的表可以有相同的字段名,且命名须有意义,简单。
  4. 属性(Attribute):表列即属性,给属性起名即属性名。属性的个数称为关系的元或度。列值为属性值;取值范围为值域。
  5. 行(Row):称为元组(Tuple)或记录(Record)。表中的数据按行存储,一行数据即一条记录或元组,每行又若干个字段值组成。
  6. 分量(Component):元组的属性值为分量
  7. 码/键(key):在一个关系中,有一个属性或属性组,能用来标识该关系的元组,则为该关系的码或键。
  8. 超码或超键(Super Key):从码中去除某个属性,它仍然是对应关系的码,则为超码;每个关系至少有一个默认的超码(所有属性的集合)。
  9. 候选码或键(Candidate Key):关系中的一个码或键中,不能去除任何一个属性,否则它就不是对应关系表的码或键,则此码为候选码(键),它是关系表中最小的超码或超键。
  10. 主键/码(Primary Key):在一张关系表中的若干候选键中指定一个用来唯一标识该关系的元组,则该候选键为主键。
  11. 全键/码(All-Key):一个关系中所有的属性集合是是这个关系是主键/码,则为全键/码。
  12. 主/非属性(Primary Attribute/Nonprimary Attribute):关系中包含任何一个候选键/码的属性为主/码属性,不包含任何一个候选码的属性为非主/码属性。
  13. 外键/码(Foreign Key):关系中的某个属性或属性组不是这个关系的主键或候选键,而是另一个关系的主键,则该属性(属性组)为关系的外键/码。
  14. 参照关系(Referencing Relation)/被参照关系(Referenced Relation):参照关系也称从关系,被参照关系又称主关系,它们指以外码相关联的两个关系。而以外码为主码的关系为被参照关系;外码所在的关系为参照关系,这种联系通常是一对多关联。
  15. 域(Domain):指属性取值范围。
  16. 数据类型(Data Type):每列(元关系)都有相应的数据类型,用于限制该列中存储的数据。
  17. 关系模式(Relation Schema):通数据模型一样,数据库也有型和值,在关系数据库中关系模式是型,关系是值,关系模式是对关系的描述。
中文字段名 数据类型 宽度 ...
学号 字符类型 8 ...
姓名 字符类型 10 ...
身份证 字符类型 18 ...
... ... ... ...

上表是学生基本星系登记表关系的结构定义,关系则是元组的集合,是关系模式在某一时刻的状态或内容

实际工作中关系模式和关系统称为关系。

18.关系数据库(Relation Database):以关系模型作为数据的逻辑模型,并采用关系作为数据组织方式的一类数据库,其数据库操作建立在关系代数的基础上。在给定的应用领域中,所以关系的集合构成一个关系数据库。
在实际的数据库应用系统中,一般使用英文作为表名、字段名等。因为在编写数据库应用程序时,表名、字段名会作为变量名,使用中文不方便标识,且有些DBMS不能很好的兼容中文。 
因此上表应该变更为:

含义 字段名 数据类型 宽度 ...
学号 studentNo 字符类型 8 ...
姓名 sutdentName 字符类型 10 ...
身份证 studentId 字符类型 18 ...
... ... ... ... ...

关系数据库对关系的限定:

  • 每个属性都不可分解,是关系数据库对关系的最基本的限定,要求关系的每个分量必须是一个不可分的数据项,即不允许表中有表
  • 一个关系对应一种关系模式,模式中的属性的数据类型及属性的个数是相对固定的
  • 每个关系模式中的属性必须命名,在同一模式中,属性名必须是不同的
  • 同一关系中不允许出现候选码或键值完全相同的元组
  • 关系中的元组顺序是可任意交换
  • 关系中的属性顺序可以任意交换

关系操作集合

基本的关系操作

增(插入 Insert)、删(Delete)、改(Update)、查(Query)。关系的查询表达能力是关系操作最主要的部分。查又可分为选择、投影、连接、除、并、差、交、笛卡尔积。集合操作方式(操作的对象和结果都是集合)。又称为一次一集合(set-at-a-time)

关系数据语言的分类

通过关系语言实现关系操作。用户不必请求DBM为其建立特殊的存取路径,由 DBMS 的优化机制来完成。

  1. 代数方式:主要有关系代数,通过对关系的操作来表达查询要求
  2. 逻辑方式:主要有关系演算,是用谓词来表达查询要求,关系演算又按谓词变元的基本对象(元组变量或域变量),分为元组关系演算和域关系演算。
  3. 介于前两者之间的结构化查询语言(Structured Query Language,SQL):SQL具有丰富的查询功能、数据定义和数据控制功能。集查询、数据定义语言(DDL)、数据操作语言(DML)和数据控制语言(Data Control Language, DCL)于一体;是关系数据库的标准语言。

关系代数

关系代数是关系操作语言中的传统表示方式,以集合代数为基础发展而来。任何一种操作都是将一定的操作符作用域一定的操作对象上,得到预期的操作结果。
而对象和结果均为关系。关系代数直接应用关系的运算来表达操作的目的,运算符包括集合运算符和专门的关系运算符。

关系代数的运算符
运算符 含义
集合运算符
× 笛卡尔积
专门的关系运算符 σ 选择
π 投影
连接
&pide;
比较操作符 > 大于
大于等于
< 小于
小于等于
等于
不等于
比较操作符 ¬

关系代数操作经过有限次复合的式子称为关系代数操作表达式(关系代数表达式),可使用表达式表示所需要执行的各种数据查询和修改处理,所有关系代数是一种抽象的查询语言,通过对关系的操作来表达查询。

按运算符分类,关系代数操作可分为:传统的集合运算和专门的关系运算

集合运算

传统集合运算是二目运算,将关系看成元组集合,运算从行的角度来进行,具有 并、差、交、迪卡尔积四种运算。
example:

表 T1

学号(SNO) 姓名(SNAME) 性别(SSEX) 宿舍(SROOM)
0001 张三 N101
0002 王二 N101
0003 李梅 C101

表 T2

学号(SNO) 姓名(SNAME) 性别(SSEX) 宿舍(SROOM)
0004 刘八 D101
0005 赵二 B201
0003 李梅 C101
并(UNION)

表T1 和 表T2 使用并运算产生一个新表T3,(T3 = T1 ∪ T2)它是由T1和T2所有不同元组所组成,且 T1和T2属性个数、值域相同。下表为 T1 ∪ T2的结果
表 T3

学号(SNO) 姓名(SNAME) 性别(SSEX) 宿舍(SROOM)
0001 张三 N101
0002 王二 N101
0003 李梅 C101
0004 刘八 D101
0005 赵二 B201
差(DIFFERENCE)

表T1 和 表T2 使用差运算产生一个新表T4,(T4 = T1 - T2)它有T1的所有元组但不包含T2的元组,且 T1和T2属性个数、值域必须相同。下表为 T1 - T2的结果

表 T4

学号(SNO) 姓名(SNAME) 性别(SSEX) 宿舍(SROOM)
0001 张三 N101
0002 王二 N101
交(INTERSECTION)

表T1 和 表T2 使用交运算产生一个新表T5,(T5 = T1 ∩ T2)它同时包含T1和T2相同的所有元组,且 T1和T2属性个数、值域必须相同,交运算可由差运算表示(T1∩T2 = T1-(T1-T2))。下表为 T1 ∩ T2的结果

表 T5

学号(SNO) 姓名(SNAME) 性别(SSEX) 宿舍(SROOM)
0003 李梅 C101
笛卡尔积(CARTESIAN PRODUCT)

表T6 和 表T7 使用笛卡尔积运算产生一个新表T8,(T8 = T6 × T7)它是T6和T7的所有元组连接而成,即将两张表的元关系合并,且T6的每一元组都对应T7所有的元组
下表为 T6 × T7的结果

表 T6

学号(SNO) 姓名(SNAME)
0001 张三
0002 王二

表 T7

课程号(CNO) 课程名(CNAME) 教室(SSEX)
1 数据库 C-101
2 操作系统 C-102

表 T8

学号(SNO) 姓名(SNAME) 课程号(CNO) 课程名(CNAME) 教室(SSEX)
0001 张三 1 数据库 C-101
0001 张三 2 操作系统 C-102
0002 王二 1 数据库 C-101
0002 王二 2 操作系统 C-102
专门的关系运算

此运算即涉及行,又涉及列,分为一元专门关系操作和二元专门关系操作

  • 一元关系操作:对单个关系进行垂直分解的投影运算和进行水平分解选择运算
  • 二元关系操作:对两个关系进行操作,包括连运算和除运算
选择(SELECT)

选择运算( $σ_F(R)$ ),F为条件表达式,R为指定的被运算关系名。 从指定关系中选取满足条件的若干元组组成一个新关系

SELECT 关系名 WHERE 条件语句(表达式)

条件语句:由常数、属性名或列名、比较操作符及逻辑操作符组成

example:

SELECT T8 WHERE 姓名 = "张三"

表 T9

学号(SNO) 姓名(SNAME) 课程号(CNO) 课程名(CNAME) 教室(SSEX)
0001 张三 1 数据库 C-101
0001 张三 2 操作系统 C-102
投影(PROJECTION)

投影运算( $π_A(R)$ ), R为被运算关系,A为属性序列,从指定关系中选取指定的若干属性值组成新关系

PROJECTION 关系名 ( 属性名1, 属性名2 ,... )

组成的新关系自动去重

example:

PROJECTION T8 (课程号,课程名)

表 T10

课程号(CNO) 课程名(CNAME)  
1 数据库  
2 操作系统  
θ连接(JOIN)

连接运算($R\cfrac{⋈}{xθy}S$),其中,R和S 代表两个不同的关系;x 和 y 分别表示R中的第x列和S中的第y列属性;θ表示比较运算符,从笛卡尔积R×S中选取R的第x列属性值与S的第y列属性值满足θ的那些元组组成一个新关系。

JOIN 关系1 AND 关系2 WHERE 条件语句

条件语句:由比较操作符和属性名或列名组成的表达式

  • 等值连接:θ值为 "=",从R和S的笛卡尔积中选取 x、y 属性值相等的元组
    example:

表 T11

A B C
a b c
d e f

表 T12

D E A
g h a
b c d
JOIN  T11 AND T12 WHERE A = A

T11 × T12

A B C D E A
a b c g h a
a b c b c d
d e f g h a
d e f b c d

等值结果为:

表 T13

A B C D E A
a b c g h a
d e f b c d
  • 自然连接:是一种特殊的等值连接,要求两个关系中比较的分量必须是 

表 T14

A B C D E
a b c g h
d e f b c

自然连接是构造新关系的有效方法,投影和选择是分解关系的有效方法,自然连接中如果两个关系没有公共属性则变成笛卡尔积
https://www.cnblogs.com/gaoguowen/p/11542457.html

1关系型数据库系部分转载自网络,如有对程序员或作者侵犯,请联系我们立即删除,另:本文仅代表作者个人观点,与本网站无关。

2关系型数据库这篇文章的原创性以及文中对于编程运维专业度的陈述文字 和内容未经本站证实,对本文以及其中全部或者部分内容及图片的有效性、文字的真实性、完整性、及时性本站不作任何保证或承诺以及推荐,本站非盈利,有对图片文字不适的请程序员及读者仅作参考并自行核实相关内容

3这篇关系型数据库的文章,涉及的关系型,数据库,当前,数据库,分为,关系型,和,命令,变量,函数,代码,类,库等皆是代称