MySQL数据库概述
- 1,为什么要使用数据库
- 2,数据库的相关概念
- 3,常见的数据库管理系统
- 4,MySQL介绍
- 5,关系型数据库和非关系型数据库
- 6,关系型数据库的设计规则
- 7,表的关联关系
- 7.1,一对一
- 7.2,一对多
- 7.3,多对多
- 7.4,自我引用
1,为什么要使用数据库
使用数据库是为了对数据进行持久化。 若数据只存储在内存中,断电即失效。因此需要对数据进行持久化,常见的持久化方式如下:
- 存储数据到文件(如:.doc、.java…)
存储数据到数据库
- 其他(如XML文件)
数据库可以存储海量的数据,并且可以存储很复杂的数据,因此具有突出优势。
2,数据库的相关概念
- DB:数据库(DataBase)即存储数据的仓库,保存了一系列有组织的数据;
- DBMS:数据库管理系统(DataBase Management System)是一种操纵和管理数据库的大型软件;
- SQL:结构化查询语言(Structured Query Language),专门用来与数据库通信的语言。
3,常见的数据库管理系统
常见的主流数据库管理系统有:Oracle,MySQL
,Microsoft SQL Server,Redis,MongoDB…
(当前排名如图所示,链接: https://db-engines.com/en/ranking)
4,MySQL介绍
- MySQL是一个开源的关系型数据库管理系统,有体积小、速度快、成本低的优点;
- MySQL两个里程碑式版本是5.7和8.0,目前5.7应用较为广泛;
- MySQL 8.0是继5.7之后的又一里程碑版本,在功能上做出了显著的改进和增强;
5,关系型数据库和非关系型数据库
数据库管理系统可分为 关系型(RDBMS) 和 非关系型(非RDBMS)。从数据库排名中可以看出关系型是DBMS的主流类型。
理解关系型数据库和非关系型数据库:
关系型数据库: 将复杂的数据结构归结为简单的二元关系(即二维表格形式),使用行和列的形式存储数据,以便用户理解;一系列的行和列被称为表(表与表之间的数据记录有关系),一组表组成一个库。SQL就是是关系型数据库的查询语言。
非关系型数据库:可以看作关系型数据库的阉割版本,通过减少一些不常用的功能,进一步提高性能。
6,关系型数据库的设计规则
- 关系型数据库的典型数据结构是数据表,这些数据表的组成都是结构化的;
- 数据放到表中,表再放到库中;
- 数据库中多个表通过表名进行区分,
数据库表名具有唯一性
;
-
此外, 数据库表具有一些特性,这些特性定义了数据在表中如何存储,类似Java和python中的 “类” 的设计。如下图:
① 数据库中的一个表(table)对应Java或Python中的一个实体集(class);
② 数据库表中的一行(row)对应Java或Python中的一个实体(instance)或对象;
③ 数据库表中的一列(column),对应Java或Python中的一个属性(field)或字段;此即为编程领域著名的的ORM(对象关系映射)思想的体现。
7,表的关联关系
表与表之间的数据记录有关系。可分为四种:一对一、一对多、多对多、自我引用。
7.1,一对一
一对一关联,即表A中的一条记录对应表B中的一条记录。
举例:设计
学生表
:学号、姓名、手机号、班级、身份证号、住址、籍贯、紧急联系人…
- 分为两个表,两个表中的记录为一一对应的关系。
- 基础信息表 存放常用信息:学号、姓名、手机号、班级;
- 档案信息表 存放不常用信息:学号、身份证号、住址、籍贯、紧急联系人…
一对一关联在实际开发中应用较少,因为分成两张表存在冗余信息,根据具体情况可以聚合所有字段创建成一张表。
7.2,一对多
一对多关联,即表A中的一条记录对应表B中的多条记录。
举例:客户表和订单表,分类表和商品表、部门表和员工表。
- 一个客户可以对应多个订单;一个分类下可以有多种商品;一个部门里可以有多个员工;
- 员工表:员工编号、姓名、…所属部门;
- 部门表:部门编号、部门名称、部门简介;
7.3,多对多
要表示多对多关系,必须创建第三个表,该表通常称为联接表
,联接表将多对多关系划分为两个一对多关系。将这两个表的主键都插入到第三个表中。如下图所示:
举例1:
学生-课程
关系
- 学生信息表:一行代表一个学生的信息(学号、姓名、手机号、班级);
- 课程信息表:一行代表一个课程的信息(课程编号、授课老师、课程简介)
- 选课信息表:此表作联接表。一个学生可以选择多门课程,一门课程可以对应被多个学生选择。
举例2:
产品-订单
关系
- 订单表和产品表有一种多对多的关系。这种关系是通过与
订单明细表
建立两个一对多关系来定义的。一个订单可以有多个产品,每个产品可以出现在多个订单中。- 产品表中每条记录对应一个产品;订单表中每条记录对应一个订单;
- 订单明细表:每个产品可以与订单表中的多条记录对应,即出现在多个订单中。一个订单可以与产品表中的多条记录对应,即包含多个产品。
7.4,自我引用
如下图例子所示,104号和105号员工的主管是103号员工(103号员工是员工,也担任主管)。