MySQL数据库初体验

发布于:2024-06-21 ⋅ 阅读:(142) ⋅ 点赞:(0)

数据库简介

使用数据库的必要性
使用数据库可以高效且条理分明地存储数据,使人们能够更加迅速、方便地管理数据数据库具有以下特点。

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

数据库的基本概念

数据

描述事物的符号记录称为数据(Data)。数字、文字、图形、图像、声音、档案记录等都是数据。

在数据库中,数据是以“记录”的形式按照统一的格式进行存储的,而不是杂乱无章的。相同格式和类型的数据统一存放在一起,而不会把“人”和“书”混在一起存储。这样,数据的存储就能够井然有序。

数据库和数据库表不同的记录组织在一起,就形成了数据库(Database,DB)的“表”(Table)。也可以说,表是用来存储具体数据的它是以一定的组织方式存储的相互有关的数据集合。例如,关系数据库的表由记录组成,记录由字段组成,字段由字符或数字组成。它可以供各种用户共享,具有最小冗余度和较高的数据独立性,它是统一管理的相关数据的集合。

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

数据库的建立和维护功能:包括建立数据库的结构和数据的录入与转换、数据库的转储与恢复、数据库的重组与性能监视等功能。


数据定义功能:包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不合语义的错误数据被输入或输出。
数据操纵功能:包括数据查询统计和数据更新两个方面。


数据库的运行管理功能:这是数据库管理系统的核心部分,包括并发控制、存取控制、数据库内部维护等功能。


通信功能:DBMS 与其他软件系统之间的通信,如 Access 能与其他 Office 组件进行数据交换。

经典数据模型

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

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

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

关系数据库的基本概念

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

关系数据库的基本结构
关系数据库使用的存储结构是多个二维表格,即反映事物及其联系的数据描述是以平面表格形式体现的。

数据表通常是一个由行和列组成的二维表,每一个数据表分别说明数据库中某一特定的方面或部分的对象及其属性。

数据表中的行通常叫做记录或者元组,它代表众多具有相同属性的对象中的一个

数据表中的列通常叫做字段或者属性,它代表相应数据库中存储对象的共有属性。

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

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

主键唯一标识表中的行数据,一个主键值对应一行数据。主键由一个或多个字段组成,其值具有唯一性,不允许取空值(NULL)。一个表只能有一个主键。

关系数据库的基本概念

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

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

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

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

键,即关键字,它是关系模型中一个非常重要的元素。
主键唯一标识表中的行数据,一个主键值对应一行数据。主键由一个或多个字段组成,其值具有唯一性,不允许取空值(NULL)。一个表只能有一个主键

数据完整性规则


为了维护数据库中的数据与现实世界的一致性,关系数据库的数据与更新操作必须遵守下列四类完整性规则。

实体完整性规则


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

域完整性规则

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

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

用户定义的完整性规则

用户定义的完整性规则是针对某一具体数据的约束条件,由应用环境决定。它反映某具体应用所涉及的数据必须满足的语义要求

2MySQL服务基础

MySQL 是一个真正的多线程、多用户的 SQL 数据库服务,凭借其高性能、高可靠和易于使用的特性,成为服务器领域中最受欢迎的开源数据库系统。

1MySQL的编译安装

为了确保 MySQL,数据库功能的完整性、可定制性,本小节将采用源代码编译的方式安装MySQL 数据库系统。之前在学习 LAMP 时介绍过 MySQL 5.6的编译安装。

1.准备工作

rpm -q mariadb
mariadb-5.5.52-1.el7.x86_64
yum remove mariadb
yum y install gcc gccc++ ncurses-devel openssl openssl-devel

MySQL 5.7源码安装需要 cmake 编译安装,所以先下载最新稳定版本的 cmake 包并安装。官方下载网站:https://cmake.org/download/。

tar zxf cmake-3.16.2.tar.gz
cd cmake-3.16.2
./configure
gmake && gmake install
tar zxf boost 1 _59 0.tar.gz
mv boost 1_59_0/ /usr/local/boost

源码编译及安装

创建运行用户

为了加强数据库服务的权限控制,建议使用专门的运行用户,如mysql用户。此用户不需要直接登录到系统,可以不创建宿主文件夹

groupadd mysql
useradd -M-s /sbin/nologin mysql -g mysql

解包
将下载的 MySQL,源码包解压,释放到/usr/src 目录下,并切换到展开后的源码目录。

tar zxf mysql-5.7.28.tar.gz-C /usr/src
cd /usr/sre/mysql-5.7.28

配置
在内容丰富、结构庞大的企业网站平台中,可能会用到多种字符集的网页,相应地数据库系统也应该支持不同的字符集编码。

cmake-DCMAKE INSTALL PREFIX=/usr/local/mysql-DSYSCONFDIR=/etC-DDEFAULT CHARSET=Utf8-DDEFAULT COLLATION=utf8 general ci-DWITH EXTRA CHARSETS=a11 -DWITH BOOST=/usr/1ocal/boost

编译并安装

make

make install

安装后的其他调整
(1)建立配置文件

vim /etc/my. cnf
[elient]
socket=/usr/local/mysql/data/mysql. sock
[mysqld]
socket=/usr/local/mysql/data/mysgl. sock

(2)初始化数据库

为了能够正常使用 MySQL 数据库系统,应以 mysq1 用户的身份执行初始化,指定数据存放目录等。注意:最后一行会生成一个随机的临时密码,请牢记!

/usr/local/mysql/bin/mysqld--initialize-user=mysql
basedir=/usr/local/mysgl --datadir=/usr/local/mysql/data

(3)设置环境变量

为了方便在任何目录下使用 mysql命令,需要在/etc/profile 设置环境变量。
 

echo "export PATH=$PATH:/usr/local/mysql/bin”>>/etc/profile
./etc/profile       //立即生效

4.添加系统服务

cp support-files/mysql.server /etc/rc.d/init. d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
 vim /lib/systemd/system/mysqld. service
[Unit]
Deseription=mysgld
Aftermnetwork. target
[Service]
Type=forking
ExecStart=/ete/rc.d/init.d/mysgld start
ExecReload /ete/rc.d/init.d/mysgld restart
ExecStop/etc/rc.d/init.d/mysgld stop
Priva teTmptrue
[Install]
WantedBy=multi-user. target
systemctl daemon-reload
systemctl enable mysqld
systemctl start mysqld

这样,以后就可以使用 systemct1 工具或直接调用/etc/init.d/mysqld 脚本来控制MySQL 数据库服务了。例如,若要启动 mysqld 服务,并查看其运行状态,可以执行以下操作。

systemctl start mysqld. service
systemctl status mysqld. service


网站公告

今日签到

点亮在社区的每一天
去签到