相信对本系列文章感兴趣的同学对MySQL一定十分熟悉了,无论是日常工作还是面试,基本都绕不开数据库这个话题,本系列从基础使用、运行原理、高可用等几大方面进行系统学习,让我们把自己重新当作一个小白,从0开始学习吧。
本篇文章整体脉络如下:
一、概述
为什么需要用到数据库?
人类一直有数据存储的需求,比如人员的管理、收支账目的管理等等,过去可能通过纸张(花名册、账本)这样的方式来记录就足够了,但是随着时代的发展,要记录的数据越来越多,比如动则几亿用户的头部互联网网站,每日有大量的数据需要记录或查询,面对海量数据中比较关键的数据,我们需要考虑一些问题:
-
如何能高效地存储和管理这些数据?
-
如何能持久地保存不丢失数据?
-
……
为此,我们的前辈发明了专门的软件来管理存储的数据,这些数据按照一定的格式保存,结合硬盘实现持久化存储,通过此软件还可以方便地进行数据的增删改查,这就是数据库管理系统,简称数据库。
二、巨星登场
但是我们为什么选择使用MySQL?就像购买一个商品,往往我们会关注购买量和评论量较多的商品,因为我们相信这么多人选择一定不会太差。
DB-Engines数据库流行度排行榜可以查看目前最新的排名情况
网址:https://db-engines.com/en/ranking
上图为2022年7月最新的排名情况,可以看到MySQL位列榜眼,我们来看看他的特点:
-
免费:开源在官网免费下载和使用;
-
开源:免费不一定开源,而MySQL的源码是公开的,代码仓库地址:https://github.com/mysql/mysql-server;
-
跨平台:支持主流的Linux、Windows等操作系统;
-
性能强:这已经被无数公司所证明;
还记得我们的系列文章《计算机网络系列》吗,我们提到了web之父Tim Berners-Lee爵士,希望读者朋友能够记住,而MySQL也不是凭空出现,我们来唠叨下Mysql之父-Michael “Monty” Widenius(迈克尔·蒙蒂·维德纽斯),这里有一些有趣的话题想与读者朋友们分享。
这位天才前辈几乎以一人之力创造了MySQL,而有趣的是MySQL的命名由来是:Michael Widenius有一个女儿,名叫My Widenius,因此前辈将数据库命名为MySQL。
2008年,MySQL被出售给Sun公司,后来Oracle收购了Sun,Michael Widenius担心在Oracle的一波操作下将MySQL闭源,因此Michael Widenius将MySQL分出了一个新的分支,就是我们今天熟知的MariaDB,MariaDB的目的是完全兼容MySQL,使之能轻松成为MySQL的代替品,主要由开源社区在维护。
MariaDB的名字,来自Michael Widenius的小女儿Maria,Maria是Michael Widenius和第二任妻子的女儿。
MySQL从出生就带上了开源的基因,在设计之初,就考虑了以后接入第三方代码的方便性,并于2000年开始采用GPL(GNU General Public License)许可协议,使自己成为开源软件的一分子,得益于开源,MySQL其具有里程碑意义的Innodb存储引擎也是来自其他公司的贡献。
进入21世纪,MySQL的发展进入快车道:
-
MySQL自2001年开始引入Innodb存储引擎;
-
MySQL于2002年正式宣布全面支持事务,满足事务ACID属性;
-
2003年MySQL4.0版本发布,支持集合操作UNION;
-
2004年MySQL4.1版本发布,支持子查询;
-
2005年MySQL5.0版本发布,增加视图、存储过程、触发器、游标、分布式事务等高级特性;
逐渐地具备了企业级应用落地的主要特征,加之开源和免费特性,并且性能表现不俗,因此得到了广泛的应用。
三、MySQL怎么读
在 MySQL 的官方文档里也有一段,写了应该读英文字母发音「SQL」:
The official way to pronounce “MySQL” is “My Ess Que Ell” (not “my sequel”), but we do not mind if you pronounce it as “my sequel” or in some other localized way.
具体链接:https://dev.mysql.com/doc/refman/5.7/en/what-is-mysql.html
所以当遇到发音的争论时,大可将官方文档扔给他,这就是官方文档的好处,当有争议的地方,以官方文档为准即可。
四、非关系型&关系型数据库
在说明非关系型&关系型概念前,有必要先了解结构化数据和非结构化数据的概念。
结构化数据:也称作行数据,是由二维表结构来逻辑表达和实现的数据,严格地遵循数据格式与长度规范,主要通过关系型数据库进行存储和管理。指具有固定格式或有限长度的数据,如数据库,元数据等。
非结构化数据:又可称为全文数据,不定长或无固定格式,不适于由数据库二维表来表现,包括所有格式的办公文档、XML、HTML、word文档,邮件,各类报表、图片和咅频、视频信息等。
众所周知,MySQL是典型的关系型数据库,关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织。
顾名思义,关系型数据库强调的是数据直接的关联,可支持表之间的连接查询。
特点:
-
易于维护:都是使用表结构,格式一致;
-
使用方便:SQL语言通用,可用于复杂查询;
-
复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
而redis、mongoDB等是典型的非关系型数据库,非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。
特点:
-
格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
-
速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
五、本地安装
好了,下面我们直切主题:安装MySQL。
数据库安装十分简单,本文以mac上安装为例进行简单的演示,其他平台的安装还请读者朋友们自行研究和安装,是十分简单的。
我在mac上安装了brew包管理软件,执行命令:
brew install mysql@5.7
部分提示信息如下:
We’ve installed your MySQL database without a root password. To secure it run: mysql_secure_installation
MySQL is configured to only allow connections from localhost by default
To connect run: mysql -uroot
mysql@5.7 is keg-only, which means it was not symlinked into /opt/homebrew, because this is an alternate version of another formula.
If you need to have mysql@5.7 first in your PATH, run: echo ‘export PATH=”/opt/homebrew/opt/mysql@5.7/bin:$PATH”‘ >> ~/.zshrc
For compilers to find mysql@5.7 you may need to set: export LDFLAGS=”-L/opt/homebrew/opt/mysql@5.7/lib” export CPPFLAGS=”-I/opt/homebrew/opt/mysql@5.7/include”
To restart mysql@5.7 after an upgrade: brew services restart mysql@5.7 Or, if you don’t want/need a background service you can just run: /opt/homebrew/opt/mysql@5.7/bin/mysqld_safe –datadir=/opt/homebrew/var/mysql
根据提示信息,可以明显看到安装路径是:
/opt/homebrew/opt/mysql@5.7
根据提示信息,可以按照如下命令配置环境变量:
echo ‘export PATH=”/opt/homebrew/opt/mysql@5.7/bin:$PATH”‘ >> ~/.zshrc
此时重新打开新的终端,启动MySQL服务:
brew services restart mysql@5.7
一切正常的话会反馈启动服务成功:
==> Successfully started mysql@5.7 (label: homebrew.mxcl.mysql@5.7
在mac上可以执行netstat -AaLlnW
命令检查端口是否正常监听:
默认MySQL服务的监听端口是3306,这也是几个明星端口之一,读者朋友们应该都比较熟悉。
下面进行密码等初始化配置:
mysql_secure_installation
会依次让您确认密码强度、密码、是否移除匿名用户等等,我这边简单进行设置,全部都是y,最终顺利完成密码配置。
执行命令进行登陆:
mysql -uroot -p
以上便完成了在mac上的安装和登陆验证,如何关闭MySQL服务呢?这个比较容易想到,只需要将启动命令反过来执行一遍就可以了:
brew services stop mysql@5.7
好了,数据库的安装、服务启动、连接和服务关闭我们都已了解,后面都将基于此5.7.38版本进行学习。
六、总结
本篇文章主要有以下一些知识点:
-
MySQL的特点:免费、开源、跨平台、性能强;
-
Mysql之父-Michael “Monty” Widenius(迈克尔·蒙蒂·维德纽斯);
-
MySQL的命名由来是:Michael Widenius有一个女儿,名叫My Widenius,因此前辈将数据库命名为MySQL;
-
2008年,MySQL被出售给Sun公司,后来Oracle收购了Sun,Michael Widenius担心在Oracle的一波操作下将MySQL闭源,因此Michael Widenius将MySQL分出了一个新的分支,就是我们今天熟知的MariaDB,MariaDB的目的是完全兼容MySQL,使之能轻松成为MySQL的代替品,主要由开源社区在维护;MariaDB的名字,来自Michael Widenius的小女儿Maria,Maria是Michael Widenius和第二任妻子的女儿;
-
结构化数据和非结构化数据的概念;非关系型&关系型数据库的概念和区别,MySQL是典型的关系型数据库;
-
本文以mac+brew安装数据库为例进行本机安装,其他平台的安装还请读者朋友们自行研究和安装,是十分简单的;
本篇完,下篇见!
原文始发于微信公众号(幕后哈土奇):01|第一话:基础篇-MySQL整体概述
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/112972.html