MySQL8 数据库管理系统概述

2023-08-07 15:45 更新

什么是MySQL?

MySQL是最流行的开源SQL数据库管理系统,由Oracle Corporation开发,分发和支持。

MySQL网站(https://www.mysql.com/)提供了有关MySQL软件的最新信息。

  • MySQL是一个数据库管理系统。数据库是数据的结构化集合。从简单的购物清单到图片库,或者企业网络中的大量信息,它都可以是任何东西。要添加,访问和处理存储在计算机数据库中的数据,您需要一个数据库管理系统,例如MySQL Server。由于计算机非常擅长处理大量数据,因此数据库管理系统作为独立实用程序或其他应用程序的一部分,在计算中起着核心作用。
  • MySQL数据库是关系型的。关系数据库将数据存储在单独的表中,而不是将所有数据放在一个大的存储室中。数据库结构被组织成针对速度进行了优化的物理文件。具有对象(例如数据库,表,视图,行和列)的逻辑模型提供了灵活的编程环境。您可以设置规则来控制不同数据字段之间的关系,例如一对一,一对多,唯一,必需或可选,以及不同表之间的“指针”。数据库执行这些规则,因此,使用设计良好的数据库,您的应用程序永远不会看到不一致,重复,孤立,过时或丢失的数据。“ MySQL ”的SQL部分代表“结构化查询语言”。SQL是用于访问数据库的最常见的标准化语言。根据您的编程环境,您可以直接输入SQL(例如,生成报告),将SQL语句嵌入用另一种语言编写的代码中,或使用隐藏SQL语法的特定于语言的API。SQL由ANSI / ISO SQL标准定义。自1986年以来,SQL标准一直在发展,并且存在多个版本。在本手册中,“ SQL-92 ”是指1992年发布的标准,“ SQL:1999 ”是指1999年发布的标准,“ SQL:2003 ”是指标准的当前版本。我们使用“ SQL标准”一词来随时表示SQL标准的当前版本。
  • MySQL软件是开源的。开源意味着任何人都可以使用和修改该软件。任何人都可以从互联网上下载MySQL软件并使用它而无需支付任何费用。如果愿意,您可以学习源代码并进行更改以适合您的需求。MySQL软件使用GPL(GNU通用公共许可证)http://www.fsf.org/licenses/来定义您在不同情况下可以使用或不可以使用的软件。如果您对GPL不满意,或者需要将MySQL代码嵌入到商业应用程序中,可以从我们这里购买商业许可版本。有关更多信息,请参见MySQL许可概述(http://www.mysql.com/company/legal/licensing/)。
  • MySQL数据库服务器非常快速,可靠,可扩展且易于使用。如果这是您想要的,则应尝试一下。MySQL Server可以与其他应用程序,Web服务器等一起轻松地在台式机或笔记本电脑上运行,几乎不需要或不需要任何注意。如果将整台计算机专用于MySQL,则可以调整设置以利用所有可用的内存,CPU能力和I / O容量。MySQL还可以扩展到联网的机器集群。MySQL Server最初是为处理大型数据库而开发的,其处理速度比现有解决方案要快得多,并且已经在要求严格的生产环境中成功使用了数年。尽管处于不断发展中,但MySQL Server如今提供了一组丰富而有用的功能。它的连接性,速度和安全性使MySQL Server非常适合访问Internet上的数据库。
  • MySQL Server在客户端/服务器或嵌入式系统中工作。MySQL数据库软件是一个客户端/服务器系统,由支持不同后端的多线程SQL Server,几个不同的客户端程序和库,管理工具以及各种应用程序编程接口(API)组成。我们还提供MySQL Server作为嵌入式多线程库,您可以将其链接到应用程序中以获得更小,更快,更易于管理的独立产品。
  • 可以使用大量的MySQL软件。MySQL Server具有与用户密切合作开发的实用功能集。您最喜欢的应用程序或语言很可能支持MySQL数据库服务器。

发音“ MySQL ”的官方方法是“ My Ess Que Ell ”(不是“ my sequel ”),但是我们不介意将其发音为“ my sequel ”还是其他本地化方式。

MySQL的主要功能

本节描述了MySQL数据库软件的一些重要特征。在大多数方面,该路线图适用于所有版本的MySQL。有关特定于系列的MySQL中引入的功能的信息,请参见相应手册的“简而言之”一节:

  • MySQL 8.0:第1.4节“ MySQL 8.0的新增功能”
  • MySQL 5.7:MySQL 5.7的新增功能
  • MySQL 5.6:MySQL 5.6的新增功能

内部和便携性

  • 用C和C + +编写。
  • 经过广泛的不同编译器测试。
  • 可在许多不同平台上使用。参见 https://www.mysql.com/support/supportedplatforms/database.html
  • 为了便于移植,请在MySQL 5.5及更高版本中使用CMake。先前的系列使用GNU Automake,Autoconf和Libtool。
  • 已通过Purify(商用内存泄漏检测器)以及GPL工具Valgrind(http://developer.kde.org/~sewardj/)进行了测试。
  • 使用具有独立模块的多层服务器设计。
  • 设计为使用内核线程完全多线程,可以轻松使用多个CPU(如果有)。
  • 提供事务性和非事务性存储引擎。
  • 使用MyISAM索引压缩非常快的B树磁盘表()。
  • 旨在使其相对容易地添加其他存储引擎。如果要为内部数据库提供SQL接口,这将很有用。
  • 使用非常快速的基于线程的内存分配系统。
  • 使用优化的嵌套循环联接执行非常快速的联接。
  • 实现内存中的哈希表,用作临时表。
  • 使用高度优化的类库来实现SQL函数,该类库应尽可能快。通常,查询初始化后根本没有内存分配。
  • 提供服务器作为在客户端/服务器网络环境中使用的单独程序,以及作为可嵌入(链接)到独立应用程序中的库。此类应用程序可以隔离使用,也可以在没有网络可用的环境中使用。

资料类型

  • 许多数据类型:有符号/无符号整数1,2,3,4,和8个字节长,​FLOAT​,​DOUBLE​,​CHAR​,​VARCHAR​,​BINARY​,​VARBINARY​,​TEXT​,​BLOB​,​DATE​,​TIME​,​DATETIME​,​TIMESTAMP​,​YEAR​,​SET​,​ENUM​,和开放GIS空间类型。请参见第11章,数据类型
  • 固定长度和可变长度的字符串类型。

陈述和功能

  • 查询​SELECT​列表和​WHERE​子句中的完全运算符和函数支持。例如:mysql>SELECTCONCAT(first_name, ' ', last_name) ->FROM citizen ->WHERE income/dependents > 10000 AND age > 30;
  • 完全支持SQL ​GROUP BY​和​ORDER BY​子句。支持基函数(​COUNT()​,​AVG()​,​STD()​,​SUM()​,​MAX()​,​MIN()​,和​GROUP_CONCAT()​)。
  • 支持标准SQL和ODBC语法,LEFT OUTER JOIN并RIGHT OUTER JOIN同时支持它们。
  • 支持标准SQL要求的表和列别名。
  • 支持​DELETE​,​INSERT​,​REPLACE​,和​UPDATE​以返回更改(受影响)的行数,或返回通过连接到服务器时设置标志,而不是匹配的行的数量。
  • 支持特定于MySQL的​SHOW​语句,该语句检索有关数据库,存储引擎,表和索引的信息。支持​INFORMATION_SCHEMA​数据库,根据标准SQL实现。
  • 一条​EXPLAIN​语句,显示优化器如何解析查询。
  • 函数名称与表或列名称的独立性。例如,​ABS​是一个有效的列名。唯一的限制是对于函数调用,函数名称和其后的“​(​”之间不允许有空格。请参见第9.3节“关键字和保留字”。
  • 您可以在同一条语句中引用来自不同数据库的表。

安全

  • 特权和密码系统,非常灵活和安全,并且可以进行基于主机的验证。
  • 连接服务器时,通过对所有密码通信进行加密来实现密码安全。

可扩展性和限制

  • 支持大型数据库。我们将MySQL Server与包含5000万条记录的数据库一起使用。我们也知道使用MySQL Server的用户有200,000个表和大约5,000,000,000行。
  • 每个表最多支持64个索引。每个索引可以包含1到16列或部分列。InnoDB表的最大索引宽度为767字节或3072字节。请参见第15.22节“ InnoDB限制”。​MyISAM​表的最大索引宽度为 1000字节。请参见第16.2节“ MyISAM存储引擎”。索引可使用的柱的前缀​CHAR​,​VARCHAR​,​BLOB​,或​TEXT​列类型。

连接性

  • 客户端可以使用多种协议连接到MySQL Server:
  1. 客户端可以在任何平台上使用TCP / IP套接字进行连接。
  2. 在Windows系统上,如果服务器在​named_pipe​启用系统变量的情况下启动,则客户端可以使用命名管道进行连接。如果在​shared_memory​启用系统变量的情况下启动,Windows服务器还支持共享内存连接。客户端可以使用该​--protocol=memory​选项通过共享内存进行连接。
  3. 在Unix系统上,客户端可以使用Unix域套接字文件进行连接。
  • MySQL客户端程序可以用多种语言编写。用C编写的客户端库可用于用C或C + +编写的客户端,或提供C绑定的任何语言的客户端。
  • 提供了C,C + +,Eiffel,Java,Perl,PHP,Python,Ruby和Tcl的API,使MySQL客户端可以用多种语言编写。请参见第28章,连接器和API
  • 连接器/ ODBC(MyODBC)接口为使用ODBC(开放数据库连接)连接的客户端程序提供MySQL支持。例如,您可以使用MS Access连接到MySQL服务器。客户端可以在Windows或Unix上运行。连接器/ ODBC源可用。支持所有ODBC 2.5功能,以及许多其他功能。参见《 MySQL Connector / ODBC开发人员指南》。
  • Connector / J接口为使用JDBC连接的Java客户端程序提供MySQL支持。客户端可以在Windows或Unix上运行。连接器/ J源可用。参见《 MySQL Connector / J 5.1开发人员指南》。
  • MySQL Connector / NET使开发人员可以轻松创建需要与MySQL安全,高性能数据连接的.NET应用程序。它实现了必需的ADO.NET接口,并集成到ADO.NET感知工具中。开发人员可以使用他们选择的.NET语言来构建应用程序。MySQL Connector / NET是使用100%纯C#编写的完全托管的ADO.NET驱动程序。参见《 MySQL Connector / NET开发人员指南》。

本土化

  • 服务器可以用多种语言向客户端提供错误消息。请参见第10.12节“设置错误消息语言”。
  • 几个不同的字符集,包括全面支持​latin1​(CP1252),​german​,​big5​,​ujis​一些Unicode字符集等。例如,在表名和列名中允许使用斯堪的纳维亚字符“​å​”,“​ä​”和“​ö​”。
  • 所有数据都保存在所选字符集中。
  • 排序和比较是根据默认字符集和排序规则完成的。可以在启动MySQL服务器时更改此设置(请参见第10.3.2节“服务器字符集和排序规则”)。要参见非常高级的排序示例,请参见Czech排序代码。MySQL Server支持许多不同的字符集,可以在编译时和运行时指定它们。
  • 服务器时区可以动态更改,并且各个客户端可以指定自己的时区。请参见第5.1.13节“ MySQL服务器时区支持”。

客户和工具

  • MySQL包含几个客户端程序和实用程序。这些都包括命令行程序(例如mysqldumpmysqladmin)以及图形程序(例如 MySQL Workbench)。
  • MySQL Server内置了对SQL语句的支持,以检查,优化和修复表。这些语句可通过mysqlcheck客户端从命令行使用。MySQL还包括myisamchk,这是一个非常快的命令行实用程序,用于对​MyISAM​表执行这些操作。请参阅第4章,MySQL程序
  • 可以使用​--help​或​-?​选项调用MySQL程序以获得在线帮助。

MySQL的历史

我们最初的目的是使用​mSQL​数据库系统通过我们自己的快速低级(ISAM)例程连接到我们的表。但是,经过一些测试,我们得出的结论​mSQL​是不够快或不够灵活,无法满足我们的需求。这样就为我们的数据库提供了一个新的SQL接口,但具有与几乎相同的API接口​mSQL​。该API旨在使编写供使用的第三方代码能够​mSQL​轻松移植以与MySQL一起使用。

MySQL以共同创始人Monty Widenius的女儿My命名。

MySQL Dolphin(我们的徽标)的名称为“ Sakila ”,它是从用户在“ Name of Dolphin ”竞赛中建议的大量名称中选择的。获胜者的名字是来自非洲斯威士兰的开源软件开发商Ambrose Twebaze提交的。根据安布罗斯(Ambrose)的说法,女性名称Sakila起源于斯威士兰的本地语言SiSwati。Sakila还是坦桑尼亚阿鲁沙的一个小镇的名字,靠近安布罗斯的原籍国乌干达。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号