我们来了解一下MySQL的基本特性:
1.内部构件和可移植性
使用C和C++编写 用众多不同的编译器进行了测试 能够工作在众多不同的平台上。请参见2.1.1 “MySQL支持的操作系统”。 使用GNU Automake、Autoconf和Libtool进行移植。 提供了用于C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl的API。 采用核心线程的完全多线程 如果有多个CPU,它能方便地使用这些CPU。 提供了事务性和非事务性存储引擎。 使用了极快的“B树”磁盘表(MyISAM)和索引压缩。 添加另一个存储引擎相对简单。如果打算为内部数据库添加一个SQL接口,该特性十分有用。 极快的基于线程的内存分配系统。 通过使用优化的“单扫描多连接”,能实现极快的连接。 存储器中的哈希表用作临时表。 SQL函数是使用高度优化的类库实现的,运行很快。通常,在完成查询初始化后,不存在存储器分配。 采用Purify(商业内存溢出检测器)以及GPL工具Valgrind(http://developer.kde.org/~sewardj/)测试了MySQL代码。 服务器可作为单独程序运行在客户端/服务器联网环境下。它也可作为库提供,可嵌入(链接)到独立的应用程序中。这类应用程序可单独使用,也能在网络环境下使用。2.列类型
众多列类型: 带符号/无符号整数,1、2、3、4、8字节长,FLOAT,DOUBLE,CHAR,VARCHAR,TEXT,BLOB,DATE,TIME,DATETIME,TIMESTAMP,YEAR,SET,ENUM,以及OpenGIS空间类型。请参见第11章:列类型。
定长和可变长度记录。
3.语句和函数
在SELECT和查询的WHERE子句中,提供完整的操作符和函数支持。例如:
mysql> SELECT CONCAT(first_name, ' ', last_name) -> FROM citizen -> WHERE income/dependents > 10000 AND age > 30; |
对SQL GROUP BY和ORDER BY子句的全面支持。支持聚合函数(COUNT(), COUNT(DISTINCT ...),AVG(),STD(),SUM(),MAX(),MIN()和GROUP_CONCAT())。
支持LEFT OUTER JOIN和RIGHT OUTER JOIN,采用标准的SQL和ODBC语法。
按照标准SQL的要求,支持表别名和列别名。
DELETE、INSERT、REPLACE和UPDATE返回更改(影响)的行数。连接到服务器时,可通过设置标志返回匹配的行数。
MySQL的SHOW命令可用于检索关于数据库、数据库引擎、表和索引的信息。EXPLAIN命令可用于确定优化器处理查询的方式。
函数名与表名或列名不冲突。例如,ABS是有效的列名。唯一的限制在于,调用函数时,函数名和随后的符号“(”之间不得有空格。请参见9.6 “MySQL中保留字的处理”。
可以将不同数据库的表混合在相同的查询中(就像MySQL 3.22中那样)。
4.安全
十分灵活和安全的权限和密码系统,允许基于主机的验证。连接到服务器时,所有的密码传输均采用加密形式,从而保证了密码安全。
新闻热点
疑难解答