目录
1.1数据库简介
1.1.1使用数据库的必要性
使用数据库可以高效且条理分明地存储数据,使人们能够更加迅速、方便地管理数据。数据库具有以下特点。
>可以结构化存储大量的数据信息,方便用户进行有效的检?索和访问
>可以有效地保持数据信息的一致性、完整性,降低数据冗余。
>可以满足应用的共享和安全方面的要求。
数据库技术是计算机科学的核心技术之一,具有完备的理论基础。对数据库基本概念的掌握,将有助于对数据库的理解。
1.1.2数据库里的基本概念
1.数据
描述事物的符号记录称为数据(Data)。数字、文字、图形彡、图像、声音、
档案记录等都是数据。
在数据库中,数据是以"记录"的形式按照统一的格式进行存储的,而不是杂乱无章的。相同格式和类型的数据统一存放在一起,而不会拒"人"和"书"混在一起存储。这样,数据的存储就能够井然有序。
2.数据库和数据库表
不同的记录组织在一起,就形成了数据库(Database,DB)的"表"(Tab)1e)。也可以说,表是用来存储具体数据的,那么数据库和表存在什么关系呢?简单地说,数据库就是表的集合。它是以一定的组织方式存储的相互有关的数据集合。例如,关系数据库的表由记己录组成,记录由字段组成,字段由字符或数字组成。它可以供各种用户共享,具具有最小冗余度和较高的数据独立性,它是统一管理的相关数据的集合。通常,娄数据库并不是简单地存储这些数据的,还要表示它们之间的关系。例如,书和人是是存在联系的,书的作者可能就是某个人,因此需要建立书与人的"关系"。这种关系也需要用数据库来表示,因此关系的描述也是数据库的一部分。
3.数据库管理系统和数据库系统
数据库管理系统(DatabaseManagementSystem,DBMS)是实现对数据库资源有效组织、管理和存取的系统软件。它在操作系统的支持下,支持用户对数据库的各项操作。DBMS主要包括以下功能。
>数据库的建立和维护功能:包括建立数据库的结构和数据的主录入与转换、数据库的转储与恢复、数据库的重组与性能监视等功能。
>数据定义功能:包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不合语义的错误数据被输入或输出。
>数据操纵功能:包括数据查询统计和数据更新两个方面。
>数据库的运行管理功能:这是数据库管理系统的核心部分,包包括并发控制存取控制、数据库内部维护等功能。
>通信功能:DBMS与其他软件系统之间的通信,如Access能与与其他0ffice组件进行数据交换。
数据库系统(DatabaseSystem,DBS)是一个人-机系统,一般由硬件、操作系统、数据库、DBMS、应用软件和数据库用户(包括数据库管理员)组成。用户可以通过DBMS操作数据库,也可以通过应用程序操作数据库。应用程序是利用DBMS为解决某个具体的管理或数据处理的任务而编制的一系列命令的有序结合。
数据库管理员(DatabaseAdministrator,DBA)负责数据库的更新和备份、数据库系统的维护、用户管理等工作,保证数据库系统的正常运行。DBA一般由业务水平较高、资历较深的人员担任。
1.1.3数据库发展史
1.数据库系统发展史
(1)初级阶段——第一代数据库
自20世纪60年代起,第一代数据库系统问世。它们是层次模型与网状模型的数据库系统,为统一管理和共享数据提供了有力的支撑。
(2)中级阶段——第二代数据库
20世纪70年代初,第二代数据库--关系数据库开始出现。自1970年IBM 研究员德加 ·考特阐述了关系模型的概念后,IBM大力投入关系数据库的研究。
关系数据库系统将结构化查询语言(StructuredQuery Language,SQL)作为数据定义语言(DataDefinitionLanguage,DDL)和数据操作语言(DataManipulation Language,DML),它一诞生就成为关系数据库的标准语言。SQL使得关系数据库中的数据库表的查询可以通过简单的、声明性的方式进行,大大简化了程序员的工作。
(3)高级阶段——第三代数据库
由于计算机应用的发展,计算机已从传统的科学计算、事务处理里等领域,逐步扩展到工程设计、人工智能、多媒体、分布式等领域,这些新的领域需要有新的数据库支撑,而传统关系数据库系统是以商业应用、事务处理为背景而发展起来的,并不完全适用于新领域的应用,因此,需要新的数据库系统,以满足不同领域的要求。
2.经典数据模型
数据是现实世界中"量"的抽象,而数据模型(Data Model)是数据特征的抽象。在数据库系统中,数据模型是它的核心与基础。数据模型表现为数据的结构、定义在其上的操作及约束条件。它从概念层次上描述了多系统的静态特征动态特征和约束条件,为数据库系统的信息表示与操作提供了一个抽象框架。
(1)网状模型
1数据结构
在网状模型中,数据记录组织成图的形式,使用"数据结构图"进行抽象的分析和表示。
网状模型适合表达复杂的数据关系,也可以将数据冗余减小到最小,它的数据结构模型能直观反映现实中数据之间的联系。
2数据操作
从数据结构的定义上不难看出,网状模型的数据操作是建立在关系链基础上的导航式的操作。针对一个特定的网状模型系统的数据结构,有可能找到最优的查询算法。但是,一旦结构发生变化,就需要新的查询办法。网状莫型以图论为基础,还无法得到一个通用的、高效 的解决方案。所以,随着关系模型的飞速发展和广泛应用,网状模型已经暂时失去其重要性了。
(2)层次模型
1数据结构
层次模型是网状模型的一个特例。在层次模型中,数据记录组织成树的形式,使用"树结构图"进行抽象的分析和表示,适合一对多的关系系模型。
2数据操作
在层次模型上的数据操作不可避免地具有网状模型的特点--导航性。但是,由于禁止了多对一和多对多的关系,因此数据操作相对网状模型而言简单了许多。这样的结构有利于提高数据的查询效率,但数据存取上还存在着必须导航的马要求。因此,层次模型的数据库在数据操作上依然比较复杂。
3数据约束
层次模型的数据约束与网状模型相似,由于结构的简化,去草了网状模型中多对多和多对一的关系,数据约束处理的复杂性按级数下降。所以,层次模型的数据约束可以做到适当的系统实现,但很多还是依靠应用程序序本身实现
(3)关系模型
1数据结构
关系模型建立在关系代数的理论基础上,数据结构使用简单易易懂的二维数据表,可以用简单的"实体-关系"(E-R)图来直接表示,E-R图中包含了实体(数据对象)、关系和属性三个要素.
>实体:也称为实例,对应现实世界中可区别于其他对象的"事件"或"事物,如银行客户、银行账户等。
>实体集:具有相同类型及共享相同性质的实体集合。例如,每银行所有客户的集合可以定义为"银行客户"实体集。
>属性:实体所具有的某一特性,一个实体可以有多个属性。例别如,"银行客户"实体集中的每个实体均具有姓名、住址、电话等属性。
>联系:实体集之间的对应关系称为联系,也称为关系。例如,银行客户和银行账户之间存在"储蓄"的关系。
2数据操作
对于数据库的用户而言,关系模型使用从关系代数上抽象出来来的数据库操作语言(DML)进行操作。结构化查询语言(SQL)就是其中最重要的一种,已经成为关系数据库的标准操作语言。它的特色是直接面向结果,简化操作步骤,使得数据居库应用的设计变得非常简单易懂。
3数据约束
关系模型的数据约束可以针对实体,也可以针对实体的属性,还可以针对关系,并可以在定义实体、实体属性和关系时全面实现。关系模型使用的数据定义语言(DDL)和关系模型在理论上对关系数据库核心实现的要习求,使得数据约束可以很容易实现,但是它的效率并不高。
3.当今主流数据库介绍
(1)关系数据库
20世纪80~90年代是关系数据库产品发展和竞争的时代代。在市场逐渐淘汰了第一代数据库管理系统的大局面下,SQLServer、Oracle、IBM DB2、MySQL等一批很有实力的关系数据库产品走到了主流商用数据库的位置。
1 SQL Server简介
SQLServer是Microsoft公司的数据库产品,在设计上大量利用了MicrosoftWindows操作系统的底层结构,直接面向MicrosoftWindows,尤其是Windows系列服务器操作系统的用户。
2 0racle简介
Oracle公司成立于1977年,最初就是专门的数据库公司。1998年9月,Oracle公司正式发布 Oracle8i,"i"代表Internet,这一版本中添加了大量为支持 Internet而设计的特性。这一版本为数据库用户提供了全方位的Java支持。
3 DB2简介
1970年,IBM公司的一位研究员德加·考特发表论文,提出"关系模型"的概念。此后,他被称为"关系数据库之父"。IBM公司投入巨资,开展包括"SystemR"和"SystemR*"项目在内的关系数据库技术的研开究。13年后,在"SystemR"和"SystemR*"项目的基础上,DB2以SSystemR为原型面世。
4 MySQL简介
MySQL也是一个关系型数据库管理系统,现已被Oracle公司收购。它与上述大型数据库相比,有不足之处,但是这丝毫没有减少它受欢迎的程度MySQL运行于Linux操作系统之上,Apache和Nginx作为Web服务器,MySQL作为后台数据库,PHP/Perl/Python作为脚本解释器。这四款软件都是免费或开源的,也就是说,企业可以不花一分钱(除人工外)就能建立起一个稳定、高速的网站系统,业内称为"LAMP"组合。因此,其以体积小、速度快、开源等特点,霸占了中小型网站相当大的市场。
(2)非关系数据库
非关系数据库也被称作NoSQL(Not OnlySQL),存储数据不!以关系模型为依据,不需要固定的表格式。非关系型数据库作为关系数据库的一个补充,在日益快速发展的网站时代,发挥着高效率与高性能。
非关系型数据库的优点:
>数据库高并发读写的需求
>对海量数据高效率存储与访问
>数据库的高扩展性与高可用性的需求
1.1.4关系数据库的基本概念
1.关系数据库的基本结构
关系数据库是由数据表之间的关联组成的。其中:
>数据表通常是一个由行和列组成的二维表,每一个数据表分别认说明数据库中某一特定的方面或部分的对象及其属性。
>数据表中的行通常叫做记录或者元组,它代表众多具有相同属性的对象中的一个。
>数据表中的列通常叫做字段或者属性,它代表相应数据库中存储对象的共有属性。
2.主键与外键
(1)主键
数据表中的每行记录都必须是唯一的,而不允许出现完全相同的记录,通过定义主键(主关键字,PrimaryKey)可以保证记录(实体)的吗唯一性。
键,即关键字,它是关系模型中一个非常重要的元素。
主键唯一标识表中的行数据,一个主键值对应一行数据。主键由一个或多个字段组成,其值具有唯一性,不允许取空值(NULL)。一个表只能有一个主键。
(2)外键
一个关系数据库通常包含多个表,通过外键(Foreign Key)可以便这些表关联起来。
外键是用于建立和加强两个表数据之间的链接的一列或多多列。通过将表中主键值的一列
或多列添加到另一个表中,可创建两个表之间的链接。这个列就称为第二个表的外键。
3.数据完整性规则
(1)实体完整新规则
实体完整新规则要求关系中的元组在主键的属性不能有控值。如果出现空值,那么主键值就起不到唯一标识元组的作用。
(2)域完整性规则
域完整性也称列完整新,指定一个数据集对某一个列是否有效或确定是否允许空值。
(3)引用完整性规则
如果两个表之间相互相连,那么引用完整新规则要求不允许引用不存在的元组。
(4)用户定义的完整性规则
用户定义的完整性规则是针对某一具体数据的约束条件,由应用环境决定。它反映某一具体应用所涉及的数据必须满足的语义要求。系统提供定义和检验这类完整性的机制,以便用统一的系统方法进行处理,不再由应用程序承担这项工
1.2 MySQL服务基础
MySQL是一个真正的多线程、多用户的 SQL数据库服务,凭什借其高性能高可靠和易于使用的特性,成为服务器领域中最受欢迎的开源数女据库系统。在2008年以前,MySQL项目由MySQLAB公司进行开发、发布和支持,之后历经Sun公司收购MySQLAB公司,Oracle公司收购Sun公司的过程,目前MySQL项目由 Oracle公司负责运营和维护。
1.2.1 MySQL的二进制安装
1.基础环境准备
如果采用OpenEulerminimal安装的系统,在使用前需要安装一些基础软件包工具。
[root@localhost`]# dnf -y install gcc vim wget net-tools lrzsz tar
安装MySQL依赖的软件包
[root@localhost~]# dnf install -y libaio numactl openssl ncurses-co
mpat-libs
创建运行MySQL程序的用户
[root@localhost~]useradd -M -s /sbin/nologin mysql
关闭SELinux和防火墙
[root@localhost`]# sed_-i_'s/SELINUX=enforcing/SELINUX=disabled/
etc/selinux/config
[root@localhost^]# setenforce 0
[root@localhost`]# systemctl disable firewalld
[root@localhost`]# systemctl stop firewalld
2.二进制安装
二进制安装的版本采用跟上面编译安装的版本一样MySQL8.0.36。首先需要
下载该软件包或者提前上传,然后再解压进行配置。
[root@localhost`]# tar xf mysql-8.0.36-linux-glibc2. 28-x86_64. tar. xz
[root@localhost~]# mv mysql-8.0.36-linux-glibc2.28-x86_64 /usr/loca1/mysql
[root@localhost~]# mkdir /usr/local/mysql/data
[root@localhost~]# chown -R mysql:mysql /usr/local/mysql
[root@localhost~]# cd /usr/local/mysql/bin[root@localhost ^]#./mysqld --initialize --user=mysql--basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
2025-03-19T13:28.959651Z0 [System] [MY-013169] [Server] /usr/loca
1/mysql/bin/mysqld (mysqld 8.0.36) initializing of server in progress
as process 6414
2025-03-19T13:28.968618Z 1 [System] [MY-013576] [InnODB] InnoDB in
itialization has started.
2025-03-19T13:28:29.141927Z 1 [System] [MY-013577] [InnODB] InnoDB in
itialization has ended.
2025-03-19T13:28:30.473508Z 6 [Note] [MY-010454] [Server] A temporary
password is generated for root@localhost: Xr6:Gg*u89/8此次初始化没有采用无密码模式,因此会生成初始随机密码,需要保存,用以后续登录mysql数据库使用
3.设定配置文件
MySQL的配置文件跟上面编译安装的配置文件类似。
[root@localhost~]# vi /etc/my.cnf
[client]
socket=/usr/local/mysql/data/mysql.sock
[mysqld]
socket=/usr/local/mysql/data/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
port = 3306
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
max_connections=2048
character-set-server=utf8
default-storage-engine=INNODB
max_allowed_packet=16M
将MySQL的可执行文件写入环境变量中。
[root@localhost~]# echo "export PATH=$PATH:/usr/local/mysql/bin">>/etc/profile
[root@localhost~]# . /etc/profile //使配置在当前Shell中生效
4.配置systemctl方式启动
将MySQL添加成为系统服务,通过使用systemctl来管理。在/usr/local/mysql/support-files 目 录 下 找到 mysql.serveer文件,将其复制到/etc/rc.d/init.d目录下,改名为mysqld并赋予可执行权限。
[root@localhost ^]# cp /usr/local/mysql/support-files/mysql. server /etc/rc.d/init.d/mysqld
[root@localhost~]# chmod +x /etc/rc.d/init.d/mysqld
编辑生成mysqld.service服务,通过 systemctl方式来管理
[root@localhost~]# vim /lib/systemd/system/mysqld. service
[Unit]
Description=mysqld
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.d/init.d/mysqld start
ExecReload=/etc/rc.d/init.d/mysqld restart
ExecStop=/etc/rc.d/init.d/mysqld stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target[root@localhost~]# systemctl daemon-reload
[root@localhost~]# systemctl enable mysqld
[root@localhost~]# systemctl start mysqld
[root@www~]# netstat -tunlp grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN mysqld 1785/mysqld
1.2.2访问MySQL数据库
1.登录到MySQL服务器
[root@localhost~]# mysql -u root -p
Enterpassword://根据提示输入上述的随机的密码,然后修改密码。
Welcome to the MySQL monitor. Commands end with ;or\g
Your MySQL connection id is 10
Server version: 8.0.36
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights re
served.
Oracle is a registered trademark of Oracle Corporationand/or its
affiliates. Other names may be trademarks of theirrespective
owners.
Type'help;' or'\h'for help. Type'\c' to clear thecurrent input
statement.
mysql> alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pwd123';/单引号内为新密码
2.执行MySQL操作语句
验证成功以后将会进入提示符为"mysql>"的数据库操作环境,用户可以输入各种操作语句对数据库进行管理。每一条MySQL操作语句以分号":"表示结束,输入时可以不区分大小写,但习惯上将MySQL语句中的关键字部分大写。
例如,以用户名root登录到"mysql>"环境后,执行"SSHOW DATABASES"语句可以查看当前数据库中有哪些库。
[root@localhost~]# mysql -u root -p123456
mysql>SHOW DATABASES;
.........mysql>
3.退出mysql>操作环境
在"mysql>"操作环境中,执行"EXIT"或"QUIT"命令便可以退出mysql命令工具,返回原来的Shell环境。
mysql>EXIT
Bye
[root@localhost~]#