SQL::Translator::Parser::MySQL.3pm

Langue: en

Version: 2008-05-15 (ubuntu - 07/07/09)

Section: 3 (Bibliothèques de fonctions)

NAME

SQL::Translator::Parser::MySQL - parser for MySQL

SYNOPSIS

   use SQL::Translator;
   use SQL::Translator::Parser::MySQL;
 
   my $translator = SQL::Translator->new;
   $translator->parser("SQL::Translator::Parser::MySQL");
 
 

DESCRIPTION

The grammar is influenced heavily by Tim Bunce's ``mysql2ora'' grammar.

Here's the word from the MySQL site (http://www.mysql.com/doc/en/CREATE_TABLE.html):

   CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)]
   [table_options] [select_statement]
   
   or
   
   CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name LIKE old_table_name;
   
   create_definition:
     col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
               [PRIMARY KEY] [reference_definition]
     or    PRIMARY KEY (index_col_name,...)
     or    KEY [index_name] (index_col_name,...)
     or    INDEX [index_name] (index_col_name,...)
     or    UNIQUE [INDEX] [index_name] (index_col_name,...)
     or    FULLTEXT [INDEX] [index_name] (index_col_name,...)
     or    [CONSTRAINT symbol] FOREIGN KEY [index_name] (index_col_name,...)
               [reference_definition]
     or    CHECK (expr)
   
   type:
           TINYINT[(length)] [UNSIGNED] [ZEROFILL]
     or    SMALLINT[(length)] [UNSIGNED] [ZEROFILL]
     or    MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]
     or    INT[(length)] [UNSIGNED] [ZEROFILL]
     or    INTEGER[(length)] [UNSIGNED] [ZEROFILL]
     or    BIGINT[(length)] [UNSIGNED] [ZEROFILL]
     or    REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]
     or    DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]
     or    FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]
     or    DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL]
     or    NUMERIC(length,decimals) [UNSIGNED] [ZEROFILL]
     or    CHAR(length) [BINARY]
     or    VARCHAR(length) [BINARY]
     or    DATE
     or    TIME
     or    TIMESTAMP
     or    DATETIME
     or    TINYBLOB
     or    BLOB
     or    MEDIUMBLOB
     or    LONGBLOB
     or    TINYTEXT
     or    TEXT
     or    MEDIUMTEXT
     or    LONGTEXT
     or    ENUM(value1,value2,value3,...)
     or    SET(value1,value2,value3,...)
   
   index_col_name:
           col_name [(length)]
   
   reference_definition:
           REFERENCES tbl_name [(index_col_name,...)]
                      [MATCH FULL | MATCH PARTIAL]
                      [ON DELETE reference_option]
                      [ON UPDATE reference_option]
   
   reference_option:
           RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT
   
   table_options:
           TYPE = {BDB | HEAP | ISAM | InnoDB | MERGE | MRG_MYISAM | MYISAM }
   or      ENGINE = {BDB | HEAP | ISAM | InnoDB | MERGE | MRG_MYISAM | MYISAM }
   or      AUTO_INCREMENT = #
   or      AVG_ROW_LENGTH = #
   or      [ DEFAULT ] CHARACTER SET charset_name
   or      CHECKSUM = {0 | 1}
   or      COLLATE collation_name
   or      COMMENT = "string"
   or      MAX_ROWS = #
   or      MIN_ROWS = #
   or      PACK_KEYS = {0 | 1 | DEFAULT}
   or      PASSWORD = "string"
   or      DELAY_KEY_WRITE = {0 | 1}
   or      ROW_FORMAT= { default | dynamic | fixed | compressed }
   or      RAID_TYPE= {1 | STRIPED | RAID0 } RAID_CHUNKS=#  RAID_CHUNKSIZE=#
   or      UNION = (table_name,[table_name...])
   or      INSERT_METHOD= {NO | FIRST | LAST }
   or      DATA DIRECTORY="absolute path to directory"
   or      INDEX DIRECTORY="absolute path to directory"
 
 

A subset of the ALTER TABLE syntax that allows addition of foreign keys:

   ALTER [IGNORE] TABLE tbl_name alter_specification [, alter_specification] ...
 
   alter_specification:
           ADD [CONSTRAINT [symbol]]
           FOREIGN KEY [index_name] (index_col_name,...)
              [reference_definition]
 
 

A subset of INSERT that we ignore:

   INSERT anything
 
 

AUTHOR

Ken Youens-Clark <kclark@cpan.org>, Chris Mungall <cjm@fruitfly.org>.

SEE ALSO

Parse::RecDescent, SQL::Translator::Schema.