MySql 中文参考指南

1.2.2 The Main Features of MySQL

本节介绍 MySQL 数据库软件的一些重要特性。在大多数方面,路线图适用于所有版本的 MySQL。要了解按系列方式引入 MySQL 功能的信息,请参见相应手册的“简明”部分:

  1. MySQL 8.4: What Is New in MySQL 8.4 since MySQL 8.0

  2. MySQL 8.0: What Is New in MySQL 8.0

  3. MySQL 5.7: What Is New in MySQL 5.7

  4. 用 C 和 C++ 编写。

  5. 通过多种不同编译器进行测试。

  6. 适用于多种不同平台。请参阅 https://www.mysql.com/support/supportedplatforms/database.html

  7. 为了提高可移植性,使用 CMake 进行配置。

  8. 使用商业内存泄漏检测器 Purify 以及 GPL 工具 Valgrind 进行了测试 ( https://valgrind.org/)。

  9. 使用具有独立模块的多层服务器设计。

  10. 设计为完全多线程,使用内核线程,以便在有可用内核的情况下轻松使用多个 CPU。

  11. 提供事务性和非事务性存储引擎。

  12. 使用非常快速的 B 树磁盘表 (MyISAM),带索引压缩。

  13. 设计为可以相对轻松地添加其他存储引擎。如果您希望为内部数据库提供 SQL 界面,此功能非常有用。

  14. 使用非常快速的基于线程的内存分配系统。

  15. 使用优化的嵌套循环连接执行非常快速的连接。

  16. 使用作临时表使用的内存哈希表。

  17. 利用应该尽可能高效的一个高度优化的类库实现 SQL 函数。通常在查询初始化后根本没有内存分配。

  18. 提供服务器作为单独程序以在客户机/服务器网络环境中使用。

  19. 多种数据类型:1、2、3、4 和 8 字节长的带/不带符号的整数, FLOATDOUBLECHARVARCHARBINARYVARBINARYTEXTBLOBDATETIMEDATETIMETIMESTAMPYEARSETENUM 和 OpenGIS 空间类型。参见 Chapter 13, Data Types

  20. 定长和变长字符串类型。

  21. 在查询的 SELECT 列表和 WHERE 子句中全面支持运算符和函数。例如: mysql> SELECT CONCAT(first_name, ' ', last_name) → FROM citizen → WHERE income/dependents > 10000 AND age > 30;

  22. 全面支持 SQL GROUP BYORDER BY 子句。支持分组函数( COUNT()AVG()STD()SUM()MAX()MIN()GROUP_CONCAT() )。

  23. 支持使用标准 SQL 和 ODBC 语法的 LEFT OUTER JOIN_和 _RIGHT OUTER JOIN

  24. 支持标准 SQL 所需的表和列的别名。

  25. 支持 DELETEINSERTREPLACEUPDATE 以返回更改的行数(受影响的行数),或通过在连接到服务器时设置标志以返回匹配的行数。

  26. 支持检索有关数据库、存储引擎、表和索引的信息的特定于 MySQL 的 SHOW 语句。支持根据标准 SQL 实现的 INFORMATION_SCHEMA 数据库。

  27. EXPLAIN 语句用于展示优化器如何解析查询。

  28. 函数名称独立于表或列名称。例如,ABS_是一个有效的列名称。唯一的限制是,对于函数调用,函数名称和其后的“(_”之间不允许有空格。参见 Section 11.3, “Keywords and Reserved Words”

  29. 您可以在同一条语句中引用来自不同数据库的表。

  30. 一种非常灵活和安全的权限和密码系统,该系统支持基于主机的验证。

  31. 通过在您连接至服务器时对所有密码流量进行加密来实现密码安全。

  32. 支持大型数据库。我们使用 MySQL 服务器来处理包含 5000 万条记录的数据库。我们还了解到有用户使用带有 200000 张表以及约 5000000000 行的 MySQL 服务器。

  33. 支持每个表最多 64 个索引。每个索引可以包含 1 到 16 列或列的一部分。 InnoDB 表的最大索引宽度为 767 字节或 3072 字节。参见 Section 17.21, “InnoDB Limits”MyISAM 表的最大索引宽度为 1000 字节。参见 Section 18.2, “The MyISAM Storage Engine” 。索引可以使用列前缀,适用于 CHARVARCHARBLOBTEXT 列类型。

  34. 客户机可以使用多种协议连接 MySQL 服务器:

客户机可以在任何平台上使用 TCP/IP 套接字连接。

在 Windows 系统上,如果服务器在启用 named_pipe 系统变量的情况下启动,则客户端可以使用命名管道连接。如果 Windows 服务器在启用 shared_memory 系统变量的情况下启动,则它还支持共享内存连接。客户端可以使用 —​protocol=memory 选项通过共享内存连接。

在 Unix 系统上,客户机可以使用 Unix 域套接字文件进行连接。

  1. 客户机可以在任何平台上使用 TCP/IP 套接字连接。

  2. 在 Windows 系统上,如果服务器在启用 named_pipe 系统变量的情况下启动,则客户端可以使用命名管道连接。如果 Windows 服务器在启用 shared_memory 系统变量的情况下启动,则它还支持共享内存连接。客户端可以使用 —​protocol=memory 选项通过共享内存连接。

  3. 在 Unix 系统上,客户机可以使用 Unix 域套接字文件进行连接。

  4. MySQL 客户机程序可以使用多种语言编写。为用 C 或 C++ 编写或为提供 C 绑定的任何语言编写的客户机提供一个用 C 编写的客户机库。

  5. 提供 C、C++、Eiffel、Java、Perl、PHP、Python、Ruby 和 Tcl 的 API,使 MySQL 客户端可以用多种语言编写。参见 Chapter 31, Connectors and APIs

  6. Connector/ODBC(MyODBC)接口为使用 ODBC(开放数据库连接)连接的客户机程序提供 MySQL 支持。例如,您可以使用 MS Access 连接到您的 MySQL 服务器。客户机可以在 Windows 或 Unix 中运行。可以使用 Connector/ODBC 源代码。它支持所有 ODBC 2.5 函数以及其他许多函数。参见 MySQL Connector/ODBC Developer Guide

  7. Connector/J 接口为使用 JDBC 连接的 Java 客户机程序提供 MySQL 支持。客户机可以在 Windows 或 Unix 中运行。可以使用 Connector/J 源代码。参见 MySQL Connector/J Developer Guide

  8. MySQL Connector/NET 使开发人员能够轻松创建需要安全、高性能数据连接到 MySQL 的 .NET 应用程序。它实现了所需的 ADO.NET 接口并集成到支持 ADO.NET 的工具中。开发人员可以使用他们选择的 .NET 语言来构建应用程序。MySQL Connector/NET 是使用 100% 纯 C# 编写的完全托管的 ADO.NET 驱动程序。参见 MySQL Connector/NET Developer Guide

  9. 服务器可以用许多语言对客户端提供错误消息。请参见 Section 12.12, “Setting the Error Message Language”

  10. 完全支持若干不同的字符集,包括_latin1_ (cp1252)、germanbig5ujis、几个 Unicode 字符集等。例如,表格和列名中允许使用斯堪的纳维亚字符“å”、“ä”和“ö”。

  11. 所有数据都以所选字符集保存。

  12. 根据默认字符集和排序规则进行排序和比较。MySQL 服务器启动时可以更改这些规则(请参见 Section 12.3.2, “Server Character Set and Collation”)。有关非常高级排序的示例,请查看捷克语排序代码。MySQL 服务器支持许多不同的字符集,这些字符集可以在编译时和运行时指定。

  13. 服务器时区可以动态更改,各个客户端可以指定自己的时区。请参见 Section 7.1.15, “MySQL Server Time Zone Support”

  14. MySQL 包含多个客户端和实用程序。其中包括命令行程序(如 mysqldumpmysqladmin )和图形程序(如 MySQL Workbench )。

  15. MySQL 服务器内置支持用于检查、优化和修复表的 SQL 语句。可以通过 mysqlcheck 客户端从命令行获得这些语句。MySQL 还包含 myisamchk ,这是一种非常快速的命令行实用程序,用于对 MyISAM 表执行这些操作。参见 Chapter 6, MySQL Programs

  16. 可以选用 _—​help_或 _-?_选项调用 MySQL 程序来获取在线帮助。