MySQL 数据库初体验

1.1 数据库简介

1.1.1 使用数据库的必要性

  • 可以结构化存储大量的数据信息,方便用户进行有效的检索和访问。
  • 可以有效地保持数据信息的一致性、完整性,降低数据几余。
  • 可以满足应用的共享和安全方面的要求。

1.1.2 数据库的基本概念

1、数据

        描述事物的符号记录称为数据(Data)。数字、文字、图形、图像、声音、档案记录等都是数据。
        在数据库中,数据是以“记录”的形式按照统一的格式进行存储的,而不是杂乱无章的。相同格式和类型的数据统一存放在一起,而不会把“人”和“书”混在一起存储。这样,数据的存储就能够井然有序。

2、数据库和数据库表

        不同的记录组织在一起,就形成了数据库(Database,DB)的“表”(Table)。也可以说,表是用来存储具体数据的,如图1.1所示。那么数据库和表存在什么关系呢?简单地说,数据库就是表的集合。它是以一定的组织方式存储的相互有关的数据集合。例如,关系数据库的表由记录组成,记录由字段组成,字段由字符或数字组成。它可以供各种用户共享,具有最小冗余度和较高的数据独立性,它是统一管理的相关数据的集合。
        通常,数据库并不是简单地存储这些数据的,还要表示它们之间的关系。例如,书和人是存在联系的,书的作者可能就是某个人,因此需要建立书与人的“关系”。这种关系也需要用数据库来表示,因此关系的描述也是数据库的一部分。

3、数据库管理系统和数据库系统

        数据库管理系统(Database Management System,DBMS)是实现对数据库资源有效组织管理和存取的系统软件。它在操作系统的支持下,支持用户对数据库的各项操作。DBMS主要包括以下功能。

  • 数据库的建立和维护功能:包括建立数据库的结构和数据的录入与转换、数据库的转储与恢复、数据库的重组与性能监视等功能。
  • 数据定义功能:包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不合语义的错误数据被输入或输出。
  • 数据操纵功能:包括数据查询统计和数据更新两个方面
  • 数据库的运行管理功能:这是数据库管理系统的核心部分,包括并发控制、存取控制、数据库内部维护等功能。
  • 通信功能:DBMS 与其他软件系统之间的通信,如 Access 能与其他 Office 组件进行数据交换。

        数据库系统(Database System,DBS)是一个人-机系统,一般由硬件、操作系统、数据库、DBMS、应用软件和数据库用户(包括数据库管理员)组成。用户可以通过 DBMS 操作数据库,也可以通过应用程序操作数据库。

        应用程序是利用 DBMS 为解决某个具体的管理或数据处理的任务而编制的一系列命令的有序集合。如果应用程序比较完善,能够提供友好的人机界面,并编译成可执行文件发行,使得普通用户不需要具备计算机的专业知识,在较短时间就学会使用,那么就称为数据库应用软件。

        常用的数据库应用软件有人事管理、财务管理、图书管理等信息管理软件及各类信息咨询系统等

        数据库管理员(Database Administrator,DBA)负责数据库的更新和备份、数据库系统的维护、用户管理等工作,保证数据库系统的正常运行。DBA一般由业务水平较高、资历较深的人员担任。

1.1.3 数据库发展史

1、数据库系统发展史

        数据库技术的发展已经成为先进信息技术的重要组成部分,是现代计算机信息系统和计算机应用系统的基础和核心。数据库技术最初产生于 20世纪 60年代中期,根据数据模型的发展,可以划分为三个阶段:第一代的网状、层次数据库系统;第二代的关系数据库系统;第三代的以面向对象模型为主要特征的数据库系统。

(1)初级阶段--第一代数据库

        自 20 世纪 60年代起,第一代数据库系统问世。它们是层次模型与网状模型的数据库系统,为统一管理和共享数据提供了有力的支撑。在这个阶段中,数据库的代表是 1969 年 IBM公司研制的层次模型的数据库管理系统--IMS(Information Management System,信息管理系统)和 20世纪 70年代美国数据系统语言协会(CODASYL)下属数据库任务组(DBTG)提议的网状模型。

(2)中级阶段--第二代数据库

        20 世纪 70年代初,第二代数据库--关系数据库开始出现。自 1970年 IBM 研究员德加·考特阐述了关系模型的概念后,IBM 大力投入关系数据库的研究。关系数据库的底层实现起来比较容易,所以很快被采用,并进入了众多商业数据库的研发计划。0racle 就是当时应关系数据模型的出现而成立的一家专做(关系)数据库的公司。20世纪 80年代初,IBM公司的关系数据库系统DB2 问世,而 0racle 公司也将 0racle 数据库移植到桌面计算机上。这时,作为第二代数据库系统的关系数据库,开始逐步取代层次与网状模型的数据库,成为占主导地位的数据库,成为行业主流。到目前为止,关系数据库系统仍占领数据库应用的主要地位。
        关系数据库系统将结构化查询语言(Structured Query Language,SQL)作为数据定义语言(Data Definition Language,DDl)和数据操作语言(Data Manipulation Language,DML),它一诞生就成为关系数据库的标准语言。SQL 使得关系数据库中的数据库表的查询可以通过简单的、声明性的方式进行,大大简化了程序员的工作。

        关系数据库系统构筑在比较高的软件层次上,执行查询的效率普遍偏低。另外,严格的、标准的关系数据库是一个纯理论的模型。如果完全按照关系模型实现,会涉及很多方面的问题,其中一条就是效率不高。在现实环境中,考虑到商业运用的目的,数据库生产厂商各自加入了一些提高效率和提高可用性的功能,舍弃了一些不太现实的约束。不同的数据库厂商在不同基础上的选择,导致了关系数据库系统向不同方向上的变迁。例如,在这个阶段中,0racle加入了“并行”的元素,并开始了向“关系-对象”型数据库的变迁。这样的变迁,也慢慢引出了新一代的数据库系统。

(3)高级阶段--第三代数据库

        由于计算机应用的发展,计算机已从传统的科学计算、事务处理等领域,逐步扩展到工程设计、人工智能、多媒体、分布式等领域,这些新的领域需要有新的数据库支撑,而传统关系数据库系统是以商业应用、事务处理为背景而发展起来的,并不完全适用于新领域的应用,因此,需要新的数据库系统,以满足不同领域的要求。
        自20世纪80年代开始,各种适应不同领域的新型数据库系统不断涌现,如工程数据库、多媒体数据库、图形数据库、智能数据库、分布式数据库及面向对象数据库等,特别是面向对象数据库系统,由于其实用性强、适应面广而受到人们的青睐。20 世纪 90 年代后期,形成了多种数据库系统共同支撑应用的局面。当然,在商务应用方面,依然还是关系数据库占主流。不过,已经有一些新的元素被添加进主流商务数据库系统中。例如,0racle 支持的“关系-对象”数据库模型。
        随着科学技术的发展,计算机技术不断应用到各行各业。数据存储需求的不断膨胀,对未来的数据库技术将会有更高的要求。

2、经典数据模型

        数据是现实世界中“量”的抽象,而数据模型(Data Model)是数据特征的抽象。在数据库系统中,数据模型是它的核心与基础。数据模型表现为数据的结构、定义在其上的操作及约束条件。它从概念层次上描述了系统的静态特征、动态特征和约束条件,为数据库系统的信息表示与操作提供了一个抽象框架。

        在 DBMS 的发展过程中,出现了网状模型、层次模型和关系模型三种经典的数据模型。由于受限于数学基础、编程技术和硬件条件,最初出现的层次模型和网状模型与关系模型相比,在用户接口的上、中层部分更易于实现。所以,这在很长一段时间阻碍了关系模型的发展。

        数据模型所描述的内容包括三方面:数据结构、数据操作和数据约束

(1)网状结构

        ①数据结构

        在网状模型中,数据记录组织成图的形式,使用“数据结构图”进行抽象的分析和表示。

  • 一个银行客户可以拥有多个银行账号(一对多)
  • 一个银行账号也可以被多个客户所有(一对多)。
  • 每个银行账户位于特定的银行支行(一对一)。

        其中更蕴含着客户和银行之间多对多、多对一的关系。这样复杂的数据关系,在网状模型上可以得到很好的支持。

        ②数据操作

        从数据结构的定义上不难看出,网状模型的数据操作是建立在关系链基础上的导航式的
操作。

        针对一个特定的网状模型系统的数据结构,有可能找到最优的查询算法。但是,一旦结构发生变化,就需要新的查询办法。网状模型以图论为基础,还无法得到一个通用的、高效的解决方案。所以,随着关系模型的飞速发展和广泛应用,网状模型已经暂时失去其重要性

        ③数据约束

        网状模型的数据约束是零散孤立的,或者分散在各个节点,或者集中成为一种关系链,这样容易导致不一致性或降低效率。所以,通常网状模型不具体实现数据约束,而由应用程序自身来实现数据约束。这样的情况也使得在网状模型基础上的开发变得困难重重。

(2)层次模型

        ①数据结构

        层次模型是网状模型的一个特例。在层次模型中,数据记录组织成树的形式,使用“树结构图”进行抽象的分析和表示,适合一对多的关系模型

  • 企业下辖多个部门(一对多)。
  • 部门下辖多个科室(一对多)。
  • 科室下辖多个小组(一对多)。

        相对于网状模型,层次模型禁止了多对多和多对一的关系,对简单。使得它的数据结构相对简单。

        ②数据操作

        在层次模型上的数据操作不可避免地具有网状模型的特点--导航性。但是,由于禁止了多对一和多对多的关系,因此数据操作相对网状模型而言简单了许多。这样的结构有利于提高数据的查询效率,但数据存取上还存在着必须导航的要求。因此,层次模型的数据库在数据操作上依然比较复杂。

        ③数据约束

        层次模型的数据约束与网状模型相似,由于结构的简化,去掉了网状模型中多对多和多对一的关系,数据约束处理的复杂性按级数下降。所以,层次模型的数据约束可以做到适当的系统实现,但很多还是依靠应用程序本身实现。
        层次模型的实现技术比关系模型优越,比网状模型简单,所以一直独领风骚。它的代表是 IBM 公司的IMS系统。该系统曾是使用最早和最广的几个数据库之一,在历史上曾是最大的数据库之一,由于它的开发者是最早开始处理并发、恢复、完整性和高效查询等问题的人,其中的一些技术和思想自然应用到 DB2中,这是 DB2 长盛不衰的根源。DB2有许多性能是非常优秀的,与这段历史不无关系。

(3)关系模型

        ①数据结构

        关系模型建立在关系代数的理论基础上,数据结构使用简单易懂的二维数据表,可以用简单的“实体-关系”(E-R)图来直接表示,E-R图中包含了实体(数据对象)、关系和属性三个要素。

  • 实体:也称为实例,对应现实世界中可区别于其他对象的“事件”或“事物”,如银行客户、银行账户等。
  • 实体集:具有相同类型及共享相同性质的实体集合。例如,银行所有客户的集合可以定义为“银行客户”实体集。
  • 属性:实体所具有的某一特性,一个实体可以有多个属性。例如,“银行客户”实体集中的每个实体均具有姓名、住址、电话等属性。
  • 联系:实体集之间的对应关系称为联系,也称为关系。例如,银行客户和银行账户之间存在“储蓄”的关系。
             需要注意的是,虽然在银行客户看来,自己的账户和别人的账户完全不同,是唯的。但是,银行内部往往还是会使用内部编码来区分管理和服务等不同业务。
     

        ②数据操作

        对于数据库的用户而言,关系模型使用从关系代数上抽象出来的数据库操作语言(DML)进行操作。结构化查询语言(SQL)就是其中最重要的一种,已经成为关系数据库的标准操作语言。它的特色是直接面向结果,简化操作步骤,使得数据库应用的设计变得非常简单易懂。

        对于数据库的物理结构而言,关系数据库系统的数据结构简单、功能强、数据独立性高、理论基础坚实。严格的关系数据库以二维的数据库表作为基本数据结构,利用简单或复杂的索引技术实现查询算法,实现起来相对比较简单,也方便了预编译技术将 SQL语言直接转化为有效的数据检索算法。

        ③数据约束

        关系模型的数据约束可以针对实体,也可以针对实体的属性,还可以针对关系,并可以在定义实体、实体属性和关系时全面实现。关系模型使用的数据定义语言(DDL)和关系模型在理论上对关系数据库核心实现的要求,使得数据约束可以很容易实现,但是它的效率并不高。
        综合来说,关系模型相比网状模型和层次模型有更为坚实和完整的理论基础。相比层次模型和网状模型而言,关系模型与用户更靠近些,而网状模型和层次模型与底层实现的结合更紧密。这样的特色也更容易让关系模型成为商业数据库的选择。

3、当代主流数据库介绍

(1)关系数据库

        20 世纪 80~90年代是关系数据库产品发展和竞争的时代。在市场逐渐淘汰了第一代数据库管理系统的大局面下,SQL Server、0racle、IBM DB2、MySQL,等一批很有实力的关系数据库产品走到了主流商用数据库的位置。

①SQL Server简介

        是 Microsoft 公司的数据库产品,在设计上大量利用了 MicrosoftWindowsSOlserver操作系统的底层结构,直接面向 Microsoft Windows,尤其是 Windows 系列服务器操作系统的用户。
        Microsoft Windows 拥有众多的用户群,Microsoft 所有的产品都遵循统一的操作习惯。
对数据库基本概念熟悉的 Windows用户,可以很快地学会使用 SQL Server,上手比较容易。
Windows 系统的易用性也让数据库管理员可以更容易、更方便、更轻松地进行管理。
        Microsoft 公司针对市场的需求,不断扩展其性能,使得 SQL Server 在网络数据库服务和电子商务方面展示了强大的性能。

②Oracle简介

        0racle 公司成立于 1977 年,最初就是专门的数据库公司。

        1998年9月,0racle公司正式发布0racle8i,“i”代表 Internet,这一版本中添加了大量为支持 Internet 而设计的特性。这一版本为数据库用户提供了全方位的 Java 支持

        在 2001年6月的 0racle 0pen World 大会中,0racle 公司发布了 0racle 9i,包含应用集群软件 Real Application Clusters(RAC)和商务智能(BI)功能。

        2004年2月,0racle 公司发布了 0racle 10g版本,“g”代表 grid(网格)。这一版的最突出特性就是加入了网格计算的功能。
        2013年6月,0racle12c正式发布,该版本提供了先进的技术堆管理、安全的数据库管理及企业级的服务管理,使企业能够快速实现私有云。
        数据库领域 0racle 公司在很长一段时间内一直处于领先地位,不仅数据库核心相当优秀,而且其相关的支持产品也相当完善和全面。0racle 能适应 70 多种操作系统,这也是其他产品难以企及的优势。不过随着云计算的不断发展,以 0racle 为代表的传统数据库正在逐渐失势,云数据库时代正在来临。2019年10月15日亚马逊宣布永久关闭 0racle 数据库业务。可以说亚马逊关闭 0racle 既是自身产业转型升级的需要,也是云计算领域发展迈出的重要一步。如今已经有越来越多的企业开始上云,抛弃传统数据库,转而使用云数据库,推动着云计算的不断发展。

③DB2 简介

        1970年,IBM 公司的一位研究员德加·考特发表论文,提出“关系模型”的概念。此后他被称为“关系数据库之父”。IBM 公司投入巨资,开展包括“SystemR”和“SystemR*”项目在内的关系数据库技术的研究。13年后,在“SystemR”和“SystemR*”项目的基础上,DB2 以 SystemR 为原型面世。
        DB2 支持从 PC到 UNIX,从中小型机到大型机,从 IBM 到非 IBM(HP及 Sun UNIX 系统等)的各种操作系统平台。其中,服务器平台可以是 0S/400、AIX、0S/2、HP-UNIX、Sun Solaris等操作系统,客户机平台可以是 0S/2或 Windows、DOS、AIX、HP-UX、Sun Solaris 等操作系统。但是,DB2服务器端的最佳运行环境还是IBM自己的操作系统平台0S/400。
        DB2 数据库核心又称为 DB2 通用服务器,可以运行于多种操作系统之上,它根据相应的平台环境做了调整和优化,以便达到较好的性能。由于IBM公司在商用服务器领域内的长期优势,在全球 500 强的企业中,超过 80%的企业曾使用 DB2 作为数据库平台。

④MySQL简介

        MySQL 也是一个关系型数据库管理系统,现已被 0racle 公司收购。它与上述大型数据库相比,有不足之处,但是这丝毫没有减少它受欢迎的程度。
        MySQL 运行于 Linux 操作系统之上,Apache 和 Nginx 作为 Web 服务器,MySQL, 作为后台数据库,PHP/Perl/Python作为脚本解释器。这四款软件都是免费或开源的,也就是说,企业可以不花一分钱(除人工外)就能建立起一个稳定、高速的网站系统,业内称为“LAMP”组合。因此,其以体积小、速度快、开源等特点,霸占了中小型网站相当大的市场。

(2)非关系数据库

        非关系数据库也被称作 NoSQL(Not Only SQL),存储数据不以关系模型为依据,不需要固定的表格式。非关系型数据库作为关系数据库的一个补充,在日益快速发展的网站时代发挥着高效率与高性能。

优点:

  • 数据库高并发读写的需求
  • 对海量数据高效率存储与访问
  • 数据库的高扩展性与高可用性的需求

常用的非关系数据库例如 Memcached、Redis、MongoDB、HBase

1.1.4关系数据库的基本概念

        关系数据库系统是基于关系模型的数据库系统,是关系模型应用到数据库领域的实例化。它的基本概念来自于关系模型。

1.关系数据库的基本结构

        关系数据库使用的存储结构是多个二维表格,即反映事物及其联系的数据描述是以平面表格形式体现的。
        在每个二维表中,每一行称为一条记录,用来描述一个对象的信息;每一列称为一个字段,用来描述对象的一个属性。数据表与数据库之间存在相应的关联,这些关联用来查询相关的数据。

  • 数据表通常是一个由行和列组成的二维表,每一个数据表分别说明数据库中某一特定的方面或部分的对象及其属性。
  • 数据表中的行通常叫做记录或者元组,它代表众多具有相同属性的对象中的一个。
  • 数据表中的列通常叫做字段或者属性,它代表相应数据库中存储对象的共有属性。

2.主键与外键

(1)主键

        数据表中的每行记录都必须是唯一的,而不允许出现完全相同的记录,通过定义主键(主关键字,Primary Key)可以保证记录(实体)的唯一性。

        键,即关键字,它是关系模型中一个非常重要的元素。

        主键唯一标识表中的行数据,一个主键值对应一行数据。主键由一个或多个字段组成,其值具有唯一性,不允许取空值(NULL)。一个表只能有一个主键。
        如果一个属性集能唯一地标识表的一行而又不含有多余的属性,那么这个属性集称为候选键。表中可以有多个候选键,但是只能有一个候选键可以选作表的主键,所有其他候选键称为备用键。例如,在图 1.7所示的“学生信息统计表”中,{编号}、{身份证号}或{姓名专业编号}都可以说是候选键,可以将{编号}定义为主键。

(2)外键

        个关系数据库通常包含多个表,通过外键(Foreign Key)可以使这些表关联起来。

        外键是用于建立和加强两个表数据之间的链接的一列或多列。通过将表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就称为第二个表的外键。例如,在图1.8所示的“专业名称表”中,字段{专业编号}是该表的主键,在图 1.7所示的“学生信息统计表”中也有一个字段{专业编号},则该字段称为“学生信息统计表”的外键。
        在图1.7和图1.8中,“专业名称表”就称为“主表”“学生信息统计表”就称为“从表”。“主表”和“从表”总是成对出现的,相互之间以“外键”形成关联。

3.数据完整性规则

(1)实体完整性规则

        实体完整性规则要求关系中的元组在主键的属性上不能有空值。如果出现空值,那么主键值就起不到唯一标识元组的作用。

(2)域完整性规则

        域完整性也称列完整性,指定一个数据集对某一个列是否有效或确定是否允许空值。

(3)引用完整性规则

        如果两个表之间相互关联,那么引用完整性规则要求不允许引用不存在的元组。

(4)用户自定义的完整性规则

        用户定义的完整性规则是针对某一具体数据的约束条件,由应用环境决定。它反映某具体应用所涉及的数据必须满足的语义要求。系统提供定义和检验这类完整性的机制,以便用统一的系统方法进行处理,不再由应用程序承担这项工作。    


1.2 MySQL安装

1.2.1MySQL的二进制安装

        MySQL,的安装方式除了常规的源码编译安装之外,最常用的还包括 YUM 方式安装和二进制方式安装。二进制安装方式中,包括 rpm 版本以及 glibc 版本。rpm 版本就是在特定 Linux版本下编译的,如果你的Linux 版本匹配,就可以安装。如下载 Cent0s7 系统所对应编译好的 rpm 包安装即可。另外一种二进制安装包是基于特定的 glibc 版本编译的,这里主要讲解基于 glibc 方式安装 MySQL。

1、基础环境准备

        如果采用 Cent0s 7 minima1 安装的系统,在使用前需要安装一些基础软件包工具。

 yum y install gcc vim wget net-tools lrzsz

        安装 MySQL 依赖的软件包。

yum -y install libaio

        创建运行 MySQL 程序的用户。

useradd-M-s /sbin/nologin mysql

        关闭 SELinux 和防火墙

sed -i’s/SELINUX=enforcing/SELINUX=disabled/”/etc/selinux/config
setenforce 0
systemctl disable firewalld
systemctl stop firewalld

2.二进制安装

        二进制安装的版本采用跟上面编译安装的版本一样 MySQL 5.7.28。首先需要下载该软件包或者提前上传,然后再解压进行配置。
        标红的地方则是初始化密码,后期进行修改。

3.设定配置文件

        MySQL 的配置文件跟上面编译安装的配置文件类似。
        将 MySQL 的可执行文件写入环境变量中。

4.配置 systemctl方式启动

        将MySQL添加成为系统服务,通过使用systemctl来管理。在/usr/local/mysql/support-files日录下找到mysql.server 文件,将其复制到/etc/rc.d/init.d 目录下,改名为 mysqld 并赋予可执行权限。
        编辑生成 mysqld.service 服务,通过 systemctl 方式来管理。

1.2.2 访问MySQL数据库

        MySQL,数据库系统也是一个典型的C/S(客户端/服务器)架构的应用,要访问 MySQL数据库需要使用专门的客户端软件。在 Linux 系统中,最简单、易用的 MySQL 客户端软件是其自带的mysql命令工具

1.登录到 MySQL 服务器

        经过安装后的初始化过程,MySQL 数据库的默认管理员用户名为“root”,密码为给定的随机密码。以 root 用户登录本机的 MySQL, 数据库,可以执行以下操作。

        MySQL5.7版本默认启用了密码增强插件 validate_password,新密码必须符合密码复杂性要求。如果在测试环境中,可以禁用此插件。

2.执行 MySQL 操作语句

        验证成功以后将会进入提示符为“mysql>的数据库操作环境,用户可以输入各种操作语句对数据库进行管理。每一条 MySQL操作语句以分号“;”表示结束,输入时可以不区分大小写,但习惯上将 MySQL 语句中的关键字部分大写。
        例如,以用户名 root 登录到“mysql>”环境后,执行“SHOW DATABASES;”语句可以查看当前数据库中有哪些库。

3.退出“mysql>”操作环境

        在“mysql〉”操作环境中,执行“EXIT”或“QUIT”命令便可以退出 mysql 命令工具,返回原来的 Shell 环境。

  • 17
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值