01.MySQL基础知识回顾

MySQL基础知识回顾

1.为什么要使用数据库

问题

如果把数据存储到内存中,那么重启后就消失了,我们希望一个数据被保存后永久存在于一个地方,也就是需要把数据持久化

什么是持久化

把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化就意味着将内存中的数据保存到硬盘上加以固化

谁来完成持久化

持久化的实现过程大多通过各种关系型数据库来完成

持久化的主要作用

将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件,XML数据文件中

2.数据库与数据库管理系统

相关概念

  • DB:数据库(Database),即存储数据的仓库,其本质是一个文件系统。它保存了一系列有组织的数据
  • DBMS:数据库管理系统(Database Management System),是一种操作和管理数据库的大型软件,用于建立,使用和维护数据库,对数据库进行统一管理和控制。用户通过数据库管理系统访问数据库中表内的数据
  • SQL:结构化查询语言(Structured Query Language),专门用来与数据库通信的语言

关系图示

3.常见的数据库管理系统排名

介绍

目前互联网上常见的数据库管理软件有Oracle,MySQL,MS SQL Server,DB2,PostgreSQL,Access,Sybase,Informix这几种,如何知道那个是主流的呢?

如何查看排名

访问网站:https://db-engines.com/en/ranking

2021年排名

4.常见的数据库介绍

Oracle

SQL Server

SQL Server是微软开发的大型商业数据库,诞生于1989年。C#、.net等语言常使用,与WinNT完全集成,也可以很好地与Microsoft BackOffice产品集成

DB2

IBM公司的数据库产品,收费的。常应用在银行系统中

PostgreSQL

PostgreSQL的稳定性极强,最符合SQL标准,开放源码,具备商业级DBMS质量。PG对数据量大的文本以及SQL处理较快

SyBase

已经淡出历史舞台。提供了一个非常专业数据建模的工具PowerDesiginer

SQLite

嵌入式的小型数据库,应用在手机端。零配置,SQlite3不用安装,不用配置,不用启动,关闭或者配置数据库实例。当系统崩溃后不用做任何恢复操作,再下次使用数据库的时候自动恢复

Informix

IBM公司出品,取自Information和Unix的结合,它是第一个被移植到Linux上的商业数据库产品。仅运行于unix/linux平台,命令行操作。性能较高,支持集群,适应于安全性要求极高的系统,尤其是银行,证券系统的应用

MariaDB

MySQL数据库的作者另外一个作品基本与MySQL一致

5.MySQL介绍

概述

在这里插入图片描述

发展历史

时间事件
1979年当时瑞典的 Monty Widenius 在 Tcx DataKonsult公司工作,他开发了一款名为Unireg的工具,它是一个面向报表的存储引擎,利用索引顺序来读取数据,这也是 ISAM 存储引擎算法的前身
1985年Monty 和 David Axmart 等几个小伙子成立了一家公司(MySQL AB 前身),研发出了 ISAM(Indexed Sequential Access Method)存储引擎工具。
1990年客户要求 ISAM 工具能提供SQL接口,于是Monty找到了David Hughes(mSQL的发明人)商讨合作事宜,后来发现mSQL的速度也无法满足需求。于是Monty决心自己重写一个SQL支持,由此着手MySQL设计和研发。
1996年Monty与David Axmart一起协作,开发出MySQL第一个版本1.0。
1996年10月MySQL3.1发布了,没有2.x版本。最开始只提供了Solaris下的二进制版本。同时11月发布了Linux版本
1999-2000年Monty,Allan和David三人在瑞典创建了MySQL AB公司,并且与Sleepycat合作开发出引入了BDB引擎,MySQL从此开始支持事务处理了。
2000年MySQL公布了自己的源代码,并采用GPL(GNU General Public License)许可协议正式开源。
20000年4月MySQL对旧的存储引擎ISAM进行了整理,命名为MyISAM。
20001年Heikki Tuuri 向MySQL建议集成他的InnoDB存储引擎,这个引擎同样支持事务处理,还支持行级锁。MySQL与InnoDB正式结合版本是4.0。至此MySQL已集成了MyISAM和InnoDB两大主力引擎。
2005年10月MySQL5.0版本发布,这是MySQL历史上最有里程碑意义的一个版本,在5.0版本加入了游标,存储过程和触发器的支持。
2008年1月MySQL AB公司被Sun公司以10亿美金收购,MySQL数据库进入Sun时代。
2009年4月Oracle公司以74亿美元收购Sun公司,自此MySQL数据库进入了Oracle时代,而其第三方的存储引擎InnoDB早在2005年就被Oracle公司收购。
2010年4月发布了MySQL5.5版本。Oracle对MySQL版本重新进行了划分,分成了社区版和企业版。默认引擎更换为InnoDB,增加表分区等。
2013年2月MySQL5.6首个正式版5.6.10发布。MySQL5.6对InnoDB引擎进行了改造,提供全文索引功能,使InnoDB适合各种应用场景。
2015年10月MySQL5.7首个GA正式版5.7.9发布。
2016年9月MySQL8.0首个开发版发布,增加了数据字典,账号权限角色表,InnoDB增强,JSON增强等等。
2018年4月MySQL8.0首个GA正式版8.0.11发布

版本分支

版本的命名机制

  • MySQL的命名机制使用由3个数字和一个后缀组成的版本号。例如,像mysql-8.0.26的版本号这样解释
  • 第1个数字8是主版本号,描述了文件格式。所有版本5的发行都有相同的文件格式
  • 第2个数字0是发行级别。主版本号和发行级别组合到一起便构成了发行序列号
  • 第3个数字26是在此发行系列的版本号,随每个新分发版递增

主流版本

  • MySQL5.5:用的较少,一般是老系统
  • MySQL5.7:企业常用版本
  • MySQL8:最新版,目前也算常用

不同的MySQL

针对不同的用户,MySQL分为两种不同的版本

  • MySQL Community Server:社区版本,免费,但是MySQL不提供官方技术支持
  • MySQL Enterprise Edition:商业版,该版本是收费版本,可以试用30天,官方提供技术支持
  • MySQL Cluster:集群版,开源免费,可将几个MySQL Server封装成一个Server
  • MySQL Cluster CGE:高级集群版,需付费
  • MySQL Workbench(GUI TOOL):一款专为MySQL设计的ER/数据库建模工具MySQL Workbench又分为两个版本,分别是社区版(MySQL Workbench OSS)、商用版(MySQL Workbench SE)

关于MySQL8

MySQL从5.7版本直接跳到了8.0版本,可见这是一个令人兴奋的里程碑版本。MySQL8版本在功能上做了显著的改进与增强,开发者对MySQL的源代码进行了重构,最突出的一点是多MySQL Optimizer优化器进行了改进。不仅在速度上得到了改善,还为用户带来了更好的性能和更棒的体验

为什么选择MySQL

  1. 开放源代码,使用成本低
  2. 性能卓越,服务稳定
  3. 软件体积小,使用简单,并且易于维护
  4. 历史悠久,社区用户非常活跃,遇到问题可以寻求帮助
  5. 许多互联网公司在用,经过了时间的验证

Oracle与MySQL

0racle更适合大型跨国企业的使用,因为他们对费用不敏感,但是对性能要求以及安全性有更高的要求

MySQL 由于其体积小、速度快、总体拥有成本低,可处理上千万条记录的大型数据库,尤其是开放源码这一特点,使得很多互联网公司、中小型网站选择了MySQL作为网站数据库(Facebook,Twitter,YouTube,阿里巴巴蚂蚁金服,去哪儿,美团外卖,腾讯)

6.关系型数据库(RDBMS)

介绍

关系数据库管理系统(RDBMS)是一种基于关系模型的数据库管理系统。在RDBMS中,数据以表的形式进行组织,其中每个表由行和列组成。这种表格结构使得数据之间可以建立关系并进行关联,从而有效地存储和检索数据

核心概念

  • 表(Table):表是数据的主要组织单元,它由一组命名的列和行组成。每个表列定义了数据的类型和约束,而行则表示特定实体或事物的实例。表将数据分解为结构化、可管理的单元,使得数据的存储更加高效
  • 列(Column):列是表中的一个字段,用于存储特定类型的数据。每个列都具有一个名称和相应的数据类型,例如整数、字符串、日期等。列的定义还可以包括约束条件,如唯一性约束、主键约束等,以确保数据的完整性和有效性
  • 行(Row):行是表中的一个记录,表示某个实体或事物的具体实例。每行由一组与该表的列对应的值组成。通过在不同表中的行之间建立关系,可以对数据进行关联和链接
  • 主键(Primary Key):主键是表中的一个唯一标识符,用于唯一地标识表中的每一行。主键可以由一个或多个列组成,并具有唯一性约束。主键在数据库中起到重要的作用,它可以用作数据的唯一标识和关联表之间的关系
  • 外键(Foreign Key):外键是一个表中的列,它建立了与另一个表中的主键之间的关系。外键用于实现表之间的关联和引用,从而实现数据的一致性和完整性。通过外键,可以在不同的表之间建立关系和连接,以支持数据的查询和操作

关系模型概述

表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系型数据库,就是建立在关系模型基础上的数据库

与SQL的关系

SQL就是关系型数据库的查询语言

优势

  • 复杂查询:可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询
  • 事务支持:使得对于安全性能很高的数据访问要求得以实现

7.非关系型数据库(NoSQL/非RDBMS)

介绍

主要是作为RDBMS的一个补充,因为RDBMS其实是有着自己不擅长的领域,舍弃关系型数据库的一部分功能,换来一些其他的功能或更好的性能

目前市场上大部分主流的非关系型数据库都是免费的

主流产品与分类

名称描述
Redis缓存数据库
MongoDB文档数据库
ElasticSearch搜索数据库
Cassandra列式数据库
HBase列式数据库

总结

NoSQL对SQL做出了很好的补充,比如实际开发中,有很多业务需求,其实并不需要完整的关系型数据库功能,非关系型数据库的功能就足够使用了。这种情况下,使用性能更高、 成本更低的非关系型数据库当然是更明智的选择。比如:日志收集、排行榜、定时器等

8.SQL

SQL全称

Structured Query Language/结构化查询语言

什么是SQL

SQL 是用于访问和处理数据库(RDBMS)的标准的计算机语言。

SQL的来历

SQL语言1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的关系数据库SystemR实现

SQL标准

美国国家标准局(ANSI)开始着手指定SQL标准,并在1986年10月公布了最早的SQL标准,扩展的标准版本是1989年发表的SQL-89,之后还有1992年制定的版本SQL-92和1999年ISO发布的版本SQL-99

SQL标准几经修改和完善,其功能更加强大,但目前很多数据库系统只支持SQL-99的部分特征,而大部分数据库系统都能支持1992年制定的SQL-92

SQL特点

  • 具有综合统一性,不同数据库的支持的SQL稍有不同
  • 非过程化语言
  • 语言简洁,用户容易接受
  • 以一种语法结构提供两种使用方式

支持SQL的数据库

  • MySQL
  • MariaDB
  • SQL Server
  • Oracle
  • DB2
  • Access
  • Sybase

SQL语法特点简述

  • SQL对大小写的关键字不敏感
  • SQL语句可以单行或多行书写,以分号结束

SQL语言的组成

  • 数据定义语言:DDL
  • 数据操纵语言:DML
  • 数据控制语言:DCL
  • 数据控制语言:DCL

SQL注释

单行注释
  • – 注释内容
  • # 注释内容
多行注释

/*注释内容*/

SQL和数据库管理系统的关系

MySQL,SQL Server,Oracle是一个数据库软件,这些数据库软件支持标准SQL,也就是通过SQL可以使用这些软件,不过每一个数据库系统会在标准SQL的基础上扩展自己的SQL语法

大部分的NoSQL数据库有自己的操作方式,并不支持SQL的操作方式,只有小部分NoSQL支持

9.表的关联关系

介绍

表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的各种联系均用关系模型来
表示

四种关系总览

  • 一对一关联
  • 一对多关联
  • 多对多关联
  • 自我引用

一对一关联(one-to-one)

在实际的开发中应用不多,因为一对一可以创建成一张表

一对多关系(one-to-many)

介绍

常见实例场景:客户表和订单表,分类表和商品表,部门表和员工表

建表原则

在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键

多对多关联(many-to-many)

介绍

要表示多对多关系,必须创建第三个表,该表通常称为联接表,它将多对多关系划分为两个一对多关系。将这两
个表的主键都插入到第三个表中

举例

订单表和产品表是多对多的关系,这种关系是通过与订单明细表建立两个一对多关系来定义的。一个订单可以有多个产品,每个产品可以出现在多个订单中

  • 产品表:产品表中的每条记录表示一个产品
  • 订单表:订单表中的每条记录表示一个订单
  • 订单明细表:每个产品可以与订单表中的多条记录对应,即出现在多个订单中。一个订单可以与产品表中的多条记录对应,即包含多个产品

自我引用(Self reference)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/600013.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring eureka 服务实例实现快速下线快速感知快速刷新配置解析

背景 默认的Spring Eureka服务器,服务提供者和服务调用者配置不够灵敏,总是服务提供者在停掉很久之后,服务调用者很长时间并没有感知到变化。或者是服务已经注册上去了,但是服务调用方很长时间还是调用不到,发现不了这…

计算机毕业设计java 基于Android的拼图游戏app

当今社会,随着电子信息技术的发展,电子游戏也成为人们日常生活的一部分。这种娱乐方式结合了日新月异的技术,在游戏软件中结合了多种复杂技术。拼图游戏流行在各种电子产品上,从计算机,掌上游戏机到如今的手机&#xf…

IntellIJ Idea 如何完美导入 Eclipse 项目

文章目录 前言背景一、导入文件1.1 选择从已有文件导入1.2 选择文件目录1.3 导入项目选择 eclipse1.4 选择jdk1.5 导入完成 二、配置依赖2.1 File - ProjectStructure2.2 添加 xml 文件2.3 配置tomcat 总结 前言 请各大网友尊重本人原创知识分享,谨记本人博客&…

基于Spring boot+Vue的业余排球俱乐部会员管理系统

5 系统功能模块的具体实现 5.1超级会员角色 5.1.1 登录 超级管理员登录通过用户名和密码去数据库查询用户表,该名称是否在用户表中存在,如果存在,则通过用户名和密码查询密码是否正确,然后吧用户的信息存在jwt的负载里&#xf…

3d怎么在一块模型上开个孔---模大狮模型网

在进行3D建模时,有时候需要在模型上创建孔,以实现特定的设计需求或功能。无论是为了添加细节,还是为了实现功能性的要求,创建孔都是常见的操作之一。本文将介绍在3D模型上创建孔的几种常用方法,帮助您轻松实现这一目标…

Spring Boot-02-依赖管理和自动配置

二、Spring Boot的两大重要机制 1. 依赖管理机制 开发什么场景,导入什么场景启动器,场景启动器自动把这个场景的所有核心依赖全部导入进来。maven依赖传递原则:A依赖B,B依赖C,则A就拥有B和C。每个boot项目都有一个父…

操作系统1

概念 操作系统 组织和管理计算机系统中的软件和硬件,组织计算机系统工作流程、控制程序执行,提供给用户工作环境和友好的接口。 3个作用: 管理计算机中运行的程序和分配各种软硬件资源为用户提供友善的人机洁界面为应用程序的开发和运行提供…

Mysql主键优化之页分裂与页合并

主键设计原则 满足业务需求的情况下,尽量降低主键的长度。因为如果主键太长,在多个二级索引中,主键索引值所占用的空间就会过大。 插入数据时,尽量选择顺序插入,选择使用AUTO_INCREMENT自增主键。因为乱序插入会导致页…

动态调整学习率方法(仅供自己学习)

目录 一、StepLR 二、MultiStepLR 三、ExponentialLR 四、CosineAnnealingLR 五、ReduceLRonPlateau 六、LambdaLR 小结:学习率调整​​​​​​​ 一、StepLR optimizer torch.optim.SGD(model.parameters(), lrlearn_rate) scheduler torch.optim.lr_sch…

Windows系统配置Docker的国内镜像

1.打开docker的设置,点击Docker Engine 2.添加国内的镜像源,将下面的内容加进去 "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com","http://hub-mirror.c.163.com&quo…

【C++进阶】哈希表(哈希函数、哈希冲突、开散列、闭散列)

🪐🪐🪐欢迎来到程序员餐厅💫💫💫 主厨:邪王真眼 主厨的主页:Chef‘s blog 所属专栏:c大冒险 总有光环在陨落,总有新星在闪烁 引言: 我们之前…

二、计算机网络物理层基础知识

一、物理层 物理层接口特性:解决如何在连接各种计算机传输媒体上的传输数据比特流,而不是指具体的传输媒体 物理层的主要任务 :确定与传输媒体接口有关的一些特性>定义标准 1、机械特性:定义物理连接的特性,规定物理…