当前位置: 首页 > news >正文

谁有人和兽做的网站网站未备案wordpress链接

谁有人和兽做的网站,网站未备案wordpress链接,wordpress设置收费下载,汕头市建设网站第一章 数据库系统概述 数据库的4个基本概念 数据、数据库、数据库管理系统、数据库系统是与数据库技术密切相关的4个基本概念 数据 数据是数据库中存储的基本对象#xff0c;描述事物的符号记录称为数据#xff0c;数据的表现形式还不能完全表达其内容#xff0c;需要…第一章 数据库系统概述 数据库的4个基本概念 数据、数据库、数据库管理系统、数据库系统是与数据库技术密切相关的4个基本概念 数据 数据是数据库中存储的基本对象描述事物的符号记录称为数据数据的表现形式还不能完全表达其内容需要经过解释数据和关于数据的解释是不可分的数据的解释是指对数据含义的说明数据的含义称为数据的语义数据与其语义是不可分的。 数据库 存放数据的仓库。严格来说数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和储存具有较小的冗余度、较高的数据独立性和易扩展性并可为各种用户共享。 数据库数据具有永久存储、有组织和可共享三个特点。 数据库管理系统 数据库管理系统是位于用户和操作系统之间的一层数据管理软件数据库管理系统和操作系统一样是计算机的基础软件主要功能包括: 1.数据定义功能 2.数据组织、存储和管理 3.数据操纵功能 4.数据库的事务管理和运行管理 5.数据库的建立和维护功能 6.其他功能 数据库系统 数据库系统是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统 数据管理技术的产生和发展 数据管理是指对数据进行分类、组织、编码、存储、检索和位数它是数据处理的中心问题而数据的处理是指对各种数据进行收集、存储、加工和传播的一系列活动的总和。在应用需求的推动下在计算机硬件、软件发展的基础上数据管理技术经历了人工管理、文件系统、数据库系统三个阶段。 人工管理阶段 特点 1.数据不保存 2.应用程序管理数据 3.数据不共享 4.数据不具有独立性 文件管理阶段 特点 1.数据可以长期保存 2.由文件系统管理数据 3.数据共享性差冗余度大 4.数据的独立性差 数据库系统阶段 用数据库系统来管理数据比文件系统具有更明显的优点从文件系统到数据库系统标志着数据管理技术的飞跃 人工管理阶段文件系统阶段数据库系统阶段背景应用背景科学计算科学计算、数据管理大规模数据管理硬件背景无直接存储设备磁盘、磁鼓大容量磁盘、磁盘阵列软件背景没有操作系统有文件系统有数据库管理系统处理方式批处理联机实时处理、批处理联机实时处理、分布处理、批处理特点数据的管理者用户(程序员)文件系统数据库管理系统数据面向的对象某一应用程序某一应用现实世界(一个部门、企业、跨国组织等)数据的共享程度无共享、冗余度极大共享性差冗余度大共享性高冗余度小数据的独立性不独立、完全依赖于程序独立性差具有高度的物理独立性和一定的逻辑独立性数据的结构化无结构记录内有结构整体无结构整体结构化用数据模型描述数据控制能力应用程序自己控制应用程序自己控制由数据库管理系统提供数据安全性、完整性、并发控制和恢复能力 数据库系统的特点 1.数据结构化 数据库系统实现整体数据的结构化这是数据库的主要特征之一也是数据库系统与文件系统的本质区别。所谓“整体”结构化是指数据库中的数据不再仅仅针对某一个应用而是面向整个组织和企业不仅数据内部是结构化的而且整体式结构化的数据之间是有联系的。 2.数据的共享性高、冗余度低且易扩充 数据共享可以大大减少数据冗余节约存储空间。数据共享还能够避免数据之间的不相容性与不一致性。由于数据面向整个系统是有结构的数据不仅可以被多个应用共享使用而且容易增加新的应用这就使得数据库系统弹性大、易扩充。 3.数据独立性高 数据独立性是借助数据库管理数据的一个显著优点它已经成为数据库领域中一个常用的术语和重要概念包括数据的物理独立性和逻辑独立性。 物理独立性是指用户的应用程序与数据库中数据的物理存储是相互独立的。 逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。 数据独立性是由数据库管理系统提供的二级映像功能来保证的。 4.数据由数据库管理系统统一管理和控制 1.数据的安全性保护 数据的安全性保护是指保护数据防止不合法使用造成数据泄密和破坏 2.数据的完成性检查 数据的完整性指数据的正确性、有效性和相容性 3.并发控制 4.数据库恢复 综上所述数据库是长期储存在计算机内有组织的、可共享的大量数据的集合。它可以供各种用户共享具有最小冗余度和较高的数据独立性。数据库系统在数据库建立、运用和维护时对数据进行统一控制以保证数据的完整性和安全性并在多用户同时使用数据库时进行并发控制在发生故障后对数据库进行恢复。 数据库系统的出现使信息系统从以加工数据的程序为中心转向围绕共享的数据库为中心的新阶段这样既便于数据的集中管理又能简化应用程序的研制和维护提高了数据的利用率和相容性提高了决策的可靠性。 数据模型 数据模型也是一种模型它是对现实世界的数据特征的抽象。数据模型是数据库系统的核心和基础。 两类数据模型 数据模型应该满足三方面要求一是能够比较真实地模拟现实世界而是容易为人所理解三是便于在计算机上实现。分为概念模型逻辑模型和物理模型。 其中第一类是概念模型第二类是逻辑模型和物理模型。 第一类逻辑模型也成为信息模型它是按用户的观点来对数据和信息建模主要用于数据库设计。 第二类中的逻辑模型主要包括层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型等。它是按计算机系统的观点对数据建模主要用于数据库管理系统的实现。 第二类中的物理模型是对数据最底层的抽象它描述数据在系统内部的表示方式和存取方法或在磁盘或磁带上的存储方式和存取方法是面向计算机系统的。物理模型的具体实现是数据库管理系统的任务数据库设计人员要了解和选择物理模型最终用户则不必考虑物理级的细节。 数据模型是数据库系统的核心和基础。 建立步骤为首先将现实世界抽象为信息世界然后将信息世界转换为机器世界 从现实世界到概念模型的转换是由数据库设计人员完成的从概念模型到逻辑模型的转换可以由数据库设计人员完成也可以用数据库设计工具协助设计人员完成从逻辑模型到物理模型的转换主要是由数据库管理系统完成的。 概念模型 信息世界中的基本概念 1.实体 客观存在并可相互区别的事物称为实体。 2.属性 实体所具有的某一特性称为属性。 3.码 唯一标识实体的属性集称为码。 4.实体型 用实体名及其属性名集合来抽象和刻画同类实体称为实体型。 5.实体集 同一类型实体的集合称为实体集。 6.联系 实体之间的联系通常指不同实体集之间的联系。实体之间的联系有一对一、一对多和多对多等多种类型。 概念模型的一种表示方法实体-联系方法 数据模型的组成要素 一般地讲数据模型是严格定义的一组概念的集合这些概念精确地描述了系统的静态特性、动态特性和完整性约束条件。因此数据模型通常由数据结构、数据操作和数据的完整性约束条件三部分组成。 数据结构 数据结构描述数据库的组成对象以及对象之间的联系。数据结构是所描述的对象类型的集合是对系统静态特征的描述。 数据操作 数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合包括操作及有关的操作规则。数据库主要有查询和更新(包括插入、删除、修改)两大类操作数据操作是对系统动态特征的描述。 数据的完整性约束条件 数据的完整性约束条件是一组完整性规则。完整性规则则是给定的数据模型中数据及其联系所具有的制约和依存规则用以限定符合数据模型的数据库状态以及状态的变化以保证数据的正确、有效和相容。 数据模型应该反映和规定其必须遵守的基本的和通用的完整性约束条件。 数据模型还应该提供定义完整性约束条件的机制以反映具体应用所牵涉的数据必须遵守的特定的语义约束条件。 常用的数据类型 层次模型 网状模型 关系模型 面向对象数据模型 对象关系数据模型 半结构化数据模型 其中层次模型和网状模型统称为格式化模型。 层次模型 层次模型用树形结构来表示各类实体以及实体间的联系。 1.层次模型的数据结构 在数据库中定义满足下面两个条件的基本层次联系的集合为层次模型 (1)有且只有一个节点没有双亲结点这个节点称为根节点。 (2)根以外的其他节点有且只有一个双亲节点。 每个记录类型可包含若干个字段这里记录类型描述的是实体字段描述实体的属性。各个记录类型及其字段都必须命名。各个记录类型同一记录类型中各个字段不能同名。每个记录类型可以定义一个排序字段也成为码字段如果定义该排序字段的值是唯一的则它能唯一地标识一个记录值。 一个层次模型在理论上可以包含任意有限个记录类型和字段但实际的系统都会因为存储容量或实现复杂度而限制层次模型中包含的记录类型个数和字段的个数。 在层次模型中同一双亲的子女节点称为兄弟节点没有子女节点的节点称为叶节点。 层次模型像一颗倒立的树节点的双亲是唯一的。 层次模型的一个基本特点是任何一个给定的记录值只能按其层次路径查看没有一个子女记录值能够脱离双亲记录值而独立存在。 2.层次模型的数据操纵与完整性约束 层次模型的操纵主要有查询、插入、删除和更新。进行插入、删除、更新操作时要满足层次模型的完整性约束条件进行插入操作时如果没有相应的双亲结点值就不能插入它的子女节点值进行删除操作时如果删除双亲节点值则相应的子女节点值也将被同时删除。 3.层次模型的优缺点 优点 1.层次模型的数据结构比较简单清晰。 2.层次数据库的查询效率高其性能由于关系数据库不低于网状数据库。 3.层次数据模型提供了良好的完整性支持。 缺点 1.现实世界有很多联系是非层次性的 2.如果一个节点具有多个双亲结点用层次模型表示这类关系就很笨拙只能通过引入冗余数据或创建非自然的数据结构来解决对插入和删除的限制比较多因此应用程序的编写比较复杂。 3.查询子女节点必须通过双亲节点。 4.由于结构严密层次命令趋于程序化。 网状模型 网状模型的典型代表是DETG系统亦称CODASYL系统。 1.网状模型的数据结构 在数据库中把满足以下两个条件的基本层次联系集合称为网状模型 (1)允许一个以上的节点无双亲。 (2)一个节点可以有多于一个的双亲。 网状模型是一种比层次模型更具普遍性的结构。它去掉了层次模型的两个限制允许多个节点没有双亲节点允许节点有多个双亲节点此外它还允许两个节点之间有多种联系(称之为复合联系)。因此网状模型可以更直接地去描述现实世界而层次模型实际上是网状模型的一个特例。 层次模型中子女节点与双亲节点的联系是唯一的而在网状模型中这种联系可以不唯一。 2.网状模型的数据操纵与完整性约束 网状模型一般来说没有层次模型那样严格的完整性约束条件但具体的网状数据库系统对数据操纵都加了一些限制提供了一定的完整性约束。 3.网状模型的优缺点 优点 1.能够更为直接地描述现实世界。 2.具有良好的性能存取效率高。 缺点 1.结构比较复杂而且随着应用环境的扩大数据库的结构就变得越来越复杂不利于用户最终掌握。 2.网状模型的DDLDML复杂并且要嵌入某一种高级语言中用户不易掌握不容易使用。 3.由于记录之间的联系是通过存取路径实现的应用程序在访问数据时必须选择适当的存取路径因此用户必须了解系统结构的细节加重了编写应用程序的负担。 关系模型 1.关系模型的数据结构 关系模型与以往模型不同的是它是建立在严格的数学概念的基础上的。从用户观点看关系模型由一组关系组成每个关系的数据结构只是一张规范的二维表。 **关系**一个关系对应通常说的一张表。 **元组**表中的一行即为一个元组。 **属性**表中的一列即为一个属性给每一个属性起一个名称即属性名。 **码**也成为码键表中的某个属性组它可以唯一确定一个元组。 **域**域是一组具有相同数据类型的值的集合。 **分量**元组中的一个属性值。 **关系模式**对关系的描述一般表示为 关系名(属性1,属性2,…,属性n) 2.关系模型的数组操纵与完整性约束 关系模型的数据操纵主要包括查询、插入、删除和更新数据这些操作必须满足关系的完整性约束条件。关系的完整性约束条件包括三大类实体完整性、参照完整性和用户定义的完整性。 3.关系模型的优缺点 优点 1.关系模型与格式化模型不同它是建立在严格的数学概念的基础上的。 2.关系模型的概念单一。无论是实体还是实体之间的关系都用关系来表示。对数据的检索和更新结果也是关系。所以其数据结构简单、清晰用户易懂易用。 3.关系模型的存取路径对用户透明从而具有更高的数据独立性、更好的安全保密性也简化了程序员的工作和数据库开发建立的工作。 缺点 由于存取路径对用户是隐蔽的查询效率往往不如格式化数据模型为了提高性能数据库管理系统必须对用户的查询请求进行优化因此增加了开发数据库管理系统的难度。 数据库系统的结构 从数据库应用开发人员角度看数据库系统通常采用三级模式结构这是数据库系统内部的系统结构。从数据最终用户角度看数据库系统的结构分为单用户结构、主从式结构、分布式结构、客户-服务器结构、浏览器-应用服务器/数据服务器多层结构等。这是数据库系统外部的体系结构。 数据库系统模式的概念 在数据模型中有“型”和“值”的概念。型是指对某一类数据的结构和属性的说明值是型的一个具体赋值。 模式是数据库中全体数据的逻辑结构和特征的描述它仅仅涉及型的描述不牵涉具体的值。模式的一个具体值称为模式的一个实例。同一个模式可以有很多实例。 模式是相对稳定的而实例是相对变动的。模式反映的是数据的结构及其联系而实例反映的是数据库某一时刻的状态。 数据库系统的三级模式结构 数据库系统的三级模式结构是指数据库是由外模式、模式、内模式三级构成。 模式 模式也称逻辑模式是数据库中全体数据的逻辑结构和特征的描述是所有用户的公共数据视图。它是数据库系统模式结构的中间层既不涉及数据的物理存储细节和硬件环境又与具体的应用开发工具及高级程序涉及语言无关。 模式实际上是数据库在逻辑级上的视图。一个数据库只有一个模式。数据库模式以某一种数据模型为基础同一综合地考虑了所有用户的需求并将这些需求有机地结合成一个逻辑整体。定义模式时不仅要定义数据的逻辑结构还要定义数据之间的关系。 数据库管理系统提供模式数据定义语言来严格定义模式。 外模式 外模式也称子模式或用户模式它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述是数据库用户的数据视图是与某一应用有关的数据的逻辑表示。 一个数据库可以有多个外模式同一外模式也可以为某一用户的多个应用系统所使用但是一个应用程序只能使用一个外模式。 外模式是保证数据库安全性的一个有力措施每个用户只能看见和访问所对应的外模式中的数据数据库中的其余的数据是不可见的。 数据库管理系统提供外模式数据定义语言来严格定义外模式。 内模式 内模式也称存储模式一个数据库只有一个内模式。它是数据物理结构和存储方式的描述是数据在数据库内部的组织方式。 数据库的二级映像功能与数据独立性 数据库系统的三级模式是数据的三个抽象级别它把数据的具体组织留给数据库管理系统管理使用户能逻辑地、抽象地处理数据而不必关心数据在计算机中的具体表示方式与存储方式。 外模式/模式映像 模式描述的是数据的全局逻辑结构外模式描述的是数据的局部逻辑结构。对应于同一个模式可以有任意多个外模式对于每一个外模式数据库系统都有一个外模式/模式映像它定义了该外模式与模式之间的对应关系这些映像定义通常包含在各自外模式的描述中。 当模式改变时由数据库管理员对各个外模式/模式映像作相应改变可以使外模式保持不变。应用程序是依据数据的外模式编写的从而应用程序不必修改保证了数据与程序的逻辑独立性简称数据的逻辑独立性。 模式/内模式映像 数据库中只有一个模式也只有一个内模式。内模式定义了数据全局逻辑结构与存储结构之间的对应关系。当数据的存储结构改变时由数据库管理员对模式/内模式作相应改变可以使模式保持不变从而应用程序也不必改变保证了数据与程序的物理独立性简称数据的物理独立性。 数据与程序之间的独立性使得数据的定义和描述可以从应用程序分离出去。由于数据的存取由数据库管理系统管理从而简化了应用程序的编制大大减少了应用程序的维护和修改。 数据库系统的组成 数据库系统由数据库、数据库管理系统、应用程序和数据库管理员组成下面分别介绍这几部分内容 硬件平台及数据库 1.要有足够大的内存存放操作系统、数据库管理系统的核心模块、数据缓冲区和应用程序。 2.由足够大的硬盘或磁盘阵列等设备存放数据库有足够大的磁盘(或光盘)作数据备份。 3.要求系统有较高的通道能力以提高数据传送率。 软件 1.数据库管理系统。 2.支持数据库管理系统运行的操作系统。 3.具有与数据库接口的高级语言及其编译系统便于开发应用程序。 4.以数据库管理系统为核心的应用开发工具。 5.为特定应用环境开发的数据库应用系统。 人员 数据库管理员 1.决定数据库中的信息内容和结构。 2.决定数据库的存储结构和存储策略。 3.定义数据的安全性要求和完整性约束条件。 4.检控官数据库的使用和运行。 (1)周期性转储数据库数据文件、日志文件。 (2)系统故障修复。 (3)介质故障修复。 (4)监视审计文件。 5.数据库的改建和重构、重组 (1)性能监控和调优。 (2)定期对数据库进行重组织以提高数据库的性能。 (3)需求增加和改变时数据库需重构造。 系统分析员和数据库设计人员 系统分析员 1.负责应用系统的需求分析和规范说明。 2.要和用户及数据库管理员相结合确定系统的硬件软件配置。 3.参与数据库系统的概要设计。 数据库设计人员 1.参加用户需求调查和系统分析。 2.确定数据库中的数据。 3.设计数据库各级模式。 应用程序员 1.设计和编写应用系统的程序模块。 2.进行调试和安装。 用户 这里用户指最终用户最终用户通过应用系统的用户接口使用数据库。 1.偶然用户 这类用户不经常访问数据库但每次访问数据库时往往需要不同的数据库信息这类用户一般是企业或机构的高中级管理人员。 2.简单用户 主要工作是查询和更新数据库。银行的职员航空公司的机票预定工作人员、宾馆总台服务员等。 3.复杂用户 工程师、科学家、经济学家、科学技术工作者。直接使用数据库语言访问数据库甚至能够基于数据库管理系统的应用程序接口编制自己的应用程序。 第二章 关系数据结构及其形式化定义 关系数据库系统是支持关系模型的数据库系统。按照数据模型的三个要素关系模型有关系数据结构、关系操作集合和关系完整性约束三部分组成 关系 关系模型的数据结构非常简单只包含单一的数据结构—关系。在用户看来关系模型中数据的逻辑结构是一张扁平的二维表 在关系模型中现实世界的实体以及实体间的各种联系均用单一的结构类型即关系表示 关系模型是建立在集合代数的基础之上的 域 域是一组具有相同数据类型的值的集合 笛卡尔积 定义一组域,允许其中的某些域是相同的的笛卡尔积为 其中每一个元素叫做一个元组或简称元组元组中的每一个值叫做一个分量 一个域允许的不同的取值个数称为这个域的基数 若为有限集其基数为则的基数M为 关系 定义的子集叫做在域上的关系表示为,这里R表示关系的名字n是关系的目或者度 关系中的每个元素是关系中的元组通常用t来表示 当n 1时称该关系为单元关系或一元关系 当n 2时称该关系为二元关系 关系是笛卡尔积的有限子集n木关系必有n个属性 若关系中的某一属性组的值能唯一地标识一个元组而其子集不能则称该属性组为候选码。候选码的诸属性称为主属性不包含任何候选码中的属性称为非主属性或者非码属性 在最简单的情况下候选码只包含一个属性。在最极端的情况下关系模式的所有属性是这个关系模式的候选码称为全码 一般来说的笛卡尔积是没有实际语义的只有它的某个真子集才有实际含义 关系可以有三种类型 1.基本关系(通常又称为基本表或基表) 它是实际存在的表是实际存储数据的逻辑表示 2.查询表 它是结果查询对应的表 3.视图表 它是由基本表或其他视图导出的表是虚表不对应实际存储的数据 由于笛卡尔积不满足交换律所以 当关系作为关系数据模型的数据结构时需要给予如下的限定和扩充 1.无限关系在数据库系统之中是无意义的。因此限定关系数据模型中的关系必须是有限集合 2.通过为关系的每个列附加一个属性名的方法取消关系属性的有序性 因此基本关系具有以下6条性质 1.列是同质的即每一列中的分量是同一类型的数据来自同一个域 2.不同的列可出自同一个域称其中的每一列为一个属性不同的属性要给予不同的属性名 3.列的顺序无所谓即列的次序可以任意交换 4.任意两个元组的候选码不能取相同的值 5.行的顺序无所谓即行的次序可以任意交换 6.分量必须取原子值即每一个分量都必须是不可分的数据项 关系模型要求关系必须是规范化的即要求关系必须满足一定的规范条件这些规范条件中最基本的一条就是关系的每一个分量必须是一个不可分的数据项规范化的关系简称为范式 关系模式 关系数据库中关系模式是型关系是值关系模式是对关系的描述 关系是元组的集合因此关系模式必须指出这个元组集合的结构即它由哪儿些属性构成这些属性来自哪儿些域以及属性与域之间的映像关系 如果两个元组的主码相等那么元组的其他值也一定相等因为主码唯一标识一个元组住吗相等就表示这是同一个元组 关系的描述称为关系模式可以形象化的表示为 R为关系名 U为组成该关系名的属性名的集合 D为U中属性所来自的域 DOM为属性向域的映像集合 F为属性间数据的依赖关系集合 关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的而关系是动态的、随时间不断变化的因为关系操作在不断更新着数据库中的数据 关系数据库 在关系模型中实体与实体间的联系都是可以用关系来表示的。在一个给定的应用领域中所有关系的集合构成一个关系数据库关系数据库也有型的值之分关系数据库的型称为关系模式关系数据库的值是这些关系模式在某一时刻对应的关系的集合 关系模型的存储结构 我们已经知道在关系数据模型中实体及实体间的联系都用表来表示但表是关系数据的逻辑模型。在关系数据库的物理组织中有的关系数据库管理系统中一个表对应一个操作文件将物理组织交给操作系统完成有的关系数据库管理系统从操作系统那里申请若干个大的文件自己划分文件空间组织表、索引等存储结构并进行存储管理 关系操作 基本的关系操作 关系模型中常用的关系操作包括查询操作和插入、删除、修改操作两大部分 关系的查询表达能力很强是关系操作中最主要的部分。查询操作又可以分为选择、投影、连接、除、并、差、交、笛卡尔积等其中选择、投影、并、差、笛卡尔积是5中基本操作 关系操作的特点是集合操作方式即操作对象和结果都是集合这种操作方式也成为一次一集合的方式相应地非关系数据模型的数据操作方式则为一次一记录的方式 关系数据的语言分类 关系数据语言 1.关系代数语言(ISBL) 2.关系演算语言 元组的关系演算语言(ALPHA、QUEL) 域关系演算语言(QBE) 3.具有关系代数和关系演算双重特点的语言(SQL) 早期的关系操作能力通常用代数方式或逻辑方式来表示分别称为关系代数和逻辑演算。关系代数用对关系的运算来表达查询要求关系演算则用谓词来表达查询要求。关系演算又可按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算 关系代数、元素关系演算和域关系演算均是抽象的结构化查询语言这些抽象的语言与具体的关系数据库管理系统中实现的实际语言并不完全一样。但他们能用作评估实际系统中查询语言能力的标准或基础 另外还有一种介于关系代数和关系演算之间的结构化查询语言。SQL不仅具有丰富的拆线呢功能而且具有数据定义和数据控制功能是集查询、数据定义语言、数据操纵语言和数据控制语言于一体的关系数据语言 SQL是一种高度非过程化的语言用户不必请求数据库管理员为其建立的特殊存取路径存取路径的选择由关系数据库管理系统的优化机制来完成 关系数据库管理系统中研究和开发了查询优化方法系统可以自动选择较优的存取路径提高查询效率 关系的完整性 关系模型的完整性规则是对关系的某种约束条件也就是说关系的值随着时间变化时应该满足一些约束条件。这些约束条件实际上是现实世界的要求。任何关系在任何时刻都要满足这些语义约束 关系模型有三类完整性约束实体完整性、参照完整性和用户自定义完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件被称作是关系的两个不变性用户定义的完整性是应用领域需要遵循的约束条件按体现了具体领域中的语义约束 实体完整性 若属性(指一个或一组属性)A是基本关系R的主属性则A不能取空值所谓的空值就是“不知道”或“不存在”或“无意义”的值 1.实体完整性是针对基本关系而言的 2.现实世界中的实体是可区分的即他们具有某种唯一性标识 3.相应地关系模型中以住吗作为唯一性标识 4.主码中的属性即主属性不能取空值 参照完整性 设F是基本关系R的一个或一组属性但不是关系R的码是基本关系S的主码如果F与翔对应则称F是R的外码并称基本关系R为参照关系基本关系S为被参照关系或目标关系 外码不一定要与相应的主码同名不过在实际应用中为了方便识别当外码与相应的主码属于不同关系时往往给他们取相同的名字 参照完整性规则 若属性(或属性组)F是基本关系R的外码它与基本关系S的主码相对应(基本关系R和S不一定是不同的关系)则对于R中每个元组在F上的值必须 1.或者取空值(F的每个属性值均为空值) 2.或者等于S中某个元素在主码值 用户自定义完整性 用户定义的完整性就是针对某一具体关系数据库的约束条件它反映某一具体应用所设计的数据必须满足的语义要求 关系代数 关系代数是一种抽象的查询语言它用对关系的运算来表达查询 关系代数常用的运算符包含两大类集合运算符和专门的关系运算符 运算符含义集合运算符∪并-差∩交×笛卡尔积专门的关系运算符σ选择π投影⋈连接÷除 传统的集合运算 传统的集合运算是二目运算包括并、差、交、笛卡尔积4种运算 设关系R和关系S具有相同的目n(即两个关系都有n个属性)且相应的属性取自同一个域t是元组变量t∈R表示t是R的一个元组 1.并 2.差 3.交 4.笛卡尔积 专门的关系运算 专门的关系运算包括选择、投影、链接、除运算等 选择 选择又称为限制它是在关系R种选择满足给定条件的诸元组是从行的角度进行的运算 投影 关系R上的投影是从R种选择出若干属性列组成新的关系是从列的角度进行的运算 投影之后不仅取消了原属性种的某些列而且还可能取消某些元组因为取消了某些属性列之后就可能出现重复行应取消这些完全相同的行 连接 连接是从两个关系的笛卡尔积种选取属性间满足一定条件的元组 连接运算中有两种最为重要也最为常用的连接一种是等值连接另一种是自然连接 等值连接是从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组 自然连接是一种特殊的等值连接它要求两个关系中进行比较的分量必须是同名的属性组并且在结果中八重复的属性列去掉 一般的连接操作是从行的角度进行运算但自然连接还需要取消重复列 两个关系R和S在做自然连接时选择两个关系在公共属性上值相等的元组构成新的关系。此时关系R中某些元组有可能在S中不存在公共属性上值相等的元组从而造成R中这些元组在操作时被舍弃的同样S中某些元组也可能被舍弃。这些被舍弃的元组称为悬浮元组 如果把悬浮元组也保存在结果关系中而在其他属性上填空值那么这种连接就叫做外连接如果只保留左边关系R中的悬浮元组就叫做左外连接如果只保留右边关系S中的悬浮元组就叫做右外连接 除运算 设关系R除以关系S的结果为T则T包含所有在R但不再S中的属性及其值且T的元组与S的元组的所有组合都在R中 除操作是从行和列的角度进行计算 关系代数中这些运算经有限次复合形成的表达式称为关系表达式关系代数表达式 第三章 结构化查询语言是关系数据库的标准语言也是一个通用的、功能极强的关系数据库语言。其功能不仅仅是查询而是包括数据库模式创建、数据库数据的插入与修改、数据库安全性完整性定义与控制等一系列功能。 SQL概述 SQL的产生与发展 目前没有一个数据库系统能够支持SQL标准的所有概念和特性。同时许多软件厂商对SQL的基本命令集还进行了不同程度的扩充和修改又可以支持标准以外的一些功能特性。 SQL的特点 SQL集数据查询、数据操纵、数据定义和数据控制功能与一体主要包括以下几个部分 综合统一 1.模式数据定义语言 2.外模式数据定义语言 3.数据存储有关的描述语言 4.数据操纵语言 高度非过程化 用SQL进行数据操作是只要提出“做什么”而无需指出“怎么做”因此无需了解存取路径。存取路径的选择以及SQL的操作过程由系统自动完成。大大减轻了用户负担有利于提高数据独立性。 面向集合的操作方式 以同一种语法结构提供多种使用方式 语言简洁、易学易用 SQL的基本概念 支持SQL的关系数据库管理系统同样支持关系数据库三级模式结构。 用户可以用SQL对基本表和视图进行查询或其他操作基本表和视图一样都是关系。 基本表是本身独立存在的表在关系数据库管理系统中一个关系就对应一个基本表一个或多个基本表对应一个存储文件一个表可以带若干索引索引也存放在存储文件中。 存储文件的逻辑结构组成了关系数据可以的内模式。存储文件的物理结构对最终用户是隐蔽的。 视图是从一个或几个基本表导出的表。它本身不独立存储在数据库中即数据库中只存放视图的定义而不存放视图对应的数据。这些数据仍存放在导出视图的基本表中因此视图是一个虚表。 学生-课程数据库 Student 学号 Sno姓名 Sname性别 Sex年龄 Sage所在系 Sdept202115121李勇男20CS202115122刘晨女19CS202115123王敏女18MA202115125张立男19IS Course 课程号 Cno课程名 Cname先行课 Cpno学分 Ccredit1数据库542数学23信息系统444操作系统635数据结构746数据处理27PASCAL语言64 SC 学号 Sno课程号 Cno成绩 Grade201215121192201215121285201215121388201215122290201215122380 数据定义 关系数据库系统支持三级模式结构其模式、外模式和内模式中的基本对象有模式、表、视图和索引等。 操作对象操作方式创建删除修改模式CREATE SCHEMADROP SCHEMA表CREATE TABLEDROP TABLEALTER TABLE视图CREATE VIEWDROP VIEW索引CREATE INDEXDROP INDEXALTER INDEX 一个关系数据库管理系统的实例中可以建立多个数据库一个数据库中可以建立多个模式一个默模式下通常包括多个表、视图和索引等数据库对象。 模式的定义与删除 定义模式 CREATE SCHEMA 模式名 AUTHORIZATION 用户名如果没有指定模式名那么模式名隐含为用户名 要创建模式调用该命令的用户必须拥有数据库管理员权限或者获得了数据库管理员授予的CREATE SCHEMA的权限。 定义模式实际上定义了一个命名空间在这个空间中可以进一步定义该模式包含的数据库对象例如基本表、视图、索引等。 目前在CREATE SCHEMA中可以接受CREATE TABLECREATE VIEW和GRANT子句也就是说用户可以在创建模式的同时在这个模式定义中进一步创建基本表、视图定义授权。 CREATE SCHEMA 模式名 AUTHORIZATION 用户名 [表定义子句|视图定义子句|授权定义子句]删除模式 DROP SCHEMA 模式名[CASCADE|RESTRICT] 其中CASCADE和RESTRICT两者必选起义选择CASCADE(级联)表示在删除模式的同时把该模式中所有的数据库对象全部删除选择RESTRICT(限制)表示如果该模式中已经定义了下属的数据库对象(如表、视图等)则拒绝该删除语句的执行。只有当该模式中没有任何下属对象时才能执行DROP SCHEMA语句 基本表的定义、删除与修改 定义基本表 CREATE TABLE 表名 (列名数据类型[列级完整性约束条件],[,列名数据类型[列级完整性约束条件]],...[,表级完整性约束条件])建表的同时通常还可以定义与该表有关的完整性约束条件这些完整性约束条件被存入系统的数据字典中当用户操作表中数据时由关系数据库管理系统自动检查该操作是否违背这些完整性约束条件。如果完整性约束条件设计该表的多个属性列则必须定义在表级上否则既可以定义在列级也可以定义在表级。 参照表和被参照表可以是同一个表 数据类型 数据类型含义CHAR(n),CHARACTER(n)长度为n的定长字符串VARCHAR(n),CHARACTERVARYING(n)最大长度为n的变长字符串CLOB字符串大对象BLOL二进制大对象INT,INTEGER长整数(4字节)SMALLINT短整数(2字节)BIGINT大整数(8字节)NUMERIC(p,d)定点数由p位数字(不包括符号、小数点)组成小数点后面有d位数字DECIMAL(p,d),DEC(p,d)同NUMERICREAL取决于机器精度的单精度浮点数DOUBLE PRECITION取决于机器精度的双精度浮点数FLOAT(n)可选精度的浮点数精度至少为n位数字BOOLEAN逻辑布尔量DATE日期包含年、月、日格式为YYYY-MM-DDTIME时间包含一日的时、分、秒格式为HH:MM:SSTIMESTAMP时间戳类型INTERVAL时间间隔类型 模式与表 每一个基本表都属于某一个模式一个模式包含多个基本表。定义基本表时一般可以有三种方法定义它所属的模式 1.在表名中明显地给出模式名 CREATE TABLE S-T.Student(...);/*Student所属的模式是S-T*/2.在创建模式语句中同时创建表 3.设置所属的模式这样在创建表时不必给出模式名 当用户创建基本表(其他数据库对象也一样)时若没有指定模式系统根据搜索路径来确定该对象所属的模式搜索路径包含一组模式列表关系数据库管理系统会使用模式列表中第一个存在的模式作为数据库对象的模式名。若搜索路径中的模式名都不存在系统将给出错误。 修改基本表 ALTER TABLE 表名 [ADD [COLUMN] 新列名数据类型[完整性约束]] [ADD 表级完整性约束] [DROP [COLUMN] 列名 [CASCADE|RESTRICT]] [DROP CONSTRAINT 完整性约束名 [CASCADE|RESTRICT]] [ALTER COLUMN 列名数据类型];删除基本表 DROP TABLE [CASCADE|RESTRICT];若选择RESTRICT则该表的删除是有限制条件的。欲删除的基本表不能被其他表的约束所引用(如CHECK、FOREIGN KEY等约束)不能有视图不能由触发器不能有存储过程或函数等。如果存在这些依赖该表的对象则此表不能被删除。 若选择CASCADE则该表的删除没有限制条件在删除基本表的同时相关的依赖对象例如视图都将被一起删除。 索引的建立和删除 顺序文件上的索引是针对按指定属性值升序或降序的存储关系在该属性上建立一个顺序索引文件索引文件由属性值和相应的元组指针组成。 B树索引是将索引属性组织成B树形式B树的叶节点为属性值和相应的元素指针。B树索引具有动态平衡的优点。 散列索引是建立若干个桶将索引属性按照其散列函数映射到相应的桶中同种存放索引属性值和相应的元素指针。散列索引具有查找速度快的特点。 位图索引是用位向量记录索引属性中可能出现的值每个位向量对应一个可能值。 索引虽然能够加速数据库的查询但需要占用一定的存储空间当基本表更新时索引要进行相应的维护这些都会增加数据库的负担因此要根据实际应用的需要有选择的创建索引。 一般说来建立与删除索引由数据库管理员或者表的属主负责完成。关系数据库管理系统在执行查询时会自动选择合适的索引作为存储路径用户不必也不能显式地选择索引。索引时关系数据库管理系统的内部实现技术属于内模式的范畴。 建立索引 CREATE [UNIQUE][CLUSTER] INDEX 索引名表名是要建索引的基本表的名字。索引可以建立在该表的一列或多列上各列之间用逗号分隔。每个列名后面还可以用次序指定索引值的排列次序可选ASC或者DESC默认为ASC。 UNQIUE表明此索引的每一个索引值只对应唯一的数据记录。 CLUSTER表示要建立的索引是聚簇索引。 修改索引 ALTER INDEX 旧索引名 RENAME TO 新索引名删除索引 DROP INDEX 索引名数据字典 数据字典是关系数据库管理系统内部的一组系统表它记录了数据库中所有的定义信息包括关系模式定义、视图定义、索引定义、完整性约束定义、各类用户对数据库的操作权限、统计信息等。关系数据库管理系统在执行SQL的数据定义语句时实际上就是在更新数据字典表中的相应信息。在查询优化和查询处理时数据字典中的信息是其重要依据。 数据查询 SELECT [ALL|DISTINCT] 目标列表达式 [,目标列表达式]... FROM 表名或视图名 [,表名或视图名]|(SELECT语句)[AS]别名 [WHERE 条件表达式] [GROUP BY列名1[HAVING 条件表达式]] [GROUP BY列名2[ASC|DESC]]如果GROUP BY子句带HAVING语句则只有满足指定条件的组才予以输出。 如果有ORDERED BY子句则结果表还要按列名2的值进行升序或者降序排序 单表查询 单表查询是指仅涉及一个表的查询。 查询表中的若干列 1.查询指定列 2.查询全部列(目标列表达式为*或者全部列名) 3.查询经过计算的值(目标列表达式也可以是算术表达式、字符串常量、函数等) 选择表中的若干元组 1.消除取值重复的行(DISTINCT) 2.查询满足条件的元组 查询条件谓词比较、、、、、!、、!、!;NOT加上述比较运算符确定范围BETWEEN AND、NOT BETWEEN AND确定集合IN、NOT IN字符匹配LIKE、NOT、LIKE空值IS NULL、NOT NULL多重条件(逻辑运算)AND、OR、NOT BETWEEN后面是范围的下限AND后是范围的上限 字符串的匹配 [NOT] LIKE 匹配串 [ESCAPE 换码字符] 其含义是查找指定的属性列值与匹配串相匹配的元组。匹配串可以是一个完整的字符串也可以含有通配符%和_%代表任意长度(长度可以为0的字符串)的字符串例如a%b表示以a开头b结尾的任意长度的字符串。_表示任意单个字符。 OEDERED BY子句 用户可以用OEDERED BY子句对查询结果按照一个或者多个属性列的升序(ASC)或降序(DESC)排列默认值为升序。 对于空值排序时显示的次序由具体系统实现来决定。例如按升序排序含空值的元组最后显示;按降序排空值的元组则最先显示。 聚集函数 COUNT(*) COUNT([DISTINCT|ALL] 列名) SUM([DISTINCT|ALL] 列名) AVG([DISTINCT|ALL] 列名) MAX([DISTINCT|ALL] 列名) MIN([DISTINCT|ALL] 列名)如果指定DISTINCT短语则表示在计算时要取消指定列中的重复值。如果不指定DISTINCT短语或指定ALL短语(ALL为默认值)则表示不取消重复列。 当聚集函数遇到空值时除COUNT(*)外都要跳过空值只处理非空值。 聚集函数只能用于SELECT子句和GROUP BY中的HAVING子句。 GROUP BY子句 将查询结果按某一列或多列的值分组值相等的为一组。分组后聚集函数将作用于每一个组即每一组都有一个函数值。 WHERE子句与HAVING短语的区别在于作用对象不同。WHERE子句作用于基本表或视图从中选择满足条件的元组。HAVING短语作用于组从中选择满足条件的组。 连接查询 若一个查询同时涉及两个以上的表则称之为连接查询。 等值于非等值连接查询 连接查询的WHERE子句中用来连接两个表的条件称为连接条件或连接谓词当连接条件为时为等值连接否则为非等值连接。连接谓词中的列名为连接字段连接条件中的各连接字段类型必须是可比的但名字不必相同。 若在等值连接中把目标列中重复的属性去掉则为自然连接。 自身链接 连接操作不仅可以在两个表之间进行也可以是一个表与其自己进行连接称为表的自身链接。 外连接 左外连接列出左边关系中所有的元组右外连接列出右边关系中所有的元组。 多表连接 连接操作除了可以是两表连接、一个表与其自身连接还可以是两个以上的表进行连接后者称为多表连接。 嵌套查询 在SQL语言中一个SELECT-FROM-WHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块的WHERE子句或者HAVING短语的条件中的查询称为嵌套查询。 上层的查询块称为外查询或父查询下层的查询块称为内层查询或者子查询。 子查询的SELECT语句中不能使用ORDERED BY子句ORDERED BY子句只能对最终查询结果排序。 嵌套查询使用户可以用多个简单查询构成复杂的查询从而增强SQL的查询能力以层层嵌套的方式来构造程序正式SQL中结构化的含义所在。 带有IN谓词的子查询 子查询的查询条件依赖于父查询称为相关子查询子查询的查询条件不依赖于父查询称为不相关子查询整个查询语句称为相关嵌套查询语句。 有些嵌套查询可以用连接运算代替有些是不能代替的。 带有比较运算符的子查询 带有比较运算符的子查询是指父查询于子查询之间用比较运算符进行连接。当用户能确切知道内层查询返回的是单个值时可以用、、、、、!或等比较运算符。 带有ANY(SOME)或ALL谓词的子查询 ANY大于子查询结果中的某个值ALL大于子查询结果中的所有值ANY小于子查询结果中的某个值ALL小于子查询结果中的所有值ANY大于等于子查询结果中的某个值ALL大于等于子查询结果中的所有值ANY小于等于子查询结果中的某个值ALL小于等于子查询结果中的所有值ANY等于子查询结果中的某个值ALL等于子查询结果中的所有值!(或)ANY不等于子查询结果中的某个值!(或)ALL不等于子查询结果中的所有值 事实上用聚集函数实现子查询通常比直接用ANY或ALL查询效率要高。ANY等价于INANY等价于MAXALL等价于NOT INALL等价于MIN。 带有EXISTS谓词的子查询 EXISTS代表存在量词∃。带有EXISTS谓词的子查询不返回任何数据只产生逻辑真值“true”或逻辑假值“false”。 一些带EXISTS或NOT EXISTS谓词的子查询不能被其他形式的子查询等价替换但所有带IN谓词、比较运算符、ANY和ALL谓词的子查询都能用带EXISTS谓词的子查询等价替换。 集合查询 集合操作主要包括并操作UNION、交操作INTERSECT和差操作EXCEPT。注意参加集合操作的各查询结果的列数必须相同对应项的数据类型也必须相同。 使用UNION将多个查询结果合并起来时系统会自动去掉重复元组如果要保留重复元组则用UNION ALL操作。 基于派生表的查询 子查询不仅可以出现在WHERE子句中还可以出现在FROM子句中这时子查询生成的临时派生表称为主查询的查询对象。 需要说明的是通过FROM子句生成派生表时AS关键字可以省略但必须为派生关系指定一个别名。而对于基本表别名是可选择项。 SELECT语句的一般格式 SELECT [ALL|DISTINCT] 目标列表达式 [,目标列表达式]... FROM 表名或视图名 [,表名或视图名]|(SELECT语句)[AS]别名 [WHERE 条件表达式] [GROUP BY列名1[HAVING 条件表达式]] [GROUP BY列名2[ASC|DESC]]目标列表达式的可选格式 1.* 2.表命.* 3.COUNT([DISTINCT|ALL] * ) 4.[表名.]属性列名表达式[,[表名.]属性列名表达式]...其中属性名表达式可以是由属性列、作用于属性列的聚集函数和常量的任意算数运算(,-,*,/)组成的运算公式。 聚集函数的一般格式 COUNT [DISTINCT|ALL] 列名 SUM [DISTINCT|ALL] 列名 AVG [DISTINCT|ALL] 列名 MAX [DISTINCT|ALL] 列名 MIN [DISTINCT|ALL] 列名WHERE子句的条件表达式的可选格式 1.属性列名θ属性列名属性列名θ常量属性列名θ[ANY|ALL](SELECT语句)2.属性列名 [NOT] BETWEEN 属性列名 AND 属性列名属性列名 [NOT] BETWEEN 常量 AND 常量属性列名 [NOT] BETWEEN (SELECT语句) AND (SELECT语句)3.属性列名 [NOT] IN (值1,[,值2]...)属性列名 [NOT] IN (SELECT语句)4.属性列名 [NOT] LIKE 字符串5.属性列名 IS [NOT] NULL 6.[NOT] EXISTS (SELECT语句)7.条件表达式 AND 条件表达式 AND 条件表达式...条件表达式 OR 条件表达式 OR 条件表达式...数据更新 插入数据 1.插入元组 INSERT INTO 表名 [(属性列1 [,属性列2]...)] VALUES(常量1 [,常量2]...);INTO子句中没有出现的属性列心猿族在这些列上将取空值。但必须注意的是在表定义时说明了NOT NULL的属性列不能取空值否则会出错。 如果INTO子句中没有指明任何属性列名则新插入的元组必须在每个属性列上均有值。 字符串常熟 要用单引号(英文符号)括起来。 2.插入子查询结果 INSERT INTO 表名 [(属性列1 [,属性列2...]) 子查询;修改数据 UPDATE 表名 SET 列名表达式 [,列名表达式]... [WHERE条件];1.修改某一个元组的值 2.修改多个元组的值 3.带子查询的修改语句 删除数据 DELETE FROM 表名 [WHERE 条件];1.删除某一个元组的值 2.删除多个元组的值 3.带子查询的删除语句 空值的处理 所谓空值就是“不知道”或“不存在”或“无意义”的值。 1.空值的产生 外连接也会产生空值空值的关系运算也会产生空值。 2.空值的判断 用IS NULL和IS NOT NULL来表示。 3.空值的约束条件 属性定义(或者域定义)中有NOT NULL约束条件的不能取空值加了UNIQUE限制的属性不能取空值。 4.空值的算数运算、比较运算和逻辑运算 xyx AND yx OR yNOT xTTTTFTUUTFTFFTFUTUTUUUUUUUFFUUFTFTTFUFUTFFFFT 视图 视图是从一个或几个基本表(或视图)导出的表。它与基本表不同是一个虚表。数据库中只存放视图的定义而不存放视图对应的数据这些数据仍存放在原来的基本表中。所以一旦基本表中的数据发生变化从视图中查询出的数据也就随之改变了。从这个意义上讲视图就像一个窗口透过它可以看到数据库中自己感兴趣的数据及其变化。 视图一经定义就和基本表一样被查询、被删除。也可以在一个视图之上再定义新的视图但对视图的更新(增、删、改)操作则有一定的限制。 定义视图 建立视图 CTRATE VIEW 视图名 [(列名 [,列名])] AS 子查询 [WITH CHECK OPTION]; WITH CHECK OPTION表示对视图进行UPDATE、INSERT和DELETE操作时要保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)。 组成视图的属性列名或者全部省略或者全部指定没有第三种选择。如果省略了视图的各个属性名则隐含该视图由子查询中SELECT子句目标列中的诸字段组成但在下列三种情况下必须明确指定组成视图的所有列名 1.某个目标列不是单纯的属性名而是聚集函数或列表达式 2.多表连接是选出了几个同名列作为视图的字段 3.需要在视图中为某个列启用新的更合适的名字 关系数据库管理系统执行CREATE VIEW语句的结果只是把视图的定义存入数据字典并不执行其中的SELECT语句只是在对视图查询时才按视图的定义从基本表中将数据查出。 若一个视图是从单个基本表导出的并且只是去掉了基本表的某些行和列且保留了主码则称这类视图为行列子集视图。 视图不仅可以建立在单个基本表上也可以建立在多个基本表上。 视图不仅可以建在一个或多个基本表上也可以建立在一个或多个已经定义好的视图上或建立在基本表与视图上。 定义基本表时为了减少数据库中的冗余数据表中只存放基本数据由基本数据通过各种计算派生出的数据一般是不存储的。带虚拟列的视图也称为带表达式的视图。 带有聚集函数和GROUP BY子句的查询来定义视图这种视图称为分组视图。 修改视图的方式为为了避免映像关系被破坏最好在修改基本表之后删除由该基本表导出的视图然后重建这个视图。 删除视图 DROP VIEW 视图名 [CASCADE];视图删除后视图的定义将从数据字典中删除。如果该视图上还导出了其他视图则使用CASCADE级联删除语句把该视图和由它导出的所有视图一起删除了。 基本表删除后由该基本表导出的所有视图均无法使用了但是视图的定义没有从字典中清除删除这些视图定义需要显式地使用DROP VIEW语句。 查询视图 关系数据库管理系统执行对视图的查询时首先进行有效性检查检查查询中涉及的表、视图等是否存在。如果存在则总数据字典中取出视图的定义把定义中的子查询 和用户的查询结合起来转换称等价的对基本表的查询然后再执行修正了的查询。这一转换过程称为视图消解。 在一般情况下视图查询的转换是直截了当的。但有些情况下这种转换不能直接进行查询时会出现问题例如WHERE子句中是不能用聚集函数作为条件表达式的此种无法转换。 目前多数关系数据库系统对行列子集视图的查询均能进行正确转换但对非行列子集视图的查询就不一定能做转换了。 但定义视图并查询视图与基于派生表的查询是有区别的。视图一旦定义其定义将永久保存在数据字典中之后的所有查询都可以直接引用该视图。而派生表只是在语句执行时临时定义语句执行后该定义即被删除。 更新视图 更新视图是指通过视图来插入、删除和修改数据。 由于视图是不实际存储数据的虚表因此对视图的更新最终要转换为对基本表的更新。像查询视图那样对视图的更新操作也是通过视图消解转换为对基本表的更新操作。 为防止用户通过视图对数据进行增加、删除、修改时有意无意的对不属于视图范围内的基本表数据进行操作可在定义视图时加上WITH CHEKC OPTION子句。这样在视图上增、删、改数据时关系数据库管理系统会检查视图定义中的条件若不能满足条件则拒绝执行该操作。 在关系数据库中并不是所有的视图都是可更新的因为有些视图的更新不能唯一地有意义地转换成对相应基本表的更新。 一般地行列子集视图是可更新的。除行列子集视图外有些视图理论上是可更新的但它们的确切特征还是尚待研究的课题还有些视图从理论上就是不可更新的。 目前各个关系数据库管理系统一般都只允许对行列子集视图进行更新而且各个系统对视图的更新还有更进一步的规定。 应该指出的是不可更新的视图与不允许更新的视图是两个不同的概念。前者指理论上已经证明其是不可更新的视图后者指实际系统中不支持其更新但它本身可能是可更新的视图。 视图的作用 1.视图能够简化用户的操作 2.视图时用户能以多种角度看待统一数据 3.视图对重构数据库提供了一定程度的逻辑独立性 4.视图能够对机密数据提供安全保护 5.适当利用视图可以更清晰的表达查询
http://www.hkea.cn/news/14554397/

相关文章:

  • 厦门电子商务网站建设安徽六安怎么读
  • 网站建设 建站知识网页设计与制作实践
  • 宁波网站建设开发公司wordpress便宜的付费主题
  • 泰安网站建设优化一个网站的tdk是指网站的
  • 手机网站怎么提高关键词网站外链建设可以提升网站权重对还是错
  • 商业网站开发教程济南网站建设公司有哪些
  • 做雇主品牌的网站网页设计工作室长沙
  • 广东省城乡建设厅投诉网站电商小程序模板
  • 两个人做类似的梦 网站做商城网站的风险
  • 做网站怎么建立文件夹网络科技公司
  • 深圳网站建设大全临沂网站制作培训
  • 网站内容及功能模块设计实木餐桌椅网站建设公司
  • 17网站一起做网店广州网站ip如何做跳转
  • 做网站接私单化妆品营销型网站模板下载
  • 北京 网站建设公司企业网站建设 深圳
  • 分类网站模板品牌网站的目的
  • 从零开始做网站seo网站开发实训设计报告
  • 请专业公司做个网站要花多少钱网站开发合同是否是技术合同
  • 商城网站主机网站打开wordpress
  • 镇江公司做网站安徽建设工程信息网官网入口
  • 深圳网站建设公司地图网站建设邮箱免费自助建站
  • 长春电商网站建设公司关于做数学 平方差公式的网站
  • 深圳网站建设价格多少钱百度手机导航官方新版
  • 长春火车站位置网站后台忘记密码
  • 专业制作网站公司吗学做ppt的网站有哪些内容
  • 设计类投稿网站网站开发做什么
  • 一个虚拟主机可以做几个网站网站开发设计方案书
  • 成都建设银行合作装修网站苏州建站网站
  • 成都网站搜索优化圣弘建设股份有限公司网站
  • 网站空间费价格缠绕机东莞网站建设技术支持