在数字时代 ,数据无处不在。从个人的微信聊天记录、淘宝购物清单 ,到企业的客户资料、销售数据 ,再到政府的公民信息、交通监控录像 ,这些都离不开强大的数据存储和管理工具。MySQL作为关系数据库管理系统的翘楚 ,在全球范围内得到极为广泛的应用。作为 装等方面展开讲解。通过本章学习 ,读者能对数据库有初步的认识 ,了解关系数据库的基本概念 ,理解 MySQL在数据库领域的重要地位 ,并掌握如何在自己的计算机上安装和运行 MySQL。 、、MSQL本书的开篇 本章将从数据库基础关系数据库技术构成数据库的简要介绍和安y,11数据库基础 .11. 数据管理技术的产生和发展 数据库技术是应数据管理任务的需要而产生的。数据管理是指对数据进行分类、组织、编码、存储、检索、维护、传播和利用的一系列活动的总和。在应用需求的推动下 ,在计算机软硬件发展的基础上 ,数据管理技术经历了人工管理、文件系统、数据库系统三个阶段。这三个阶段的特点及比较如表 1.1所示。 表 数据管理技术三个阶段的比较 111.. 比较维度 人工管理阶段 文件系统阶段 数据库系统阶段 维度 应用场景 科学计算 科学计算、数据管理 大规模数据管理 硬件 无随机存取存储设备,只有磁带、卡片等顺序存储设备 磁盘、磁鼓 大容量磁盘、磁盘阵列 软件 无操作系统与文件系统 操作系统与文件系统 数据库管理系统 处理方式 批处理 联机实时处理、批处理 联机实时处理、分布式处理、批处理 特点 数据管理者 用户 (程序员 ) 文件系统 数据库管理系统 数据使用者 某一应用程序 某一应用 现实某一实体 (部门、企业或人 ) 数据共享 无共享、冗余度极高 共享性、冗余度高 共享性高、冗余度低 续表 比较维度 人工管理阶段 文件系统阶段 数据库系统阶段 特点 数据独立性 不独立 ,完全依赖程序 独立性差 物理独立性和逻辑独立性较高 数据结构化 无结构 记录内有结构、整体无结构 整体结构化、用数据模型描述 数据控制能力 应用程序控制 应用程序控制 数据库管理系统提供数据安全性、完整性 ,以及并发控制和恢复能力 1.。2050世纪 年代中期及以前 数据管理技术处于人工管理阶段 此阶段具有以下特点,,。当时计算机主要用于科学计算 一段程序对应输入一批数据 用完撤走 数据不保存,,,一组数据只对应某一程序 当多个应用程序涉及相同数据时 也必须各自定义 数据无,,,没有软件系统负责管理数据 应用程序不仅要规定数据的逻辑结构 而且要设计物理结,,每当数据的逻辑结构或是物理存储结构发生变化时 必须对应用程序做相应修改 应用,,2.205060世纪 年代后期到 年代中期 数据管理进入了文件系统阶段 此阶段具有以下,,3. 人工管理阶段 1 )数据不保存 2 )数据不共享 法共享。 3)应用程序管理数据 构,包括存储结构、存取方法、输入方式等。 4)数据不独立 程序完全依赖于数据。 文件系统阶段 特点1。)数据可以长期保存数据可以以文件的形式长期保留在外存储器上 ,反复进行查询、修改、插入和删除等 操作2。)由文件系统管理数据 文件系统把数据组织成相互独立的数据文件 ,按文件名访问 ,按记录进行存取 ,提供了对文件进行打开与关闭、读取和写入的存取方式。文件系统实现了记录内的结构化。但文件系统管理的数据共享性差 ,冗余度高 ,独立性不强 ,数据存取单位是记录 ,不能细到数据项。 数据库系统阶段 20世纪 60年代后期以来 ,为解决多用户、多应用共享数据的需求 ,使数据服务尽可能多的应用 ,数据库技术随之产生 ,出现了统一管理数据的专门软件系统 ———数据库管理系统。数据库系统有以下几方面特点。 1 )数据结构化数据库系统实现了整体数据的结构化 ,整体结构化是指数据库中的数据不属于某一个 2)数据易共享 ,冗余度低 ,易扩充 数据库中的数据共享避免了不一致现象。 使得数据库系统弹性大 ,易扩充。 3 )数据独立性 4 )数据由数据库管理系统统一管理和控制 作加以控制和协调。数据库恢复是指当计算机系统发生硬件故障、软件故障、操作员失误以 及受到故意破坏时 ,数据库中的数据部分或全部丢失 ,或是正确性遭到破坏 ,数据库管理系 统具有将数据库从错误状态恢复到某一已知的正确状态的功能。 综上所述 ,数据库是长期存储在计算机内有组织、结构化、可共享的数据集合 ,支持多用户访问 ,具备数据冗余度低和数据独立性高的特点。数据库管理系统在数据库的创建、使用和维 。应用 而是面向整个组织或企业 数据之间是有联系的存取数据灵活 可存取某个或某组,,,。数据项 也可以是一条记录或一组记录,。数据共享意味着能够减少数据冗余 节约存储空间同时 数据共享还能避免数据间的,,。。不相容和不一致性数据不一致是指同一数据不同副本的值不统一在人工管理或文件系统阶段时 数据被重复存储 当不同的应用使用和修改不同的副本时 容易造成数据不一致 ,,,,由于数据面向整个系统 是结构化的 可以被多个应用共享使用 容易增加新的应用 这,,,,数据独立性包括物理独立性和逻辑独立性 它是借助数据库管理数据的一个显著优点 ,,。已成为数据库领域中的一个重要概念物理独立性是指用户的应用程序与数据库中数据的。物理存储相互独立换言之 数据在数据库中怎样存储是由数据库管理系统管理 应用程序,,。。只需处理数据的逻辑结构当数据的物理存储结构改变时 应用程序不用改变,、、。数据库管理系统提供数据的安全性保护完整性检查并发控制和数据库恢复功能数。据的安全性是指保护数据 防止非法访问或操作造成数据泄密和破坏完整性是指数据的,、。正确性有效性和相容性并发控制是指当多个用户并发进程同时访问与修改数据库时 如,果发生相互干扰得到错误结果或破坏数据库完整性 数据库管理系统会对多用户的并发操,护过程中对数据进行统一管理与控制 确保数据的完整性和安全性 并提供并发控制功能以协,,。调多用户同时使用 在故障发生时能具备数据恢复能力 从而保证数据库的稳定与可靠,,112..1. 数据模型 数据库的 4个基本概念 数据、数据库、数据库管理系统和数据库系统是与数据库技术密切相关的 4个基本 概念1。)数据 (data)数据是指描述事物的符号记录 ,是数据库中存储的基本对象。数据不仅包含数字 ,还包texraimagaudivideo) 含文本 (t)、图形 (gph)、图像 (e)、音频 (o)、视频 (等多种形式。在计算 机系统中 ,常见的数据类型有数值型、字符型、日期型 ,其中数值型又分为整数型、实数型、浮 点型等。数据的含义即数据的语义 ,数据与其语义是不可分割的。 在日常生活中 ,可以用以下方式描述一个人的基本情况 :张“三是男性 ,18岁,2006年 8月在江西省南昌市出生。在”计算机中 ,这些信息可以存储为以下结构化数据 : (张三 ,男,2006年8月,江西省南昌市 ) 这种记录不仅能够描述学生基本情况 ,而且是结构化的 ,能在计算机中实现表示和 存储2。)数据库 (database,DB) 数据库是长期存储在计算机内 ,有组织的、可共享的、关联性强的数据集合。数据库中的数据按照一定的数据模型组织、描述和存储 ,数据冗余度低、数据独立性高、易扩展 ,并且支持多用户共享访问。 3)数据库管理系统 (databasemanagementsystem,DBMS) 数据库管理系统是介于用户与操作系统之间的一种数据管理软件作为系统软件 ,它能实现高效地存储、管理与维护数据 ,并能提供科学组织数据的方法 ,其核心功能包括以下几个方面。 (1) 数据定义功能。数据库管理系统提供数据定义语言 ,用户可方便地通过数据定义语言定义数据库中的数据对象。数据定义语言主要用于定义数据对象的组成与结构。 (2) 数据组织、存储和管理。数据库管理系统允许分类组织、存储和管理各类数据 ,这些数据包括数据字典、用户数据以及数据的存储路径等内容。它的目标就是实现数据的高效率存储。为此 ,数据库管理系统需要明确使用何种文件结构和存储方式来组织存储集中的数据 ,并设计合理的方法来实现数据间的联系。 (3) 数据操纵功能。数据库管理系统提供数据操纵语言 ,允许用户对数据库中的数据进行查询、插入、删除和修改等基本操作。 (4) 数据库的事务管理和运行管理。在数据库建立、运用和维护时 ,数据库管理系统对其进行统一管理和控制 ,以确保事务的正确运行 ,保证数据的安全性与完整性同时 ,数据库管理系统能够支持多用户对数据的并发访问 ,并在系统发生故障后实现数据恢复。 (5) 数据库的建立和维护。数据库管理系统提供数据库初始数据的输入与转换功能 ,数据库转储与恢复功能、数据库的重组功能 ,以及性能监视与分析功能等。 (6) 其他功能。数据库管理系统支持与网络中其他软件系统的通信功能 ,支持两个数据库管理系统之间数据转换功能 ,以及异构数据库之间互访和互操作功能等。 4)数据库系统 (databasesystem,DBS) 数据库系统是一种由数据库、数据库管理系统 (及其应用开发工具)、应用程序和数据库管理员组成的 ,用于存储、管理和维护数据的系统。数据库管理员是指专门监督和管理数据库系统的人员或团队 ,负责全面管理和控制数据库系统 ,其承担的职责主要包括 :决定数据库中的信息内容和结构 ;决定数据库的存储结构和存取策略 ;定义数据的安全性要求和完整性约束条件 ;监控数据库的使用和运行 ;对数据库改进、重组和重构。数据库系统各组成部分之间的关系如图 1.1所示。 2数据模型 模型.是对现实世界中某个对象特征的抽象。数据模型是对现实世界数据特征的抽象 ,用来描述数据、组织数据和对数据进行操作。在计算机学科中 ,模型通常分为两类 :数据模型与概念模型。数据模型通常是通过对概念模型进行抽象与细化而得到的。 数据模型应满足三方面要求 :一是能较为真实地模拟现实世界的数据特性 ;二是容易为人所理解 ;三是便于在计算机上高效处理。数据建模一般遵循以下过程 :首先 ,将现实世界 物理模型的实现是由计算机系统中的数据库管理系统完成 数据库设计人员需要了解和选,3. 图 数据库系统结构 11. 的数据特性抽象为信息世界的概念模型 ,其次 ,将概念模型转换为机器世界的数据模型。 概念模型也称信息模型 ,是根据用户需求对数据和信息进行的高层次抽象建模 ,是一种不一定需要被计算机处理的模型 ,例如 ,地球的模型有多种形式 ,如地球仪和地图 ,它们都是对地球特征的抽象表示 ,用户可根据使用场景选择合适的模型。同样 ,在数据库设计中 ,概念模型有助于设计人员或用户在不考虑具体实现细节的情况下 ,清晰地理解与交流数据需求。 数据模型分为逻辑模型和物理模型。逻辑模型从计算机系统的角度对数据进行抽象建模,主要用于数据库管理系统的实现。它主要包括层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型等。物理模型是对数据最底层的抽象 ,它描述数据在系统内部的表示方式和存取方法 ,例如在磁盘或磁带上的存储方式和存取方法。 择合适的物理模型 ,最终用户则不必考虑物理级的细节。数据模型是数据库系统的核心和基础 ,各种机器上实现的数据库管理系统软件均依赖于某种数据模型或支持某种数据模型。 数据模型的组成要素 数据模型是严格定义的一组概念的集合 ,描述系统的静态特征、动态特性和完整性约束,通常由数据结构、数据操作和完整性约束三个要素组成。 1)数据结构 数据结构用于组织和存储数据 ,定义了数据元素的集合及其相互关系。数据库的数据结构可以用来以多种方式定义和组织数据 ,主要包括层次结构、网状结构、关系结构等。层次结构将数据组织成树形结构 ,每个节点可以有多个子节点 ,但只能有一个父节点 ,这种结构适合处理具有层级关系的数据。关系结构则基于二维表格形式 ,以行和列的形式组织数据,适合处理具有复杂关联关系的数据。 注意 :在数据库设计中 ,数据结构和逻辑模型是两个密切相关且相互影响的重要概 念。数据结构为数据库提供了组织和存储数据的基础 ,而逻辑模型则基于数据结构 ,抽象出 2)数据操作 现操作的语言。 3)完整性约束 性别属性值应限定为 “男”或“女”。 。数据的整体逻辑结构及其相互关系数据操作主要描述在相应的数据结构上允许执行的操作的集合 包括操作及有关的操,。作规则 是对系统动态特征的描述对数据库的操作主要有查询和操纵两大类 操纵操作包,,、、。、、括插入删除修改数据模型必须定义这些操作的确切含义操作符号操作规则 以及实,完整性约束主要描述数据结构内的数据及其联系所具有的制约和依存规则 用以限定,、。符合数据模型的数据库状态以及状态变化 以保证数据的正确性有效性和相容性例如 ,,、。在描述数据模型时 需要从数据结构数据操作和完整性约束三个方面进行全面阐述,。其中 数据结构是刻画模型性质的最基本方面,4.、、。:数据库领域中主要的数据模型包括三种 层次模型网状模型关系模型207080层次模型和网状模型统称为非关系模型 在世纪 与年代曾占主导地位 但由,,。于它们在使用和实现上涉及数据库物理层的复杂结构 现已逐渐被关系模型取代,。1981ACM系数据库的发展奠定了理论基础 他因此获得了 年的 图灵奖,对关系的描述称为关系模式 一般表示为,12. 三种常见数据模型 关系模型是目前最重要的数据模型 ,关系数据库系统采用关系模型作为数据的组织方式。1970年,美国 IBM公司的研究员埃德加 ·科德 (E.F.Codd)首次提出关系模型 ,为关 1)关系模型的数据结构及相关概念 关系模型的数据结构是一张由行和列交叉组成的规范化的二维表 ,被称为关系 ,表中的一行称为元组 ,一列称为属性。表中某个属性或属性组如果可以唯一确定一条元组 ,那么这个属性或属性组称为该关系的主码 ,例如 ,通过学生学号能唯一确定学生信息 ,学生学号则被称为主码。学生性别却不能唯一确定学生 ,所以性别不能称为主码。 关系名 (属性 1,属性 2,...,属性 n) 例如 : 项目 (项目编号 ,项目名称 ,项目资方 ,项目开工日期 ,项目预算 ,项目计划完工日期 ) 关系模型要求关系必须规范化 ,即关系的每个分量必须是一个不可分的数据项 ,不允许表中有表 ,如表 1.2所示 ,不符合规范化的要求。 表 不规范化的关系 项目编号 项目名称 项目方 项目方名称 项目方地址 2)关系模型的数据操作与完整性约束 关系模型的数据操作主要包括查询、插入、删除和更新。这些操作必须满足关系的完整性约束。关系模型中的数据操作是集合操作 ,操作对象和操作结果都是关系 ,即若干元组的 、。:关系的完整性约束包括三大类 实体完整性参照完整性和用户自定义完整性约束参照完整性约束要求关系中不允许引用不存在的实体 与实体完整性约束是关系模型,“”“”例如 在项目 关系记录项目的基本信息 而在 项目开工记录表 关系中记录项目开工的详,,用户自定义完整性约束是指针对特定关系数据库的约束条件 它反映某一具体应用中,。保了数据符合业务逻辑和应用需求、、、/员角度看 数据库系统的内部结构分为单用户结构主从式结构分布式结构客户 服务器,1.//)。500020240630机房建设 江汉省梦市 万,,,2. 的正确性。 数据库系统结构 数据库系统模式的概念 在数据模型中有 “型”和“值”的概念。型是指对某一类数据的结构和属性的说明 ,值是型的一个具体实例。例如 ,项目 (项目编号 char(4),项目名称 varchar(20),项目资方 varchar(20),项目开工日期 date,项目预算 bigint,项目计划完工日期 date)这里描述的是型,即表的结构。而该型的一个具体实例则可能是 :(201000121,江汉省梦市大数据局核心 。“”“”集合 而不像非关系模型中基于单记录的操作方式用户只要指出 干什么 或找什么 而,,“”“”。不必详细说明 怎么干 或怎么找 从而大大地提高了数据的独立性和用户生产率,。实体完整性约束要求关系中的所有主属性都不能为空值。必须满足的完整性约束条件 目的是保证数据的一致性 参照完整性约束又称引用完整性,,“”“”细信息 项目开工记录表 中的项目编号应是 项目 关系中已存在的项目编号 以确保引用,,。“”“”。数据必须满足的语义要求例如 性别属性的取值范围被限定为 男或女这种约束确,113..。可以从多种不同层次和角度考查数据库系统的结构从严谨的数据库体系架构定义来。看数据库系统的内部结构一般采用三级模式二级映像结构而从数据库最终用户与程序,、/。。结构浏览器 服务器结构等本小节具体只介绍三级模式二级映像结构//20231001,模式是对数据库中全体数据的逻辑结构和特征的描述 它仅仅定义了数据的结构 即对,, 型的描述 ,并不涉及具体值。模式的一个具体值称为该模式的一个实例 ,同一个模式可以有很多实例。例如 ,项目关系有记录 100条,每一条记录对应一个实例 ,即一个具体的项目 ,而关系的结构和特征描述 (模式 )则只有一个。模式是相对稳定的 ,而实例是相对变动的 ,因为模式反映的是数据的结构及其关系 ,而实例反映的是数据库某一时刻的数据状态。 数据库系统结构中的三级模式 数据库系统结构中的三级模式是指模式、内模式和外模式 ,如图 1.2所示。 1)模式 模式 ,也称为逻辑模式 ,是对数据库中全体数据的逻辑结构和特征的描述 ,代表所有用户的公共数据视图。它是数据库系统结构的中间层 ,既不涉及数据的物理存储细节和硬件环境 ,又与具体的应用程序、应用开发工具及高级程序设计语言无关。模式提供了数据库数据在逻辑上的视图。一个数据库只有一个模式 ,它基于某一种数据模型 ,统一综合地考虑所有用户的需求 ,并将这些需求整合成一个逻辑整体。在定义模式时 ,不仅要定义数据的逻辑结构 ,还要定义数据之间的联系。数据逻辑结构包括数据项的名字、类型、取值范围等 ,数据 。;竟是定长结构还是变长结构 一条记录究竟是跨物理页存储 还是限制在单物理页内,3. 12.、。之间的联系包括与数据有关的安全性完整性要求 图 数据库系统的三级模式二级映像结构 2)内模式 内模式 ,也称为存储模式 ,一个数据库只有一个内模式。它描述了数据的物理结构和存储方式 ,即数据在数据库内部的组织方式。例如 ,记录存储方式究竟是堆存储 ,还是按照某个属性值升序存储 ,或者按照属性值聚簇存储 ;索引究竟是按照 B+树索引 ,还是按照 hash索引 ;数据存储采用的是压缩存储还是非压缩存储 ,加密还是不加密 ;数据存储记录结构究 3)外模式 外模式 ,也称为子模式或用户模式 ,是对应用程序员和最终用户能够看见和使用的局部数据的逻辑结构和特征的描述 ,描述了某一应用相关数据的逻辑结构与特征。外模式是模式的子集 ,一个数据库可以有多个外模式。因为每位用户在应用需求、查看数据方式、数据保密要求等方面存在差异 ,所以外模式描述因用户不同而不同。即便对模式中的同一数据 ,其在外模式中的结构、类型、长度、保密级别等方面也可以不同。外模式是保证数据库安全性的有力措施 ,每位用户只能看见并访问所对应的外模式中的数据 ,而数据库中的其他数据对于用户则是不可见的。 数据库的二级映像机制与数据独立性 数据库系统的三级模式是数据的三个抽象级别 ,由数据库管理系统管理数据的具体组织,使用户能够逻辑且抽象地处理数据 ,而不必关心数据在计算机中的具体表示方式与存储方式。为了能在系统内部实现三个抽象层次的联系和转换 ,数据库管理系统提供了二级映像,即外模式 /模式映像和模式 /内模式映像 ,如图 1.2所示。这两层映像保证了数据库系统中的数据具有较高的逻辑独立性和物理独立性。 独立性。 据与程序的物理独立性。 数据库模式是全局逻辑结构 ,是数据库的中心和关键 ,独立于数据库其他层次 ,因此设 计数据库模式结构时应首先确定数据库的逻辑模式。内模式依赖于模式 ,独立于数据库的 外模式 ,将全局逻辑结构中所定义的数据结构及其联系可按照一定的物理存储策略进行组 织,以达到较好的时间与空间效率。外模式面向具体应用程序 ,定义在逻辑模式上 ,独立于 内模式和存储设备 ,当应用需求发生变化 ,外模式可做相应改动。 数据库系统的二级映像机制保证了数据库外模式的稳定性 ,同时保证了底层应用程序 支持更灵活和高效的数据管理。 关系数据库技术构成 。模式描述的是数据的全局逻辑结构 外模式描述的是数据的局部逻辑结构对于同一,/个模式 可以有多个外模式 每个外模式都有一个外模式 模式映像 定义了该外模式与模式,,,。。之间的对应关系这些映像定义通常包含在各自外模式的描述中/当模式改变时 由数据库管理员对各外模式 模式的映像作相应改变 可保持外模式不,,。变因为应用程序依据外模式编写 所以应用程序可不必修改 从而保证了数据与程序逻辑,,/数据库中只有一个模式 也只有一个内模式 因此模式 内模式映像是唯一的 它定义了,,,。数据全局逻辑结构与存储结构之间的对应关系当数据库的存储结构改变时 由数据库管,/理员对模式 内模式映像做相应改变 使模式保持不变 从而应用程序也不必改变 保证了数,,,。的稳定性数据与程序之间的独立性使得数据定义和描述可从应用程序中分离出来 从而,12.)/1外模式 模式映像)/2模式 内模式映像121关系数据库 .. 1970年,埃德加 ·科德在美国计算机学会会刊 fionso Citommuncah t ,首次提出了关系模型的 eACM上发表了 fDtaa dloeo iona ltea 1. 论文 ARlMfrL概念 ,开创了关系数据库领域。此后,o他又连续发表了多篇论文 ,系统地定义并发展了关系模型的相关概念 ,奠定了关系数据库的理论基础。本节介绍关系模型的三要素 :数据结构、数据操作和完整性约束。 关系模型的数据结构及形式化定义 关系模型的数据结构非常简单 ,只包含单一的数据结构 ,它的逻辑结构是一张二维表。仅用几张二维表就能表示出现实世界中的实体以及实体之间的各种关联。下面介绍关系模型的数据结构相关概念。 (1)域 :一组具有相同数据类型和语义的值的集合。例如 ,“性别 ”属性的取值范围可以定义为集合 {"男","女"}。 (2)关系 :一张二维表 ,表的每行称为元组 ,表示一个记录 ;每列对应一个域 ,列的名称叫作属性。若关系中的某一属性组的值能唯一标识一个元组 ,并且该属性组是最小集合 ,即 kans ta hareSareg dDaB 无法去除任何属性而保持唯一性 ,则称该属性组为候选码。若一个关系有多个候选码 ,则选定其中一个为主码。候选码的每个属性称为主属性 ,不包含在任何候选码中的属性称为非主属性或非码属性。如果关系的所有属性的组合是唯一的候选码 ,则称该关系的候选码为全码。 以项目关系为例 ,如表 1.3所示。 表 项目关系 13. 项目编号 项目名称 项目资方 项目开工日期 项目预算 /万元 项目计划完工日期 201000121 江汉省梦市大数据局核心机房建设 (一期 ) 江汉省梦市市政府 2023/10/01 5000 2024/06/30 201000122 江汉省大学校园网建设 江汉省大学 2023/10/01 7000 2024/12/30 201000123 江汉省梦市大数据局核心机房建设 (二期 ) 江汉省梦市市政府 2024/07/20 5000 2024/12/30 注:行代表元组 ;列代表属性。 在项目关系中 ,有6个属性 ,该关系也可称为 n目关系。在这 6个属性当中 ,项目编号能够唯一标识一个元组 ,每个项目能通过项目编号被唯一标识 ,因此这个关系中的项目编号是候选码 ,也是唯一的候选码 ,因此在这个关系中是主码。 关系可以有三种类型 :基本关系 (通常称为基本表或基表)、查询表和视图表。基本表是实际存在的表 ,直接存储数据 ;查询表是通过查询操作生成临时结果集 ;视图表是由基本表或其他视图表导出的表 ,本身并不存储数据 ,只存储视图的定义。 基本关系具有以下 6条性质。 (1)列同质性 :每一列中的分量是同一类型的数据 ,来自同一个域。 (2)列独立性 :不同列可出自同一个域 ,每一列称为一个属性 ,不同的属性有不同的属 性名(。3)候选码唯一性 :任意两个元组的候选码不能取相同值。 (4)行无序性 :行的顺序可以任意交换 ,不影响数据的逻辑意义。 (5)列无序性 :列的顺序可以任意交换 ,不影响数据的逻辑意义。 (6) 每个分量是不可分的数据项。 2. 关系操作 关系模型中常用的关系操作包括查询、插入、删除和修改操作。查询操作为主要操作 ,可分为选择、投影、连接、除、并、差、交和笛卡儿积等 ,其中选择、投影、并、差、笛卡儿积是 5种基本操作。 早期的关系操作能力通常用代数方式或逻辑方式表示 ,称为关系代数和关系演算。关系代数用对关系的运算表达查询 ,关系演算用谓词来表达。关系演算又可按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算。 后期出现了结构化查询语言 (structuredquerylanguage,SQL)。 SQL不仅具有丰富查询功能 ,而且具有数据定义和数据控制功能 ,是集查询、数据定义语言、数据操纵语言和数据控制语言于一体的关系数据语言。特别指出 ,SQL语言是一种高度非过程化语言 ,用户不必请求数据库管理为其建立特殊的存取路径 ,存取路径的选择由关系数据库管理系统优化机制完成。MySQL数据库管理系统就属于关系数据库管理系统 ,查询语言采用的是结构化查询。 关系的完整性 如前所述 ,关系模型中存在实体完整性、参照完整性、用户自定义完整性三类完整性约束,其中实体完整性和参照完整性是关系模型必须满足的完整性约束 ,被称为关系的两个不变性 ,应该由数据库管理系统自动支持。用户自定义完整性是应用领域需要遵循的约束 ,体现了具体领域中的语义约束。 1)实体完整性 实体完整性的规则为 :若属性 A是基本关系 R的主属性 ,则 A不能取空值。空值是指 “不知道 ”或“不存在 ”的值。例如 ,在表 1.3所示的项目关系中 ,项目编号为主码 ,则其不能取空值。 按照实体完整性规则 ,如果主码由若干属性组成 ,则所有这些主属性都不能取空值。例如,在表 1.4所示的项目中标登记表关系中 ,项目甲方与项目乙方为主码 ,则项目甲方与项目乙方两个属性都不能取空值。 表 以项目甲方与项目乙方为主码的项目中标登记 14. 3. 项目甲方 项目乙方 项目编号 中标时间 汉江省梦市政府 汉江省大数据局 20230023 2012.10.23 汉江省梦市政府 汉江省大数据局 20230021 2012.10.23 需要说明的是 : (1)实体完整性是针对基本关系而言的。一个基本表通常对应现实世界的一个实 体集(。2)现实世界中的实体是可区分的 ,即它们具有某种唯一性标识。例如 ,每个项目编号都是不同的。 (3) 关系模型中以主码作为唯一性标识。 (4) 主码中的属性不能取空值。如果取了空值 ,说明存在某个不可标识的实体 ,这与第 (2)条相矛盾。 2)参照完整性 现实世界中的实体之间存在某些联系 ,在关系模型中实体及实体间联系由关系描述 ,例如,在上文所述的项目和项目中标登记表两个关系中 ,都有项目编号。在项目关系中 ,项目编号是主码 ,但从业务逻辑上来看 ,项目必须先在项目中标登记表中登记 ,然后在项目关系中登记基本信息 ,因此项目关系中的项目编号取值应参照项目中标登记表的取值。换言之 ,项目关系中的项目编号的值是中标登记表中项目编号的子集或空值。 上述情况就表现为参照完整性 :如果基本关系 R的一个或一组属性 A不是 R1的码 ,但 A是 R2的主码 ,则称 A是 R1的外码 ,R1为参照关系 ,R2为被参照关系。R2中的 A属性取值应是 R1的 A属性取值的子集或空值。 3)用户自定义完整性用户自定义完整性是针对某一具体关系数据库的约束 ,它反映某一具体应用所涉及的数据必须满足的语义要求。例如 ,性别应满足约束条件 ,在集合 {"男","女"}中取值。关系模型应提供定义和检验这类完整性的统一机制 ,而不是由应用程序来实现这一功能。 1.2.2 SQL概述 SQL是关系数据库的标准语言 ,也是一个通用的、功能极强的关系数据库语言 ,其功能不仅是查询 ,而是包括数据库模式创建、数据操作、事务管理、安全性控制和完整性定义等一系列功能 ,能覆盖数据库生命周期中的所有主要操作。SQL强大的功能也使其成为关系数据库管理系统的核心语言。 1.SQL特点 SQL主要包括以下特点。 1)综合统一 SQL集数据定义、数据操纵、数据控制于一体 ,语言风格统一 ,可以独立完成数据库生命周期中的全部活动 ,可以定义、修改和删除关系模式 ,还可以定义和删除视图 ,以及插入数据、建立数据库、对数据库中的数据进行查询和更新、数据库重构和维护、数据库安全性、完整性控制 ,以及事务控制等。 2)高度非过程化 用 SQL进行数据操作时 ,用户只需要提出 “做什么 ”,而无须指明 “怎么做 ”,无须了解存取路径 ,因为存取路径和 SQL操作过程都由系统自动完成。 3)面向集合的操作方式 SQL采用 “一次一集合 ”操作方式 ,不仅操作对象、查找结果可以是元组集合 ,而且一次插入、删除、更新操作的对象也可以是元组集合。 4)以同一种语法结构提供多种使用方式 SQL既是独立的语言 ,又是嵌入式语言。作为独立语言 ,用户可以在终端直接输入 SQL命令操作 ;作为嵌入式语言 ,SQL语句能嵌入高级语言程序中。这种统一的语法结构提供多种不同使用方式 ,提升了语言的灵活性。 5)语言简洁 ,易学易用 SQL功能强大 ,仅用 9个关键字即可完成核心功能 ,如表 1.5所示。 表1.5 SQL的9个核心关键字 SQL功能 关键字 数据查询 SELECT 数据定义 CREATE、DROP、ALTER 数据操纵 INSERT、UPDATE、DELETE 数据控制 GRANT、REVOKE 2.SQL基本概念 支持 SQL的关系数据库管理系统同样支持关系数据库的三级模式结构 ,如图 1.3所示 ,其中外模式包括若干视图和部分基本表 ,模式包括若干基本表 ,内模式包括若干存储文件。 图1.3 SQL对关系数据库三级模式结构的支持 用户可以用 SQL对基本表和视图进行查询或其他操作。在关系模型中,基本表和视图都是关系。基本表是本身独立存在的实体,在关系数据库管理系统中,一个关系就对应一个基本表。一个或多个基本表对应一个存储文件,一个表可以带若干索引,索引也存放在存储文件中。存储文件的逻辑结构组成了关系数据库的内模式,描述了数据的物理存储方式。对于存储文件的物理结构,最终用户是看不到的。视图是从一个或几个基本表导出的虚拟表,它本身不独立存储在数据库中。数据库中仅存放视图的定义,而不存放视图对应的数据,这些数据仍然存放在导出视图的基本表中。视图在概念上与基本表等同,用户可以在视图上再定义视图,从而支持复杂数据的抽象与逻辑操作。 1.2.3数据库访问接口 数据库访问接口根据其实现方式和应用范围可分为多种类型,以下是一些常见类型。 1. ODBC接口 ODBC(opendatabaseconnectivity)是一种面向数据库的通用标准接口,主要应用于 Windows操作系统,可以连接多种数据库类型,例如 Ac es 、SQLServer、Oracle等。 ODBC接口提供一套应用程序接口,用于程序访问数据库。 伪代码如下: import pyodbc #连接数据库 conn= pyodbc.connect( "driver= {SQL Server Native Client 11.0};" "Server= server_name;" "Database= database_name;" "Trusted_Connection= yes;" ) #执行 SQL命令 cursor= conn.cursor() cursor.execute("SELECT * FROM table_name") #输出结果 for row in cursor print(row) #关闭数据库连接 cursor.close() conn.close() 2.JDBC接口 JDBC(Javadatabaseconnectivity)是Java中的标准数据库访问接口。它包含一组类和接口 ,通过数据库驱动程序与各种关系数据库进行交互。伪代码如下 : import java.sql.*; //连接数据库 Connection conn= DriverManager.getConnection( "jdbc:mysql://localhost:3306/database_name", "root","password"); //执行 SQL命令 Statement stmt= conn.createStatement(); ResultSet rs= stmt.executeQuery("SELECT * FROM table_name"); //输出结果 while(rs.next()){ System.out.println(rs.getString("column_name")); } //关闭数据库连接 rs.close(); stmt.close(); conn.close(); 3. ORM接口 ORM(objectrelationalmapping)接口是一个对象与关系数据库之间的映射工具 ,通过将实体和关系映射到一起 ,把数据库的操作转换为面向对象的操作。ORM接口提供了一些高级功能 ,例如查询构建器、数据模型生成、事务控制等。 伪代码如下 : from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from model import User #连接数据库 engine= create_engine('sqlite:///example.db') Session= sessionmaker(bind= engine) session=Session() 131..。结果()dbDBMSttst基于客户端服务器架构的数据库管理系统 有aaasemanaemensemgy,132.. #执行 ORM操作 user= User(name= 'John Doe',email= 'jdoe@ example.com') session.add(user) session.commit() #查询 users= session.query(User).filter(User.name.like('% Doe% ')).all() 13.数据库软件 #关闭数据库连接 session.close() 数据库接口广泛应用于各种类型的应用程序中,例如 Web应用、桌面应用、移动应用等。数据库接口可用于管理数据、支持用户管理、增强系统安全性等,是连接应用程序和数据库系统的桥梁,为数据访问和操作提供灵活性和统一性。用户可根据应用程序需求,结合接口的灵活性、性能和安全性等因素,选择合适的数据库接口。 了解 MySQL数据库 数据库软件主要由两部分组成:客户端和服务器。其中,客户端是与用户直接交互的软件,负责接收和处理用户的请求。当用户需要查询、更新或修改数据时,客户端软件会将请求通过网络发送给服务器。服务器软件运行在数据库服务器上,负责数据的存储、访问与处理,执行所有的数据添加、删除与更新操作。用户看不到这些操作,他们只会看到最终的 很多,例如 MySQL、Oracle和 MicrosoftSQLServer等。这些系统广泛应用于各种场景中,包括桌面应用和移动应用。 基于客户端服务器架构的 DBMS可以分为两类:一类是基于共享文件系统,如 MicrosoftAc es 和 FileMaker,通常用于桌面用途,不常用于高端或关键应用;另一类是基于客户端服务器,如 MySQL、Oracle以及 MicrosoftSQLServer等,这些数据库通常用于更复杂和高流量的应用场景。 总之,客户端服务器软件通过将数据的处理和管理集中在一台服务器上,使得多个用 户可以同时访问和操作数据库中的数据,提高了数据处理的效率和安全性。 MySQL版本 MySQL最初是由瑞典的 MySQLAB公司开发,而后被 SunMicrosystems公司收购。如今 SunMicrosystems公司又被 Oracle公司收购,因此 MySQL现属于 Oracle公司旗下 的产品。 MySQL采用了双重许可政策 ,分为社区版和商业版 ,由于其体积小、速度快、总体拥有成本低 ,故此一般中小型网站的开发都选择 MySQL作为网站数据库。以下是 MySQL的一些主要版本介绍。 1. MySQLCommunityEdition 这是 MySQL的开源版本 ,免费提供给个人和开发者使用。这个版本包含了 MySQL数据库的基本功能 ,并且由于其开源性质 ,有着广泛的社区支持和贡献。 2. MySQLEnterpriseEdition 这是 MySQL的商业版本 ,提供了更多高级功能和支持服务。这个版本适用于需要额外功能、技术支持的企业级应用。该版本包括了一些额外的工具和服务 ,如在线备份、高级安全功能和技术支持等。 3. MySQLCluster 这是 MySQL的集群版本 ,适用于需要高可用性和高可扩展性的应用场景。该版本允许用户将多个 MySQL服务器封装成一个服务器 ,以提供更高的性能和可靠性。这个版本也是开源的 ,并且可以在多个节点上进行分布式处理。 4. MySQLClusterCGE 这是 MySQL的高级集群版本 ,提供了更高级的功能和优化。该版本适用于需要处理大量数据和并发连接的企业级应用 ,提供了如实时备份、故障恢复等高级功能。 此外 ,MySQL还提供了其他工具和组件 ,如 MySQLWorkbench,这是一款专为 MySQL设计的 ER数据库建模工具 ,用于数据库设计、数据建模、SQL开发等操作。 MySQLWorkbench也分为社区版和商用版 ,可分别满足不同用户的需求。 MySQL第一个版本于 1995年发布。截至本书出版之际 ,MySQL的最新版本是 920,该版本是2025年1月发布的。下面简单列举MySQL最常用的几大版本的特性和更新功能。.. MySQL50: ●引入了存储过程和触发器等特性 ; 视图、. ●支持 XA事务 ,增强了事务处理能力 ; ●提供了对 XML的支持 ,允许在 MySQL中存储和查询 XML数据。 MySQL5.1: ●引入了分区表 ,提高大数据集的管理效率 ; ●增强了复制功能 ,支持基于行的复制和全局事务 ID; ●提供了事件调度器 ,允许定时执行特定任务 ; ●改进了查询优化器 ,提升查询性能。 MySQL5.7: ●引入了生成列 ,允许根据其他列的值计算得到新的列 ; ●提供了对 JSON的原生支持 ,包括 JSON数据类型和相关函数 ; ●改进了查询优化器和 InnoDB存储引擎 ,进一步提高了性能 ; ●加强了安全性 ,包括更强大的密码策略和新的安全相关功能 ; ●提供了 sysschema,包含了一系列用于性能分析和故障排除的视图和函数。 MySQL8: ●引入了公共表表达式和窗口函数 ,增强了 SQL的表达能力 ; ●提供了新的数据字典 ,使得元数据的管理更加统一和高效 ; ●加强了对 JSON的支持 ,提供了更多的 JSON函数和操作符 ; SQL9介绍 ●改进了复制功能 ,支持组复制和事务数据定义语句的复制 ; My ●加强了安全性 ,包括默认的身份验证插件和密码策略、新的加密功能等 ; 注意 :虽然 MySQL9系列已经发布 ,但其特色集中在创新功能上 ,而 MySQL8更具稳定性和安全性。而且 MySQL8相较于之前的版本在许多方面也有显著的优势 ,因此本书将以 MySQL8为主要版本进行介绍。 MySQL优势 133.. 目前常用的关系数据库包括 MySQL、Oracle、SQLServer、PostgreSQL等。相比于其他关系数据库 ,MySQL具有以下优势。 开源免费 MySQL是一种开源的关系数据库管理系统 ,可以免费使用。这使得它成为许多开发者和中小型企业的首选数据库解决方案。此外 ,用户还可以通过修改和定制源代码来满足自己的特定需求。 跨平台支持 1.2. 3.4简单易用 .5.6.7. MySQL可以在多个操作系统上运行 ,包括 Windows、Linux、macOS等,为用户提供了广泛的平台支持 ,使得在不同的系统上部署和管理 MySQL变得相对容易。 高性能 MySQL具有较高的性能 ,可以处理大量的数据并支持高并发访问。它采用了多线程和缓存技术来提高查询和读写速度 ,并且使用索引技术来快速定位数据 ,从而提高查询效率。 MySQL具有简单易用的特点 ,提供了直观的命令行界面和用户友好的图形化管理工具,使得用户可以轻松地完成数据库管理和操作。此外 ,MySQL还支持多种编程语言的接口,便于与其他应用程序集成。 可扩展性 MySQL支持水平扩展和垂直扩展 ,可以根据需求进行灵活扩展以适应不断增长的数据量和用户访问需求。通过添加更多的服务器、分区表或使用集群技术 ,MySQL可以适应不同规模的应用需求。 安全性 MySQL采用了多种技术来确保数据的安全性和可靠性。例如 ,MySQL支持事务处理,可以在数据发生故障时自动恢复 ;它还支持数据备份和恢复 ,以及主从复制等功能 ,可以提高数据的可用性和容错能力 ;同时 ,MySQL还提供了访问控制和加密等安全功能 ,可以保护数据的安全性。 社区支持 MySQL拥有庞大的用户社区 ,拥有丰富的技术文档、教程和论坛支持 ,用户可以通过社区获得帮助和解决问题。这使得 MySQL成为一个活跃的开源项目,吸引了大量的开发者和贡献者。 MySQL8新功能 数据字典 角色管理 限。这有利于简化权限管理,提高安全性。 窗口函数 等。窗口函数能够在结果集的一个窗口范围内进行计算,适用于处理时间序列数据、分析排名等复杂查询场景,大幅提升查询性能。 。据具体的需求和应用场景进行综合评估134..。进以下介绍一些它的主要的新功能和改进,。JSON数据的更新操作 改进的JSON支持 MySQL8版本对JSON支持进行了增强。新增的JSON表达式允许用户在查询中直 (、MSQL:注意虽然具有许多优势但对于某些特定应用场景如复杂事务处理高y,.),。度定制化或特定商业功能需求 采用其他数据库可能更适合因此 在选择数据库时 应根,,MSQL8MSQL是当前的最新版本 在之前的版本基础上引入了多项功能增强和改yy,1.MSQL8引入了全新的原生数据字典 实现了对元数据的统一管理 取代了以前y,,、、。ft的等文件数据字典存储在内部事务表中 提升了数据库性能与可管理rmaropp,..。。DDL性此外数据字典还增加了原子 操作 从而减少了架构更改的风险,,2.。MSQL8中加入了角色管理功能通过为用户分配角色 管理员无须逐一调整用户权y,3.()、 ()、 ()MSQL8ROWNUMBERRANKDENSERANK开始支持窗口函数 例如y,__4.()(),ARRAYAGGJSONOBJECTAGGJSONO和将参数聚合为 数组或对象 并优化了,_5.6.7.8 接操作JSON数据,实现更灵活、高效的数据处理。此外,还增加了聚合函数 JSON_ 全球化与字符集 默认字符集变更为 utf8mb4,提供更完美的 Unicode支持。同时,增强了对不同语言、时区的支持,进一步满足全球化应用需求。 提升性能与可扩展性 针对InnoDB存储引擎进行了多方面优化,包括改善I/O负载处理能力、优化元数据操作等。此外,还新增了隐藏索引和降序索引等特性,这些改进显著提升了数据库的并发性能和可扩展性。 安全性 加强了密码策略、用户认证等功能,保障数据安全。同时,增强了对 SSL/TLS连接的支持,进一步降低了数据泄露的风险。此外,还新增了 caching_sha2_pas word授权插件、密码历史记录和 FIPS模式支持等特性,提高了数据库的安全性和性能。 . GIS功能 增强了地理信息系统(GIS)的功能,支持空间数据类型,增强空间索引,提供了更多 GIS 相关函数 ,进一步满足地理空间数据的处理需求。 9.错误日志管理 改进了错误日志管理功能 ,用户可以更方便地进行日志过滤、自定义输出格式等操作 ,实现高效的错误监控 ,便于问题排查。 除了上述特性外 ,MySQL8还提供了更灵活的 NoSQL支持 ,不再依赖模式 (schema)。同时 ,还优化了 InnoDB存储引擎在自增、索引、加密、死锁、共享锁等方面的表现。这些新特性和改进都使得 MySQL8更加适应现代应用的需求。 1.4 MySQL8.3的安装与配置 1.4.1在 Windows平台下安装与配置 MySQL8.3 1.安装 MySQL8.3 在 Windows平台下安装 MySQL8x可选择两种方式 :一种是运行可执行文件 ,另一种是解压缩包并进行相应的配置。建议初.学者通过第一种方式来进行 ,下面就来逐步介绍如何安装。 1)下载 MySQL8.x可执行文件 可从 MySQL的官方网站下载 Windows系统对应的安装包 ,安装包扩展名通常是 .msi。如图 14所示 ,编者下载的是版本 MySQL8.3。读者可以根据实际情况选择其他 8.x版本,安装.过程基本一致。 图1.4从 MySQL官网下载可执行文件 2)运行可执行文件待下载完成,双击可执行文件进行安装,安装对话框应如图1.5所示。 图1.5 MySQL8.3安装对话框 3)接受最终用户许可协议 双击运行可执行文件,出现如图 16所示的 “最终用户许可协议”窗口,勾选Iac ept thetermsintheLicenseAgre ment(我接.受许可协议中的条款)复选框,并单击 Next(下一步)按钮。 图1.6 MySQL8.3“最终用户许可协议”窗口 4)自定义安装步骤如图1.7所示,在接下来的“安装模式选择”窗口中选择“自定义安装”模式进行安装,该模式自由度较高 ,选择该模式可以自定义 MySQL安装路径、需要安装的组件等。选择好后,单击 Next(下一步 )按钮。 图 17. MySQL8 3. “安装模式选择 ”窗口 5)选择安装路径 如图 1.8所示 ,单击 Browse(浏览 )按钮 ,选择 MySQL安装路径。这里选择安装到 d:\ MySQL\MySQLServer8.3这一目录下 ,如图 1.9所示。 18. 图 选择安装路径 图1.9 MySQL8.3安装路径选择方式 6)确认安装并等待 如图110所示,到达“安装确认”窗口,单击Instal (安装)按钮确认安装,单击之后需要耐心等待安装.完成。 图1.10 MySQL8.3“安装确认”窗口 7)安装完成 安装完成以后,出现图 1.11所示的“安装完成”窗口,勾选 RunMySQLConfigurator (运行 MySQL配置)复选框,单击 Finish(完成)按钮可立即进行 MySQL配置。 图1.11 MySQL8.3“安装完成 ”窗口 2配置 MySQL8.3 1).打开配置向导 完成 MySQL8.3的安装后进入图 1.12所示的 “配置向导 ”窗口 ,单击 Next(下一步 )按钮。 图1.12 MySQL8.3“配置向导 ”窗口 2)配置数据路径如图 1.13所示 ,单击溢出菜单 ()按钮设置数据路径 ,这里将路径设置为 D:\data\ MySQLServer8.3。完成后 ,单击 Next(下一步 )按钮。 图1.13 MySQL8.3“数据路径设置 ”窗口 3)设置配置类型和网络配置 如图 1.14所示 ,在“配置类型与网络配置 ”窗口中 ,可以进行配置类型和网络的设置。初学者保持默认设置即可 ,即连接采用的是 TCP/IP协议 ,端口是 3306(默认端口)。完成设置后单击 Next(下一步 )按钮。 图1.14 MySQL8.3“配置类型与网络配置 ”窗口 4)设置 Root密码 此时将会出现如图1.15所示的“账户与角色设置”窗口,输入需要设置的密码即可,然后单击 Next(下一步)按钮。 图1.15设置 Ro t用户密码 5)应用配置 接下来,对于 WindowsService、ServerFilePermis ions和SampleDatabases等配置窗口中的参数,保持默认,直接单击 Next(下一步)按钮即可,直至到达如图1.16所示的“应用配置”窗口,直接单击 Execute(执行)按钮执行以上配置。 图1.16 “应用配置”窗口 6)等待配置生效 如图 1.17所示 ,在生效的配置前会出现绿色的对钩 ,完成后单击 Next(下一步 )按钮进入“配置完成 ”窗口 ,然后单击 Finish按钮即可。 图1.17 MySQL8.3“配置完成 ”窗口 1.4.2启动服务并登录 MySQL数据库 1启动 MySQL服务 1).打开 “管理工具 ”并打开 “服务 ”面板 进入 “控制 ”面板 ,找到 “管理工具 ”,如图 1.18所示。双击 “服务 ”,打开 “服务 ”面板 ,如图1.19所示。 图1.18在“控制 ”面板中找到 “管理工具 ” 图1.19 “控制 ”面板中的 “服务 ” 2)启动 MySQL服务 在“服务 ”面板中 ,找到 MySQL服务 ,右击该服务 ,在弹出的快捷菜单中可看到 “启动 ” “停止 ”“暂停 ”等选项 ,如图 120所示。若该服务是停止状态 ,则选择 “启动 ”选项即可启动服务。若服务处于运行状态但.仍有部分功能不正常 ,可以选择 “重新启动 ”选项进行服务 重启。 图1.20在“服务 ”面板中进行 MySQL服务启动 2登录 MySQL数据库 1).进入 MySQL命令行管理模式 在 MySQL服务启动后 ,单击 “开始 ”菜单 ,输入 MySQL,选择 MySQL83Command LineClient(MySQL8.3命令行管理工具 ),如图 1.21所示。在 MySQL命令.行管理工具中输入 Root用户的密码 ,即可进入命令行管理模式 ,如图 1.22所示。 图1.21选择 MySQL8.3命令行管理工具 图1.22 MySQL8.3命令行管理工具 2)执行数据库指令 在 MySQL命令行管理工具中 ,只需在 mysql>提示符后输入命令即可执行相应的指令,如图 1.23所示 ,使用命令 showdatabases列出所有的数据库。 图1.23 MySQL8.3命令行管理工具使用 3.配置 Path变量 在 Windows平台中配置 MySQL的 Path变量 ,可以按照以下步骤进行操作。 1)寻找安装路径 找到 MySQL安装路径。如图 1.24所示 ,MySQL的安装路径为 D:\MySQL\MySQL Server8.3。 图1.24寻找 MySQL安装目录 2 )配置环境变量 右击 “此电脑 ”,然后选择 “属性 ”,如图 1.25所示 ,依次完成以下操作。 (1)在系统窗口中 ,单击左侧的 “高级系统设置 ”按钮。 (2) 在弹出的窗口中 ,单击 “环境变量 ”按钮。 (3)在 “系统变量 ”列表中 ,找到名为 Path的变量 ,然后双击它以便能够编辑。 (4)在 “编辑环境变量 ”窗口中 ,单击 “新建 ”按钮。 (5)输入 MySQL的安装路径 ,并在其后面加上 \bin(如 d:\MySQL\MySQLServer 8.3\bin),其中 bin目录存放 MySQL的客户端和工具。 (6)确认所有更改 ,然后关闭所有打开的窗口。 图1.25配置 MySQL的 Path变量 此时,已经成功将 MySQL的安装路径添加到系统的 Path变量中。可以在命令提示符或 PowerShel 中直接运行 MySQL相关的命令了,效果如图1.26所示。 图1.26使用命令提示符连接数据库测试 1.4.3 MySQL常用图形管理工具 Workbench Workbench 连接数据库 MySQLWorkbench是 MySQL官方推出的唯一一款图形化的客户端工具,分为免费的社区版和付费的企业版。虽然存在免费和付费两个版本,但社区版的功能并不逊色,足以满足大部分用户的需求。两个版本的主要区别在于企业版提供了一些额外的功能,如企业备份等。 MySQLWorkbench提供了一系列强大的功能,例如执行查询语句、查看性能报告、可视化查询计划、管理配置及检查模式、生成 E-R图(实体关系图)、数据迁移等。此外,这款工具还支持在 Windows、macOS以及 Linux等多种操作系统上安装使用,几乎覆盖了所有开发人员和管理人员可能使用的平台。 总之,MySQLWorkbench是一款非常好用、功能强大的 MySQL图形工具,可以满足大多数 MySQL用户的需求,无论是数据库设计与管理,还是开发与优化,它都能提供全面的支持。 1. Workbench的下载和安装 1)Workbench的下载 访问 Workbench官网下载 Workbench,下载页面如图1.27所示。 2)Workbench的安装双击 msi文件,弹出如图1.28所示的 Workbench安装向导。直接单击 Next(下一步)按钮。 接着会出现 “安装路径选择”对话框,单击 Change(更改)按钮重新选择安装路径,如图1.29所示。 图1.27 Workbench下载页面 图1.28 Workbench安装向导 图1.29 Workbench“安装路径选择”对话框 接下来直接保持默认(完全安装),单击 Next(下一步)按钮,进入“安装确认”对话框,单击Instal 按钮进行安装。成功安装后,将会出现图1.30所示对话框。 图1.30 Workbench“安装成功提示”对话框 2. Workbench的简单使用 1)打开 Workbench成功安装后,在开始菜单输入 Workbench,如图1.31所示。单击打开 Workbench。 2 )完成连接 如图1.32所示,在 Workbench的 “欢迎”界面会出现一个默认连接指向本机安装的 MySQL,直接双击该连接,在弹出的 MySQL服务器连接提示框中输入 Root用户的密码, 单击 OK按钮即可完成连接。 图1.31在开始菜单中输入 Workbench进行查找 图1.32双击默认连接并输入密码 3)执行指令 如图1.33所示,在“查询编辑”区输入相应的命令,单击“执行”按钮,可在“查询结果”区看到当前所有数据库。 图1.33输入命令,得到查询结果 1.4.4在 Linux平台下安装与配置 MySQL8.0 主界面介绍 1.Linux操作系统下的 MySQL版本介绍Workbench 在 Linux操作系统下(这里以 CentOS7为例,不同的 Linux发行版本可能略有不同), MySQL支持多种安装方式,主要包括 RPM包安装和源代码安装。以下是两种安装方式的介绍以及它们之间的主要区别。 1)RPM包安装介绍 是一种预编译的软件包格式,主要用于基于 R RPM(redhatpackagemanager)edHat的 Linux发行版 (如 RedHatEnterpriseLinux、CentOS和 Fedora)。使用 RPM包安装 MySQL相对简单,因为包管理系统会自动处理依赖关系。用户只需下载适用于其系统架构的 RPM包,并使用rpm命令或系统的包管理器(如 yum或 dnf)进行安装即可。安装过程通常包括解压缩包文件、将文件复制到适当的位置、设置权限和创建必要的符号链接。 2)源代码安装介绍 源代码安装是从 MySQL官方网站或其他可信来源下载 MySQL的源代码,并使用编译工具(如 make和gc )将其编译成可在系统上运行的二进制文件。这种安装方式灵活性较强,用户可以根据自己的需求定制编译选项,包括优化性能、添加或删除功能,以及选择特定的存储引擎等。待编译完成后,用户需要手动将文件复制到适当的位置,并设置必要的环境变量和配置。 3)安装方式的区别 RPM包安装和源代码安装两种方式的主要区别如表1.6所示。 表1.6 Linux系统下两种安装方式的主要区别 主要区别 RPM包安装 源代码安装 复杂性 相对简单,大部分工作由包管理器自动完成 需要更多手动操作,包括下载、编译和配置 定制性 使用预编译的二进制文件,用户无法更改编译选项 提供更高的定制性,用户可以选择编译选项 依赖关系 自动处理依赖关系,确保所有必要的库和工具已安装 可能需要用户手动解决依赖关系 更新和维护 系统包管理器可以自动检查并应用安全更新和补丁 需要用户手动跟踪和应用更新 卸载 通过包管理器轻松卸载,并删除所有相关文件 可能需要用户手动删除文件和目录 2安装和配置 MySQL的 RPM包 (1.)下载 MySQL8.0yum资源。 由于截至撰稿时,编者只有 MySQL8.0的yum资源,故本小节以 MySQL8.0为例进行安装。在 CentOS7中下载yum资源,使用的命令如下: rpm-ivh https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm 效果如图1.34所示。 图1.34下载 MySQL8.0yum资源 下载完成后,可以使用命令 yuminfomysql-community-server来查看对应的版本,效果如图135所示。 (2)安.装 MySQL8.0。 使用命令 yum-yinstal mysql-community-server即可进行 MySQL的安装,若出现 Complete则表示安装成功,如图1.36所示。 (3)启动 MySQL。 启动 mysql服务并检查是否启动成功,对应命令如下: systemctl start mysqld systemctl status mysqld 图1.35查看 MySQL版本 图1.36 MySQL安装成功提示 效果如图 1.37所示。 图1.37出现红框提示则表示启动成功 (4)修改 Root密码。查看 MySQLRoot的原始密码 ,使用的命令如下 : less /var/log/mysqld.log此时能得到如图 1.38所示的原始密码 ,可以先将其复制 ,等下登录时需要用到。 图1.38查看 Ro t原始密码 使用命令 mysql-uroot-p,按 Enter键后,输入刚才复制的原始密码,进入 MySQL,并root@localhostIDENTIFIEDBYSa123456% 在提示符后面输入 ALTERUSER'''''';这里的 Sa123456%就是修改后的密码,读者可以自行修改,效果如图1.39所示。 图1.39进入 MySQL命令行修改用户 Ro t的原始密码 3.安装和配置 MySQL的源码包 以 CentOS7为例,安装和配置 MySQL的源码包需要以下步骤。 (1)在命令行中安装必要的依赖项。运行以下命令。 yum-y install wget cmake gcc gcc-c++ ncurses ncurses-devel libaio-devel openssl openssl-devel 安装依赖项效果如图1.40所示。 图1.40使用命令安装依赖项 (2)下载 MySQL的源码包并解压。 在 home目录中新建一个名为 mysql的文件夹 ,把源码包下载到该目录并解压。这里直接在下面的网址进行下载并在命令行使用 wget进行下载 ,效果如图 1.41所示。 图1.41下载并解压 MySQL源码包 (3)使用命令进行预编译。预编译的命令如下 : cmake-DCMAKE_INSTALL_PREFIX= /usr/local/mysql-DMYSQL_dataDIR= /data/mysql/ -DSYSCONFDIR= /etc-DWITH_MYISAM_STORAGE_ENGINE= 1 -DWITH_INNOBASE_STORAGE_ENGINE= 1-DWITH_MEMORY_STORAGE_ENGINE= 1 -DWITH_READLINE= 1-DMYSQL_UNIX_ADDR= /data/mysql/mysql.sock -DWITH_PARTITION_STORAGE_ENGINE= 1-DENABLED_LOCAL_INFILE= 1 -DEXTRA_CHARSETS= all -DDEFAULT_CHARSET= utf8 -DDEFAULT_COLLATION= utf8_general_ci-DFORCE_INSOURCE_BUILD= 1 -DWITH_BOOST= /root/mysql/mysql-8.0.17/boost 效果如图 1.42所示。 图1.42预编译 MySQL源码 (4)编译安装。 编译安装的命令如下 : make && make install 输入命令后 ,会出现如图 1.43所示的进度条 ,耐心等待安装结束。当安装进度条达到 100%之后 ,即代表安装完毕。 图1.43编译并安装 MySQL (5)配置 MySQL。 安装完成之后 ,需要对 MySQL的配置文件进行配置 ,配置文件的位置在 /etc/my.cnf。这里对此文件进行简单的配置。可以使用 vim进行编辑或者直接使用 echo配合 >>对配置文件的数据进行追加 ,追加代码如下 : #添加 MySQL配置文件 echo "[mysqld]" > /etc/my.cnf echo "bind-address= 0.0.0.0" > > /etc/my.cnf echo "port= 3306" > > /etc/my.cnf echo "basedir= /usr/local/mysql" > > /etc/my.cnf echo "datadir= /data/mysql" > > /etc/my.cnf echo "default-authentication-plugin= mysql_native_password" > > /etc/my.cnf 效果如图 1.44所示。 图1.44配置 my.cnf 本章小结 本章深入探讨了 MySQL数据库的基础知识 ,从定义、特点到其广泛的应用领域 ,为读者构建了一个全面的 MySQL认知框架。 读者还可以进一步思考一下 MySQL在各行业或场景中的具体应用及其适用性 ,还可通过例证以加深理解。 课后习题 一、选择题 1. 数据管理技术发展的三个阶段是( )。 A.人工管理、文件系统、分布式系统 B.人工管理、数据库系统、文件系统 C.人工管理、文件系统、数据库系统 D.文件系统、数据库系统、云存储 2.关系模型中 ,用于唯一标识元组的属性组称为( )。 A.主键 B.外键 C.候选码 3.以下 ()是 MySQL8.0的新功能。 A.存储过程 B.窗口函数 C.分区表 4.SQL语言中 ,用于数据查询的动词是( )。 A.CREATE B.SELECT 5. 数据库系统的三级模式结构是( )。 A.外模式、模式、内模式 C.概念模式、逻辑模式、物理模式 二、简答题 C.INSERT D.索引 D.XML支持 D.GRANT B.关系模式、层次模式、网状模式 D.表、视图、索引 1. 简述文件系统阶段与数据库系统阶段的主要区别。 2.列举 MySQL的三种优势并简要说明。 3.简述 SQL语言的四个主要特点。