PREFACE 前言 在大数据时代,“数据”构成了一种世界观,以“数据”观世界,则客观世界就是一切数据的总和。“数据”是一种宝贵的资源,甚至可以说是战略性资源。“大数据”技术使“数据”蕴含着无尽的能量,显示出超然的魅力。只要掌握数据,人人都可以俯瞰大千世界的任何一个侧面。所谓掌握数据,也就意味着首先要处理数据; 而数据处理的过程是与数据库技术息息相关的。数据库原理和技术给人们提供了一种理解、处理和管理世界的方法。随着数据观的成长、成熟和发展,数据时空的海量扩张呈现出一个大数据时代来临的现实景观。大数据必然带来云计算技术的发展,数据库技术也因云计算而有了新的飞跃,于是云数据库管理系统给我们打开了一个数据处理的想象空间,呈现出海量数据与云计算背景下数据处理的“魅力生态”新技术场景。 在这种形势下, 华为公司研发推出的GaussDB管理系统应运而生。它以基于云计算的数据库管理技术为根基,是企业级高扩展海量存储分布式数据库管理系统,完全兼容MySQL,一经问世便成为华为鲲鹏系统生态中的核心产品之一,进而成为替代国外数据库管理系统软件、解决“卡脖子问题”的国产本土数据库管理系统的代表、首选和佼佼者,备受瞩目。 作为三十余年一直在高校讲授“数据库原理和应用”相关课程的教师,我编著了多本相关的数据库教程,但这是第一次编著国产数据库教程。在多年的实践教学的基础上,在华为公司GaussDB团队合作和指导下,研发编著了 本书,以使GaussDB(for MySQL)更快地走进数据库技术应用领域,走进高校,为广大读者用户所掌握。 本书的特点在于将数据库基本原理知识与GaussDB(for MySQL)数据库管理系统的技术知识融合在一起,是以GaussDB(for MySQL)为平台的数据库原理与技术教程,也是从数据库基本概念入手的GaussDB(for MySQL)数据库管理系统入门教程。本书讲解了数据库基本概念、数据库设计、数据库组织与管理、数据库SQL查询语言、数据库系统控制,以及数据库应用系统开发的一般方法,同时也介绍了GaussDB(for MySQL)云数据库的特性、架构及工作原理等几个方面的内容。每章都通过翔实的基础知识和简明的操作步骤,将知识点和实际应用相结合,帮助读者理解和掌握数据库原理和数据库操作。 以“基础知识与动手实验相结合”为编写理念,以一个完整的数据库应用系统案例贯穿全书,编写体例贴近实践的语境,将数据库原理与数据库操作技术,以及数据库应用系统开发等内容相结合,由浅入深,层层递进 地展现给读者。 数据库原理及应用——基于GaussDB的实现方法 前言 00 00 本书共有三篇,共13章。 上篇: 基础理论,共有3章。 第1章走进GaussDB。主要介绍了信息、数据、数据库、数据库管理系统、数据库系统和分布式数据库系统等概念; 数据库系统结构、数据库应用系统的组成; GaussDB(for MySQL)的特点、系统架构和集成环境等内容。 第2章关系数据库。主要介绍了数据描述过程、概念模型、关系模型、关系规范化和关系代数等内容。 第3章数据库设计和建模。主要介绍了数据库设计的生命周期、需求分析方法、概念结构设计、逻辑结构设计、物理结构设计方法、步骤和工作流程等内容。 中篇: 技术详解,共有7章。 第4章数据库预备知识。主要介绍了数据库的数据类型、常用函数和表达式计算等数据库应用开发的必备基础知识等。 第5章SQL。主要介绍了SQL的特点、功能; SQL数据定义语句、数据操纵语句应用等内容。 第6章数据库。主要介绍了集中式数据库、分布数据库式、云数据库框架; 介绍了存储引擎; 数据库创建及维护方法等内容。 第7章文件组织与索引。主要介绍了文件组织、索引、索引的类型以及创建索引遵循的原则,索引创建、维护和使用等内容。 第8章表与视图。主要介绍了数据表的操作方法,包括表设计概述、创建表的方法、表中数据的操作方法; 介绍了什么是视图 、创建视图、视图维护及使用等内容。 第9章数据查询。 主要介绍了SELECT语句、集函数查询、单表查询、多表查询、嵌套查询、子查询、带EXISTS关键字的子查询,并通过案例演示SQL语句的实际应用。 第10章数据库完整性。主要介绍了完整性约束; 介绍了存储过程,存储过程的创建以及 存储过程的调用、维护和使用; 介绍了触发器,创建触发器,维护及使用触发器等内容。 下篇: 系统应用,共有3章。 第11章数据库系统控制。主要介绍了事务及事务特性; 介绍了数据库系统恢复技术及并发控制; 介绍了数据库安全、用户管理、数据库备份/恢复、数据库表导入/导出等内容。 第12章GaussDB(for MySQL)数据库管理系统。主要介绍了GaussDB(for MySQL)系统结构,数据存储、恢复与实现工作机制; 介绍了GaussDB整体架构和GaussDB云数据库架构等内容。 第13章数据库应用系统开发的一般方法。主要介绍了数据库应用系统开发的一般方法,并对应用系统开发中的问题提出、需求分析、系统设计等工作进行详细阐述。 全书各章节配有60个微视频,如下表所示。 序号 视 频 标 题 对应章节位置 1 11a: 基本概念一 1.1尾 2 11b: 基本概念二 1.1.3尾 3 12: 数据库系统 1.2尾 4 13: GaussDB(for MySQL)概述 1.4尾 5 21: 概念模型 2.2尾 6 22: 关系模型 2.3尾 7 23: 关系规范化 2.4尾 8 24: 关系运算和、差、交 2.5.3尾 9 25: 关系运算投影、选择 2.5.6尾 10 26: 关系运算连接 2.5.7尾 11 27: 除 2.5.8尾 12 31: 数据库生命周期 3.1尾 13 32: 需求分析 3.2尾 14 33: 概念结构设计 3.3尾 15 34: 逻辑结构设计 3.4尾 16 35: 物理结构设计 3.5尾 17 41: GaussDB(for MySQL)的数据类型 4.1尾 18 42: GaussDB(for MySQL)的运算符 4.2尾 19 43: GaussDB(for MySQL)的函数 4.3尾 20 51: SQL概述 5.1尾 21 52: SQL数据操纵语句 5.3尾 22 61: 数据库分类 6.1尾 23 62: 存储引擎 6.2尾 24 63: 创建数据库 6.3.1尾 25 64: 维护数据库 6.3.2尾 26 71: 文件组织 7.1尾 27 72: 创建索引的原则 7.3尾 28 73: 维护索引 7.5尾 29 81: 表的创建 8.1尾 续表 序号 视 频 标 题 对应章节位置 30 82: 表中数据的输入 8.2.1尾 31 83: 表中数据的维护 8.3.3尾 32 84: 视图特性 8.4尾 33 85: 视图操纵 8.6尾 34 91: SELECT语句概述 9.1尾 35 92: 集函数查询 9.2尾 36 93: 行、列查询 9.3.4尾 37 94: 两表列查询 9.4.2尾 38 95: 多表条件查询 9.4.4尾 39 96: 多表行、列查询 9.4.5尾 40 97: 多表嵌套查询 9.5.2尾 41 98: 带IN关键字的查询 9.6.1尾 42 99: 带比较运算符的查询 9.6.2尾 43 910: 带ANY关键字的子查询 9.6.3尾 44 911: 带ALL关键字的子查询 9.6.4尾 45 912: 带EXISTS关键字的子查询 9.6.5尾 46 101: 实体完整性约束 10.1.1尾 47 102: 参照完整性约束 10.1.2尾 48 103: 用户自定义完整性约束 10.1.3尾 49 104: 触发器概述 10.2.1尾 50 105: 创建触发器 10.2.2尾 51 106: 维护触发器 10.2.3尾 52 107: 存储过程概述 10.3.1尾 53 108: 创建存储过程 10.3.2尾 54 109: 维护存储过程 10.3.3尾 55 111: 事务 11.1.2尾 56 112: 恢复技术 11.2.3尾 57 113: 并发控制 11.3.4尾 58 114: 数据库安全 11.4.4尾 59 121: GaussDB(for MySQL)概述 12.4.3尾 60 122: GaussDB数据库整体架构 12.5.4尾 本书富有特色,是国内首本引入GaussDB作为技术平台的数据库教学用书,对扩展数据库应用,推广使用国产数据库管理系统软件,普及GaussDB,都具有很强的针对性和现实意义。全书从基础理论入手,体系清晰,知识点全面,对数据库原理知识体系的讲解深入浅出,精编精讲,尽量将复杂的问题简单化; 以实例主导,有很强的实用性; 设计手段尽量简洁,尤其注重使用和设计能力的培养。 本书配有丰富的教学资源,可作为学习数据库原理课程教学用书,也可作为培养“ 小型应用系统开发能力”的学习用书,以及广大计算机用户和计算机学习者的培训用书及自学用书。 本书由李雁翎编写。 华为公司数据库团队专家提供了有关GaussDB(for MySQL)数据库管理系统部分内容及资料 ,并在编写过程中给予指导。刘征承担了部分实验的验证和微视频的录制。华为公司张霄鸾、赵成、周家恩、张迪、张昆、王立、贾新华、康阳、赵新新、张彦轩,以及清华大学出版社盛东亮、曾珊在图书编写过程中给予了各种支持,在此一并表示感谢。 由于作者水平有限,书中难免有疏漏和不足之处,欢迎广大读者批评指正。 编者