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.mzph.cn/news/799736.shtml

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

相关文章

Linux安装最新版Docker完整教程

参考官网地址:Install Docker Engine on CentOS | Docker Docs 一、安装前准备工作 1.1 查看服务器系统版本以及内核版本 cat /etc/redhat-release1.2 查看服务器内核版本 uname -r这里我们使用的是CentOS 7.6 系统,内核版本为3.10 1.3 安装依赖包 …

MySQL如何创建存储过程

工作中有时候需要自己去创建存储过程,然后调用存储去获得一些数据等,接下来就给大家介绍下MySQL如何创建存储过程。 语法: CREATE PROCEDURE 存储程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 …] 过…

区块链技术与数字身份:解析Web3的身份验证系统

在数字化时代,随着个人数据的日益增多和网络安全的日益关注,传统的身份验证系统面临着越来越多的挑战和限制。在这种背景下,区块链技术的出现为解决这一问题提供了全新的思路和解决方案。Web3作为一个去中心化的互联网模式,其身份…

在线JSON工具

功能支持 ctrls json格式化游览器本地保存ctrla ctrlc 自动检测选中范围是否是全选,然后按照格式化方式添加到粘贴板中json 粘贴JSON自动格式化json可视化修改json压缩复制json层级折叠json关键key 搜索(自动提示高亮)满足某些近视的可以自行调整字体大小, 并且会游…

【Spring】SpringBoot整合MybatisPlusGernerator,MybatisPlus逆向工程

📝个人主页:哈__ 期待您的关注 在我们写项目的时候,我们时常会因为需要创建很多的项目结构而头疼。项目中的表很多的时候,我们连实体类都创建不完,这时候就需要我们的逆向工程来帮助我们生成我们的框架结构。这些结构…

centos安装使用elasticsearch

1.首先可以在 Elasticsearch 官网 Download Elasticsearch | Elastic 下载安装包 2. 在指定的位置(我的是/opt/zhong/)解压安装包 tar -zxvf elasticsearch-7.12.1-linux-x86_64.tar.gz 3.启动es-这种方式启动会将日志全部打印在当前页面,一旦使用 ctrlc退出就会导…

自动驾驶硬件系统- Inertial Measurement Unit (IMU)

自动驾驶硬件系统- Inertial Measurement Unit (IMU) 附赠自动驾驶学习资料和量产经验:链接 惯性测量单元(Inertial measurement unit,简称 IMU),是测量物体三轴姿态角及加速度的装置。一般IMU包括三轴陀螺仪及三轴加速度计,部分…

小米汽车:搅动市场的鲶鱼or价格战砧板上的鱼肉?

3月28日晚,备受关注的小米汽车上市发布会召开,小米集团董事长雷军宣布小米SU7正式发布。小米汽车在带飞股价的同时,二轮订购迅速售尽。 图一:小米集团股价 雷军口中“小米汽车迈出的第一步,也是人生最后一战的开篇”&a…

蓝桥杯 经验技巧篇

1. 注意事项 👨‍🏫 官方通知 👨‍🏫 资料文档 时间:4月13日 9:00~13:00 (时长 4小时)物品 准考证(赛前一周开放下载,自行打印)学生证身份证笔、水、外套&a…

知识推理技术解析与实战

目录 一、引言二、知识推理基础知识表示方法本体论语义网络图形数据库 推理机制概述演绎推理归纳推理类比推理 实践代码示例 三、知识推理的核心技术自动推理系统规则引擎推理算法 知识图谱的运用构建知识图谱知识推理与查询 推理算法深度分析转导推理逻辑推理概率推理 实践代码…

关键节点组挖掘(附Python实现)

一、实验内容简介 该实验主要利用基于度的排序和基于投票策略的排序分别挖掘出一组重要节点作为种子节点,然后在给定的网络中传播,一直到稳态,然后统计感染的规模NR。最后通过比较两种方法的感染规模给出相应的评价,给出不同感染…

合资红利耗尽,海外喜忧参半:上汽2023有点“遗憾”

作者 |老缅 编辑 |德新 3月29日,上汽集团发布2023年全年财报。 数据显示,2023年上汽集团实现总营收7447.05亿元,同比增加0.09%;归属于上市公司股东的净利润141.06亿元,同比减少12.48%;基本每股收益1.226元…

CSS - 你实现过宽高自适应的正方形吗

难度 难度级别:中高级及以上 提问概率:80% 宽高自适应的需求并不少见,尤其是在当今流行的大屏系统开发中更是随处可见,很显然已经超越了我们日常将div写死100px这样的范畴,那么如何实现一个宽高自适应的正方形呢?这里提出两种实现方案。…

景区云旅游/视频慢直播方案设计与平台搭建

一、行业背景 经文化和旅游部数据中心测算,今年清明节假期3天全国国内旅游出游1.19亿人次,按可比口径较2019年同期增长11.5%;国内游客出游花费539.5亿元,较2019年同期增长12.7%。踏青赏花和户外徒步成为假期的热门出游主题。随着…

VSCode SSH 连接 Could not establish connection to “XXX“: spawn UNKNOWN.

1. 确认问题: 拉取vscode终端:快捷键 ctrl(数字1旁边那个) 输入:ssh -V 2. 解决方法 2.1 找到本地SSH 位置 默认本地路径: C:\Windows\System32\OpenSSH 2.2 找到要修改的位置 进入 ssh 插件的设置(可以通过在插…

VIM支持C/C++/Verilog/SystemVerilog配置并支持Win/Linux环境的配置

作为一个芯片公司打杂人口,往往需要一个皮实耐打上天入地的编辑器… 一、先附上github路径,方便取走 git clone gitgithub.com:qqqw4549/vim_config_c_verilog.git 二、效果展示 支持ctrl]函数/模块跳转,支持cscope字串全局代码搜索 依赖&am…

The C programming language (second edition,KR) exercise(CHAPTER 2)

E x c e r c i s e 2 − 1 Excercise\quad 2-1 Excercise2−1&#xff1a;输出结果如图1和图2所示&#xff0c;这道练习题需要文章1和文章2的知识。 #include <stdio.h> #include <limits.h>float getFloat(char sign, unsigned char exp, unsigned mantissa); do…

数字人直播系统是什么?AI数字人直播间搭建方法来了!

无人直播的时代&#xff0c;短视频和直播平台正在风口&#xff0c;各条赛道内也早已人满为患&#xff0c;很多线下商家都想参与其中&#xff0c;因为时间、地方、设备等限制久久不能去实行起来。所以&#xff0c;数字人直播新模式成为了线下商家的救星&#xff0c;线下商家方法…

go语言实现无头单向链表

什么是无头单向链表 无头单向链表是一种线性数据结构&#xff0c;它的每个元素都是一个节点&#xff0c;每个节点都有一个指向下一个节点的指针。"无头"意味着这个链表没有一个特殊的头节点&#xff0c;链表的第一个节点就是链表的头。 优点&#xff1a; 动态大小&…

企业如何做好数字化?

企业进行数字化转型是一个复杂且系统性的过程&#xff0c;涉及战略规划、技术应用、组织变革、文化建设等多个方面。以下步骤和建议可以帮助企业做好数字化转型&#xff1a; 1、明确转型愿景和目标&#xff1a;确定企业的数字化愿景&#xff0c;明确转型的长期目标和短期里程碑…