MySql 中文参考指南
1.2.2 The Main Features of MySQL
本节介绍 MySQL 数据库软件的一些重要特性。在大多数方面,路线图适用于所有版本的 MySQL。要了解按系列方式引入 MySQL 功能的信息,请参见相应手册的“简明”部分:
-
MySQL 8.4: What Is New in MySQL 8.4 since MySQL 8.0
-
MySQL 8.0: What Is New in MySQL 8.0
-
MySQL 5.7: What Is New in MySQL 5.7
-
用 C 和 C++ 编写。
-
通过多种不同编译器进行测试。
-
适用于多种不同平台。请参阅 https://www.mysql.com/support/supportedplatforms/database.html。
-
为了提高可移植性,使用 CMake 进行配置。
-
使用商业内存泄漏检测器 Purify 以及 GPL 工具 Valgrind 进行了测试 ( https://valgrind.org/)。
-
使用具有独立模块的多层服务器设计。
-
设计为完全多线程,使用内核线程,以便在有可用内核的情况下轻松使用多个 CPU。
-
提供事务性和非事务性存储引擎。
-
使用非常快速的 B 树磁盘表 (MyISAM),带索引压缩。
-
设计为可以相对轻松地添加其他存储引擎。如果您希望为内部数据库提供 SQL 界面,此功能非常有用。
-
使用非常快速的基于线程的内存分配系统。
-
使用优化的嵌套循环连接执行非常快速的连接。
-
使用作临时表使用的内存哈希表。
-
利用应该尽可能高效的一个高度优化的类库实现 SQL 函数。通常在查询初始化后根本没有内存分配。
-
提供服务器作为单独程序以在客户机/服务器网络环境中使用。
-
多种数据类型:1、2、3、4 和 8 字节长的带/不带符号的整数, FLOAT 、 DOUBLE 、 CHAR 、 VARCHAR 、 BINARY 、 VARBINARY 、 TEXT 、 BLOB 、 DATE 、 TIME 、 DATETIME 、 TIMESTAMP 、 YEAR 、 SET 、 ENUM 和 OpenGIS 空间类型。参见 Chapter 13, Data Types 。
-
定长和变长字符串类型。
-
在查询的 SELECT 列表和 WHERE 子句中全面支持运算符和函数。例如: mysql> SELECT CONCAT(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 语句。支持根据标准 SQL 实现的 INFORMATION_SCHEMA 数据库。
-
EXPLAIN 语句用于展示优化器如何解析查询。
-
函数名称独立于表或列名称。例如,ABS_是一个有效的列名称。唯一的限制是,对于函数调用,函数名称和其后的“(_”之间不允许有空格。参见 Section 11.3, “Keywords and Reserved Words”。
-
您可以在同一条语句中引用来自不同数据库的表。
-
一种非常灵活和安全的权限和密码系统,该系统支持基于主机的验证。
-
通过在您连接至服务器时对所有密码流量进行加密来实现密码安全。
-
支持大型数据库。我们使用 MySQL 服务器来处理包含 5000 万条记录的数据库。我们还了解到有用户使用带有 200000 张表以及约 5000000000 行的 MySQL 服务器。
-
支持每个表最多 64 个索引。每个索引可以包含 1 到 16 列或列的一部分。 InnoDB 表的最大索引宽度为 767 字节或 3072 字节。参见 Section 17.21, “InnoDB Limits” 。 MyISAM 表的最大索引宽度为 1000 字节。参见 Section 18.2, “The MyISAM Storage Engine” 。索引可以使用列前缀,适用于 CHAR 、 VARCHAR 、 BLOB 或 TEXT 列类型。
-
客户机可以使用多种协议连接 MySQL 服务器:
客户机可以在任何平台上使用 TCP/IP 套接字连接。
在 Windows 系统上,如果服务器在启用 named_pipe 系统变量的情况下启动,则客户端可以使用命名管道连接。如果 Windows 服务器在启用 shared_memory 系统变量的情况下启动,则它还支持共享内存连接。客户端可以使用 —protocol=memory 选项通过共享内存连接。
在 Unix 系统上,客户机可以使用 Unix 域套接字文件进行连接。
-
客户机可以在任何平台上使用 TCP/IP 套接字连接。
-
在 Windows 系统上,如果服务器在启用 named_pipe 系统变量的情况下启动,则客户端可以使用命名管道连接。如果 Windows 服务器在启用 shared_memory 系统变量的情况下启动,则它还支持共享内存连接。客户端可以使用 —​protocol=memory 选项通过共享内存连接。
-
在 Unix 系统上,客户机可以使用 Unix 域套接字文件进行连接。
-
MySQL 客户机程序可以使用多种语言编写。为用 C 或 C++ 编写或为提供 C 绑定的任何语言编写的客户机提供一个用 C 编写的客户机库。
-
提供 C、C++、Eiffel、Java、Perl、PHP、Python、Ruby 和 Tcl 的 API,使 MySQL 客户端可以用多种语言编写。参见 Chapter 31, Connectors and APIs 。
-
Connector/ODBC(MyODBC)接口为使用 ODBC(开放数据库连接)连接的客户机程序提供 MySQL 支持。例如,您可以使用 MS Access 连接到您的 MySQL 服务器。客户机可以在 Windows 或 Unix 中运行。可以使用 Connector/ODBC 源代码。它支持所有 ODBC 2.5 函数以及其他许多函数。参见 MySQL Connector/ODBC Developer Guide。
-
Connector/J 接口为使用 JDBC 连接的 Java 客户机程序提供 MySQL 支持。客户机可以在 Windows 或 Unix 中运行。可以使用 Connector/J 源代码。参见 MySQL Connector/J Developer Guide。
-
MySQL Connector/NET 使开发人员能够轻松创建需要安全、高性能数据连接到 MySQL 的 .NET 应用程序。它实现了所需的 ADO.NET 接口并集成到支持 ADO.NET 的工具中。开发人员可以使用他们选择的 .NET 语言来构建应用程序。MySQL Connector/NET 是使用 100% 纯 C# 编写的完全托管的 ADO.NET 驱动程序。参见 MySQL Connector/NET Developer Guide。
-
服务器可以用许多语言对客户端提供错误消息。请参见 Section 12.12, “Setting the Error Message Language”。
-
完全支持若干不同的字符集,包括_latin1_ (cp1252)、german、big5、ujis、几个 Unicode 字符集等。例如,表格和列名中允许使用斯堪的纳维亚字符“å”、“ä”和“ö”。
-
所有数据都以所选字符集保存。
-
根据默认字符集和排序规则进行排序和比较。MySQL 服务器启动时可以更改这些规则(请参见 Section 12.3.2, “Server Character Set and Collation”)。有关非常高级排序的示例,请查看捷克语排序代码。MySQL 服务器支持许多不同的字符集,这些字符集可以在编译时和运行时指定。
-
服务器时区可以动态更改,各个客户端可以指定自己的时区。请参见 Section 7.1.15, “MySQL Server Time Zone Support”。
-
MySQL 包含多个客户端和实用程序。其中包括命令行程序(如 mysqldump 和 mysqladmin )和图形程序(如 MySQL Workbench )。
-
MySQL 服务器内置支持用于检查、优化和修复表的 SQL 语句。可以通过 mysqlcheck 客户端从命令行获得这些语句。MySQL 还包含 myisamchk ,这是一种非常快速的命令行实用程序,用于对 MyISAM 表执行这些操作。参见 Chapter 6, MySQL Programs 。
-
可以选用 _—​help_或 _-?_选项调用 MySQL 程序来获取在线帮助。