DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(mysql.info.gz) Legal names

Info Catalog (mysql.info.gz) Literals (mysql.info.gz) Language Structure (mysql.info.gz) Variables
 
 9.2 Database, Table, Index, Column, and Alias Names
 ===================================================
 

Menu

 
* Identifier qualifiers       Identifier Qualifiers
* Name case sensitivity       Identifier Case Sensitivity
 
 Database, table, index, column, and alias names are identifiers.  This
 section describes the allowable syntax for identifiers in MySQL.
 
 The following table describes the maximum length and allowable
 characters for each type of identifier.
 
 *Identifier**Maximum    *Allowed Characters*
             Length      
             (bytes)*    
 Database    64          Any character that is allowed in a directory
                         name, except `/', `\', or `.'
 Table       64          Any character that is allowed in a filename,
                         except `/', `\', or `.'
 Column      64          All characters
 Index       64          All characters
 Alias       255         All characters
 
 In addition to the restrictions noted in the table, no identifier can
 contain ASCII 0 or a byte with a value of 255.  Database, table, and
 column names should not end with space characters.  Before MySQL 4.1,
 identifier quote characters should not be used in identifiers.
 
 Beginning with MySQL 4.1, identifiers are stored using Unicode (UTF8).
 This applies to identifiers in table definitions that stored in `.frm'
 files and to identifiers stored in the grant tables in the `mysql'
 database. Although Unicode identifiers can include multi-byte
 characters, note that the maximum lengths shown in the table are byte
 counts. If an identifier does contain multi-byte characters, the number
 of _characters_ allowed in the identifier is less than the value shown
 in the table.
 
 An identifier may be quoted or unquoted.  If an identifier is a reserved
 word or contains special characters, you _must_ quote it whenever you
 refer to it.  For a list of reserved words, see  Reserved words.
 Special characters are those outside the set of alphanumeric characters
 from the current character set, `_', and `$'.
 
 The identifier quote character is the backtick (``'):
 
      mysql> SELECT * FROM `select` WHERE `select`.id > 100;
 
 If the server SQL mode includes the `ANSI_QUOTES' mode option, it is
 also allowable to quote identifiers with double quotes:
 
      mysql> CREATE TABLE "test" (col INT);
      ERROR 1064: You have an error in your SQL syntax. (...)
      mysql> SET sql_mode='ANSI_QUOTES';
      mysql> CREATE TABLE "test" (col INT);
      Query OK, 0 rows affected (0.00 sec)
 
  Server SQL mode.
 
 As of MySQL 4.1, identifier quote characters can be included within an
 identifier if you quote the identifier. If the character to be included
 within the identifier is the same as that used to quote the identifier
 itself, double the character. The following statement creates a table
 named `a`b' that contains a column named `c"d':
 
      mysql> CREATE TABLE `a``b` (`c"d` INT);
 
 Identifier quoting was introduced in MySQL 3.23.6 to allow use of
 identifiers that are reserved words or that contain special characters.
 Before 3.23.6, you cannot use identifiers that require quotes, so the
 rules for legal identifiers are more restrictive:
 
    * A name may consist of alphanumeric characters from the current
      character set, `_', and `$'. The default character set is
      ISO-8859-1 (Latin1). This may be changed with the
      `--default-character-set' option to `mysqld'.   Character
      sets.
 
    * A name may start with any character that is legal in a name.  In
      particular, a name may start with a digit; this differs from many
      other database systems!  However, an unquoted name cannot consist
      _only_ of digits.
 
    * You cannot use the `.' character in names because it is used to
      extend the format by which you can refer to columns (
      Identifier qualifiers).
 
 It is recommended that you do not use names like `1e', because an
 expression like `1e+1' is ambiguous. It might be interpreted as the
 expression `1e + 1' or as the number `1e+1', depending on context.
 
Info Catalog (mysql.info.gz) Literals (mysql.info.gz) Language Structure (mysql.info.gz) Variables
automatically generated byinfo2html