Приглашаем посетить
Гумилев (gumilev.lit-info.ru)

Документация на MySQL 4.0 (english)

Table of Contents
*****************

General Information
  About This Manual
    Conventions Used in This Manual
  What Is MySQL?
    History of MySQL
    The Main Features of MySQL
    How Stable Is MySQL?
    How Big Can MySQL Tables Be?
    Year 2000 Compliance
  What Is MySQL AB?
    The Business Model and Services of MySQL AB
      Support
      Training and Certification
      Consulting
      Commercial Licenses
      Partnering
    Contact Information
  MySQL Support and Licensing
    Support Offered by MySQL AB
    Copyrights and Licenses Used by MySQL
    MySQL Licenses
      Using the MySQL Software Under a Commercial License
      Using the MySQL Software for Free Under GPL
    MySQL AB Logos and Trademarks
      The Original MySQL Logo
      MySQL Logos that may be Used Without Written Permission
      When do you need a Written Permission to use MySQL Logos?
      MySQL AB Partnership Logos
      Using the word `MySQL' in Printed Text or Presentations
      Using the word `MySQL' in Company and Product Names
  MySQL Development Roadmap
    MySQL 4.0 in a Nutshell
      Features Available in MySQL 4.0
      Embedded MySQL Server
    MySQL 4.1 in a Nutshell
      Features Available in MySQL 4.1
      Stepwise Rollout
      Ready for Immediate Development Use
    MySQL 5.0, The Next Development Release
  MySQL Information Sources
    MySQL Mailing Lists
      The MySQL Mailing Lists
      Asking Questions or Reporting Bugs
      How to Report Bugs or Problems
      Guidelines for Answering Questions on the Mailing List
    MySQL Community Support on IRC (Internet Relay Chat)
  MySQL Standards Compliance
    What Standards Does MySQL Follow?
    Running MySQL in ANSI Mode
    MySQL Extensions to the SQL-92 Standard
    MySQL Differences Compared to SQL-92
      Subqueries
      `SELECT INTO TABLE'
      Transactions and Atomic Operations
      Stored Procedures and Triggers
      Foreign Keys
      Views
      `--' as the Start of a Comment
    How MySQL deals with constraints
      Constraint PRIMARY KEY / UNIQUE
      Constraint `NOT NULL' and `DEFAULT' values
      Constraint `ENUM' and `SET'
    Known Errors and Design Deficiencies in MySQL
      Errors in 3.23 Fixed in a Later MySQL Version
      Open Bugs / Design Deficiencies in MySQL
  MySQL and the Future (The TODO)
    New Features Planned For 4.1
    New Features Planned For 5.0
    New Features Planned For 5.1
    New Features Planned for the Near Future
    New Features Planned for the Mid-Term Future
    New Features We Don't Plan to Do

Installing MySQL
  Quick Standard Installation of MySQL
    Installing MySQL on Windows
      Installing the Binaries
      Preparing the Windows MySQL Environment
      Starting the Server for the First Time
    Installing MySQL on Linux
    Installing MySQL on Mac OS X
    Installing MySQL on NetWare
      Installing the MySQL for NetWare Binaries
  General Installation Issues
    How to Get MySQL
    Verifying Package Integrity Using `MD5 Checksums' or `GnuPG'
    Operating Systems Supported by MySQL
    Which MySQL Version to Use
    Installation Layouts
    How and When Updates Are Released
    Release Philosophy - No Known Bugs in Releases
    MySQL Binaries Compiled by MySQL AB
    Installing a MySQL Binary Distribution
  Installing a MySQL Source Distribution
    Quick Installation Overview
    Applying Patches
    Typical `configure' Options
    Installing from the Development Source Tree
    Problems Compiling MySQL?
    MIT-pthreads Notes
    Windows Source Distribution
  Post-installation Setup and Testing
    Problems Running `mysql_install_db'
    Problems Starting the MySQL Server
    Starting and Stopping MySQL Automatically
  Upgrading/Downgrading MySQL
    Upgrading From Version 4.0 to 4.1
    Upgrading From Version 3.23 to 4.0
    Upgrading From Version 3.22 to 3.23
    Upgrading from Version 3.21 to 3.22
    Upgrading from Version 3.20 to 3.21
    Upgrading the Grant Tables
    Upgrading to Another Architecture
    Upgrading MySQL under Windows
  Operating System Specific Notes
    Windows Notes
      Starting MySQL on Windows 95, 98, or Me
      Starting MySQL on Windows NT, 2000, or XP
      Running MySQL on Windows
      Connecting to MySQL Remotely from Windows with SSH
      Distributing Data Across Different Disks on Windows
      Compiling MySQL Clients on Windows
      MySQL for Windows Compared to Unix MySQL
    Linux Notes (All Linux Versions)
      Linux Notes for Binary Distributions
      Linux x86 Notes
      Linux SPARC Notes
      Linux Alpha Notes
      Linux PowerPC Notes
      Linux MIPS Notes
      Linux IA-64 Notes
    Solaris Notes
      Solaris 2.7/2.8 Notes
      Solaris x86 Notes
    BSD Notes
      FreeBSD Notes
      NetBSD Notes
      OpenBSD 2.5 Notes
      OpenBSD 2.8 Notes
      BSD/OS Version 2.x Notes
      BSD/OS Version 3.x Notes
      BSD/OS Version 4.x Notes
    Mac OS X Notes
      Mac OS X 10.x
      Mac OS X Server 1.2 (Rhapsody)
    Other Unix Notes
      HP-UX Notes for Binary Distributions
      HP-UX Version 10.20 Notes
      HP-UX Version 11.x Notes
      IBM-AIX notes
      SunOS 4 Notes
      Alpha-DEC-UNIX Notes (Tru64)
      Alpha-DEC-OSF/1 Notes
      SGI Irix Notes
      SCO Notes
      SCO UnixWare Version 7.1.x Notes
    OS/2 Notes
    Novell NetWare Notes
    BeOS Notes
  Perl Installation Comments
    Installing Perl on Unix
    Installing ActiveState Perl on Windows
    Problems Using the Perl `DBI'/`DBD' Interface

MySQL Tutorial
  Connecting to and Disconnecting from the Server
  Entering Queries
  Creating and Using a Database
    Creating and Selecting a Database
    Creating a Table
    Loading Data into a Table
    Retrieving Information from a Table
      Selecting All Data
      Selecting Particular Rows
      Selecting Particular Columns
      Sorting Rows
      Date Calculations
      Working with `NULL' Values
      Pattern Matching
      Counting Rows
      Using More Than one Table
  Getting Information About Databases and Tables
  Using `mysql' in Batch Mode
  Examples of Common Queries
    The Maximum Value for a Column
    The Row Holding the Maximum of a Certain Column
    Maximum of Column per Group
    The Rows Holding the Group-wise Maximum of a Certain Field
    Using User Variables
    Using Foreign Keys
    Searching on Two Keys
    Calculating Visits Per Day
    Using `AUTO_INCREMENT'
  Queries from the Twin Project
    Find All Non-distributed Twins
    Show a Table of Twin Pair Status
  Using MySQL with Apache

Database Administration
  Configuring MySQL
    `mysqld' Command-line Options
    `my.cnf' Option Files
    Running Multiple MySQL Servers on the Same Machine
      Running Multiple Servers on Windows
      Running Multiple Servers on Unix
      Using Client Programs in a Multiple-Server Environment
  General Security Issues and the MySQL Access Privilege System
    General Security Guidelines
    How to Make MySQL Secure Against Crackers
    Startup Options for `mysqld' Concerning Security
    Security issues with `LOAD DATA LOCAL'
    What the Privilege System Does
    How the Privilege System Works
    Privileges Provided by MySQL
    Connecting to the MySQL Server
    Access Control, Stage 1: Connection Verification
    Access Control, Stage 2: Request Verification
    Password Hashing in MySQL 4.1
    Causes of `Access denied' Errors
  MySQL User Account Management
    `GRANT' and `REVOKE' Syntax
    MySQL User Names and Passwords
    When Privilege Changes Take Effect
    Setting Up the Initial MySQL Privileges
    Adding New Users to MySQL
    Deleting Users from MySQL
    Limiting user resources
    Setting Up Passwords
    Keeping Your Password Secure
    Using Secure Connections
      Basics
      Requirements
      Setting Up SSL Certificates for MySQL
      SSL `GRANT' Options
      SSL Command-line Options
  Disaster Prevention and Recovery
    Database Backups
    `BACKUP TABLE' Syntax
    `RESTORE TABLE' Syntax
    `CHECK TABLE' Syntax
    `REPAIR TABLE' Syntax
    Using `myisamchk' for Table Maintenance and Crash Recovery
      `myisamchk' Invocation Syntax
      General Options for `myisamchk'
      Check Options for `myisamchk'
      Repair Options for myisamchk
      Other Options for `myisamchk'
      `myisamchk' Memory Usage
      Using `myisamchk' for Crash Recovery
      How to Check Tables for Errors
      How to Repair Tables
      Table Optimisation
    Setting Up a Table Maintenance Regimen
    Getting Information About a Table
  Database Administration Language Reference
    `OPTIMIZE TABLE' Syntax
    `ANALYZE TABLE' Syntax
    `FLUSH' Syntax
    `RESET' Syntax
    `PURGE MASTER LOGS' Syntax
    `KILL' Syntax
    `SHOW' Syntax
      Retrieving information about Database, Tables, Columns, and Indexes
      `SHOW TABLE STATUS'
      `SHOW STATUS'
      `SHOW VARIABLES'
      `SHOW [BDB] LOGS'
      `SHOW PROCESSLIST'
      `SHOW GRANTS'
      `SHOW CREATE TABLE'
      `SHOW WARNINGS | ERRORS'
      `SHOW TABLE TYPES'
      `SHOW PRIVILEGES'
  MySQL Localisation and International Usage
    The Character Set Used for Data and Sorting
      German character set
    Non-English Error Messages
    Adding a New Character Set
    The Character Definition Arrays
    String Collating Support
    Multi-byte Character Support
    Problems With Character Sets
  MySQL Server-Side Scripts and Utilities
    Overview of the Server-Side Scripts and Utilities
    `mysqld_safe', The Wrapper Around `mysqld'
    `mysqld_multi', A Program for Managing Multiple MySQL Servers
    `myisampack', The MySQL Compressed Read-only Table Generator
    `mysqld-max', An Extended `mysqld' Server
  MySQL Client-Side Scripts and Utilities
    Overview of the Client-Side Scripts and Utilities
    `mysql', The Command-line Tool
    `mysqladmin', Administrating a MySQL Server
    `mysqlbinlog', Executing the queries from a binary log
    Using `mysqlcheck' for Table Maintenance and Crash Recovery
    `mysqldump', Dumping Table Structure and Data
    `mysqlhotcopy', Copying MySQL Databases and Tables
    `mysqlimport', Importing Data from Text Files
    `mysqlshow', Showing Databases, Tables, and Columns
    `mysql_config', Get compile options for compiling clients
    `perror', Explaining Error Codes
    How to Run SQL Commands from a Text File
  The MySQL Log Files
    The Error Log
    The General Query Log
    The Update Log
    The Binary Log
    The Slow Query Log
    Log File Maintenance
  Replication in MySQL
    Introduction
    Replication Implementation Overview
    Replication Implementation Details
    How to Set Up Replication
    Replication Features and Known Problems
    Replication Startup Options
    SQL Statements for Controlling Master Servers
      `PURGE MASTER LOGS'
      `RESET MASTER'
      `SET SQL_LOG_BIN'
      `SHOW BINLOG EVENTS'
      `SHOW MASTER STATUS'
      `SHOW MASTER LOGS'
      `SHOW SLAVE HOSTS'
    SQL Statements for Controlling Slave Servers
      `CHANGE MASTER TO'
      `LOAD DATA FROM MASTER'
      `LOAD TABLE tbl_name FROM MASTER'
      `MASTER_POS_WAIT()'
      `RESET SLAVE'
      `SET GLOBAL SQL_SLAVE_SKIP_COUNTER'
      `SHOW SLAVE STATUS'
      `START SLAVE'
      `STOP SLAVE'
    Replication FAQ
    Troubleshooting Replication
    Reporting Replication Bugs

MySQL Optimisation
  Optimisation Overview
    MySQL Design Limitations/Tradeoffs
    Portability
    What Have We Used MySQL For?
    The MySQL Benchmark Suite
    Using Your Own Benchmarks
  Optimising `SELECT's and Other Queries
    `EXPLAIN' Syntax (Get Information About a `SELECT')
    Estimating Query Performance
    Speed of `SELECT' Queries
    How MySQL Optimises `WHERE' Clauses
    How MySQL Optimises `IS NULL'
    How MySQL Optimises `DISTINCT'
    How MySQL Optimises `LEFT JOIN' and `RIGHT JOIN'
    How MySQL Optimises `ORDER BY'
    How MySQL Optimises `LIMIT'
    Speed of `INSERT' Queries
    Speed of `UPDATE' Queries
    Speed of `DELETE' Queries
    Other Optimisation Tips
  Locking Issues
    How MySQL Locks Tables
    Table Locking Issues
  Optimising Database Structure
    Design Choices
    Get Your Data as Small as Possible
    How MySQL Uses Indexes
    Column Indexes
    Multiple-Column Indexes
    Why So Many Open tables?
    How MySQL Opens and Closes Tables
    Drawbacks to Creating Large Numbers of Tables in the Same Database
  Optimising the MySQL Server
    System/Compile Time and Startup Parameter Tuning
    Tuning Server Parameters
    How Compiling and Linking Affects the Speed of MySQL
    How MySQL Uses Memory
    How MySQL uses DNS
    `SET' Syntax
  Disk Issues
    Using Symbolic Links
      Using Symbolic Links for Databases
      Using Symbolic Links for Tables

MySQL Language Reference
  Language Structure
    Literals: How to Write Strings and Numbers
      Strings
      Numbers
      Hexadecimal Values
      `NULL' Values
    Database, Table, Index, Column, and Alias Names
    Case Sensitivity in Names
    User Variables
    System Variables
    Comment Syntax
    Is MySQL Picky About Reserved Words?
  Column Types
    Numeric Types
    Date and Time Types
      Y2K Issues and Date Types
      The `DATETIME', `DATE', and `TIMESTAMP' Types
      The `TIME' Type
      The `YEAR' Type
    String Types
      The `CHAR' and `VARCHAR' Types
      The `BLOB' and `TEXT' Types
      The `ENUM' Type
      The `SET' Type
    Choosing the Right Type for a Column
    Using Column Types from Other Database Engines
    Column Type Storage Requirements
  Functions for Use in `SELECT' and `WHERE' Clauses
    Non-Type-Specific Operators and Functions
      Parentheses
      Comparison Operators
      Logical Operators
      Control Flow Functions
    String Functions
      String Comparison Functions
      Case-Sensitivity
    Numeric Functions
      Arithmetic Operations
      Mathematical Functions
    Date and Time Functions
    Cast Functions
    Other Functions
      Bit Functions
      Miscellaneous Functions
    Functions and Modifiers for Use with `GROUP BY' Clauses
      `GROUP BY' Functions
      `GROUP BY' Modifiers
      `GROUP BY' with Hidden Fields
  Data Manipulation: `SELECT', `INSERT', `UPDATE', `DELETE'
    `SELECT' Syntax
      `JOIN' Syntax
      `UNION' Syntax
    `HANDLER' Syntax
    `INSERT' Syntax
      `INSERT ... SELECT' Syntax
      `INSERT DELAYED' Syntax
    `UPDATE' Syntax
    `DELETE' Syntax
    `TRUNCATE' Syntax
    `REPLACE' Syntax
    `LOAD DATA INFILE' Syntax
    `DO' Syntax
  Data Definition: `CREATE', `DROP', `ALTER'
    `CREATE DATABASE' Syntax
    `DROP DATABASE' Syntax
    `CREATE TABLE' Syntax
      Silent Column Specification Changes
    `ALTER TABLE' Syntax
    `RENAME TABLE' Syntax
    `DROP TABLE' Syntax
    `CREATE INDEX' Syntax
    `DROP INDEX' Syntax
  Basic MySQL User Utility Commands
    `USE' Syntax
    `DESCRIBE' Syntax (Get Information About Columns)
  MySQL Transactional and Locking Commands
    `START TRANSACTION', `COMMIT', and `ROLLBACK' Syntax
    Statements That Cannot Be Rolled Back
    Statements That Cause an Implicit Commit
    `SAVEPOINT' and `ROLLBACK TO SAVEPOINT' Syntax
    `LOCK TABLES' and `UNLOCK TABLES' Syntax
    `SET TRANSACTION' Syntax
  MySQL Full-text Search
    Full-text Restrictions
    Fine-tuning MySQL Full-text Search
    Full-text Search TODO
  MySQL Query Cache
    How the Query Cache Operates
    Query Cache Configuration
    Query Cache Options in `SELECT'
    Query Cache Status and Maintenance

MySQL Table Types
  `MyISAM' Tables
    Space Needed for Keys
    `MyISAM' Table Formats
      Static (Fixed-length) Table Characteristics
      Dynamic Table Characteristics
      Compressed Table Characteristics
    `MyISAM' Table Problems
      Corrupted `MyISAM' Tables
      Clients is using or hasn't closed the table properly
  `MERGE' Tables
    `MERGE' Table Problems
  `ISAM' Tables
  `HEAP' Tables
  `InnoDB' Tables
    InnoDB Tables Overview
    InnoDB in MySQL Version 3.23
    InnoDB Startup Options
    Creating InnoDB Tablespace
      If Something Goes Wrong in Database Creation
    Creating InnoDB Tables
      Converting MyISAM Tables to InnoDB
      `FOREIGN KEY' Constraints
    Adding and Removing InnoDB Data and Log Files
    Backing up and Recovering an InnoDB Database
      Forcing recovery
      Checkpoints
    Moving an InnoDB Database to Another Machine
    InnoDB Transaction Model and Locking
      InnoDB and `SET ... TRANSACTION ISOLATION LEVEL ...'
      Consistent Non-Locking Read
      Locking Reads `SELECT ... FOR UPDATE' and `SELECT ... LOCK IN SHARE MODE'
      Next-key Locking: Avoiding the Phantom Problem
      Locks Set by Different SQL Statements in `InnoDB'
      Deadlock Detection and Rollback
      An Example of How the Consistent Read Works in `InnoDB'
      How to cope with deadlocks?
    Performance Tuning Tips
      `SHOW INNODB STATUS' and the `InnoDB' Monitors
    Implementation of Multi-versioning
    Table and Index Structures
      Physical Structure of an Index
      Insert Buffering
      Adaptive Hash Indexes
      Physical Record Structure
      How an `AUTO_INCREMENT' Column Works in InnoDB
    File Space Management and Disk I/O
      Disk I/O
      File Space Management
      Defragmenting a Table
    Error Handling
    Restrictions on InnoDB Tables
    InnoDB Change History
      MySQL/InnoDB-4.0.14, July 22, 2003
      MySQL/InnoDB-3.23.57, June 20, 2003
      MySQL/InnoDB-4.0.13, May 20, 2003
      MySQL/InnoDB-4.1.0, April 3, 2003
      MySQL/InnoDB-3.23.56, March 17, 2003
      MySQL/InnoDB-4.0.12, March 18, 2003
      MySQL/InnoDB-4.0.11, February 25, 2003
      MySQL/InnoDB-4.0.10, February 4, 2003
      MySQL/InnoDB-3.23.55, January 24, 2003
      MySQL/InnoDB-4.0.9, January 14, 2003
      MySQL/InnoDB-4.0.8, January 7, 2003
      MySQL/InnoDB-4.0.7, December 26, 2002
      MySQL/InnoDB-4.0.6, December 19, 2002
      MySQL/InnoDB-3.23.54, December 12, 2002
      MySQL/InnoDB-4.0.5, November 18, 2002
      MySQL/InnoDB-3.23.53, October 9, 2002
      MySQL/InnoDB-4.0.4, October 2, 2002
      MySQL/InnoDB-4.0.3, August 28, 2002
      MySQL/InnoDB-3.23.52, August 16, 2002
      MySQL/InnoDB-4.0.2, July 10, 2002
      MySQL/InnoDB-3.23.51, June 12, 2002
      MySQL/InnoDB-3.23.50, April 23, 2002
      MySQL/InnoDB-3.23.49, February 17, 2002
      MySQL/InnoDB-3.23.48, February 9, 2002
      MySQL/InnoDB-3.23.47, December 28, 2001
      MySQL/InnoDB-4.0.1, December 23, 2001
      MySQL/InnoDB-3.23.46, November 30, 2001
      MySQL/InnoDB-3.23.45, November 23, 2001
      MySQL/InnoDB-3.23.44, November 2, 2001
      MySQL/InnoDB-3.23.43, October 4, 2001
      MySQL/InnoDB-3.23.42, September 9, 2001
      MySQL/InnoDB-3.23.41, August 13, 2001
      MySQL/InnoDB-3.23.40, July 16, 2001
      MySQL/InnoDB-3.23.39, June 13, 2001
      MySQL/InnoDB-3.23.38, May 12, 2001
    `InnoDB' Contact Information
  `BDB' or `BerkeleyDB' Tables
    Overview of `BDB' Tables
    Installing `BDB'
    `BDB' startup options
    Characteristics of `BDB' tables:
    Things we need to fix for `BDB' in the near future:
    Operating systems supported by `BDB'
    Restrictions on `BDB' Tables
    Errors That May Occur When Using `BDB' Tables

Introduction to MaxDB
  History of MaxDB
  Licensing and Support
  Basic Concepts of MaxDB
  Feature Differences between MaxDB and MySQL
  Interoperability Features between MaxDB and MySQL
  MaxDB-related Links
  Reserved Words in MaxDB
  Functions
  Column Types

National Character Sets and Unicode
  Character Sets and Collations in General
  Character Sets and Collations in MySQL
  Determining the Default Character Set and Collation
    Server Character Set and Collation
    Database Character Set and Collation
    Table Character Set and Collation
    Column Character Set and Collation
    Examples of Character Set and Collation Assignment
    Connection Character Sets and Collations
    Character String Literal Character Set and Collation
    `COLLATE' Clause in Various Parts of an SQL Query
    `COLLATE' Clause Precedence
    `BINARY' Operator
    Some Special Cases Where the Collation Determination is Tricky
    Collations Must Be for the Right Character Set
    An example of the Effect of Collation
  Operations Affected by Character Set Support
    Result Strings
    `CONVERT()'
    `CAST()'
    `SHOW CHARACTER SET'
    `SHOW COLLATION'
    `SHOW CREATE DATABASE'
    `SHOW FULL COLUMNS'
  Unicode Support
  UTF8 for Metadata
  Compatibility with Other DBMSs
  New Character Set Configuration File format
  National Character Set
  Upgrading from MySQL 4.0
    4.0 Character Sets and Corresponding 4.1 Character Set/Collation Pairs
  The Character Sets and Collations that MySQL Supports
    The Unicode Character Sets
    Platform Specific Character Sets
    Character Sets for South Europe and Middle East
    The Asian Character Sets
    The Baltic Character Sets
    The Cyrillic Character Sets
    The Central European Character Sets
    The West European Character Sets

Spatial Extensions in MySQL
  Introduction
  The OpenGIS Geometry Model
    The Geometry Class Hierarchy
    Class `Geometry'
    Class `Point'
    Class `Curve'
    Class `LineString'
    Class `Surface'
    Class `Polygon'
    Class `GeometryCollection'
    Class `MultiPoint'
    Class `MultiCurve'
    Class `MultiLineString'
    Class `MultiSurface'
    Class `MultiPolygon'
  Supported Spatial Data Formats
    Well-Known Text (WKT) Format
    Well-Known Binary (WKB) Format
  Creating a Spatially Enabled MySQL Database
    MySQL Spatial Datatypes
    Creating Spatial Values
      Creating Geometry Values Using WKT Functions
      Creating Geometry Values Using WKB Functions
      Creating Geometry Values Using MySQL-Specific Functions
    Creating Spatial Columns
    Populating Spatial Columns
    Fetching Spatial Data
      Fetching Spatial Data in Internal Format
      Fetching Spatial Data in WKT Format
      Fetching Spatial Data in WKB Format
  Analysing Spatial Information
    Functions to Convert Geometries Between Formats
    `Geometry' Property Analysis Functions
      General Geometry Property Analysis Functions
      `Point' Property Analysis Functions
      `LineString' Property Analysis Functions
      `MultiLineString' Property Analysis Functions
      `Polygon' Property Analysis Functions
      `MultiPolygon' Property Analysis Functions
      `GeometryCollection' Property Analysis Functions
    Functions That Create New Geometries From Existing Ones
      Geometry Functions That Produce New Geometries
      Spatial Operators
    Functions For Testing Spatial Relations Between Geometric Objects
    Relations On Geometry Minimal Bounding Rectangles (MBRs)
    Functions That Test Spatial Relationships Between Geometries
  Optimising Spatial Analysis
    Creating Spatial Indexes
    Using a Spatial Index
  MySQL Conformance and Compatibility
    GIS Features That Are Not Yet Implemented

MySQL APIs
  MySQL C API
    C API Datatypes
    C API Function Overview
    C API Function Descriptions
      `mysql_affected_rows()'
      `mysql_change_user()'
      `mysql_character_set_name()'
      `mysql_close()'
      `mysql_connect()'
      `mysql_create_db()'
      `mysql_data_seek()'
      `mysql_debug()'
      `mysql_drop_db()'
      `mysql_dump_debug_info()'
      `mysql_eof()'
      `mysql_errno()'
      `mysql_error()'
      `mysql_escape_string()'
      `mysql_fetch_field()'
      `mysql_fetch_fields()'
      `mysql_fetch_field_direct()'
      `mysql_fetch_lengths()'
      `mysql_fetch_row()'
      `mysql_field_count()'
      `mysql_field_seek()'
      `mysql_field_tell()'
      `mysql_free_result()'
      `mysql_get_client_info()'
      `mysql_get_server_version()'
      `mysql_get_host_info()'
      `mysql_get_proto_info()'
      `mysql_get_server_info()'
      `mysql_info()'
      `mysql_init()'
      `mysql_insert_id()'
      `mysql_kill()'
      `mysql_list_dbs()'
      `mysql_list_fields()'
      `mysql_list_processes()'
      `mysql_list_tables()'
      `mysql_num_fields()'
      `mysql_num_rows()'
      `mysql_options()'
      `mysql_ping()'
      `mysql_query()'
      `mysql_real_connect()'
      `mysql_real_escape_string()'
      `mysql_real_query()'
      `mysql_reload()'
      `mysql_row_seek()'
      `mysql_row_tell()'
      `mysql_select_db()'
      `mysql_sqlstate()'
      `mysql_shutdown()'
      `mysql_stat()'
      `mysql_store_result()'
      `mysql_thread_id()'
      `mysql_use_result()'
      `mysql_commit()'
      `mysql_rollback()'
      `mysql_autocommit()'
      `mysql_more_results()'
      `mysql_next_result()'
    C API Prepared Statements
    C API Prepared Statement Datatypes
    C API Prepared Statement Function Overview
    C API Prepared Statement Function Descriptions
      `mysql_prepare()'
      `mysql_param_count()'
      `mysql_get_metadata()'
      `mysql_bind_param()'
      `mysql_execute()'
      `mysql_stmt_affected_rows()'
      `mysql_bind_result()'
      `mysql_stmt_store_result()'
      `mysql_stmt_data_seek()'
      `mysql_stmt_row_seek()'
      `mysql_stmt_row_tell()'
      `mysql_stmt_num_rows()'
      `mysql_fetch()'
      `mysql_send_long_data()'
      `mysql_stmt_close()'
      `mysql_stmt_errno()'
      `mysql_stmt_error()'
      `mysql_stmt_sqlstate()'
    C API Handling of Multiple Query Execution
    C API Handling of Date and Time Values
    C API Threaded Function Descriptions
      `my_init()'
      `mysql_thread_init()'
      `mysql_thread_end()'
      `mysql_thread_safe()'
    C API Embedded Server Function Descriptions
      `mysql_server_init()'
      `mysql_server_end()'
    Common questions and problems when using the C API
      Why Is It that After `mysql_query()' Returns Success, 
	`mysql_store_result()' Sometimes Returns `NULL'?
      What Results Can I Get From a Query?
      How Can I Get the Unique ID for the Last Inserted Row?
      Problems Linking with the C API
    Building Client Programs
    How to Make a Threaded Client
    libmysqld, the Embedded MySQL Server Library
      Overview of the Embedded MySQL Server Library
      Compiling Programs with `libmysqld'
      Restrictions when using the Embedded MySQL Server
      Using Option Files with the Embedded Server
      Things left to do in Embedded Server (TODO)
      A Simple Embedded Server Example
      Licensing the Embedded Server
  MySQL ODBC Support
    How to Install MyODBC
    How to Fill in the Various Fields in the ODBC Administrator Program
    Connect parameters for MyODBC
    How to Report Problems with MyODBC
    Programs Known to Work with MyODBC
    How to Get the Value of an `AUTO_INCREMENT' Column in ODBC
    Reporting Problems with MyODBC
  MySQL Java Connectivity (JDBC)
  MySQL PHP API
    Common Problems with MySQL and PHP
  MySQL Perl API
    `DBI' with `DBD::mysql'
    The `DBI' Interface
    More `DBI'/`DBD' Information
  MySQL C++ API
    Borland C++
  MySQL Python API
  MySQL Tcl API
  MySQL Eiffel Wrapper

Error Handling in MySQL
  Error Returns

Extending MySQL
  MySQL Internals
    MySQL Threads
    MySQL Test Suite
      Running the MySQL Test Suite
      Extending the MySQL Test Suite
      Reporting Bugs in the MySQL Test Suite
  Adding New Functions to MySQL
    `CREATE FUNCTION/DROP FUNCTION' Syntax
    Adding a New User-definable Function
      UDF Calling Sequences for simple functions
      UDF Calling Sequences for aggregate functions
      Argument Processing
      Return Values and Error Handling
      Compiling and Installing User-definable Functions
    Adding a New Native Function
  Adding New Procedures to MySQL
    Procedure Analyse
    Writing a Procedure

Problems and Common Errors
  How to Determine What Is Causing Problems
  Common Errors When Using MySQL
    `Access denied' Error
    `MySQL server has gone away' Error
    `Can't connect to [local] MySQL server' Error
    `Client does not support authentication protocol' error
    `Host '...' is blocked' Error
    `Too many connections' Error
    `Some non-transactional changed tables couldn't be rolled back' Error
    `Out of memory' Error
    `Packet too large' Error
    Communication Errors / Aborted Connection
    `The table is full' Error
    `Can't create/write to file' Error
    `Commands out of sync' Error in Client
    `Ignoring user' Error
    `Table 'xxx' doesn't exist' Error
    `Can't initialize character set xxx' error
    File Not Found
  Installation Related Issues
    Problems When Linking with the MySQL Client Library
    How to Run MySQL As a Normal User
    Problems with File Permissions
  Administration Related Issues
    What To Do If MySQL Keeps Crashing
    How to Reset a Forgotten Root Password
    How MySQL Handles a Full Disk
    Where MySQL Stores Temporary Files
    How to Protect or Change the MySQL Socket File `/tmp/mysql.sock'
    Time Zone Problems
  Query Related Issues
    Case-Sensitivity in Searches
    Problems Using `DATE' Columns
    Problems with `NULL' Values
    Problems with `alias'
    Deleting Rows from Related Tables
    Solving Problems with No Matching Rows
    Problems with Floating-Point Comparison
  Optimiser Related Issues
    How to avoid table scan,,,
  Table Definition Related Issues
    Problems with `ALTER TABLE'.
    How To Change the Order of Columns in a Table
    TEMPORARY TABLE problems

Contributed Programs
  APIs
  Converters
  Utilities

Credits
  Developers at MySQL AB
  Contributors to MySQL
  Supporters to MySQL

MySQL Change History
  Changes in release 5.0.0 (Development)
  Changes in release 4.1.x (Alpha)
    Changes in release 4.1.1 (to be released soon)
    Changes in release 4.1.0 (03 Apr 2003: Alpha)
  Changes in release 4.0.x (Production)
    Changes in release 4.0.17 (not released yet)
    Changes in release 4.0.16 (to be released soon)
    Changes in release 4.0.15 (03 Sep 2003)
    Changes in release 4.0.14 (18 Jul 2003)
    Changes in release 4.0.13 (16 May 2003)
    Changes in release 4.0.12 (15 Mar 2003: Production)
    Changes in release 4.0.11 (20 Feb 2003)
    Changes in release 4.0.10 (29 Jan 2003)
    Changes in release 4.0.9 (09 Jan 2003)
    Changes in release 4.0.8 (07 Jan 2003)
    Changes in release 4.0.7 (20 Dec 2002)
    Changes in release 4.0.6 (14 Dec 2002: Gamma)
    Changes in release 4.0.5 (13 Nov 2002)
    Changes in release 4.0.4 (29 Sep 2002)
    Changes in release 4.0.3 (26 Aug 2002: Beta)
    Changes in release 4.0.2 (01 Jul 2002)
    Changes in release 4.0.1 (23 Dec 2001)
    Changes in release 4.0.0 (Oct 2001: Alpha)
  Changes in release 3.23.x (Recent; still supported)
    Changes in release 3.23.59 (not released yet)
    Changes in release 3.23.58 (11 Sep 2003)
    Changes in release 3.23.57 (06 Jun 2003)
    Changes in release 3.23.56 (13 Mar 2003)
    Changes in release 3.23.55 (23 Jan 2003)
    Changes in release 3.23.54 (05 Dec 2002)
    Changes in release 3.23.53 (09 Oct 2002)
    Changes in release 3.23.52 (14 Aug 2002)
    Changes in release 3.23.51 (31 May 2002)
    Changes in release 3.23.50 (21 Apr 2002)
    Changes in release 3.23.49
    Changes in release 3.23.48 (07 Feb 2002)
    Changes in release 3.23.47 (27 Dec 2001)
    Changes in release 3.23.46 (29 Nov 2001)
    Changes in release 3.23.45 (22 Nov 2001)
    Changes in release 3.23.44 (31 Oct 2001)
    Changes in release 3.23.43 (04 Oct 2001)
    Changes in release 3.23.42 (08 Sep 2001)
    Changes in release 3.23.41 (11 Aug 2001)
    Changes in release 3.23.40
    Changes in release 3.23.39 (12 Jun 2001)
    Changes in release 3.23.38 (09 May 2001)
    Changes in release 3.23.37 (17 Apr 2001)
    Changes in release 3.23.36 (27 Mar 2001)
    Changes in release 3.23.35 (15 Mar 2001)
    Changes in release 3.23.34a
    Changes in release 3.23.34 (10 Mar 2001)
    Changes in release 3.23.33 (09 Feb 2001)
    Changes in release 3.23.32 (22 Jan 2001: Production)
    Changes in release 3.23.31 (17 Jan 2001)
    Changes in release 3.23.30 (04 Jan 2001)
    Changes in release 3.23.29 (16 Dec 2000)
    Changes in release 3.23.28 (22 Nov 2000: Gamma)
    Changes in release 3.23.27 (24 Oct 2000)
    Changes in release 3.23.26 (18 Oct 2000)
    Changes in release 3.23.25 (29 Sep 2000)
    Changes in release 3.23.24 (08 Sep 2000)
    Changes in release 3.23.23 (01 Sep 2000)
    Changes in release 3.23.22 (31 Jul 2000)
    Changes in release 3.23.21
    Changes in release 3.23.20
    Changes in release 3.23.19
    Changes in release 3.23.18
    Changes in release 3.23.17
    Changes in release 3.23.16
    Changes in release 3.23.15 (May 2000: Beta)
    Changes in release 3.23.14
    Changes in release 3.23.13
    Changes in release 3.23.12 (07 Mar 2000)
    Changes in release 3.23.11
    Changes in release 3.23.10
    Changes in release 3.23.9
    Changes in release 3.23.8 (02 Jan 2000)
    Changes in release 3.23.7 (10 Dec 1999)
    Changes in release 3.23.6
    Changes in release 3.23.5 (20 Oct 1999)
    Changes in release 3.23.4 (28 Sep 1999)
    Changes in release 3.23.3
    Changes in release 3.23.2 (09 Aug 1999)
    Changes in release 3.23.1
    Changes in release 3.23.0 (05 Aug 1999: Alpha)
  Changes in release 3.22.x (Old; discontinued)
    Changes in release 3.22.35
    Changes in release 3.22.34
    Changes in release 3.22.33
    Changes in release 3.22.32 (14 Feb 2000)
    Changes in release 3.22.31
    Changes in release 3.22.30
    Changes in release 3.22.29 (02 Jan 2000)
    Changes in release 3.22.28 (20 Oct 1999)
    Changes in release 3.22.27
    Changes in release 3.22.26 (16 Sep 1999)
    Changes in release 3.22.25
    Changes in release 3.22.24 (05 Jul 1999)
    Changes in release 3.22.23 (08 Jun 1999)
    Changes in release 3.22.22 (30 Apr 1999)
    Changes in release 3.22.21
    Changes in release 3.22.20 (18 Mar 1999)
    Changes in release 3.22.19 (Mar 1999: Production)
    Changes in release 3.22.18
    Changes in release 3.22.17
    Changes in release 3.22.16 (Feb 1999: Gamma)
    Changes in release 3.22.15
    Changes in release 3.22.14
    Changes in release 3.22.13
    Changes in release 3.22.12
    Changes in release 3.22.11
    Changes in release 3.22.10
    Changes in release 3.22.9
    Changes in release 3.22.8
    Changes in release 3.22.7 (Sep 1998: Beta)
    Changes in release 3.22.6
    Changes in release 3.22.5
    Changes in release 3.22.4
    Changes in release 3.22.3
    Changes in release 3.22.2
    Changes in release 3.22.1 (Jun 1998: Alpha)
    Changes in release 3.22.0
  Changes in release 3.21.x
    Changes in release 3.21.33
    Changes in release 3.21.32
    Changes in release 3.21.31
    Changes in release 3.21.30
    Changes in release 3.21.29
    Changes in release 3.21.28
    Changes in release 3.21.27
    Changes in release 3.21.26
    Changes in release 3.21.25
    Changes in release 3.21.24
    Changes in release 3.21.23
    Changes in release 3.21.22
    Changes in release 3.21.21a
    Changes in release 3.21.21
    Changes in release 3.21.20
    Changes in release 3.21.19
    Changes in release 3.21.18
    Changes in release 3.21.17
    Changes in release 3.21.16
    Changes in release 3.21.15
    Changes in release 3.21.14b
    Changes in release 3.21.14a
    Changes in release 3.21.13
    Changes in release 3.21.12
    Changes in release 3.21.11
    Changes in release 3.21.10
    Changes in release 3.21.9
    Changes in release 3.21.8
    Changes in release 3.21.7
    Changes in release 3.21.6
    Changes in release 3.21.5
    Changes in release 3.21.4
    Changes in release 3.21.3
    Changes in release 3.21.2
    Changes in release 3.21.0
  Changes in release 3.20.x
    Changes in release 3.20.18
    Changes in release 3.20.17
    Changes in release 3.20.16
    Changes in release 3.20.15
    Changes in release 3.20.14
    Changes in release 3.20.13
    Changes in release 3.20.11
    Changes in release 3.20.10
    Changes in release 3.20.9
    Changes in release 3.20.8
    Changes in release 3.20.7
    Changes in release 3.20.6
    Changes in release 3.20.3
    Changes in release 3.20.0
  Changes in release 3.19.x
    Changes in release 3.19.5
    Changes in release 3.19.4
    Changes in release 3.19.3

Porting to Other Systems
  Debugging a MySQL server
    Compiling MYSQL for Debugging
    Creating Trace Files
    Debugging mysqld under gdb
    Using a Stack Trace
    Using Log Files to Find Cause of Errors in mysqld
    Making a Test Case If You Experience Table Corruption
  Debugging a MySQL client
  The DBUG Package
  Locking methods
  Comments about RTS threads
  Differences between different thread packages

Environment Variables

MySQL Regular Expressions

GNU General Public License

GNU Lesser General Public License

SQL command, type and function index

Concept Index


This is the Reference Manual for the `MySQL Database System'.  This
version refers to the 4.0.16 version of `MySQL Server' but it is also
applicable for any older version (such as 3.23 and 4.0-production) as
changes are always indicated. There are also references for version 5.0
(development).