MySQL is an open source database management system developed by MySQL AB,
http://www.mysql.com. MySQL has the following main features:
- Works on many different platforms.
- APIs for C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, and Tcl are available.
- 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 compression.
- 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 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.
- 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.
- Fixed-length and variable-length records.
- Full operator and function support in the SELECT and WHERE clauses of queries.
- Full support for SQL GROUP BY, ORDER BY clauses and group functions.
- 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.
- 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
- 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 rows.
- 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 files.
- 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
- 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.
- 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. See section 22.2 MySQL Java
- The server can provide error messages to clients in many languages. See section 5.8.2 Setting the
Error Message Language.
- Full support for several different character sets, including latin1 (ISO-8859-1), german, big5,
ujis, and more. 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
- 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.
- 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. See
section 5 Database Administration.
⇒Downloading and Installing MySQL on Windows
⇒⇒MySQL Database Tutorials