Aller au contenu

Création de BD et de tables

Normes de code du langage SQL

  • Mots-clés du langage en MAJUSCULE (ex.: CREATE, SELECT, etc.)
  • Identifiants et noms de tables en minuscules (notation snake_case, pas de CamelCase)
  • Commentaires multi-lignes: /* */
  • Commentaire jusqu'à la fin de la ligne: #
  • On termine une requête par un ;
  • Apostrophes simples ' ' pour délimiter les caractères littéraux (string)

Les guillemets " " fonctionnent seulement dans certains cas, les apostrophes simples ' ' fonctionnent dans tous les cas.

Créer une BD

Pour créer une base de données l'instruction est :

CREATE DATABASE Nom_bd;

Pour afficher la liste des bases de données sur un serveur, on utilise la commande:

SHOW DATABASES;

Supprimer une BD

Pour supprimer une base de données, l'instruction est :

DROP DATABASE Nom_bd;

Toutes les tables et les enregistrements sont automatiquement supprimés.

Attention

Aucune confirmation n'est demandée lors de la suppression.

--- Exercice 1.4.1 ---

  1. Créer une base de données nommée « Exemples »
  2. Lister les bases de données
  3. Supprimer la base de données « Exemples »
  4. Lister les bases de données pour confirmer
  5. Créer de nouveau une base de données « Exemples »

Quel raccourcis clavier permet d'exécuter toutes les lignes ou la ligne courante?

Créer une table

Pour créer une table, il faut d'abord sélectionner une BD. La sélection se fait à l'aide l'instruction suivante :

USE Nom_bd;

Note

La BD sera celle utilisée pour toutes les requêtes tant que l'instruction USE n'aura pas été rappelée.

Pour créer une table, la syntaxe est la suivante:

CREATE TABLE nom_table (
    nom_colonne1 TYPE, 
    nom_colonne2 TYPE, 
    ...);

Exemple – Créer une table

Pour créer la table Étudiant correspondant au modèle suivant.

erDiagram  
etudiants {
        NUMERIC(8) code PK
        VARCHAR(255) nom
        YEAR annee_admission
        DATETIME date_naissance
        VARCHAR(10) programme
     }
CREATE TABLE etudiants (
    code INTEGER, 
    nom VARCHAR(255), 
    annee_admission YEAR,
    date_naissance DATETIME,
    programme VARCHAR(10));

Afficher les tables

Pour afficher toutes les tables de la BD active, on utilise l'instruction :

SHOW TABLES;

Pour afficher la structure d'une table, on utilise l'instruction :

DESCRIBE nom_table;

--- Exercice 1.4.2 ---

Créez la table représentant le modèle suivant.

erDiagram  
programmes {
        INTEGER code PK
        VARCHAR(255) nom
        NUMERIC(8) prof_responsable FK
    }

Afficher la structure de la table après la création pour vous valider votre opération.

Notation diagrammes ER

On note sur le modèle de base de données le type de données associé au champ.

Par exemple, pour la table Étudiant, le modèle correspond maintenant à

erDiagram  
etudiants {
        NUMERIC(8) code PK
        VARCHAR(255) nom
        YEAR annee_admission
        DATETIME date_naissance
        VARCHAR(10) programme
     }

Supprimer une table

Pour supprimer une table, l'instruction à utiliser est :

DROP TABLE nom_table;

Tous les enregistrements sont automatiquement supprimés.

Attention

Aucune confirmation n'est demandée lors de la suppression de la table.

Clé primaire

Pour indiquer qu'un champ est une clé primaire, on indique PRIMARY KEY après le type du champ.

CREATE TABLE etudiants (
    code INTEGER PRIMARY KEY, 
    nom VARCHAR(255), 
    annee_admission YEAR,
    date_naissance DATETIME,
    programme VARCHAR(10));

Auto-incrément

Dans le cas où l'on ajoute un identifiant unique (id), on peut indiquer au SGBD d'incrémenter automatiquement sa valeur à chaque enregistrement.

Cela nous évite de devoir manuellement gérer la mise à jour de l'identifiant.

Cette fonction est disponible que si le type de colonne est INTEGER.

--- Exercice 1.4.3 ---

Pour définir un auto-incrément, il faut indiquer AUTO_INCREMENT après le type de la colonne.

erDiagram  
    p[cours] {
        INTEGER cours_id PK
        CHAR(11) sigle
        TINYINT duree
        VARCHAR(255) nom
    }

Créer la table cours. La colonne cours_id doit être auto-incrémentée. Afficher la table après pour voir l'impact de l'incrémentation automatique.

Valeurs par défaut

À la création d'une table, on peut indiquer une valeur par défaut.

Tous les nouveaux enregistrements auront cette valeur pour la colonne sauf si une autre valeur est indiquée.

On indique une valeur par défaut en utilisant la syntaxe suivante :

nom_colonne TYPE DEFAULT valeur

Pour ajouter une valeur par défaut sur un diagramme ER on l'indique avec le symbole = après le type.

Par exemple, dans la table cours la durée par défaut est de 60 heures.

erDiagram  
    p[cours] {
        INTEGER cours_id PK
        TINYINT duree "=60"
        VARCHAR(255) nom
    }
La requête pour créer la table cours serait donc:

CREATE TABLE cours (  
    cours_id INTEGER PRIMARY KEY AUTO_INCREMENT,  
    duree TINYINT DEFAULT 60,  
    nom VARCHAR(255);

Modifier une table

Pour modifier une table, trois opérations sont possibles : ajouter une colonne, modifier une colonne, supprimer une colonne.

La requête est:

ALTER TABLE nom_de_la_table 
    opération1, 
    opération2 ... ;

Ajouter une colonne

L'instruction est ADD suivi de la définition de la colonne

Par exemple, on a oublié une colonne dans la table cours (on veut le résultat de droite)

erDiagram 
    p[cours] {
        INTEGER cours_id PK
        TINYINT duree "=60"
        VARCHAR(255) nom
    } 
    q[cours] {
        INTEGER cours_id PK
        CHAR(11) sigle
        TINYINT duree "=60"
        VARCHAR(255) nom
    }

La requête pour corriger la table est:

ALTER TABLE cours
    ADD sigle CHAR(11);

Modifier une colonne

Pour modifier une colonne existante, on utilise l'instruction MODIFY COLUMN suivie de la nouvelle définition de la colonne.

On a créé la table cours avec la requête suivante:

CREATE TABLE cours (  
    cours_id INTEGER, 
    sigle CHAR(11),  
    duree SMALLINT, 
    nom VARCHAR(255));
erDiagram 
    q[Cours] {
        INTEGER cours_id
        CHAR(11) sigle
        TINYINT duree
        VARCHAR(255) nom
    }

La requête de modification devrait être:

ALTER TABLE cours   
    MODIFY COLUMN cours_id INTEGER PRIMARY KEY AUTO_INCREMENT,   
    MODIFY COLUMN duree TINYINT DEFAULT 60;
erDiagram 
    q[Cours] {
        INTEGER cours_id PK
        CHAR(11) sigle
        TINYINT duree "=60"
        VARCHAR(255) nom
    }

Supprimer une colonne

On utilise l'instruction:

DROP COLUMN nom_colonne

Pour supprimer la colonne sigle de la table cours, on utilise la requête suivante :

ALTER TABLE cours 
    DROP COLUMN sigle;