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. 接下来的配置就与源码包安装相同了。
相关推荐
打鱼又晒网19 分钟前
【MySQL】数据库精细化讲解:内置函数知识穿透与深度学习解析
数据库·mysql
大白要努力!24 分钟前
android 使用SQLiteOpenHelper 如何优化数据库的性能
android·数据库·oracle
tatasix1 小时前
MySQL UPDATE语句执行链路解析
数据库·mysql
南城花随雪。1 小时前
硬盘(HDD)与固态硬盘(SSD)详细解读
数据库
儿时可乖了1 小时前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
懒是一种态度1 小时前
Golang 调用 mongodb 的函数
数据库·mongodb·golang
天海华兮1 小时前
mysql 去重 补全 取出重复 变量 函数 和存储过程
数据库·mysql
gma9992 小时前
Etcd 框架
数据库·etcd
爱吃青椒不爱吃西红柿‍️2 小时前
华为ASP与CSP是什么?
服务器·前端·数据库
Yz98763 小时前
hive的存储格式
大数据·数据库·数据仓库·hive·hadoop·数据库开发