Sql:CREATE

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Commande SQL standard
Catégorie DDL (Data Definition Language)
Objets concernés DATABASE, TABLE, INDEX, VIEW, TRIGGER, PROCEDURE, FUNCTION, USER, EVENT
Voir aussi Sql · Sql:ALTER · Sql:DROP

CREATE est la commande SQL de création d'un objet — base de données, table, index, vue, utilisateur… C'est l'une des trois commandes de base du DDL avec Sql:ALTER et Sql:DROP.

Syntaxe

Forme générale :

CREATE {DATABASE | EVENT | FUNCTION | INDEX | PROCEDURE | TABLE | TRIGGER | USER | VIEW} nom ...

Pour une table :

CREATE TABLE [IF NOT EXISTS] nom_table (
    colonne1 type [contraintes],
    colonne2 type [contraintes],
    ...
    [contrainte_table]
);

IF NOT EXISTS évite une erreur si l'objet existe déjà (au lieu de le recréer — pour modifier une table existante, voir Sql:ALTER).

Exemples

Table simple avec quelques types de colonnes courants :

CREATE TABLE animal (
    nom      VARCHAR(20),
    maitre   VARCHAR(20),
    espece   VARCHAR(20),
    sexe     CHAR(1),
    naissance DATE,
    mort     DATE
);

Table avec clé primaire auto-incrémentée et contrainte d'unicité (syntaxe MySQL) :

CREATE TABLE utilisateurs (
    id    INT AUTO_INCREMENT PRIMARY KEY,
    nom   VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE
);

Base de données et index :

CREATE DATABASE IF NOT EXISTS nom_base;
CREATE INDEX idx_email ON utilisateurs (email);

Variantes par moteur

  • MySQL/MariaDB : ENGINE=InnoDB précise le moteur de stockage,
 AUTO_INCREMENT pour les clés auto-incrémentées. Voir Mysql:tables pour le
 détail des options de table (charset, collation, row_format…).
  • PostgreSQL : SERIAL ou GENERATED ALWAYS AS IDENTITY à la
 place d'AUTO_INCREMENT.
  • Oracle : pas d'auto-incrément natif avant 12c — s'appuie sur une SEQUENCE
 dédiée (ou GENERATED ... AS IDENTITY depuis 12c).

Voir aussi

  • Sql — panorama du langage SQL
  • Sql:ALTER — modifier un objet déjà créé
  • Sql:DROP — supprimer un objet
  • Mysql:tables — options de table spécifiques MySQL