版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章数据库技术概述了解数据库发展趋势了解数据库技术发展历程了解国产数据库的发展历程学习目标1.1数据库技术发展历程1.网络数据库模型阶段120世纪60年代末至70年代初,数据库系统起步阶段。由于随着计算机科学和信息技术的发展,人们开始意识到需要一种更有效地组织和管理数据的方法,数据库概念应运而生。为了解决数据组织和存储的问题,尝试寻找一种更有效的方式来管理大量数据。在这个阶段,主要采用的是网络数据库模型,数据以有向图的形式组织,代表性的数据库系统有CODASYL数据库管理系统。1.1数据库技术发展历程2.关系数据库模型阶段170年代初至90年代初,对于数据的组织和管理需要更为灵活和高效的解决方案,关系数据库模型提供了更符合实际需求的数据组织方式。解决了当下数据之间的关联和查询的问题,提供了更直观、规范的数据组织方式,并引入了关系代数和关系演算等理论。其代表性数据库系统包括Oracle、IBMDb2和MicrosoftSQLServer等关系数据库管理系统,关系数据库模型成为主流。1.1数据库技术发展历程3.商业化数据库系统阶段170年代中期至今,商业化数据库系统开始崭露头角。由于企业对于数据安全、稳定性和性能提出了更高要求,需要专业化、商业化的数据库系统来满足需求。为了解决企业级数据管理的问题,商业化数据库系统提供了更强大和稳定的数据管理解决方案。其中Oracle、IBM、Microsoft等公司推出了各自的商业化RDBMS产品,这些系统为企业提供了强大的数据管理解决方案。1.1数据库技术发展历程4.开源数据库系统阶段190年代末至今,开源文化的兴起以及对于成本的考量,促使开源数据库系统逐渐受到关注和应用。该阶段为了解决经济实惠的数据管理解决方案,为许多初创企业和项目提供了可行的数据管理选项。其中具有代表性数据库系统包括MySQL、PostgreSQL等开源数据库系统,为许多企业和项目提供了经济实惠的数据管理解决方案。1.1数据库技术发展历程5.NoSQL数据库阶段12000年代后期至今,随着大数据和分布式系统的兴起,传统关系数据库在处理大规模、高并发数据时遇到了挑战,需要更加灵活的数据存储方式。该阶段解决的是非结构化或半结构化数据的管理问题,为大规模、高并发数据场景提供了更灵活的数据存储选择。其中具有代表性数据库系统包括MongoDB、Cassandra等NoSQL数据库系统,采用文档型、列型、键值型等非关系型数据存储方式。1.1数据库技术发展历程6.NewSQL数据库阶段1近年来,由于传统关系数据库在大规模、高并发场景下的局限性,需要兼顾传统关系数据库的事务特性和NoSQL数据库的分布式特性。这个阶段需要解决的是传统关系数据库在大规模、高并发场景下的性能和扩展性问题。其中具有代表性数据库系统包括Spanner、CockroachDB等NewSQL数据库系统,试图兼顾传统关系数据库的事务特性和NoSQL数据库的分布式特性。1.1数据库技术发展历程赛迪顾问《核心数据库升级选型参考》列出中国市场数据库品牌与占有率1.2国产数据库的发展历程国产数据库的前世今生11.初期阶段在上世纪80年代末和90年代初,中国开始引进和研发数据库技术,希望借鉴国外先进经验,并满足快速发展的信息化需求。初期阶段主要解决数据库技术的引入和学习问题,提高数据管理和处理效率。有部分国际数据库系统开始在中国使用和研究,为后续自主研发奠定了基础。2.自主研发阶段随着中国信息技术产业的兴起,国内市场对数据库系统的需求逐渐增加,需要自主研发满足国内需求的数据库产品,提供本土化的技术支持和服务。在这一阶段,诸如达梦数据库、神通数据库等国产数据库产品相继问世,并在国内市场取得一定影响力。1.2国产数据库的发展历程国产数据库的前世今生13.开源数据库兴起在21世纪初,开源文化的影响和国内开源软件的兴起,促使国内开始关注开源数据库系统的研发和应用。对此提供开源的数据库系统,降低成本,增加灵活性,并促进开源社区的合作与创新。其中华为的OceanBase等开源数据库系统逐渐崭露头角,为中国开源数据库的发展奠定了基础。1.2国产数据库的发展历程国产数据库的前世今生14.创新发展阶段近年来,随着中国信息技术产业的快速发展和创新能力的提升,国产数据库系统开始注重技术突破和创新,以应对更复杂的应用场景需求。为此提高了数据库系统的性能、安全性和可靠性,适应大规模数据处理和云计算等新兴领域的需求。因此一些国产数据库系统在性能、安全性和可靠性方面取得了显著突破,如阿里巴巴的PolarDB等。1.2国产数据库的发展历程国产数据库的前世今生15.国际化竞争阶段部分中国国产数据库系统开始走向国际舞台,与国际知名数据库系统展开竞争,这是中国数据库技术发展的一个重要里程碑。为了提高国产数据库系统的国际竞争力,适应全球化的市场需求,并推动国内数据库技术的进一步创新和发展。中国国产数据库系统在国际市场上取得了一定的成绩,展示了中国在数据库技术领域的实力和潜力。1.2国产数据库的发展历程国产数据库的前世今生11.2国产数据库的发展历程1.2国产数据库的发展历程国产数据库产品特点及应用21.云数据库阿里云的RDS(关系型数据库服务)、腾讯云的CDB(云数据库MySQL版)等云数据库产品被广泛用于互联网应用、电子商务平台、企业信息化系统等场景,例如像淘宝、京东这样的电子商务平台。1.2国产数据库的发展历程国产数据库产品特点及应用22.分布式数据库华为的PolarDB、PingCAP的TiDB等分布式数据库产品在大数据处理、高并发应用、物联网等领域得到广泛应用。智能城市项目中,需要处理大量的传感器数据和设备状态信息,分布式数据库可以提供高可用性和横向扩展的能力。1.2国产数据库的发展历程国产数据库产品特点及应用23.内存数据库达梦数据库、南大通用数据库等公司开发的内存数据库产品在金融交易系统、实时数据分析等场景中应用广泛,例如,在证券交易所和银行的交易系统中,使用内存数据库可以实现高速的交易处理和实时的风险控制。1.2国产数据库的发展历程国产数据库产品特点及应用24.图数据库图灵数据库、咚咚云图数据库等产品用于社交网络分析、推荐系统、知识图谱构建等领域。例如,利用图数据库进行社交网络的关系分析,推荐系统的构建,以及研究用户行为模式等方面。1.2国产数据库的发展历程国产数据库产品特点及应用25.NoSQL数据库华为的HBase、阿里巴巴的TableStore等NoSQL数据库产品用于大规模数据存储、实时数据处理等场景。例如,通过NoSQL数据库进行大规模数据的存储和实时分析,支持企业的决策制定和业务发展。1.2国产数据库的发展历程1.2国产数据库的发展历程1.2国产数据库的发展历程1.2国产数据库的发展历程1.2国产数据库的发展历程1.2国产数据库的发展历程1.2国产数据库的发展历程1.2国产数据库的发展历程1.2国产数据库的发展历程达梦数据库产品介绍3达梦数据库管理系统的最新版本是8.0版本,简称DM8。DM8采用全新的体系架构,在保证大型通用的基础上,针对可靠性、高性能、海量数据处理和安全性做了大量的研发和改进工作,极大提升了达梦数据库产品的性能、可靠性、可扩展性,能同时兼顾OLTP和OLAP请求,从根本上提升了DM8产品的品质。1.2国产数据库的发展历程1.2国产数据库的发展历程调查报告数据显示,达梦数据库是企业使用率第一的中国数据库1.2国产数据库的发展历程93.9%的企业计划使用中国数据库,达梦成为企业未来最想使用的中国数据库云数据库及空间地理数据库11.云数据库数据库一直是应用开发中非常重要的一部分。从MySQL到亚马逊的RDS(关系型数据库服务,RelationalDatabaseService),业界有很多数据库系统供开发者存储、查询和管理数据。随着海量计算的持续发展,给传统数据库带来了不少挑战,一方面是传统数据库不能满足互联网企业新需求,另一方面是传统数据库不能适应云计算技术新需求,云数据库的诞生为用户需求提供了更好的解决方案。1.3数据库发展趋势1.3数据库发展趋势云数据库结构示意图云数据库及空间地理数据库12.地理空间数据库空间数据(spatialdata)指带有空间坐标的数据,地理空间数据是空间数据的一种特殊类型,指带有地理坐标的数据,是地理实体的空间特征和属性特征的数字描述。地理空间数据库用于管理地理数据,包括地图、地理坐标、地形、地貌、气候、土地利用等,是一种专门用于存储、查询和分析地理空间数据的数据库系统。1.3数据库发展趋势数据仓库与联机分析处理技术2数据仓库(DataWarehouse)是一个用于集成、存储和管理企业各种数据的中心化存储系统,旨在支持企业的决策支持系统(DSS)、联机分析处理(On-LineAnalyticalProcessing,OLAP)以及数据挖掘等应用。与传统的数据库系统不同,数据仓库专注于将来自多个源头的数据集成到一个统一的数据模型中,以支持复杂的查询和分析。OLAP是基于数据仓库进行数据分析的一种技术,通过对多维信息以很多种可能的观察方式进行快速、稳定一致和交互性的存取,允许管理决策人对数据进行深入观察。1.3数据库发展趋势数据挖掘技术3数据挖掘是一种从大规模数据集中发现模式、关系、趋势和规律的过程。通过应用统计学、机器学习、人工智能和数据库系统等技术,数据挖掘可以帮助用户从海量数据中提取有价值的信息,并进行预测、分类、聚类、关联分析等任务。鉴于数据仓储技术的发展和大数据的增长,数据挖掘技术的采用在过去几十年中迅速加快,它通过将原始数据转化为有用的知识来助力公司发展。1.3数据库发展趋势数据挖掘技术31.关联规则关联规则是一种基于规则的方法,用于发现给定数据集中各变量之间的关系。这些方法常用于市场购物篮分析,使企业能够更好地了解不同产品之间的关系。了解顾客的消费习惯有助于企业制定更好的交叉销售策略,开发更出色的推荐引擎。1.3数据库发展趋势数据挖掘技术32.神经网络神经网络主要用于深度学习算法,通过节点层模拟人脑的互联性来处理训练数据。每个节点由输入、权重、偏差(或阈值)和输出组成。如果该输出值超过给定的阈值,它会“触发”或激活节点,并将数据传递到网络中的下一层。神经网络通过监督式学习来学习这个映射函数,并通过梯度下降过程根据损失函数进行调整。当损失函数等于或接近于零时,我们可以相信模型的准确度,从而得出正确答案。1.3数据库发展趋势数据挖掘技术33.决策树这种数据挖掘技术使用分类或回归方法,基于一系列决策对潜在的结果进行分类或预测。顾名思义,它使用树状可视化效果来表示这些决策的潜在结果。1.3数据库发展趋势数据挖掘技术34.K近邻算法(KNN)K近邻算法,又称KNN算法,是一种非参数算法,它根据数据点的邻近程度以及与其他可用数据的关联程度,对数据点进行分类。这个算法假设相似的数据点可以在彼此的附近找到。因此,它通常通过欧氏距离计算数据点之间的距离,然后根据出现频率最多的类别或平均值来分配类别。1.3数据库发展趋势大数据技术4大数据技术是一组用于存储、处理和分析大规模数据集的技术和工具。这些数据集通常包含结构化、半结构化和非结构化数据,且具有高速、多样和庞大的特点。大数据技术的体系庞大且复杂,基础的技术包含数据的采集、数据预处理、分布式存储、NoSQL数据库、数据仓库、机器学习、并行计算、可视化等各种技术范畴和不同的技术层面。1.3数据库发展趋势第1章数据库技术概述小结本章主要介绍了数据库技术的发展历程、国产数据库的发展、数据库技术发展趋势等相关基础知识和基本概念。了解这些内容,有助于更好地学习、理解和掌握达梦数据库的相关技术及应用。第1章数据库技术概述思考与练习1.讨论题(1)使用数据库管理数据有哪些优点?(2)数据挖掘技术有哪些应用领域?(3)大数据技术和传统数据库技术有哪些异同?2.实训题通过网络搜索了解数据库技术的发展历程、主要应用及关键技术等知识。THANKS第2章数据库技术基础了解数据库系统的结构了解数据库系统的概念 了解数据库模型学习目标了解数据库系统组成掌握DM8数据库的安装与配置方法2.1数据库系统的概念 数据库系统(DataBaseSystem,简称DBS)是一种用于有效地组织、存储和管理数据的复杂计算机系统,通常由软件、数据库和数据管理员组成。它包含着多个组件和功能,旨在提供高效的数据管理和访问机制。它是一个实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。2.1数据库系统的概念 数据1数据是数据库存储的基本单位,是描述事物的符号记录,是数据库研究和处理的对象。数据不单指数字,广义的理解认为数据的种类很多,例如文本、图形、图像、音频、视频等,用户的基本信息、网上的购物订单详情等都是数据。2.1数据库系统的概念 数据库2数据库是一个有组织的、结构化的数据集合,被存储在计算机系统中。是长期存储在计算机内、有组织的、可以共享的大量数据的集合。它可以包含一个或多个表,每个表由行和列组成,用于存储特定类型的数据。2.1数据库系统的概念 数据库管理系统3数据库管理系统(DBMS):DBMS是数据库系统的核心组件,负责管理数据库的创建、维护、访问和控制,以保证数据的安全性和完整性。它提供了一个抽象层,使用户和应用程序能够以更高层次的角度操作数据,而不必关心底层的物理存储细节。2.2数据库模型
数据模型1数据模型定义了数据的组织和关系的方式。常见的数据模型包括关系型模型(用于关系数据库系统,如SQL数据库)、面向对象模型(用于面向对象数据库系统)和层次模型(用于层次数据库系统)等。2.2数据库模型
层次模型2层次数据库模型使用树形结构来表示数据之间的层次关系。每个数据记录都有一个父节点和零个或多个子节点。虽然层次数据库在某些场景下能够提供高效的层次结构表示,但由于其复杂性和难以扩展,逐渐被其他模型取代。2.2数据库模型
网状模型3网状模型(NetworkModel)是一种数据库模型,它是在层次模型的基础上发展而来的,相比于层次模型的树状结构,网状模型允许多个父节点指向同一个子节点,从而创建了更为复杂的关系。在网状模型中,数据被组织成节点的集合,每个节点都有一个唯一的标识符,称为记录标识符(recordidentifier)。节点之间的关系通过层级关系和连接关系来表达。层级关系表示父节点和子节点之间的关系,而连接关系则描述了不同节点之间的连接。2.2数据库模型
关系模型4关系数据库模型(RDBMS)是目前应用最广泛的数据库模型之一。它基于关系代数理论,使用表格(关系)表示数据,表格由行和列组成。关系型数据库系统使用SQL(StructuredQueryLanguage)进行数据操作,支持复杂的查询和事务处理。常见的关系数据库系统包括MySQL、Oracle、MicrosoftSQLServer等。2.3数据库系统的结构模式1模式是数据库中全体数据的逻辑结构和特征的描述,它主要关注数据的逻辑组织和结构,而不涉及具体的物理存储细节或数据值。模式为数据库用户提供了一个公共的数据视图,它描述了数据的概念记录类型、数据以及它们之间的关系,还包括数据间的语义约束。模式在逻辑层面上为数据库数据提供了视图,使得用户能够理解和操作数据。数据库的模式架构通常包括三个层次:内模式、概念模式和外模式。其中,内模式和外模式是数据库的两个不同层次,用于描述数据的组织和访问方式。2.3数据库系统的结构外模式2外模式,也称为视图模式或用户模式,它是数据库三级模式架构中最接近用户的层次。外模式是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。外模式是模式的子集,一个数据库可以有多个外模式。每个用户只能看见和访问所对应的外模式中的数据,数据库中的其余数据对他们是不可见的。这种方式保证了数据库的安全性。2.3数据库系统的结构内模式3内模式,也称为物理模式或存储模式,它描述了数据库在计算机存储器中的物理存储结构。内模式定义了数据的物理存储方式、存储位置、存储效率和数据完整性。它关注底层实现细节,如磁盘空间分配、索引结构和数据压缩等。内模式由数据库管理员(DatabaseAdministrator,简称DBA)管理,一般情况下,最终用户和开发人员不需要关心这个层次的信息。2.4数据库系统组成数据库1长期存储在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数学模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。2.4数据库系统组成硬件2硬件是数据库系统的基础,主要包括计算机硬件和通信硬件。计算机硬件方面,通常涉及服务器、存储设备以及网络设备等。其中,服务器负责处理用户提交的查询,对数据进行检索和更新,以及对数据库的管理。存储设备如硬盘、磁带、光盘等则用于存储数据。而网络设备如交换机、路由器等,则负责数据的传输。此外,服务器的核心部件如处理器和内存也起着至关重要的作用。2.4数据库系统组成软件3软件是数据库系统的核心,主要包括操作系统、数据库管理系统、主语言系统、应用程序软件以及用户数据库等。数据库管理系统是数据库的管理和控制中心,负责数据库的创建、维护、查询和更新等操作。应用程序软件则是基于数据库的应用程序,通过特定的语言与数据库进行交互,实现数据的处理和管理。此外,还有一些用于设计、开发、测试和维护数据库的软件工具,如数据库设计工具、数据库开发工具等。2.4数据库系统组成人员4数据库系统的人员组成包括多个层次和角色。其中,数据库管理员负责数据的存储、管理、备份、恢复和安全,涉及管理整个数据库的表、索引、文件、数据库连接等信息。程序员则负责编写和实现数据库应用程序,包括数据查询、事务管理、数据库备份恢复以及性能调优等工作。系统分析师需要了解数据库系统的各个方面,如数据库设计、性能、安全性、管理等。此外,架构师负责设计和构建数据库系统的体系结构、组件和服务,而开发人员则负责使用数据库系统,包括使用数据库开发语言、工具等进行设计和实现。2.4数据库系统组成数据库系统组成结构示意图2.4数据库系统组成2.4数据库系统组成数据库系统中各类人员的数据视图2.4数据库系统组成移动应用程序数据库结构示意图2.5数据库技术基础实践2.5数据库技术基础实践2.5数据库技术基础实践2.5数据库技术基础实践2.5数据库技术基础实践2.5数据库技术基础实践2.5数据库技术基础实践2.5数据库技术基础实践2.5数据库技术基础实践2.5数据库技术基础实践第2章数据库技术基础小结本章主要介绍了数据库系统的基本概念以及数据库的模型、结构和基本组成,讲解了达梦数据库DM8的安装与配置方法,为后续学习做好基础知识和实验环境的准备。第2章数据库技术基础思考与练习1.讨论题(1)数据库管理员的主要工作内容有哪些?(2)常见的数据库管理系统有哪些?2.实训题通过网络搜索了解达梦数据库的相关知识。 THANKS第3章关系数据库学习目标理解关系数据库规范化理解关系的完整性理解关系数据库结构关系数据库结构1单一的数据结构关系:现实世界的实体以及实体间的各种联系均用关系来表示。逻辑结构二维表:从用户角度,关系模型中数据的逻辑结构是一张二维表。关系的完整性1函数依赖定义6.1设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。关系的完整性13NF定义6.7设关系模式R<U,F>∈1NF,若R中不存在这样的码X、属性组Y及非主属性Z(Z⊇Y),使得X→Y,Y→Z成立,Y↛X不成立,则称R<U,F>∈3NF。关系的完整性14NF定义6.10关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y⊈X),X都含有码,则R<U,F>∈4NF。4NF就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。4NF所允许的非平凡多值依赖实际上是函数依赖。如果一个关系模式是4NF,则必为BCNF。关系的完整性133.2.4数据依赖定义6.11对于满足一组函数依赖F的关系模式R<U,F>,其任何一个关系r,若函数依赖X→Y都成立(即r中任意两元组t、s,若t[X]=s[X],则t[Y]=s[Y]),则称F逻辑蕴涵X→Y。关系的完整性1模式分解关系模式的规范化,其基本思想:学习目标理解关系数据库规范化理解关系的完整性理解关系数据库结构关系的完整性1实体完整性规则2.1实体完整性规则(EntityIntegrity)若属性A是基本关系R的主属性,则属性A不能取空值。空值就是“不知道”或“不存在”或“无意义”的值。关系的完整性1参照完整性关系间的引用,在关系模型中实体及实体间的联系都是用关系来描述的,自然存在着关系与关系间的引用。外码(ForeignKey),设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是R的外码。基本关系R称为参照关系(ReferencingRelation),基本关系S称为被参照关系(ReferencedRelation)。关系的完整性1用户定义的完整性针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不需由应用程序承担这一功能。例:课程(课程号,课程名,学分),“课程号”属性必须取唯一值,非主属性“课程名”也不能取空值,“学分”属性只能取值{1,2,3,4}。关系的完整性1触发器触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。关系的完整性1关系操作关系操作是针对关系数据库管理系统(RDBMS)中存储的数据进行操作的过程。关系操作主要分为两类:查询操作和更新操作。查询操作包括但不限于以下几种:(1)选择操作(Selection):选取满足特定条件的元组。(2)投影操作(Projection):去除不需要的信息,保留特定的列。(3)连接操作(Join):将两个或多个关系合并成一个新的关系,根据指定的匹配条件。(4)除操作(Division):从一个关系中移除所有满足特定条件的元组。(5)并操作(Union):将两个关系的结果合并为一个新的关系。(6)差操作(Except):从一个关系中移除所有不满足特定条件的元组。关系的完整性1关系代数关系代数是一种抽象的查询语言,它用对关系的运算来表达查询关系代数的运算对象是关系,运算结果亦为关系。关系代数的运算符有两类:集合运算符和专门的关系运算符。传统的集合运算是从关系的“水平”方向即行的角度进行专门的关系运算不仅涉及行而且涉及列。关系的完整性1关系演算关系演算是以数理逻辑中的谓词演算(谓词表示个体的一种属性)为基础的。关系演算是描述关系运算的另一种思维方式,以个体为单位,不以集合为单位。SQL语言是继承了关系代数和关系演算各自的优点所形成的。按照谓词变量的不同,可分为关系元组演算和关系域演算。关系的完整性1DM8数据库的创建与删除DM数据库管理系统安装完成后,可以看到/dm8目录下面很多文件,其中bin目录下是DM命令,tool目录下面是DM客户端工具,doc目录下是达梦提供的技术文档等等。DM数据库系统安装成功之后,要真正的存储和管理数据,还需要创建数据库实例。创建数据库实例可用图形化和命令行方式两种方式。(1)图形化创建实例使用客户端工具dbca,切换到tool目录下,执行dbca.sh,调出创建实例向导。下面是根据向导一步一步的操作,在生产环境时根据实际需求或有不同的配置。(2)用命令行方式创建实例使用bin目录下的dminit命令来创建实例,注意不同的实例,端口号必须不同,端口号用来区分不同的实例。第3章关系数据库小结本章主要介绍了:关系数据库的结构;关系稳定的条件与类型;关系稳定的类型和规则:关系操作,关系代数,关系演算。同时结合具体示例讲解了(DM)数据库的数据创建与删除,学习图形化创建实例、使用命令行方式创建实例。第3章关系数据库思考与练习1.思考题(1)根据自己的理解,生活中使用过哪些关系数据库?(2)什么是关系数据规范化,举例说明。(3)关系的完整性是什么?2.讨论题
什么是触发器,举例说明。3.实训题创建本章示例中的数据库基表并实现数据的插入、更新、查询和删除操作。THANKS第4章关系数据库标准语言能够使用DM_SQL实现数据查询和数据更新能够使用达梦(DM)数据库的索引和视图能够使用达梦(DM)数据库管理系统的常用工具了解达梦(DM)SQL的语言的特点了解DM_SQL语言常用的数据类型、运算符和表达式学习目标4.1数据定义4.1.1数据类型1数据类型是可表示值的集。值的逻辑表示是<字值>。值的物理表示依赖于实现。DM系统具有SQL-92的绝大部分数据类型,以及部分SQL-99和SQLServer2000的数据类型。4.1数据定义4.1.1数据类型11.字符数据类型(1)CHAR类型语法:CHAR[(长度)]功能:CHAR数据类型指定定长字符串。在基表中,定义CHAR类型的列时,可以指定一个不超过32767的正整数作为字节长度。例如:CHAR(50)4.1数据定义4.1.1数据类型1(2)CHARACTER类型语法:CHARACTER[(长度)]功能:与CHAR类型相同。例如:CHARACTER[(100)]4.1数据定义4.1.1数据类型1(3)VARCHAR类型/VARCHAR2类型语法:VARCHAR[(长度[CHAR])]功能:VARCHAR数据类型指定变长字符串,用法类似CHAR数据类型,可以指定一个不超过32767的正整数作为字节或字符长度。例如:VARCHAR(100)指定100字节长度;VARCHAR(100CHAR)指定100字符长度。如果未指定长度,缺省为8188字节。4.1数据定义4.1.1数据类型1(4)ROWID类型语法:ROWID功能:ROWID类型数据由18位字符组成,用来表示ROWID数据。18位字符由“4位站点号+6位分区号+8位物理行号”组成。ROWID类型数据可通过SF_BUILD_ROWID()构造而来。表中的ROWID类型字段,可以用于排序或创建索引。但是ROWID类型不支持作为分区字段和自定义类型的属性数据类型。ROWID字段与字符类型一样,支持MAX,MIN等集函数,不支持SUM,AVG等集函数。4.1数据定义4.1.1数据类型1例如:创建一个含有ROWID类型的数据库表。先构造ROWID数据。假定站点号为1,分区号为2,物理行号为10。使用SF_BUILD_ROWID函数构造出一个ROWID类型数据。SELECTSF_BUILD_ROWID(1,2,10);查询结果如下:AAABAAAAACAAAAAAAK其中,AAAB为站点号、AAAAAC为分区号、AAAAAAAK为ROWID值。创建含有ROWID类型的表,并插入数据。CREATETABLETEST1(C1INT,C2ROWID);INSERTINTOTEST1VALUES(6,'AAABAAAAACAAAAAAAK');SELECTC1,C2,ROWIDFROMTEST1;C2列为插入的值,ROWID为当前数据行的伪列ROWID。4.1数据定义4.1.1数据类型12.数值数据类型(1)NUMERIC类型语法:NUMERIC[(精度[,标度])]功能:NUMERIC数据类型用于存储零、正负定点数。其中:精度是一个无符号整数,定义了总的数字数,精度范围是1至38。标度定义了小数点右边的数字位数。一个数的标度不应大于其精度,如果实际标度大于指定标度,那么超出标度的位数将会四舍五入省去。例如:NUMERIC(4,1)定义了小数点前面3位和小数点后面1位,共4位的数字,范围在-999.9到999.9。所有NUMERIC数据类型,如果其值超过精度,DM会返回一个出错信息,如果超过标度,则多余的位会被截断。如果不指定精度和标度,缺省精度为38,标度无限定。4.1数据定义4.1.1数据类型1(2)DECIMAL类型语法:DECIMAL[(精度[,标度])]功能:与NUMERIC相似。(3)DEC类型语法:DEC[(精度[,标度])]功能:与DECIMAL类型相同。(4)NUMBER类型语法:NUMBER[(精度[,标度])]功能:与NUMERIC类型相同。4.1数据定义4.1.1数据类型1(5)INTEGER类型语法:INTEGER功能:用于存储有符号整数,精度为10,标度为0。取值范围为:-2147483648(-2^31)~+2147483647(2^31-1)。(6)INT类型语法:INT功能:与INTEGER类型相同。(7)BIGINT类型语法:BIGINT功能:用于存储有符号整数,精度为19,标度为0。取值范围为:-9223372036854775808(-2^63)~9223372036854775807(2^63-1)。4.1数据定义4.1.1数据类型1(8)TINYINT类型语法:TINYINT功能:用于存储有符号整数,精度为3,标度为0。取值范围为:-128~+127。(9)BYTE类型语法:BYTE功能:与TINYINT相似,精度为3,标度为0。(10)SMALLINT类型语法:SMALLINT功能:用于存储有符号整数,精度为5,标度为0。取值范围为:-32768(-2^15)~+32767(2^15-1)。4.1数据定义4.1.1数据类型1(11)BINARY类型语法:BINARY[(长度)]功能:BINARY数据类型用来存储定长二进制数据。在基表中,定义BINARY类型的列时,其最大存储长度由数据库页面大小决定,可以指定一个不超过其最大存储长度的正整数作为列长度,缺省长度为1个字节。最大存储长度见表4-1。BINARY类型在表达式计算中的长度上限为32767。BINARY常量以0x开始,后面跟着数据的十六进制表示,例如:0x2A3B4058。(12)VARBINARY类型语法:VARBINARY[(长度)]功能:VARBINARY数据类型用来存储变长二进制数据,用法类似BINARY数据类型,可以指定一个不超过32767的正整数作为数据长度。缺省长度为8188个字节。VARBINARY数据类型的实际最大存储长度由数据库页面大小决定,具体最大长度算法与VARCHAR类型的相同,其在表达式计算中的长度上限也与VARCHAR类型相同,为32767。4.1数据定义4.1.1数据类型1(13)RAW类型语法:RAW[(长度)]功能:与VARBINARY类型相同。(14)FLOAT类型语法:FLOAT[(精度)]功能:FLOAT是带二进制精度的浮点数,精度范围(1~126)。当精度小于等于24时,DM将其转换为标准C语言中的REAL类型;当精度大于24时,转换为标准C语言中的DOUBLE类型。FLOAT取值范围-1.7*10^308~1.7*10^308。4.1数据定义4.1.1数据类型1(15)DOUBLE类型语法:DOUBLE[(精度)]功能:DOUBLE是带二进制精度的浮点数。DOUBLE类型的设置是为了移植的兼容性。该类型直接使用标准C语言中DOUBLE。精度与取值范围与FLOAT一样。(16)REAL类型语法:REAL功能:REAL是带二进制精度的浮点数,但它不能由用户指定使用的精度,系统指定其二进制精度为24,十进制精度为7。取值范围-3.4*10^38~3.4*10^38。4.1数据定义4.1.1数据类型1(17)DOUBLEPRECISION类型语法:DOUBLEPRECISION[(精度)]功能:该类型指明双精度浮点数。DOUBLEPRECISION类型的设置是为了移植的兼容性。该类型直接使用标准C语言中DOUBLE。精度与取值范围与FLOAT一样。4.1数据定义4.1.1数据类型13.位串数据类型BIT类型语法:BIT功能:BIT类型用于存储整数数据1、0或NULL,只有0才转换为假,其他非空、非0值都会自动转换为真,可以用来支持ODBC和JDBC的布尔数据类型。DM的BIT类型与SQLSERVER2000的BIT数据类型相似。功能与ODBC和JDBC的BOOL类型相同。4.1数据定义4.1.1数据类型14.日期时间数据类型日期时间数据类型分为一般日期时间数据类型、时间间隔数据类型和时区数据类型三类,用于存储日期、时间和它们之间的间隔信息。一般日期时间数据类型包括:DATE类型、TIME类型、TIMESTAMP类型。(1)DATE类型语法:DATE功能:DATE类型包括年、月、日信息,定义了'-4712-01-01'和'9999-12-31'之间任何一个有效的格里高利日期。DATE值的书写方式有两种:一是DATE'年月日';二是'年月日'。4.1数据定义4.1.1数据类型1其中,年月日之间可以使用分隔符或者没有分隔符。分隔符是指除大小写字母、数字以及双引号之外的所有单字节字符且是可打印的。例如:空格、回车键、tab键、-/,.:*等标点符号。年月日中第一个非0数值前的0亦可省略,例如:'0001-01-01'等价于'1-1-1'。例如:CREATETABLETEST2(C1DATE,C2DATE,C3DATE);INSERTINTOTEST2VALUES(DATE'2023-10-01','2023/10/01','2023.10.01');4.1数据定义4.1.1数据类型1(2)TIME类型语法:TIME[(小数秒精度)]功能:TIME类型包括时、分、秒信息,定义了一个在'00:00:00.000000'和'23:59:59.999999'之间的有效时间。TIME类型的小数秒精度规定了秒字段中小数点后面的位数,取值范围为0~6,如果未定义,缺省精度为0。TIME值的书写方式有两种:一是TIME'时:分:秒';二是'时:分:秒'。例如:CREATETABLETEST3(C1TIME(2),C2TIME,C3TIME);INSERTINTOTEST3VALUES(TIME'08:30:20.20','11:15:22','19:10:25.49');4.1数据定义4.1.1数据类型1(3)TIMESTAMP类型语法:TIMESTAMP[(小数秒精度)]功能:TIMESTAMP类型包括年、月、日、时、分、秒信息,定义了一个在'-4712-01-0100:00:00.000000000'和'9999-12-3123:59:59.999999999'之间的有效格里高利日期时间。TIMESTAMP类型的小数秒精度规定了秒字段中小数点后面的位数,取值范围为0~9,如果未定义,缺省精度为6。TIMESTAMP值的书写方式有两种:一是TIMESTAMP'<DATE值><TIME值>';二是'<DATE值><TIME值>'。语法中,TIMESTAMP也可以写为DATETIME。4.1数据定义4.1.1数据类型1例如:CREATETABLETEST4(C1TIMESTAMP,C2DATETIME,C3TIMESTAMP,C4DATETIME,C5TIMESTAMP);INSERTINTOTEST4VALUES(TIMESTAMP'2021-01-0108:30:25',TIMESTAMP'2022-02-0208:30:25','2002/12/1208:30:25','2023.11.1108:30:25',DATETIME'2024-12-1208:30:25');DM支持两类十三种时间间隔类型(详见表4-2)。4.1数据定义4.1.1数据类型15.时区数据类型DM支持两种时区类型:标准时区类型和本地时区类型。标准时区类型:带时区的TIME类型和带时区的TIMESTAMP类型。(1)TIMEWITHTIMEZONE类型语法:TIME[(小数秒精度)]WITHTIMEZONE功能:描述一个带时区的TIME值,其定义是在TIME类型的后面加上时区信息。TIMEWITHTIMEZONE值的书写方式有两种:一是TIME'时分秒<时区>';二是'时分秒<时区>'。例如:CREATETABLETEST5(C1TIME(2)WITHTIMEZONE,C2TIME(2)WITHTIMEZONE);INSERTINTOTEST5VALUES(TIME'09:10:21+8:00','09:10:21-11:00');4.1数据定义4.1.1数据类型1(2)TIMESTAMPWITHTIMEZONE类型语法:TIMESTAMP[(小数秒精度)]WITHTIMEZONE功能:描述一个带时区的TIMESTAMP值,其定义是在TIMESTAMP类型的后面加上时区信息。TIMESTAMPWITHTIMEZONE值的书写方式有两种:一是TIMESTAMP'<DATE值><TIME值><时区>';二是'<DATE值><TIME值><时区>'。语法中,TIMESTAMP也可以写为DATETIME。例如:CREATETABLETEST6(C1TIMESTAMP(2)WITHTIMEZONE,C2TIMESTAMP(2)WITHTIMEZONE,C3TIMESTAMP(2)WITHTIMEZONE,C4TIMESTAMP(2)WITHTIMEZONE);INSERTINTOTEST6VALUES(TIMESTAMP'2023-12-1209:10:21+8:00','2023-12-129:10:21+9:00','2023/12/1209:10:21-10:00','2023.12.1209:10:21-5:00');4.1数据定义4.1.1数据类型1(3)TIMESTAMPWITHLOCALTIMEZONE类型语法:TIMESTAMP[(小数秒精度)]WITHLOCALTIMEZONE功能:描述一个本地时区的TIMESTAMP值,能够将标准时区类型TIMESTAMPWITHTIMEZONE类型转化为本地时区类型,如果插入的值没有指定时区,则默认为本地时区。TIMESTAMPWITHLOCALTIMEZONE值的书写方式有两种:一是TIMESTAMP'<DATE值><TIME值><时区>';二是'<DATE值><TIME值><时区>'。例如:CREATETABLETEST7(C1TIMESTAMP(3)WITHLOCALTIMEZONE,C2TIMESTAMP(3)WITHLOCALTIMEZONE);INSERTINTOTEST7VALUES(TIMESTAMP'2023-12-1209:10:21+8:00',TIMESTAMP'2023-12-1209:10:21');SELECT*FROMTEST7;4.1数据定义4.1.1数据类型16.多媒体数据类型多媒体数据类型的字值有两种格式:一是字符串,例如:'ABCD'二是BINARY,例如:0x61626364TEXT、LONG、LONGVARCHAR、CLOB只支持字符串。BFILE不适用上面两种格式。BFILE指明的文件只能只读访问。BINARY格式的多媒体数据类型以及BFILE数据类型不支持比较。不支持为多媒体数据类型的字段指定精度。(1)TEXT类型语法:TEXT功能:TEXT为变长字符串类型。其字符串的长度最大为100G-1字节。DM利用它存储长的文本串。4.1数据定义4.1.1数据类型1(2)LONG、LONGVARCHAR(又名TEXT)类型语法:LONG/LONGVARCHAR功能:与TEXT类型相同。(3)IMAGE类型语法:IMAGE功能:IMAGE用于指明多媒体信息中的图像类型。图像由不定长的象素点阵组成,长度最大为100G-1字节。该类型除了存储图像数据之外,还可用于存储任何其它二进制数据。(4)LONGVARBINARY(又名IMAGE)类型语法:LONGVARBINARY功能:与IMAGE类型相同。4.1数据定义4.1.1数据类型1(5)BLOB类型语法:BLOB功能:BLOB类型用于指明变长的二进制大对象,长度最大为100G-1字节。(6)CLOB类型语法:CLOB功能:与TEXT类型相同。(7)BFILE类型语法:BFILE功能:BFILE用于指明存储在操作系统中的二进制文件,文件存储在操作系统而非数据库中,仅能进行只读访问。4.1数据定义4.1.2基本表的定义、删除和修改2用户数据库建立后,就可以定义基表来保存用户数据的结构。DM数据库的表可以分为两类,分别为数据库内部表和外部表,数据库内部表由数据库管理系统自行组织管理,而外部表在数据库的外部组织,是操作系统文件。其中内部表包括:数据库基表、HUGE表和水平分区表。下面对数据库基表的创建与使用进行详细描述。4.1数据定义4.1.2基本表的定义、删除和修改21.表定义语句(1)定义数据库基表用户数据库建立后,就可以定义基表来保存用户数据的结构。需指定如下信息:表名、表所属的模式名;列定义;完整性约束。语法:CREATE[[GLOBAL]TEMPORARY]TABLE[IFNOTEXISTS]<表名定义><表结构定义>;4.1数据定义4.1.2基本表的定义、删除和修改2完整性约束含义NULL指明指定列可以包含空值,为缺省选项NOTNULL非空约束,指明指定列不可以包含空值UNIQUE唯一性约束,指明指定列作为唯一关键字PRIMARYKEY主键约束,指明指定列作为基表的主关键字,INI参数PK_WITH_CLUSTER控制该约束默认为CLUSTER或NOTCLUSTERCLUSTERPRIMARYKEY主键约束,指明指定列作为基表的聚集索引(也叫聚簇索引)主关键字NOTCLUSTERPRIMARYKEY主键约束,指明指定列作为基表的非聚集索引主关键字CLUSTERKEY指定列为聚集索引键,但是是非唯一的CLUSTERUNIQUEKEY指定列为聚集索引键,并且是唯一的USINGINDEXTABLESPACE<表空间名>指定索引存储的表空间REFERENCES指明指定列的引用约束。引用约束要求引用对应列类型必须基本一致。所谓基本,是因为CHAR与VARCHAR,BINARY与VARBINARY,TINYINT、SMALLINT与INT在此被认为是一致的。如果有WITHINDEX选项,则为引用约束建立索引,否则不建立索引,通过其他内部机制保证约束正确性CHECK检查约束,指明指定列必须满足的条件NOTVISIBLE列不可见,当指定某列不可见时,使用SELECT*进行查询时将不添加该列作为选择列。使用INSERT无显式指定列列表进行插入时,值列表不能包含隐藏列的值列级完整性约束4.1数据定义4.1.2基本表的定义、删除和修改2表级完整性约束完整性约束含义UNIQUE唯一性约束,指明指定列或列的组合作为唯一关键字PRIMARYKEY主键约束,指明指定列或列的组合作为基表的主关键字。指明CLUSTER,表明是主关键字上聚集索引;指明NOTCLUSTER,表明是主关键字上非聚集索引;也可通过INI参数PK_WITH_CLUSTER控制该约束默认为CLUSTER或NOTCLUSTERUSINGINDEXTABLESPACE<表空间名>指定索引存储的表空间FOREIGNKEY指明表级的引用约束,如果使用WITHINDEX选项,则为引用约束建立索引,否则不建立索引,通过其他内部机制保证约束正确性CHECK检查约束,指明基表中的每一行必须满足的条件4.1数据定义4.1.2基本表的定义、删除和修改2例如:创建客户信息表Customer语句如下:CREATETABLECustomer(CustomerIDINTIDENTITY(1,1),UserNameVARCHAR(50)NOTNULL,CustomerPWDVARCHAR(50)NOTNULL,CustomerTypeVARCHAR(10),CustomerNameVARCHAR(20),SexCHAR(4),PhoneVARCHAR(50),EmailVARCHAR(50),CityVARCHAR(50),AddressVARCHAR(200),PRIMARYKEY(CustomerID),);4.1数据定义4.1.2基本表的定义、删除和修改22.表修改语句语法:ALTERTABLE[<模式名>.]<表名><修改表定义子句>对表的修改操作包括:修改一列的数据类型、精度、刻度,设置列上的DEFAULT、NOTNULL、NULL、VISIBLE、可见用户等;增加一列及该列上的列级约束;重建表上的聚集索引数据,消除附加列;删除一列;增加、删除表上的约束;启用、禁用表上的约束;表名/列名的重命名;修改触发器状态;修改表的最大存储空间限制;修改外部表的文件路径;修改超长记录(变长字符串)存储方式;增加、删除表上记录物理逻辑日志的功能;将表移动到目标表空间。4.1数据定义4.1.2基本表的定义、删除和修改22.表修改语句例如:先创建一个商品信息表Product,再给这个表增加一个是否上架IsOn字段。语句如下:CREATETABLEProduct(ProductIDINTIDENTITY(1,1),ProductNameVARCHAR(50),CategoryIDINT,ProductCityVARCHAR(50),ProductPriceFLOAT,ProductCountINT,ProductPicVARCHAR(100),ProductDescriptionVARCHAR(200));ALTERTABLEProductADDIsOnBIT4.1数据定义4.1.2基本表的定义、删除和修改23.表删除语句DM系统允许用户随时从数据库中删除基表。语法:DROPTABLE[IFEXISTS][<模式名>.]<表名>[RESTRICT|CASCADE];例如:商品信息表ProductDROPTABLEProduct执行该语句后,Product表已经被删除。4.1数据定义4.1.2基本表的定义、删除和修改24.基表数据删除语句DM可以从表中删除所有记录。语法:TRUNCATETABLE[<模式名>.]<表名>[PARTITION<分区名>|(<分区名>)][DROPSTORAGE|REUSESTORAGE][CASCADE];使用说明:TRUNCATE命令一次性删除指定表的所有记录,比用DELETE命令删除记录快。但TRUNCATE不会触发表上的DELETE触发器;如果TRUNCATE删除的表上有被引用关系,且未指定CASCADE,则此语句失败;如果TRUNCATE删除的表上有被引用关系,且指定CASCADE,若所有引用表的引用约束选项指定为“ONDELETECASCADE”,则系统将级联删除所有引用表中的数据,否则将报错;TRUNCATE不同于DROP命令,因为它保留了表结构及其上的约束和索引信息;TRUNCATE命令只能用来删除表的所有的记录,而DELETE命令可以只删除表的部分记录。例如:删除Customer表中的所有记录。TRUNCATETABLECustomer4.2数据查询4.2.1基本查询11.单表查询SELECT语句仅从一个表/视图中检索数据,称单表查询。即<FROM子句>中<普通表>使用的是[<模式名>.]<基表名|视图名>。(1)简单查询例如:查询商品信息表Product中的所有商品,包括商品名称、商品产地、商品价格、库存数量等字段。SELECTDISTINCTProductName,ProductCity,ProductPrice,ProductCount,ProductDescriptionFROMProduct;其中,DISTINCT保证重复的行将从结果中去除。若允许有重复的元组,改用ALL来替换DISTINCT,或直接去掉DISTINCT即可。4.2数据查询4.2.1基本查询1当用户需要查出所有列的数据,且各列的显示顺序与基表中列的顺序也完全相同时,为了方便用户提高工作效率,SQL语言允许用户将SELECT后的<值表达式>省略为*。SELECT*FROMProduct;等价于:SELECTProductID,ProductName,CategoryID,ProductCity,ProductPrice,ProductCount,ProductPic,ProductDescription,IsOnFROMProduct;4.2数据查询4.2.1基本查询1(2)带条件查询带条件查询是指在指定表中查询出满足条件的元组。该功能是在查询语句中使用WHERE子句实现的。WHERE子句常用的查询条件由谓词和逻辑运算符组成。谓词指明了一个条件,该条件求解后,结果为一个布尔值:真、假或未知。逻辑运算符有:AND,OR,NOT。谓词包括比较谓词(=、>、<、>=、<=、<>),BETWEEN谓词、IN谓词、LIKE谓词、NULL谓词、EXISTS谓词。4.2数据查询4.2.1基本查询1使用比较谓词的查询当使用比较谓词时,数值数据根据它们代数值的大小进行比较,字符串的比较则按序对同一顺序位置的字符逐一进行比较。若两字符串长度不同,短的一方应在其后增加空格,使两串长度相同后再作比较。例如:查询价格在3000~5000元之间的所有商品。SELECT*FROMProductWHEREProductPrice>=3000ANDProductPrice<=5000;4.2数据查询4.2.1基本查询1使用BETWEEN谓词的查询例如:查询价格在3000~5000元之间的所有商品。SELECT*FROMProductWHEREProductPriceBETWEEN3000AND5000;此例查询与上例完全等价。在BETWEEN谓词前面可以使用NOT,以表示否定。SELECT*FROMProductWHEREProductPriceNOTBETWEEN3000AND5000;4.2数据查询4.2.1基本查询1使用IN谓词的查询谓词IN可用来查询某字段值属于指定集合的元组。例如:查询所在城市为北京、上海、成都的客户信息。SELECT*FROMCustomerWHERECityIN('北京','上海','成都');4.2数据查询4.2.1基本查询1使用LIKE谓词的查询LIKE谓词一般用来进行字符串的匹配。我们先用实例来说明LIKE谓词的使用方法。例如:查询地址中有“成都市”的客户。SELECTCustomerName,Sex,Phone,Email,AddressFROMCustomerWHEREAddressLIKE'%成都市%';4.2数据查询4.2.1基本查询1使用NULL谓词的查询空值是未知的值。当列的类型为数值类型时,NULL并不表示0;当列的类型为字符串类型时,NULL也并不表示空串。因为0和空串也是确定值。NULL只能是一种标识,表示它在当前行中的相应列值还未确定或未知,对它的查询也就不能使用比较谓词而须使用NULL谓词。例如:查询邮箱为NULL的所有客户。SELECTCustomerName,Sex,PhoneFROMCustomerWHEREEmailISNULL;在NULL谓词前,可加NOT表示否定。4.2数据查询4.2.1基本查询1组合逻辑可以用逻辑算符(AND,OR,NOT)与各种谓词相组合生成较复杂的条件查询。例如:查询库存数量小于10或者未上架的全部商品。SELECTProductName,ProductCount,IsOnFROMProductWHEREProductCount<10ORIsOn=0;4.2数据查询4.2.2分组查询2GROUPBY子句主要用法是分类汇总。GROUPBY子句一般与聚集函数一起使用,常见聚集函数包括COUNT、SUM、AVG、MAX和MIN等。4.2数据查询24.2.2分组查询函数类别函数名称及用法计数函数COUNT(*)相异集函数AVG|MAX|MIN|SUM|COUNT(DISTINCT<列名>)完全集函数AVG|MAX|MIN|COUNT|SUM([ALL]<值表达式>)方差集函数VAR_POP、VAR_SAMP、VARIANCE、STDDEV_POP、STDDEV_SAMP、STDDEV;协方差函数COVAR_POP、COVAR_SAMP、CORR首行函数FIRST_VALUE求区间范围内最大值集函数AREA_MAXFIRST/LAST集函数AVG|MAX|MIN|COUNT|SUM([ALL]<值表达式>)KEEP(DENSE_RANKFIRST|LASTORDERBY子句);ORDERBY子句语法参考[4.7ORDERBY子句](#4.7ORDERBY子句)字符串集函数LISTAGG/LISTAGG2、WM_CONCAT、COLLECT求中位数函数MEDIAN线性回归相关REGR集函数REGR_COUNT、REGR_AVGX、REGR_AVGY、REGR_SLOPE、REGR_INTERCEPT、REGR_R2、REGR_SXX、REGR_SYY、REGR_SXY聚集函数4.2数据查询24.2.2分组查询1.GROUPBY子句的使用GROUPBY子句是SELECT语句的可选项部分。它定义了分组表。语法:<GROUPBY子句>::=GROUPBY<group_by项>例如:统计商品信息表中的商品种类。SELECTCategoryID,COUNT(*)FROMProductGROUPBYCategoryID;4.2数据查询24.2.2分组查询使用GROUPBY要注意以下问题:分组列不能为集函数表达式或者在SELECT子句中定义的别名;当分组列值包含空值时,则空值作为一个独立组;当分组列包含多个列名时,则按照GROUPBY子句中列出现的顺序进行分组;GROUPBY子句中至多可包含512个分组项;ROLLUP\CUBE\GROUPINGSETS组合不能超过8个。4.2数据查询24.2.2分组查询2.HAVING子句的使用HAVING子句是SELECT语句的可选项部分,它也定义了一个分组表。语法:<HAVING子句>::=HAVING<搜索条件>HAVING子句定义了一个分组表,其中只含有搜索条件为TRUE的那些组,且通常跟随一个GROUPBY子句。HAVING子句与组的关系正如WHERE子句与表中行的关系。WHERE子句用于选择表中满足条件的行,而HAVING子句用于选择满足条件的组。例如:统计出同一子类别的商品数量大于1的子类别名称、数量,并按数量从小到大的顺序排列。语句如下:SELECTT2.CategoryName,COUNT(*)FROMProductT1,CategoryT2WHERET1.CategoryID=T2.CategoryIDGROUPBYT2.CategoryNameHAVINGCOUNT(*)>1;4.2数据查询24.2.2分组查询3.ORDERBY子句ORDERBY子句可以选择性地出现在<查询表达式>之后,它规定了当行由查询返回时应具有的顺序。语法:<ORDERBY子句>::=ORDER[SIBLINGS]BY<order_by_list>由于ORDERBY只能在最终结果上操作,不能将其放在查询中;如果ORDERBY后面使用集函数,则必须使用GROUPBY分组,且GROUPBY分组中必须包含查询列中所有列;ORDERBY子句中至多可包含255个排序列。例如:将商品信息表Product中的全部商品按价格从高到低的顺序排列。SELECT*FROMProductORDERBYProductPriceDESC;等价于:SELECT*FROMProductORDERBY5DESC;该语句中的5即是Product表的第5个字段ProductPrice。4.2数据查询4.2.3连接查询3如果一个查询包含多个表(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年桂林信息工程职业学院单招职业适应性考试题库附答案详解
- 福安市融媒体中心2026年公开招聘急需紧缺高层次人才有关工作的备考题库及完整答案详解1套
- 2025年大连理工大学化工学院张文锐团队科研助理招聘备考题库及答案详解一套
- 2025年芜湖市镜湖区医院招聘备考题库有答案详解
- 广州市卫生健康委员会直属事业单位广州市第十二人民医院2025年第一次公开招聘备考题库完整答案详解
- 南宁市第四十七中学2026年春季学期招聘备考题库及1套完整答案详解
- 中国人民人寿股份有限公司2026届校园招聘400人备考题库及完整答案详解一套
- 2025年南京医科大学第四附属医院(南京市浦口医院公开招聘高层次人才备考题库)及一套答案详解
- 2025年海南省盐业集团有限公司关于公开招聘莺歌海盐场工作人员的备考题库及参考答案详解1套
- 2026年天津市南开区公开招聘事业单位工作人员(含高层次人才)备考题库及1套完整答案详解
- 2025中车株洲电力机车研究所有限公司社会招聘笔试历年参考题库及答案
- 2025年学前儿童音乐教育试卷(附答案)
- 一点点奶茶店营销策划方案
- 2025年生产安全事故典型案例
- 法律服务行业数字化转型与2025年挑战与机遇报告
- 幼儿园教师职业道德典型案例
- 公司投标知识培训内容课件
- 外墙真石漆专项施工方案
- 信息安全供应商培训课件
- 9.3《声声慢》(寻寻觅觅)课件+2025-2026学年统编版高一语文必修上册
- 七年级数学数轴上动点应用题
评论
0/150
提交评论