( Features

Info Catalog ( History ( What-is ( Stability
 1.2.2 The Main Features of MySQL
 The following list describes some of the important characteristics of
 the MySQL Database Software. See also  Roadmap for more
 information about current and upcoming features.
 Internals and Portability
         * Written in C and C++.
         * Tested with a broad range of different compilers.
         * Works on many different platforms.   Which OS.
         * Uses GNU Automake, Autoconf, and Libtool for portability.
         * APIs for C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, and
           Tcl are available.   MySQL APIs.
         * Fully multi-threaded using kernel threads.  It can easily use
           multiple CPUs if they are available.
         * Provides transactional and non-transactional storage engines.
         * Uses very fast B-tree disk tables (`MyISAM') with index
         * Relatively easy to add another storage engine. This is useful
           if you want to add an SQL interface to an in-house database.
         * A very fast thread-based memory allocation system.
         * Very fast joins using an optimized one-sweep multi-join.
         * In-memory hash tables, which are used as temporary tables.
         * SQL functions are implemented using a highly optimized class
           library and should be as fast as possible.  Usually there is
           no memory allocation at all after query initialization.
         * The MySQL code is tested with Purify (a commercial memory
           leakage detector) as well as with Valgrind, a GPL tool
         * The server is available as a separate program for use in a
           client/server networked environment.  It is also available as
           a library that can be embedded (linked) into standalone
           applications. Such applications can be used in isolation or
           in environments where no network is available.
 Column Types
         * Many column types: signed/unsigned integers 1, 2, 3, 4, and 8
           bytes long, `FLOAT', `DOUBLE', `CHAR', `VARCHAR', `TEXT',
           `BLOB', `DATE', `TIME', `DATETIME', `TIMESTAMP', `YEAR',
           `SET', `ENUM', and OpenGIS spatial types.   Column
         * Fixed-length and variable-length records.
 Statements and Functions
         * Full operator and function support in the `SELECT' and `WHERE'
           clauses of queries.  For example:
                mysql> SELECT CONCAT(first_name, ' ', last_name)
                    -> FROM citizen
                    -> WHERE income/dependents > 10000 AND age > 30;
         * Full support for SQL `GROUP BY' and `ORDER BY' clauses.
           Support for group functions (`COUNT()', `COUNT(DISTINCT ...)',
           `AVG()', `STD()', `SUM()', `MAX()', `MIN()', and
         * Support for `LEFT OUTER JOIN' and `RIGHT OUTER JOIN' with
           both standard SQL and ODBC syntax.
         * Support for aliases on tables and columns as required by
           standard SQL.
         * `DELETE', `INSERT', `REPLACE', and `UPDATE' return the number
           of rows that were changed (affected).  It is possible to
           return the number of rows matched instead by setting a flag
           when connecting to the server.
         * The MySQL-specific `SHOW' command can be used to retrieve
           information about databases, tables, and indexes.  The
           `EXPLAIN' command can be used to determine how the optimizer
           resolves a query.
         * Function names do not clash with table or column names.  For
           example, `ABS' is a valid column name.  The only restriction
           is that for a function call, no spaces are allowed between
           the function name and the `(' that follows it.  
           Reserved words.
         * You can mix tables from different databases in the same query
           (as of MySQL 3.22).
         * A privilege and password system that is very flexible and
           secure, and that allows host-based verification.  Passwords
           are secure because all password traffic is encrypted when you
           connect to a server.
 Scalability and Limits
         * Handles large databases.  We use MySQL Server with databases
           that contain 50 million records. We also know of users who
           use MySQL Server with 60,000 tables and about 5,000,000,000
         * Up to 64 indexes per table are allowed (32 before MySQL
           4.1.2).  Each index may consist of 1 to 16 columns or parts
           of columns.  The maximum index width is 1000 bytes (500
           before MySQL 4.1.2).  An index may use a prefix of a column
           for `CHAR', `VARCHAR', `BLOB', or `TEXT' column types.
         * Clients can connect to the MySQL server using TCP/IP sockets
           on any platform.  On Windows systems in the NT family (NT,
           2000, XP, or 2003), clients can connect using named pipes. On
           Unix systems, clients can connect using Unix domain socket
         * In MySQL versions 4.1 and higher, Windows servers also
           support shared-memory connections if started with the
           `--shared-memory' option.  Clients can connect through shared
           memory by using the `--protocol=memory' option.
         * The Connector/ODBC (MyODBC) interface provides MySQL support
           for client programs that use ODBC (Open Database
           Connectivity) connections.  For example, you can use MS
           Access to connect to your MySQL server.  Clients can be run
           on Windows or Unix.  MyODBC source is available.  All ODBC
           2.5 functions are supported, as are many others.   ODBC
         * The Connector/J interface provides MySQL support for Java
           client programs that use JDBC connections.  Clients can be
           run on Windows or Unix.  Connector/J source is available.
            Java Connector.
         * The server can provide error messages to clients in many
           languages.   Languages.
         * Full support for several different character sets, including
           `latin1' (ISO-8859-1), `german', `big5', `ujis', and more.
           For example, the Scandinavian characters `a^', `a"' and `o"'
           are allowed in table and column names.  Unicode support is
           available as of MySQL 4.1.
         * All data is saved in the chosen character set.  All
           comparisons for normal string columns are case-insensitive.
         * Sorting is done according to the chosen character set (using
           Swedish collation by default).  It is possible to change this
           when the MySQL server is started.  To see an example of very
           advanced sorting, look at the Czech sorting code.  MySQL
           Server supports many different character sets that can be
           specified at compile time and runtime.
 Clients and Tools
         * The MySQL server has built-in support for SQL statements to
           check, optimize, and repair tables.  These statements are
           available from the command line through the `mysqlcheck'
           client. MySQL also includes `myisamchk', a very fast
           command-line utility for performing these operations on
           `MyISAM' tables.   MySQL Database Administration.
         * All MySQL programs can be invoked with the `--help' or `-?'
           options to obtain online assistance.
Info Catalog ( History ( What-is ( Stability
automatically generated byinfo2html