一、数据库简介
1.1 使用数据库的必要性
使用数据库可以高效且条理分明地存储数据,使人们能够更加迅速、方便地管理数据。
数据库具有以下特点:
- 可以结构化存储大量数据,方便用户进行有效的检索和访问。
- 可以有效地保持数据的一致性、完整性,降低数据的冗余。
- 可以满足应用的共享和安全方面的要求。
1.2 数据库的基本概念
1.2.1 数据
描述事物的符号记录就称为数据。在数据库中,数据是以"记录"的方式存在的,一行数据就是一个记录,一行数据中的每一个字段(列)就是记录所拥有的属性。以下图为例:
图中的记录有编号、姓名、性别、年龄、名族、专业的属性,一共有5条记录。
1.2.2 数据库和数据库表
多个相同属性但不同数据的记录组织在一起,构成了数据库的"表",即表是用来存储具体数据的。而数据库就是由多个表组成的。它是以一定的组织方式存储的相互有关的数据集合。
1.2.3 数据库管理系统和数据库系统
数据库管理系统(Database Management System,DBMS)是实现对数据库资源进行管理的系统软件。在操作系统的支持下,支持用户对数据库的各项操作。主要包括以下功能:
- 数据库的建立和维护:包括建立数据库的结构和数据的录入和转换、数据库的转储与恢复、数据库的重组与性能监视等功能。
- 数据定义功能:包括定义全局数据结构、局部逻辑数据结构、结构存储、保密模式及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不合语义的错误数据被输入或输出。
- 数据操纵功能:包括数据查询统计和数据更新两个方面。
- 数据库的运行管理功能:数据库管理系统的核心,包括并发控制、存取控制、数据库内部维护等功能。
- 通信功能:负责DBMS与其他软件系统之间的通信。
DBMS是一个人-机系统,一般由硬件、操作系统、数据库、DBMS、应用软件和数据库用户组成。用户可以通过DBMS操作数据库,也可以通过应用程序操作数据库。
1.1.4 关系性数据库的基本概念
1.关系数据库的基本结构
关系数据库使用的存储结构是多个二维表格,在每个二维表中,每一行称为一条记录,用来描述一个对象的信息;每一列称为一个字段,用来描述对象的一个属性,代表相应数据库中存储对象的共有属性。数据表与数据库之间存在相应的关联,这些关联用来查询相关的数据。
- 主键和外键
每个数据表中只能有一个主键,且主键字段的属性值不能重复,以保证记录的唯一性。若一个表中,有多个字段都符合属性值不重复这个条件,这些字段就是"候选键",选择其一作为主键即可。例如:
上图中,比编号、姓名、身份证号、专业编号都是候选键,但是姓名字段有可能有重复的值,所以最好不作为主键。注意,主键的值不能为NULL(空)。
- 外键
一个关系数据库通常包含多个表,通过外键(Foreign Key)可以使这些表关联起来。外键是用于建立和加强两个表数据之间的链接的一列或多列。通过将表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就称为第二个表的外键。以下图和上面的图为例:
专业名称表的专业编号在学生信息统计表中也有,而"专业编号"是专业名称表的主键,学生信息统计表的编号就是外键。这个情况下,专业名称表就称为"主表",学生信息统计表就称为"从表"。不建议将外键作为自己的主键。外键的值可以为NULL(空)。
- 数据完整性规则
为了维护数据库中的数据与现实世界的一致性,关系数据库的数据与更新操作必须遵守下列四类完整性规则:
- 实体完整性规则:即一条记录中的主键部分不能为空,否则不能起到唯一标识该记录的作用
- 域完整性规则:也被称为列完整性,指定某一字段所属的一列的取值范围,例如字段为"性别",就之后能填男、女,不可填其他值。
- 应用完整性规则:如果两个表互相关联,那么该规则不允许引用不存在的记录。例如一个员工信息表中没有的名字A,但是在考勤表中有A,这种情况就违背了应用完整性规则。
- 用户定义的完整性规则:用户定义的完整性规则是针对某一具体数据的约束条件,由应用环境决定。它反映某一具体应用所涉及的数据必须满足的语义要求。系统提供定义和检验这类完整性的机制,以便用统一的系统方法进行处理,不再由应用程序承担这项工作。
二、MySQL的编译安装
先以源代码包为例:
- 先安装好MySQL的依赖包、卸载MariaDB、安装cmake以及boost支持包,注意boost与mysql的版本保持一致。
- 创建运行用户mysql,解包,进入解压包的目录中,配置,指定安装目录,配置文件目录,字符集和boost库的位置,之后安装。
- 建立配置文件my.cnf,可以在配置文件中指定监听地址、端口、mysql的安装目录、数据的存放目录、最大连接数、默认字符集以及创建新的表是默认使用的存储引擎。
- 初始化数据库(不初始化无法使用),确定mysql的安装目录,初始化时的用户,数据的存放目录。
- 可以设置环境变量PATH以更方便地执行mysql的命令。
- 添加系统服务,以便通过systemctl对MySQL进行管理。
除了源代码安装之外,最常用的还是yum安装和二进制方式安装。二进制安装方式中,包括rpm版本以及glibc版本。这次以glibc版本为例:
- 先安装一些基础软件包如:gcc、wget、net-tools、lrzsz,以及依赖包libaio
- 创建muysql用户
- 二进制只需要解压mysql的压缩包即可,注意只有名字中带有"glibc"字段的mysql压缩包才能够在解压后直接使用。
- 接下来的配置就与源码包安装相同了。