目录
1.0.1 数据库管理系统
1.1 MySQL的起源
命名由来:
1.2 MySQL的发展历程
2 什么是MySQL?
2.1 数据库
2.1.1 我们之前存储数据的格式:
2.1.2 使用数据库的目的:
2.1.3 数据库分类
2.2 SQL语句
2.2.1 为什么要SQL语句
2.2.2 SQL语句分类
3 怎么样学习MySQL
3.1 mysql的知识体系
3.2 推荐的一些视频&书籍
3.3 MySQL的特点
提起 MySQL 我们大多数与这个行业有相关联系或者说是细微联系的人都知道这个“东西”,你可能并不知道 MySQL 是什么,或者说是你可能了解一些他是数据库管理系统,但是你可能并没有真正的知道什么是MySQL,为什么有那么多相似的产品我们大多数人都说学习 MySQL 而不是其他的系统。我们在学习时,一定要知其然也要知其所以然,我们不能说是:啊,我要学MySQL! 之后就找到MySQL的讲解课程开始直接的学习语句。这样确实是可以学会去操作MySQL,可是,你是否知道你学习它的意义在于哪里吗?所以呢,我们在开始学习之前一定要去了解一下MySQL,去了解下它的用途,它的功能,这样的话,我们在后期的学习之中是不是就会对自己学习的知识有一个清晰的对应认知了,也就不会产生说是我学他到底是为什么这一说辞了!
1 MySQL的起源和发展
MySQL(发音为"my ess cue el")是一款开源的关系型数据库管理系统,由瑞典MySQL AB公司开发。
1.0.1 数据库管理系统
数据库管理系统的简称是“DBMS”,英文全称是“Database Management System”。它是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。其对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。而用户通过数据库管理系统(DBMS)访问数据库中的数据,数据库管理员也通过数据库管理系统(DBMS)进行数据库的维护工作。而我们今天所聊的MySQL也是数据库管理软件其中之一。
1.1 MySQL的起源
MySQL数据库的历史可以追溯到1979年,那时Bill Gates退学没多久,微软公司也才刚刚起步,而Larry Ellison的Oracle公司 也才成立不久。那个时候有一个天才程序员Monty Widenius为一个名为TcX的小公司打工,并且用BASIC设计了一个报表工具,使其 可以在4MHz主频和16KB内存的计算机上运行。没过多久,Monty又将此工具用C语言进行了重新编写并移植到了UNIX平台上。当时, 这只是一个很底层且仅面向报表的存储引擎,名叫UNIREG。最初的UNIREG是运行在瑞典人制造的ABC800计算机上的。ABC800的内存 只有32KB,CPU是频率只有4MHz的Z80。在1983年Monty Widenius遇到了David Axmark,两人相见恨晚,开始合作运营TcX,Monty Widenius负责技术,David Axmark负责搞管理。后来TcX将UNIREG移植到其他更加强大的硬件平台,主要是Sun的平台。虽然TcX这个 小公司资源有限,但Monty Widenius天赋极高,面对资源有限的不利条件,反而更能发挥他的潜能。Monty Widenius总是力图写出 最高效的代码,并因此养成了习惯。与Monty Widenius在一起的还有一些别的同事,很少有人能坚持把那些代码持续写到20年后, 而Monty Widenius却做到了。
1990年,一次Monty接到了一个项目,客户需要为当时的UNIREG提供更加通用的SQL接口,当时有人提议直接使用商用数据库, 但是Monty Widenius觉得商用数据库的速度难以令人满意。于是Monty Widenius找到了David Hughes(mSQL的发明人)商讨合作事宜 。想借助于mSQL的代码,将它集成到自己的存储引擎中。然而令人失望的是,在经过一番测试后,他们发现mSQL的速度并不尽如人 意,无法满足客户的需求。于是Monty Widenius雄心大起,决心自己重写一个SQL支持。从此MySQL就开始诞生了。
命名由来:
Monty Widenius有一个女儿,名叫My Widenius,因此他将自己开发的数据库命名为MySQL。Monty还有一个 儿子,名为Max,因此在2003年,SAP公司与MySQL公司建立合作伙伴关系后,Monty Widenius又将与SAP合作开发的数据库命名为 MaxDB。而现在的MariaDB中的Maria便是Monty Widenius的小孙女的名字。
1.2 MySQL的发展历程
- 1990年,TcX公司的客户中开始有人要求为他的API提供SQL支持。Monty直接借助于mSQL的代码,将它集成到自己的存储引擎中。令人失望的是,效果并不太令人满意,决心自己重写一个SQL支持。
- 1995年,Michael Widenius、David Axmark和Allan Larsson三人创建了MySQL AB公司,并发布了第一个版本的MySQL。
- 1996年,MySQL发布了第一个可商业使用的版本,开始在商业领域中得到广泛应用。
- 2000年,MySQL 3.23发布,引入了B树索引等功能,提高了查询效率和稳定性。
- 2003年,MySQL 4.0发布,引入了事务处理和视图等功能,将MySQL从轻量级数据库向企业级数据库过渡。
- 2005年,MySQL 5.0发布,引入了存储过程、触发器、视图更新等功能,进一步提升了MySQL的性能和可扩展性。
- 2008年,Sun Microsystems收购了MySQL AB公司,MySQL成为了Sun的重要组成部分。
- 2010年,Oracle Corporation收购了Sun Microsystems,MySQL成为了Oracle旗下的产品之一。
- 2010年12月,MySQL 5.5发布,其主要新特性包括半同步的复制及对SIGNAL/RESIGNAL的异常处理功能的支持,最重要的是InnoDB存储引擎终于变为当前MySQL的默认存储引擎。MySQL 5.5不是时隔两年后的一次简单的版本更新,而是加强了MySQL各个方面在企业级的特性。Oracle公司同时也承诺MySQL 5.5和未来版本仍是采用GPL授权的开源产品。
- 2013年,MariaDB项目创始人Michael Widenius宣布离开Oracle,创建了自己的公司并推出了基于MySQL的分支MariaDB。
- 2014年,MySQL 5.7发布,引入了JSON支持、在线DDL、空间索引等功能,继续增强了MySQL的功能和性能。
目前,MySQL已经成为了世界上最受欢迎的关系型数据库之一,广泛应用于Web应用程序、企业信息系统等领域。MySQL也是许多知名公司和组织(例如Google、Facebook、Twitter等)所采用的数据库系统之一。
2 什么是MySQL?
MySQL 是一款安全、跨平台、高效的,并与 PHP、Java 等主流编程语言紧密结合的数据库系统。该数据库系统是由瑞典的 MySQL AB 公司开发、发布并支持,由 MySQL 的初始开发人员 David Axmark 和 Michael Monty Widenius 于 1995 年建立的。 MySQL 的象征符号是一只名为 Sakila 的海豚,代表着 MySQL 数据库的速度、能力、精确和优秀本质。
也就是说它是操纵和管理数据库的大型软件,而使用的语言就是SQL语句。也就是利用SQL语句在MySQL中去操纵和管理数据库。
2.1 数据库
数据库是一个有组织的数据集合,包括一系列相关表、字段、记录及其它数据对象。数据库通常用于存储和管理大量数据,并提供查询、更新、删除等操作。
数据库通常由一个或多个表组成,每个表都是由一些列和行组成的,列定义了表中的数据类型和名称,行则表示实际的数据条目。例如,在一个用户信息数据库中,可以有一个表表示用户信息,该表可以包含列如姓名、性别、年龄、电话号码等,而每一行则对应着一个具体的用户。
除了表之外,数据库还可以包括索引、视图、触发器、存储过程等对象,它们可以帮助我们更快速、更方便地访问和管理数据库中的数据。
数据库可以被广泛应用于各种领域,例如Web应用程序、企业信息系统、物联网系统等。在这些应用场景中,数据库不仅能够帮助我们存储大量的数据,还可以通过数据分析、数据挖掘等方式为我们提供有价值的信息。
2.1.1 我们之前存储数据的格式:
我们在存储数据都经历的那些阶段:
# 1.文件操作阶段(用文件充当数据库 with open(python))
jason|123|read
jason&123&read
jason*123*read
'''这个阶段每个人在存储数据的时候格式都不同 程序之间无法兼容'''
# 2、软件开发目录规范
db目录下 : 数据存储文件
'''虽然存储的目录规范了,但是每个人存储的数据格式还都不相同 程序之间也无法兼容'''
# 3、数据库阶段
'''规定了文件的存储位置和数据格式,这样就解决了数据无法兼容的问题。解决了各方面的问题。'''
2.1.2 使用数据库的目的:
使用数据库的目的就是为了解决数据不兼容的问题,基于网络使数据在某一个地方以相同的格式统一做一个保存,实现数据共享
2.1.3 数据库分类
关系型数据库
具有固定的表结构 ,并且表与表之间可以通过外键建立关系。
关系型数据库,是指采用了关系模型来组织数据的数据库。简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
可以看作为excel表格的形式 :有固定的几个字段,下面是数据。
缺点:性能没有非关系性数据库好 优点:数据统计有严谨性
关系型数据库有哪些:
1、MySQL
MariaDB :和MySQL是同一个作者开发几乎一致(并且有自己的特性),但是开源免费
Oracle :大多数银行使用
PostgreSQL :支持二次开发
sqlserver
sqlite : django框架自带该数据库
db2 .....
非关系型数据库
没有固定的表结构,数据存储采用k:v键值对的形式 {k:v} 非结构化的存储。
非关系型数据库有哪些
常用的非关系型数据库:
1、redis :目前最火的缓存数据库 具有很多数据结构,功能强大(大部分公司使用)
2、mongoDB :文档型数据库,适用于敏捷开发(应用在爬虫和大数据领域)
3、memcache :几乎已经被redis淘汰。
2.2 SQL语句
SQL(Structured Query Language)是一种用于管理关系型数据库的语言。SQL语句是指通过SQL语言编写的用于操作数据库的命令或查询。SQL语句可以被用来创建、读取、更新和删除数据库中的数据。
2.2.1 为什么要SQL语句
因为数据库能够支持的语言非常的多 为了避免识别问题 发明了SQL语句 规定只要想使用数据库就统一使用SQL语句操作 解决不同语言操作数据库产生语言不兼容的情况,实现数据兼容问题。
2.2.2 SQL语句分类
-
数据库操作语句:用于创建、修改和删除数据库及其对象,例如CREATE DATABASE、ALTER DATABASE和DROP DATABASE等。
-
表操作语句:用于创建、修改和删除表及其结构,例如CREATE TABLE、ALTER TABLE和DROP TABLE等。
-
数据操作语句:用于插入、查询、更新和删除表中的数据,例如SELECT、INSERT、UPDATE和DELETE等。
-
索引操作语句:用于在表上创建、修改和删除索引,例如CREATE INDEX、ALTER INDEX和DROP INDEX等。
-
视图操作语句:用于创建、修改和删除视图,例如CREATE VIEW、ALTER VIEW和DROP VIEW等。
-
存储过程和触发器:用于定义存储过程和触发器,例如CREATE PROCEDURE、ALTER PROCEDURE和DROP PROCEDURE等。
当然,SQL语句是一种通用的语言,可以运行于各种关系型数据库管理系统(如MySQL、Oracle、SQL Server、PostgreSQL等)。掌握SQL语句能够有效地对数据库进行管理和查询,对于Web应用程序开发以及数据分析等领域都非常重要。
3 怎么样学习MySQL
既然要学习 MySQL,那该怎么学?这是一个问题。
怎样去学习并学好一门技术,对于很多人有很多不同的方法,你可以去网上找下相关的视频,也可以去搜索一下似有似无的相关博客,甚至可以去一些开源项目里去边学边练。对于 MySQL 也是如此,这 “家伙” 也非常的庞大,用途也非常广,想要系统的学习掌握谈何容易。
其实大概也可以分为以下这三步去掌握:
基础运用阶段:这一阶段要去学习 MySQL 的理论知识,例如:常用的数据类型和适用场景、Schema 的设计规范等等。之后,以理论去指导实践,简单的用一用 MySQL,能理解基本的增删改查、聚合分组概念等等。同时,也要求能够自行去解决一些简单的问题,例如:SQL 语法错误、键冲突等等。
能力提升阶段:在能够熟练的应用之后,可以去看一些进阶知识点以及 MySQL 高级特性,例如:事务、锁并发、日志系统、索引优化等等。听起来,似乎这一阶段都是理论相关的。但是,也是理论指导实践的最佳诠释。在学习理论的过程中,你会惊讶的发现:原来 MySQL 还可以这样用、我之前的方法太低效了等等意想不到的收获。此时,你就可以用 “新的知识” 优化、重构之前的工作,以提升性能。同时,你的能力也在逐步提升。
总结输出阶段:在工作中,解决各种错误、性能问题的同时,一定要注意多做笔记,多做总结。并在这个过程中,将自己懂得的知识点、技巧、优化方案等等输出出去,帮助其他同学共同进步。正所谓,赠人玫瑰,手有余香。
3.1 mysql的知识体系
基础:
- SQL语句
- 表结构设计
调优:
- 索引、慢查询优化
- 配置参数调优
核心原理:
- InnoDb存储引擎 (包括隔离级别、事务、锁、缓存池、回滚日志等等)
- Mysqld (包括连接管理、进程管理、查询缓存、查询优化、日志等等)
架构与运维:
- 用户与权限、安全
- 备份与恢复
- 日志
- 分布式与高可用
3.2 推荐的一些视频&书籍
大家可以在CSDN里找一些自己喜欢的博主,去关注他们的专栏来学习相关的知识,这里我给大家推荐一些书以及网课。
《MySQL必知必会》 这本书讲的非常全,从基本概念,到查询到插入新建表,用户的管理,都有具体的例子,非常适合没有任何基础的同学来学习Mysql,总之这本书学习的方法就是:1、十分钟了解下数据库的基本概念 2、找到练手的数据库 3、对照着上面的内容去敲。本书里也有大量的内容是讲sql的,可以结合w3c的sql教程一起,有取舍地看。
《数据库系统概念》这本书是dba必看的。看完这些并且实践+思考之后,可以算入门了。
至于网课的话我给大家推荐的是黑马程序员的免费网课(就不推荐需要付费的啦)
黑马程序员 MySQL数据库入门到精通,从mysql安装到mysql高级、mysql优化全囊括_哔哩哔哩_bilibili
当然如果大家还有什么好的资源推荐也可以发在评论区里。
3.3 MySQL的特点
MySQL具备的特点如下:
—功能强大
MySQL 中提供了多种数据库存储引擎,各引擎各有所长,适用于不同的应用场合,用户可以选择最合适的引擎以得到最高性能,可以处理每天访问量超过数亿的高强度的搜索 Web 站点。MySQL5 支持事务、视图、存储过程、触发器等。
—支持跨平台
MySQL 支持至少 20 种以上的开发平台,包括 Linux、Windows、FreeBSD 、IBMAIX、AIX、FreeBSD 等。这使得在任何平台下编写的程序都可以进行移植,而不需要对程序做任何的修改。
—运行速度快
高速是 MySQL 的显著特性。在 MySQL 中,使用了极快的 B 树磁盘表(MyISAM)和索引压缩;通过使用优化的单扫描多连接,能够极快地实现连接;SQL 函数使用高度优化的类库实现,运行速度极快。
—支持面向对象
PHP 支持混合编程方式。编程方式可分为纯粹面向对象、纯粹面向过程、面句对象与面向过程混合 3 种方式。
—安全性高
灵活和安全的权限与密码系统,允许基本主机的验证。连接到服务器时,所有的密码传输均采用加密形式,从而保证了密码的安全。
—成本低
MySQL 数据库是一种完全免费的产品,用户可以直接通过网络下载。
—支持各种开发语言
MySQL 为各种流行的程序设计语言提供支持,为它们提供了很多的 API 函数,包括 PHP、ASP.***、Java、Eiffel、Python、Ruby、Tcl、C、C++、Perl 语言等。
—数据库存储容量大
MySQL 数据库的最大有效表尺寸通常是由操作系统对文件大小的限制决定的,而不是由 MySQL 内部限制决定的。InnoDB 存储引擎将 InnoDB 表保存在一个表空间内,该表空间可由数个文件创建,表空间的最大容量为 64TB,可以轻松处理拥有上千万条记录的大型数据库。
—支持强大的内置函数
PHP 中提供了大量内置函数,几乎涵盖了 Web 应用开发中的所有功能。它内置了数据库连接、文件上传等功能,MySQL 支持大量的扩展库,如 MySQLi 等,可以为快速开发 Web 应用提供便利。