Skip to main content

MySQL Identifiers


            The are five kinds of identifiers that need to be considered in MySQL: databases, tables, columns, indexes and aliases.  Databases, as stated are the containers for the tables and other associated database components. Tables hold the data that is used to produce information.  Columns are the individual entities of the tables that contain the smallest portion of the data.  Indexes in databases refer to the data structures that improve the speed of operations in a table. Aliases are temporary names assigned to database components. The identifiers that can be assigned to each component have their limitations:


 Size - 
             The following table describes the max length each database identifier can be assigned:


Identifier
Maximum Length
Database
64 Bytes
Table
64 Bytes
Column
64 Bytes
Index
64 Bytes
Alias
255 Bytes


     The length of the identifier is in bytes, not characters. The maximum length will depend on the byte count of all the characters used and should be taken into consideration if using multi-byte characters in the identifier names.

Case Sensitivity - 


         In MySQL, databases correspond to directories within the data directory. Each table within a database corresponds to at least one file within the database directory (and possibly more, depending on the storage engine). Consequently, the case sensitivity of the underlying operating system determines the case sensitivity of database and table names.  This means 
database and table names are case sensitive in most varieties of Unix, and not case sensitive in  Windows. 


Although database and table names are not case sensitive on some platforms, database or table names should not be referred to using different cases within the same statement. The following statement would not work because it refers to a table both as my_table and as 


MY_TABLE: 


mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1; 


Character Restrictions -


                       It is best practice to include only alphanumeric characters (and underscore or dashes) in the identifier names; however, other characters can be used if no other way is acceptable.  Here is a list or restrictions that also need to be considered in such an event:



○  No identifier can contain ASCII 0 (0x00) or a byte with a value of 255 


○  The use of identifier quote characters in identifiers is permitted, although it is best to avoid 
doing so if possible

○  Database, table, and column names should not end with space characters 


○  Before MySQL 5.1.6, database names and table names cannot contain “/”, “\”, “.”, or characters that are not allowed in a directory name 


○  Identifiers may begin with a digit but unless quoted may not consist solely of digits 


○  It is recommended that names of the form Me or MeN, where M and N are integers.  For 
example, avoid using 1e or 2e2 as identifiers, because an expression such as 1e+3 is 
ambiguous.  Depending on context, it might be interpreted as the expression 1e + 3 or as the 
number 1e+3. 

Comments

Popular posts from this blog

PHP INTRODUCTION

                     PHP  (recursive acronym for  PHP: Hypertext Preprocessor ) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. PHP stands for  P HP:  H ypertext  P reprocessor PHP is a server-side scripting language, like ASP PHP scripts are executed on the server PHP supports many databases (MySQL, Informix, Oracle, Sybase, Solid, PostgreSQL, Generic ODBC, etc.) PHP is an open source software PHP is free to download and use Why PHP? PHP runs on different platforms (Windows, Linux, Unix, etc.) PHP is compatible with almost all servers used today (Apache, IIS, etc.) PHP is FREE to download from the official PHP resource:  www.php.net PHP is easy to learn and runs efficiently on the server side What can PHP do? Anything. PHP is mainly focused on server-side scripting, so you can...

Self Joins

A table name is always ambiguous when table is joined to itself using a self-join. For example, the Country table in the world database contains an IndepYear column indicating the year in which each country achieved independence. To find all countries that have the same year of independence as some given country, a self-join can be used. However, the query cannot be written like this: mysql> SELECT IndepYear, Name, Name -> FROM Country JOIN Country -> ON IndepYear = IndepYear AND Name = 'Qatar'; ERROR 1066 (42000): Not unique table/alias: 'Country' Furthermore, the ambiguity cannot be removed from column references by preceding them with table name qualifiers because the names remain identical: mysql> SELECT Country.IndepYear, Country.Name, Country.Name -> FROM Country JOIN Country -> ON Country.IndepYear = Country.IndepYear -> AND Country.Name = 'Qatar'; ERROR 1066 (42000): Not unique table/alias: 'Country' It ...