MySQL主要特点

内部和可移植性
  • 用C和C++编写的。
  • MySQL Server经过广泛测试,可以与多种不同的编译器兼容。
  • MySQL Server可以在许多不同的平台上运行。请参考https://www.mysql.com/support/supportedplatforms/database.html以获取详细信息。
  • 为了实现可移植性,MySQL Server可以使用CMake进行配置。
  • MySQL Server经过Purify(一款商业内存泄漏检测工具)和Valgrind(一款GPL工具)的测试
  • 采用多层独立模块的服务器设计。
  • MySQL Server被设计为完全多线程,并使用内核线程,以便在有多个可用的CPU时轻松利用它们。
  • MySQL Server提供事务性和非事务性存储引擎。
  • MySQL Server使用非常快速的B-tree磁盘表(MyISAM),并支持索引压缩功能。
  • MySQL Server的设计目标是相对容易地添加其他存储引擎。这在您想要为内部数据库提供SQL接口时非常有用。
  • MySQL Server使用非常快速的基于线程的内存分配系统。
  • MySQL Server使用优化的嵌套循环连接来执行非常快速的连接操作。
  • MySQL Server实现了基于内存的哈希表,用作临时表。
  • MySQL Server使用高度优化的类库来实现SQL函数,旨在尽可能提供更快的执行速度。通常,在查询初始化后几乎没有任何内存分配。
  • MySQL Server作为一个独立的程序提供,用于在客户端/服务器网络环境中使用。
数据类型
  • MySQL Server提供了多种数据类型,包括有符号/无符号整数(1、2、3、4和8字节长)、FLOAT、DOUBLE、CHAR、VARCHAR、BINARY、VARBINARY、TEXT、BLOB、DATE、TIME、DATETIME、TIMESTAMP、YEAR、SET、ENUM以及OpenGIS空间类型。这些不同的数据类型允许在数据库中存储和处理各种不同类型的数据。
  • MySQL Server还提供了固定长度和可变长度的字符串类型。
语句和函数
  • 在查询的SELECT列表和WHERE子句中,完全支持运算符和函数。例如:
sql 复制代码
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数据库。通过SHOW语句和INFORMATION_SCHEMA数据库,可以方便地获取关于MySQL数据库和表结构的各种元数据信息。
  • MySQL Server支持使用EXPLAIN语句来展示查询优化器如何解析查询。
  • MySQL Server具有函数名称与表或列名称相互独立的特性。例如,ABS可以作为一个有效的列名。唯一的限制是在函数调用时,函数名称与紧随其后的 "(" 之间不允许有空格。这使得函数名称可以与表和列的命名不冲突,方便了查询和数据处理中函数的使用。
  • 在同一条语句中,可以引用不同数据库中的表。
安全
  • MySQL Server提供了一个灵活且安全的权限和密码系统,可以进行主机基础的验证。
  • 连接到服务器时,通过对所有密码流量进行加密来确保密码的安全性。
可扩展性和限制
  • MySQL Server支持大型数据库。我们可以使用MySQL Server管理包含5000万条记录的数据库。我们也知道一些用户使用MySQL Server管理具有20万个表和约50亿行的数据库。
  • MySQL Server支持每个表最多64个索引。每个索引可以由1到16个列或列的部分组成。对于InnoDB表,索引的最大宽度要么是767字节,要么是3072字节,具体取决于配置。对于MyISAM表,索引的最大宽度为1000字节。对于CHAR、VARCHAR、BLOB或TEXT列类型,索引可以使用列的前缀来索引。
连接性
  • 客户端可以使用多种协议连接到MySQL服务器:
    • 客户端可以在任何平台上使用TCP/IP套接字进行连接。
    • 在Windows系统上,如果服务器启用了named_pipe系统变量,则客户端可以使用命名管道进行连接。如果通过 --protocol=memory 选项,Windows服务器还支持共享内存连接。
    • 在Unix系统上,客户端可以使用Unix域套接字文件进行连接。
  • MySQL客户端程序可以使用许多不同的编程语言编写。MySQL提供了用于C或C++编写的客户端库,或者任何支持C绑定的语言都可以使用该库进行开发。这使得开发人员可以根据自己偏好的编程语言来创建与MySQL服务器进行交互的客户端程序。
  • MySQL提供了用于C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl的API,使得可以使用许多不同的编程语言来编写MySQL客户端。有关详细信息,请参阅第29章"Connectors and APIs"。
  • MySQL提供了名为Connector/ODBC(也称为MyODBC)的接口,用于支持使用ODBC(开放数据库连接)连接的客户端程序与MySQL进行交互。例如,您可以使用MS Access连接到MySQL服务器。这个接口可以在Windows和Unix系统上运行。可获得Connector/ODBC的源代码。它支持所有ODBC 2.5函数以及其他许多功能。请参阅"MySQL Connector/ODBC开发人员指南"了解更多信息。
  • Connector/J接口为使用JDBC(Java数据库连接)连接的Java客户端程序提供MySQL支持。这个接口可以在Windows和Unix系统上运行。可以获取到Connector/J的源代码。请参阅"MySQL Connector/J 8.0开发人员指南"了解更多信息。
  • MySQL Connector/NET允许开发人员轻松创建需要与MySQL进行安全、高性能数据连接的.NET应用程序。它实现了所需的ADO.NET接口,并集成到支持ADO.NET的工具中。开发人员可以使用他们选择的.NET语言构建应用程序。MySQL Connector/NET是一个完全托管的ADO.NET驱动程序,使用100%纯C#编写。请参阅"MySQL Connector/NET开发人员指南"了解更多信息。
本地化
  • 服务器可以以多种语言向客户端提供错误消息。请参阅第10.12节"设置错误消息语言"。
  • MySQL对多种不同的字符集提供完整支持,包括latin1(cp1252)、german、big5、ujis、多个Unicode字符集等。例如,表名和列名中允许使用斯堪的纳维亚字符"å"、"ä"和"ö"。
  • 所有的数据都以选择的字符集保存。
  • 排序和比较是根据默认的字符集和排序规则进行的。可以在启动MySQL服务器时更改这些设置(参见第10.3.2节"服务器字符集和排序规则")。可以查看捷克排序代码来了解高级排序的示例。MySQL服务器支持许多不同的字符集,可以在编译时和运行时指定。
  • 服务器的时区可以动态更改,每个客户端都可以指定自己的时区。
客户端和工具
  • MySQL包括多个客户端和实用程序。这些包括命令行程序(如mysqldump和mysqladmin)和图形化程序(如MySQL Workbench)。
  • MySQL服务器内置了支持SQL语句来检查、优化和修复表的功能。这些语句可以通过mysqlcheck客户端从命令行中使用。MySQL还包括myisamchk,这是一个非常快速的用于在MyISAM表上执行这些操作的命令行实用程序。
  • MySQL程序可以使用--help或-?选项来获取在线帮助。这些选项会显示有关程序的使用方法、命令行参数和其他相关信息。
相关推荐
我自飞扬临天下2 分钟前
Mybatis-Plus快速入门
数据库·mybatis-plus
Marzlam3 分钟前
sql server索引优化语句
开发语言·数据库
CodeChampion6 分钟前
60.基于SSM的个人网站的设计与实现(项目 + 论文)
java·vue.js·mysql·spring·elementui·node.js·mybatis
我叫啥都行20 分钟前
计算机基础复习12.22
java·jvm·redis·后端·mysql
Zmxcl-00736 分钟前
IIS解析漏洞
服务器·数据库·microsoft
明矾java1 小时前
Mysql-SQL执行流程解析
数据库·sql·mysql
蓬莱道人1 小时前
BenchmarkSQL使用教程
数据库
p@nd@2 小时前
Oracle筑基篇-调度算法-LRU的引入
数据库·oracle·操作系统·lru
来一杯龙舌兰2 小时前
【MongoDB】使用 MongoDB 存储日志、审批、MQ等数据的案例及优点
数据库·mongodb
技术路上的苦行僧2 小时前
分布式专题(8)之MongoDB存储原理&多文档事务详解
数据库·分布式·mongodb