Chapter 1. General Information

Table of Contents

1.1. About This Manual
1.1.1.1.1. Conventions Used in This Manual
1.2. Overview of the MySQL Database Management System
1.2.1.2.1. History of MySQL
1.2.1.2.2. The Main Features of MySQL
1.2.1.2.3. MySQL Stability
1.2.1.2.4. How Big MySQL Tables Can Be
1.2.1.2.5. Year 2000 Compliance
1.3. Overview of MySQL AB
1.3.1.3.1. The Business Model and Services of MySQL AB
1.3.1.3.2. Contact Information
1.4. MySQL Support and Licensing
1.4.1.4.1. Support Offered by MySQL AB
1.4.1.4.2. Copyrights and Licenses Used by MySQL
1.4.1.4.3. MySQL Licenses
1.4.1.4.4. MySQL AB Logos and Trademarks
1.5. MySQL Development Roadmap
1.5.1.5.1. MySQL 4.0 in a Nutshell
1.5.1.5.2. MySQL 4.1 in a Nutshell
1.5.1.5.3. MySQL 5.0: The Next Development Release
1.6. MySQL and the Future (the TODO)
1.6.1.6.1. New Features Planned for 5.0
1.6.1.6.2. New Features Planned for 5.1
1.6.1.6.3. New Features Planned for the Near Future
1.6.1.6.4. New Features Planned for the Mid-Term Future
1.6.1.6.5. New Features We Don't Plan to Implement
1.7. MySQL Information Sources
1.7.1.7.1. MySQL Mailing Lists
1.7.1.7.2. MySQL Community Support on IRC (Internet Relay Chat)
1.8. MySQL Standards Compliance
1.8.1.8.1. What Standards MySQL Follows
1.8.1.8.2. Selecting SQL Modes
1.8.1.8.3. Running MySQL in ANSI Mode
1.8.1.8.4. MySQL Extensions to Standard SQL
1.8.1.8.5. MySQL Differences from Standard SQL
1.8.1.8.6. How MySQL Deals with Constraints
1.8.1.8.7. Known Errors and Design Deficiencies in MySQL

The MySQL (R) software delivers a very fast, multi-threaded, multi-user, and robust SQL (Structured Query Language) database server. MySQL Server is intended for mission-critical, heavy-load production systems as well as for embedding into mass-deployed software. MySQL is a registered trademark of MySQL AB.

The MySQL software is Dual Licensed. Users can choose to use the MySQL software as an Open Source/Free Software product under the terms of the GNU General Public License (http://www.fsf.org/licenses/) or can purchase a standard commercial license from MySQL AB. See the section called “MySQL Support and Licensing”.

The MySQL Web site (http://www.mysql.com/) provides the latest information about the MySQL software.

The following list describes some sections of particular interest in this manual:

Important:

Reports of errors (often called “bugs”), as well as questions and comments, should be sent to the general MySQL mailing list. See the section called “The MySQL Mailing Lists”. See the section called “How to Report Bugs or Problems”.

The mysqlbug script should be used to generate bug reports on Unix. (Windows distributions contain a file named mysqlbug.txt in the base directory that can be used as a template for a bug report.)

For source distributions, the mysqlbug script can be found in the scripts directory. For binary distributions, mysqlbug can be found in the bin directory (/usr/bin for the MySQL-server RPM package).

If you have found a sensitive security bug in MySQL Server, please let us know immediately by sending an email message to mailto:security@@mysql.com.

About This Manual

This is the Reference Manual for the MySQL Database System. It documents MySQL up to Version 4.1.7, but is also applicable for older versions of the MySQL software (such as 3.23 or 4.0-production) because functional changes are indicated with reference to a version number.

Because this manual serves as a reference, it does not provide general instruction on SQL or relational database concepts. It also will not teach you how to use your operating system or command-line interpreter.

The MySQL Database Software is under constant development, and the Reference Manual is updated frequently as well. The most recent version of the manual is available online in searchable form at http://dev.mysql.com/doc/. Other formats also are available, including HTML, PDF, and Windows CHM versions.

The primary document is the Texinfo file. The HTML version is produced automatically using a modified version of texi2html. The plain text and Info versions are produced with makeinfo. The PostScript version is produced using texi2dvi and dvips. The PDF version is produced with pdftex.

If you have any suggestions concerning additions or corrections to this manual, please send them to the documentation team at mailto:docs@@mysql.com.

This manual was initially written by David Axmark and Michael “Monty” Widenius. It is now maintained by the MySQL Documentation Team, consisting of Arjen Lentz, Paul DuBois, and Stefan Hinz. For the many other contributors, see Appendix B, Credits.

The copyright (2004) to this manual is owned by the Swedish company MySQL AB. See the section called “Copyrights and Licenses Used by MySQL”. MySQL and the MySQL logo are (registered) trademarks of MySQL AB. Other trademarks and registered trademarks referred to in this manual are the property of their respective owners, and are used for identification purposes only.

Conventions Used in This Manual

This manual uses certain typographical conventions:

constant

Constant-width font is used for command names and options; SQL statements; database, table, and column names; C and Perl code; and environment variables. Example: “To see how mysqladmin works, invoke it with the --help option.”

constant italic

Italic constant-width font is used to indicate variable input for which you should substitute a value of your own choosing.

filename

Constant-width font with surrounding quotes is used for filenames and pathnames. Example: “The distribution is installed under the /usr/local/ directory.”

c

Constant-width font with surrounding quotes is also used to indicate character sequences. Example: “To specify a wildcard, use the ‘%’ character.”

italic

Italic font is used for emphasis, like this.

boldface

Boldface font is used in table headings and to convey especially strong emphasis.

When commands are shown that are meant to be executed from within a particular program, the program is indicated by a prompt shown before the command. For example, shell> indicates a command that you execute from your login shell, and mysql> indicates a statement that you execute from the mysql client program:

shell> type a shell command here
mysql> type a mysql statement here

The “shell” is your command interpreter. On Unix, this is typically a program such as sh or csh. On Windows, the equivalent program is command.com or cmd.exe, typically run in a console window.

When you enter a command or statement shown in an example, do not type the prompt shown in the example.

Database, table, and column names must often be substituted into statements. To indicate that such substitution is necessary, this manual uses db_name, tbl_name, and col_name. For example, you might see a statement like this:

mysql> SELECT col_name FROM db_name.tbl_name;

This means that if you were to enter a similar statement, you would supply your own database, table, and column names, perhaps like this:

mysql> SELECT author_name FROM biblio_db.author_list;

SQL keywords are not case sensitive and may be written in uppercase or lowercase. This manual uses uppercase.

In syntax descriptions, square brackets (‘[’ and ‘]’) are used to indicate optional words or clauses. For example, in the following statement, IF EXISTS is optional:

DROP TABLE [IF EXISTS] tbl_name

When a syntax element consists of a number of alternatives, the alternatives are separated by vertical bars (‘|’). When one member from a set of choices may be chosen, the alternatives are listed within square brackets (‘[’ and ‘]’):

TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)

When one member from a set of choices must be chosen, the alternatives are listed within braces (‘{’ and ‘}’):

{DESCRIBE | DESC} tbl_name [col_name | wild]

An ellipsis (...) indicates the omission of a section of a statement, typically to provide a shorter version of more complex syntax. For example, INSERT ... SELECT is shorthand for the form of INSERT statement that is followed by a SELECT statement.

An ellipsis can also indicate that the preceding syntax element of a statement may be repeated. In the following example, multiple reset_option values may be given, with each of those after the first preceded by commas:

RESET reset_option [,reset_option] ...

Commands for setting shell variables are shown using Bourne shell syntax. For example, the sequence to set an environment variable and run a command looks like this in Bourne shell syntax:

shell> VARNAME=value some_command

If you are using csh or tcsh, you must issue commands somewhat differently. You would execute the sequence just shown like this:

shell> setenv VARNAME value
shell> some_command