MySQL 数据库初体验

目录

1.1 数据库简介

1.1.1 使用数据库的必要性

1.1.2  数据库的基本概念

1.数据

2.数据库和数据库表

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

1.1.3 数据库发展史

1.数据库系统发展史

(1)初级阶段——第一代数据库

(2)中级阶段——第二代数据库

(3)高级阶段——第三代数据库

2.经典数据模型

(1)网络模型

(2)层次模型

(3)关系模型

3.当今主流数据库介绍

(1)关系数据库

1-SQL Server 简介

2-Oracle 简介

3-DB2 简介

4-MySQL 简介

(2)非关系数据库

1.1.4 关系数据库的基本概念

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

2.主键与外键

(1)主键

(2)外键

3.数据完整性规则

(1)实体完整性规则

(2)域完整性规则

(3)引用完整性规则

(4)用户定义完整性规则

1.2MySQL 服务基础

1.2.1 MySQL 的编译安装

 解压源码包

创建 MySQL 用户和组

 创建数据目录并设置权限

配置编译选项

编译和安装

 配置 MySQL

 初始化 MySQL 数据目录

 启动 MySQL 服务

 登录 MySQL 并修改密码

设置 MySQL 开机自启


1.1 数据库简介

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

  • 可以结构化存储大量的数据信息,方便用户进行有效的检索和访问。
  • 可以有效地保持数据信息的一致性、完整性,降低数据冗余。
  • 可以满足应用的共享和安全方面的要求。
    数据库技术是计算机科学的核心技术之一,具有完备的理论基础。对数据库基本概念的掌握,将有助于对数据库的理解

1.1.1 使用数据库的必要性

      在当今数字化时代,数据量呈爆炸式增长,数据库用于高效地存储、管理和检索大量数据。例如企业的客户信息、订单数据,网站的用户资料、文章内容等都需要数据库来进行管理。使用数据库可以提高数据的安全性、完整性和一致性,同时也能方便数据的共享和协作

1.1.2  数据库的基本概念

1.数据

      是指对客观事物记录下来的、可以鉴别的符号,如数字、文字、图像、声音等。例如学生的成绩(数字)、员工的姓名(文字)等。

2.数据库和数据库表

      数据库是按照数据结构来组织、存储和管理数据的仓库。数据库表是数据库中以行和列的形式存储数据的对象,类似于 Excel 表格。例如一个员工信息数据库中,可能有员工表,包含员工编号、姓名、部门等列,每一行记录一个员工的具体信息。

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

      数据库管理系统(DBMS)是用于管理数据库的软件,如 MySQL、Oracle 等,它提供了创建、查询、更新和删除数据等操作的功能。数据库系统(DBS)则是由数据库、数据库管理系统、数据库管理员、应用程序和用户组成的一个整体。

1.1.3 数据库发展史

1.数据库系统发展史

(1)初级阶段——第一代数据库

    主要是层次数据库和网状数据库。层次数据库以树形结构组织数据,例如早期的企业组织结构数据存储。网状数据库则更复杂,能处理多对多的关系,但数据结构复杂,编程难度较大。

(2)中级阶段——第二代数据库

     关系数据库出现,以二维表格形式存储数据,使用 SQL(结构化查询语言)进行数据操作。关系数据库具有数据结构简单、易于理解和使用等优点,成为了数据库的主流。

(3)高级阶段——第三代数据库

      在关系数据库的基础上,引入了面向对象的概念,增强了数据库的功能,能够处理更复杂的数据类型,如多媒体数据等。

2.经典数据模型

(1)网络模型
  • 数据结构:使用图结构表示数据之间的关系,节点表示记录,边表示关系,能处理多对多的关系。
  • 数据操作:包括插入、删除、修改和查询数据等操作,通过指针来定位和操作数据。
  • 数据约束:确保数据的完整性和一致性,例如记录之间的关联关系必须正确。
(2)层次模型
  • 数据结构:以树形结构组织数据,每个节点表示一个记录类型,根节点只有一个,子节点可以有多个。
  • 数据操作:提供了对数据的增删改查功能,通常通过层次路径来访问数据。
  • 数据约束:保证数据的层次关系正确,例如子节点必须有父节点。
(3)关系模型
  • 数据结构:以二维表格(关系)的形式存储数据,表中的每一行是一条记录,每一列是一个属性。
  • 数据操作:使用 SQL 进行数据操作,如 SELECT(查询)、INSERT(插入)、UPDATE(更新)、DELETE(删除)等。
  • 数据约束:包括实体完整性(主键唯一且非空)、域完整性(数据值必须符合数据类型的要求)、引用完整性(外键必须引用存在的主键值)和用户定义完整性(用户自定义的约束条件)。

3.当今主流数据库介绍

(1)关系数据库
1-SQL Server 简介

      是微软公司开发的关系型数据库管理系统。它具有强大的功能和良好的性能,与 Windows 操作系统紧密集成,安装和配置相对简单。SQL Server 提供了丰富的功能,如智能查询性能增强功能,可使查询计划避开常见问题,针对大规模工作负载进行智能并行调整;具备无与伦比的集成管理功能,可查看本地、Azure 和其他云中部署的所有 SQL Server,并通过监控捕获关键性能指标;在安全方面,通过 Azure Arc 支持自动修补和扩展安全更新,借助 Microsoft Purview 可获取跨所有 SQL 数据库的集中见解和治理。它适用于 Windows 环境下的企业级应用开发,无论是本地部署还是与 Azure 云服务集成,都能为企业提供可靠的数据管理和处理能力。

2-Oracle 简介

      是一款知名的关系型数据库管理系统,以其强大的功能、高度的稳定性和安全性而闻名。它适用于大型企业级应用和关键业务系统,能够处理海量数据和高并发的事务处理。Oracle 支持多种操作系统平台,具有优秀的可扩展性和性能调优能力。它提供了丰富的开发工具和功能,如存储过程、函数、触发器等,方便开发人员进行复杂的业务逻辑处理。同时,Oracle 在数据安全性方面有严格的控制和管理机制,能够满足企业对数据安全的高要求。

3-DB2 简介

      是美国 IBM 公司推出的一套关系型数据库管理系统。它具有跨平台和多语言的特性,主要应用于大型应用系统,可支持从大型机到单用户环境,适用于所有常见的服务器操作系统平台。DB2 提供了高层次的数据利用性、完整性、安全性、可恢复性,以及小规模到大规模应用程序的执行能力,具有与平台无关的基本功能和 SQL 命令。该系统采用数据分级技术,能使大型机数据方便地下载到 LAN 数据库服务器,还拥有完备的查询优化器,支持多任务并行查询,网络支持能力也很好,每个子系统可以连接十几万个分布式用户,可同时激活上千个活动线程,对大型分布式应用系统尤为适用,并且实现了 XML 和关系数据间的无缝交互。

4-MySQL 简介

      是由瑞典 MySQL AB 公司开发,Oracle 旗下的开源关系型数据库管理系统。它体积小、速度快、总体成本低,提供多种存储引擎,支持大型数据,采用结构化查询语言(SQL)。由于这些特点,MySQL 广泛应用于 Internet 上的中小型网站开发,是最流行的数据库管理系统之一。经过多年的发展,MySQL 不断推出新的版本,增加新的功能和性能优化,如 8.0 版本带来了全新体验,支持 NoSQL、JSON 等,性能相比 5.7 版本有两倍以上的提升。

(2)非关系数据库

      包括 NoSQL 数据库,如 MongoDB(文档型数据库)、Redis(键值对数据库)等,适用于处理海量数据、高并发和非结构化数据的场景。

1.1.4 关系数据库的基本概念

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

关系数据库以二维表格形式组织数据,其基本结构包含表、列、行和键等元素。

  • 表(Table):是存储数据的逻辑结构,相当于一个数据集合。例如,在学生管理系统中,可以有 “学生表”“课程表” 等。
  • 列(Column):也叫字段,代表表中的一个数据项。每列有特定的数据类型,如整数型、字符型等。例如 “学生表” 中的 “学号”“姓名”“年龄” 等列。
  • 行(Row):也称作记录,是表中的一条数据。以 “学生表” 为例,一行就对应一个学生的完整信息。
  • 键(Key):用于唯一标识表中的记录,或建立表与表之间的关联,像主键、外键等。

2.主键与外键

(1)主键
  • 定义:是表中的一个或多个字段的组合,能唯一标识表中的每一行记录。
  • 特性
    • 唯一性:表中任意两行记录的主键值不能相同。例如在 “学生表” 中,“学号” 通常可作为主键,每个学生的学号都是独一无二的。
    • 非空性:主键的值不能为 NULL。因为主键的作用是唯一标识记录,若为空则无法准确标识。
  • 作用:确保数据的完整性和准确性,方便对表中记录进行快速查找、更新和删除操作。
(2)外键
  • 定义:是一个表中的字段,它引用了另一个表的主键。
  • 作用:用于建立表与表之间的关联关系。例如有 “学生表” 和 “选课表”,“选课表” 中有 “学号” 字段,该字段可作为外键引用 “学生表” 的 “学号” 主键,以此来关联学生和他们所选的课程。
  • 约束:外键的值必须是被引用表中主键已存在的值,或者为 NULL(前提是外键字段允许为 NULL)

3.数据完整性规则

(1)实体完整性规则
  • 定义:实体完整性指表中行的完整性,主要用于保证操作的数据(记录)非空、唯一且不重复。要求每个关系(表)有且仅有一个主键,每一个主键值必须唯一,而且不允许为 “空”(NULL)或重复。
  • 规则要求:若属性 A 是基本关系 R 的主属性,则属性 A 不能取空值。因为主键是实体数据(记录)的惟一标识,若主属性取空值,关系中就会存在不可标识(区分)的实体数据(记录),这与实体的定义矛盾。例如,学籍关系(表)中主属性 “学号”(列)中不能有空值,否则无法操作调用学籍表中的数据(记录)

(2)域完整性规则

  • 定义:域完整性是指数据库表中的列必须满足某种特定的数据类型或约束,其中约束又包括取值范围、精度等规定。
  • 实现方式:表中的 CHECK、FOREIGN KEY 约束和 DEFAULT、NOT NULL 定义都属于域完整性的范畴。例如,在定义员工年龄列时,可设置数据类型为整数,同时通过 CHECK 约束限定其取值范围在合理区间内,如 18 到 60 岁之间;通过 DEFAULT 约束为性别列设置默认值 “男” 或 “女”;通过 NOT NULL 约束确保员工姓名列不能为空值。
(3)引用完整性规则
  • 定义:参照完整性属于表间规则,体现在两个方面,一是实现了表与表之间的联系,二是外键的取值必须是另一个表的主键的有效值,或是 “空” 值。
  • 规则要求:若属性组 F 是关系模式 R1 的主键,同时 F 也是关系模式 R2 的外键,则在 R2 的关系中,F 的取值只允许两种可能:空值或等于 R1 关系中某个主键值。R1 称为 “被参照关系” 模式,R2 称为 “参照关系” 模式。例如,有 “员工表” 和 “部门表”,“部门表” 的 “部门编号” 是主键,“员工表” 中的 “部门编号” 是外键,那么 “员工表” 中 “部门编号” 的值要么为空,要么是 “部门表” 中存在的 “部门编号” 值,以此保证数据在不同表之间的一致性和关联性。
(4)用户定义完整性规则
  • 定义:用户定义完整性是对数据表中字段属性的约束,也称域完整性规则,包括字段的值域、字段的类型和字段的有效规则(如小数位数)等约束,是由确定关系结构时所定义的字段的属性决定的。
  • 举例:在学生成绩表中,规定百分制成绩的取值范围在 0~100 之间;在员工工资表中,通过用户定义完整性规则限制工资字段的小数位数为 2 位等。

1.2MySQL 服务基础

1.2.1 MySQL 的编译安装

 解压源码包

tar -zxvf mysql-8.0.36.tar.gz
cd mysql-8.0.36

创建 MySQL 用户和组

 groupadd mysql
 useradd -r -g mysql -s /bin/false mysql

 创建数据目录并设置权限

mkdir -p /data/mysql
chown mysql:mysql /data/mysql

配置编译选项

使用 CMake 来配置编译选项,以下是一个示例:

cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_unicode_ci

编译和安装

make
make install

 配置 MySQL

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
ln -s /usr/local/mysql/bin/mysqladmin /usr/bin/mysqladmin

 初始化 MySQL 数据目录

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

初始化完成后,会生成一个临时密码,需要记录下来,后续登录 MySQL 时会用到。

 启动 MySQL 服务

systemctl start mysql

 登录 MySQL 并修改密码

mysql -u root -p

输入之前记录的临时密码,登录成功后,使用以下命令修改密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_password';

设置 MySQL 开机自启

sudo systemctl enable mysql

你可能感兴趣的:(数据库,mysql)