今天对mysql的一些基础概念进行讲诶横扫,如概念、特点、优势、发展历史等等。对之前内容感兴趣的同学可以参考:
让我们开始今日份的学习吧!
目录
- 1. mysql的基本概念
-
- 1.1 mysql的优势
- 1.2 mysql的发展历史
- 2. mysql的特性
-
- 3. mysql的sql语句
- 4. mysql的存储引擎
- 5. mysql与其他数据库对比
- 6. 参考资料
1. mysql的基本概念
数据库(database)就是一个存储数据库的仓库,为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。mysql数据库就是这样一个关系型数据库管理系统(RDBMS),它可以称得上是目前运行速度最快的SQL数据库管理系统。
1.1 mysql的优势
mysql是一款自由软件,任何人可以从官网网址中下载。mysql是一个真正的多用户,多线程sql数据库服务器。它是以客户/服务器结构的实现,由一个服务程序mysqld和很多不同的客户程序和库组成。它能够快捷、有效和安全地处理大量的数据。相对于oracle等数据库来说,mysql在使用时非常简单。mysql的主要目标是快捷、便捷和易用,以下是mysql的一些特点:
- 开源和免费:MySQL是开源的,并且可以免费使用。这使得MySQL成为开发人员和小型企业的首选数据库。
- 可扩展性:MySQL可以轻松地扩展以支持更大的数据集和更高的并发用户。MySQL提供了许多扩展和插件,以帮助用户轻松地进行扩展。
- 跨平台支持:MySQL可以在多个平台上运行,包括Windows、Linux、Unix、macOS等。
- 安全性:MySQL具有强大的安全功能,可以保护数据免受未经授权的访问。MySQL提供了许多安全功能,例如加密、用户访问控制和审计等。
- 高可用性:MySQL支持主从复制和自动故障转移,这使得MySQL可以实现高可用性和灾备恢复。
- 性能:MySQL具有卓越的性能,可以轻松地处理大型数据集和高并发用户。MySQL支持索引、查询优化和缓存等功能,以提高性能。
- 支持大型企业应用程序:MySQL可以处理大型企业级应用程序和高流量网站。许多大型企业和网站使用MySQL作为他们的数据库管理系统。
1.2 mysql的发展历史
MySQL是由瑞典公司MySQL AB开发的一种关系型数据库管理系统。其名字的由来是由MySQL AB的创始人之一Michael Widenius取的,最初取名为“My”(他的女儿的名字),加上“SQL”(结构化查询语言)的缩写组成。因此,MySQL这个名字代表着“我的SQL”,强调MySQL作为一个开源软件,可以根据用户的需求进行个性化的定制和修改。MySQL的名字既简单又易于记忆,因此在数据库市场上得到了广泛的认可和应用。
mysql从无到有,到技术的不断更迭,版本的不断升级,已经非常成熟了,mysql的官网地址和下载地址如下,选择自己需求的版本按安装即可。
链接: mysql官网地址
链接: mysql下载地址
2. mysql的特性
mysql是一个真正的多用户、多线程sql数据库服务器。SQL是世界上最流行的和标准化的数据库语言。其特性如下:
- 使用C和C++语言编写,并使用了多种编译器进行测试,保证了源代码的可移植性。
- 支持多种操作系统,如Linux、Mac os、Windows等。
- 为多种编程语言提供了API。这些编程语言包括C、C++、Java、Perl、 PHP、Ruby、Eiffel、Tcl等。
- 支持多线程,充分利用CPU资源。
- 优化SQL查询算法,有效提高查询速度。
- 既能够作为一个单独的应用程序在客户端服务器网络环境中,也能够作为一个库而嵌入到其他软件中提供多语言支持,常见的编码如中文的GB2312、BIG5,日文的Shift_JIS等都可以作为数据数据的表名和数据列名。
- 提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
- 提供用于管理、检查、优化数据库操作的管理工具。
- 可以处理拥有千万条记录的大型数据库。
目前的最新版本是mysql8.0版本。
2.1 mysql的安装
mysql的安装可以去官网下载,根据自己的系统和芯片选择合适的版本进行下载即可(我的是mac,m1芯片,选择第一个):
安装完成后可以在系统设置里看到mysql的服务。
安装完成后可以安装一个mysql的可视化软件,我这里选择的是navicate,下载完成后安装即可。
连接完数据后可以在这里面进行一些练习:
2.2 数据库常用对象
在mysql数据库中,表、视图、存储过程和索引等具体存储数据或对数据进行操作的实体都被称为数据库对象,下面介绍几种常用的数据库对象:
- 表:表是数据库中所有数据的数据库对象,由行和列组成,用于组织和存储数据。
- 字段:表中的每列称为一个字段,字段具有自己的属性,如字段类型、字段大小等。其中,字段类型是字段中最重要的属性,它决定了字段能够存储那种数据。SQL规范支持5中基本类型的字段类型:字符型、文本型、数值型、逻辑型和日期时间类型。
- 索引:索引是一个单独的、物理的数据库结构。它是依赖于表建立的,在数据库中索引使数据库程序无需对整个表进行扫描,就可以在其中找到所需要的数据。
- 视图:视图是从一张表或者多张表中导出的表,是用户查看数据表中数据的一张方式。表中包括几个被定义的数据列与数据行,其结构和数据建立在对表的查询基础之上。
- 存储过程:存储过程是一组为了完成特定功能的SQL语句集合(包含查询、插入、删除和更新等操作),经编译后以名称的形式存储在SQL sever服务器端端数据库中,由用户通过指定存储过程的名字来执行,当这个存储过程被调用执行时,这些操作也会同时执行。
3. mysql的sql语句
这一章在之前写的博客中有介绍,这里我们就不做详细介绍:
- 链接: MySQL之表的创建、删除和更新
- 链接: MySQL之查询基础
- 链接: MySQL之聚合与排序
- 链接: MySQL之数据的插入、删除、更新和事务
- 链接: MySQL之视图、子查询和关联子查询
- 链接: MySQL之函数和谓词
4. mysql的存储引擎
MySQL的存储引擎(storage engine)是指用于存储和检索数据的底层软件组件。MySQL支持多种不同的存储引擎,每种引擎都有自己的特点和优势,应该根据具体需求选择合适的引擎。
以下是MySQL常见的存储引擎:
- InnoDB
InnoDB是MySQL默认的存储引擎,支持ACID事务处理和行级锁定,适用于高并发的OLTP应用。它还支持外键约束和崩溃恢复等高级特性。
- MyISAM
MyISAM是MySQL的传统存储引擎,不支持事务和行级锁定,但对于读多写少的应用非常适合。它的特点是速度快,占用资源少,适用于数据仓库和大型数据表。
- Memory
Memory存储引擎将数据存储在内存中,速度非常快,但缺点是容易丢失数据,适用于临时数据表和缓存。它还支持HASH和B-tree索引。
- CSV
CSV存储引擎将数据以CSV格式存储在文件中,适用于存储大量文本数据,但不支持索引和事务处理。
- Archive
Archive存储引擎是一种高度压缩的存储引擎,适用于存储历史数据或归档数据,但不支持索引和事务处理。
- Blackhole
Blackhole存储引擎不实际存储数据,所有写入操作都被丢弃,适用于数据复制和数据同步等应用场景。
- Federated
Federated存储引擎可以将远程服务器上的表映射为本地表,支持跨服务器的查询和数据操作。
总的来说,选择适合自己应用场景的存储引擎可以提高数据库的性能和可靠性。
5. mysql与其他数据库对比
特点 |
MySQL |
Oracle |
SQL Server |
开发公司 |
Oracle Corporation |
Oracle Corporation |
MicrosoftCorporation |
开源 |
是 |
否 |
否 |
许可证 |
GPL |
商业许可证 |
商业许可证 |
操作系统支持 |
Windows, Linux, macOS, FreeBSD, Solaris, OS/2 |
Windows, Linux, macOS, Solaris, AIX, HP-UX, z/OS, *BSD |
Windows |
存储引擎 |
InnoDB, MyISAM, Memory, CSV, Archive, Blackhole, Federated等 |
Oracle Database, Oracle RAC等 |
SQL Server Engine, Analysis Services, Reporting Services等 |
数据类型 |
支持常见的数据类型,包括数值、字符、日期、二进制等 |
支持常见的数据类型,包括数值、字符、日期、二进制等 |
支持常见的数据类型,包括数值、字符、日期、二进制等 |
事务处理 |
支持 |
支持 |
支持 |
锁机制 |
行级锁定、表级锁定、读写锁等 |
行级锁定、表级锁定、对象级锁定等 |
行级锁定、表级锁定、页级锁定等 |
备份和恢复 |
支持 |
支持 |
支持 |
安全性 |
支持用户和角色管理、权限控制等 |
支持用户和角色管理、权限控制等 |
支持用户和角色管理、权限控制等 |
扩展性 |
可以通过分区、复制等方式进行扩展 |
可以通过分区、集群等方式进行扩展 |
可以通过分区、复制等方式进行扩展 |
索引 |
B+树 |
B+树 |
B+树 |
缓存 |
可定制 |
可定制 |
可定制 |
6. 参考资料
- 《mysql从入门到精通》
- chatgpt
- 《SQL必知必会》