MySQL数据库

一、数据库简介

1.1 使用数据库的必要性

使用数据库可以高效且条理分明地存储数据,使人们能够更加迅速、方便地管理数据。

数据库具有以下特点:

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

1.2 数据库的基本概念

1.2.1 数据

描述事物的符号记录就称为数据。在数据库中,数据是以"记录"的方式存在的,一行数据就是一个记录,一行数据中的每一个字段(列)就是记录所拥有的属性。以下图为例:

图中的记录有编号、姓名、性别、年龄、名族、专业的属性,一共有5条记录。

1.2.2 数据库和数据库表

多个相同属性但不同数据的记录组织在一起,构成了数据库的"表",即表是用来存储具体数据的。而数据库就是由多个表组成的。它是以一定的组织方式存储的相互有关的数据集合。

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

数据库管理系统(Database Management System,DBMS)是实现对数据库资源进行管理的系统软件。在操作系统的支持下,支持用户对数据库的各项操作。主要包括以下功能:

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

DBMS是一个人-机系统,一般由硬件、操作系统、数据库、DBMS、应用软件和数据库用户组成。用户可以通过DBMS操作数据库,也可以通过应用程序操作数据库。

1.1.4 关系性数据库的基本概念

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

关系数据库使用的存储结构是多个二维表格,在每个二维表中,每一行称为一条记录,用来描述一个对象的信息;每一列称为一个字段,用来描述对象的一个属性,代表相应数据库中存储对象的共有属性。数据表与数据库之间存在相应的关联,这些关联用来查询相关的数据。

  1. 主键和外键

每个数据表中只能有一个主键,且主键字段的属性值不能重复,以保证记录的唯一性。若一个表中,有多个字段都符合属性值不重复这个条件,这些字段就是"候选键",选择其一作为主键即可。例如:

上图中,比编号、姓名、身份证号、专业编号都是候选键,但是姓名字段有可能有重复的值,所以最好不作为主键。注意,主键的值不能为NULL(空)。

  1. 外键

一个关系数据库通常包含多个表,通过外键(Foreign Key)可以使这些表关联起来。外键是用于建立和加强两个表数据之间的链接的一列或多列。通过将表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就称为第二个表的外键。以下图和上面的图为例:

专业名称表的专业编号在学生信息统计表中也有,而"专业编号"是专业名称表的主键,学生信息统计表的编号就是外键。这个情况下,专业名称表就称为"主表",学生信息统计表就称为"从表"。不建议将外键作为自己的主键。外键的值可以为NULL(空)。

  1. 数据完整性规则

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

  1. 实体完整性规则:即一条记录中的主键部分不能为空,否则不能起到唯一标识该记录的作用
  2. 域完整性规则:也被称为列完整性,指定某一字段所属的一列的取值范围,例如字段为"性别",就之后能填男、女,不可填其他值。
  3. 应用完整性规则:如果两个表互相关联,那么该规则不允许引用不存在的记录。例如一个员工信息表中没有的名字A,但是在考勤表中有A,这种情况就违背了应用完整性规则。
  4. 用户定义的完整性规则:用户定义的完整性规则是针对某一具体数据的约束条件,由应用环境决定。它反映某一具体应用所涉及的数据必须满足的语义要求。系统提供定义和检验这类完整性的机制,以便用统一的系统方法进行处理,不再由应用程序承担这项工作。

二、MySQL的编译安装

先以源代码包为例:

  1. 先安装好MySQL的依赖包、卸载MariaDB、安装cmake以及boost支持包,注意boost与mysql的版本保持一致。
  2. 创建运行用户mysql,解包,进入解压包的目录中,配置,指定安装目录,配置文件目录,字符集和boost库的位置,之后安装。
  3. 建立配置文件my.cnf,可以在配置文件中指定监听地址、端口、mysql的安装目录、数据的存放目录、最大连接数、默认字符集以及创建新的表是默认使用的存储引擎。
  4. 初始化数据库(不初始化无法使用),确定mysql的安装目录,初始化时的用户,数据的存放目录。
  5. 可以设置环境变量PATH以更方便地执行mysql的命令。
  6. 添加系统服务,以便通过systemctl对MySQL进行管理。

除了源代码安装之外,最常用的还是yum安装和二进制方式安装。二进制安装方式中,包括rpm版本以及glibc版本。这次以glibc版本为例:

  1. 先安装一些基础软件包如:gcc、wget、net-tools、lrzsz,以及依赖包libaio
  2. 创建muysql用户
  3. 二进制只需要解压mysql的压缩包即可,注意只有名字中带有"glibc"字段的mysql压缩包才能够在解压后直接使用。
  4. 接下来的配置就与源码包安装相同了。
相关推荐
ForRunner12325 分钟前
使用 Python 高分解决 reCAPTCHA v3 的指南
数据库·python·microsoft
躺平的花卷1 小时前
Python爬虫案例六:抓取某个地区某月份天气数据并保存到mysql数据库中
数据库·爬虫·python·mysql
Flying_Fish_roe2 小时前
linux-安全管理-防火墙与网络安全
linux·数据库·oracle
A_cot2 小时前
Redis 的三个并发问题及解决方案(面试题)
java·开发语言·数据库·redis·mybatis
2401_847056552 小时前
Altium Designer脚本工具定制
网络·数据库
神仙别闹3 小时前
基于Python+SQLite的课程管理系统
数据库·sqlite
掐指一算乀缺钱3 小时前
SpringBoot 数据库表结构文档生成
java·数据库·spring boot·后端·spring
少年负剑去3 小时前
django分发路由
数据库·django·sqlite
飞翔的佩奇3 小时前
xxl-job适配sqlite本地数据库及mysql数据库。可根据配置指定使用哪种数据库。
数据库·spring boot·mysql·sqlite·xxl-job·任务调度
吱吱鼠叔4 小时前
MATLAB数据文件读写:1.格式化读写文件
前端·数据库·matlab