PrécédentTable des matière Suivant
 

7.6 CREATE TABLE

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] Nom_table (create_definition,...)
[options_de_table] [commande_de_selection]

create_definition:
  Nom_col type [NOT NULL | NULL] [DEFAULT valeur_par_defaut] [AUTO_INCREMENT]
            [PRIMARY KEY] [reference_definition]
  ou    PRIMARY KEY (index_Nom_col,...)
  ou    KEY [Nom_index] KEY(index_Nom_col,...)
  ou    INDEX [Nom_index] (index_Nom_col,...)
  ou    UNIQUE [INDEX] [Nom_index] (index_Nom_col,...)
  ou    [CONSTRAINT symbole] FOREIGN KEY Nom_index(index_Nom_col,...)
            [reference_definition]
  ou    CHECK (expression )

type:
        TINYINT[(longueur)] [UNSIGNED] [ZEROFILL]
  ou    SMALLINT[(longueur)] [UNSIGNED] [ZEROFILL]
  ou    MEDIUMINT[(longueur)] [UNSIGNED] [ZEROFILL]
  ou    INT[(longueur)] [UNSIGNED] [ZEROFILL]
  ou    INTEGER[(longueur)] [UNSIGNED] [ZEROFILL]
  ou    BIGINT[(longueur)] [UNSIGNED] [ZEROFILL]
  ou    REAL[(longueur,décimales)] [UNSIGNED] [ZEROFILL]
  ou    DOUBLE[(longueur,décimales)] [UNSIGNED] [ZEROFILL]
  ou    FLOAT[(longueur,décimales)] [UNSIGNED] [ZEROFILL]
  ou    DECIMAL(longueur,décimales) [UNSIGNED] [ZEROFILL]
  ou    NUMERIC(longueur,décimales) [UNSIGNED] [ZEROFILL]
  ou    CHAR(longueur) [BINARY]
  ou    VARCHAR(longueur) [BINARY]
  ou    DATE
  ou    TIME
  ou    TIMESTAMP
  ou    DATETIME
  ou    TINYBLOB
  ou    BLOB
  ou    MEDIUMBLOB
  ou    LONGBLOB
  ou    TINYTEXT
  ou    TEXT
  ou    MEDIUMTEXT
  ou    LONGTEXT
  ou    ENUM(value1,value2,value3,...)
  ou    SET(value1,value2,value3,...)

index_Nom_col:
        Nom_col [(longueur)]

reference_definition:
        REFERENCES Nom_table [(index_Nom_col,...)]
                   [MATCH FULL | MATCH PARTIAL]
                   [ON DELETE reference_option]
                   [ON UPDATE reference_option]

reference_option:
        RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT

options_de_table:
type = [ISAM | MYISAM | HEAP]

ouauto_increment = #
ouavg_row_longueur = #
ouchecksum = [0 | 1]
oucomment = "string"
oulignes_max= #
oulignes_min = #
oupack_keys = [0 | 1]
oupassword= "string"
commande_de_selection:
[ | IGNORE | REPLACE] SELECT ...  (Un select valide)

CREATE TABLE crée une table, de nom Nom_table, dans la base de donnés courante. Les règles qui régissent les nom de table sont détaillées dans Confère section 7.1.5 Noms de base de données, table, index, column et alias. MySQL retourne une erreur si il n'y a pas de base de données courante, ou la table existe déjà.

Avec MySQL 3.22 ou plus récent, on peut se référer à la table en utilisant la structure Nom_bdd.Nom_table. Ceci fonctionne, qu'il y ait une base de données courante ou pas.

MySQL 3.23 autorise l'utilisation du mot clé TEMPORARY lors de la création de table. Une table temporaire sera automatiquement effacée lorsque la connexion sera terminée. Cela permet à deux connexions différents d'utiliser le même nom de table temporaire, sans conflit l'un avec l'autre, ou avec une table existante (la table permanente est cachée jusqu'à ce que la table temporaire soit effacée).

MySQL 3.22 ou plus récent autorise l'utilisation du mot clé IF NOT EXISTS, qui ne retourne pas d'erreur si la table à créer existe déjà.

Chaque table est representée par un ou plusieurs fichiers dans le dossier de la bas e de données. Dans le cas ou la table est de type ISAM, il y aura :

Pour plus d'information sur les propriétés des différents type de colonne, Confère section 7.2 Types de colonnes.

SELECT * FROM Nom_table WHERE auto_col IS NULL
CREATE TABLE test (blob_col BLOB, index(blob_col(10)));
row longueur = 1
             + (sum of column longueurs)
             + (number of NULL columns + 7)/8
             + (number of variable-longueur columns)

Les options de table sont utilisées pour optimiser la gestion de la table. Dans la plus part des cas, ces options peuvent être ignorées. Ces options fonctionnent pour toutes les types de table, sauf indication contraire.

Lors de l'utilisation d'une tape de type MyISAM table, MySQL utilise le produit max* avg_row_longueur pour connaître la taille maximale de la table. Par défaut, la taille maximale de la table est 4Go (4 Giga octets) (ou 2Go, si le système ne les supporte pas.

mysql> CREATE TABLE test (a int not null auto_increment, primary key (a), key(b))
TYPE=HEAP SELECT b,c from test2;

Cette requête va créer une table de type HEAP table avec 3 colonnes. Cette table sera automatiquement effacée si une erreur survient lors de la copie des données dans ma table.

Table des matières
PrécédentNexen.netSuivant