Sql:CREATE
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=InnoDBpré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 :
SERIALouGENERATED 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