我們來了解一下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.安全
十分靈活和安全的權限和密碼系統,允許基于主機的驗證。連接到服務器時,所有的密碼傳輸均采用加密形式,從而保證了密碼安全。
新聞熱點
疑難解答