Aller au contenu

Compléter la table

Pour insérer des données dans une table, il faut spécifier les attributs auxquels ces données se réfèrent (attention à l’ordre qui n’est pas forcément celui de la définition de la table) :

1
2
3
4
INSERT INTO nom_table (attribut1, attribut2, )
VALUES (valeur1_de_attribut1, valeur1_de attribut2, ),
       (valeur2_de_attribut1, valeur2_de attribut2, ),
        ;

Si certaines données ne sont pas connues, on peut attribuer la valeur NULL.

Exemple

On insère quelques informations dans chaque table pour pouvoir les utiliser :

1
2
3
4
5
INSERT INTO Sujets (nom)
VALUES ("Les séries du moment"),
      ("Les films du moment"),
      ("Les chansons du moment"),
      ("Le prochain Zelda");
table sujet_vide

1
2
3
INSERT INTO Utilisateurs (nom_utilisateur, email, motdepasse, num_telephone, date_inscription, email_valide)
VALUES ("linkdu69", "fandezelda@nintendo.com", "princessezelda", 0622314317, date("2018-07-21"), TRUE),
      ("sonicdu38", "mrrobotnic@sega.com", "dominerlemonde", NULL, date("2017-01-17"), FALSE);
table sujet_vide

1
2
3
INSERT INTO Messages (nom_utilisateur, id_sujet, contenu, date_publication, heure_publication)
VALUES ("linkdu69", 4, "Bon il arrive quand ?!?", date("2020-11-27"), time("16:45:30")),
      ("sonicdu38", 2, "Jim Carrey n'est pas à ma hauteur", date("2020-02-09"), time("23:12:11"));
table sujet_vide

Astuce

Pour plus de confort, on peut générer un fichier au format .sql qui regroupe ces requêtes. Ce fichier doit être structuré ainsi :

1
2
3
BEGIN TRANSACTION
/* Les requêtes */
COMMIT ;

Ajouter une colonne

La nouvelle colonne est remplie de valeurs initialisées à NULL.

1
2
ALTER TABLE nom_table
ADD COLUMN attribut DOMAINE contrainte ;
Exemple

Plusieurs utilisateurs possèdent des blogs et autres sites internet et voudraient les partager sur leur profil.
On choisit donc d'ajouter une colonne site web dans la table Utilisateurs :

1
2
ALTER TABLE Utilisateurs
ADD COLUMN site_web TEXT;
table sujet_vide

Cette syntaxe permet aussi de renommer une table ou une colonne :

1
2
ALTER TABLE nom_table
RENAME TO nouveau_nom_de_la_table ;    /* ou colonne */
Exemple

Finalement on trouve que le nom de l'attribut site_web est mal choisi. On décide donc de le renommer site_internet :

1
2
ALTER TABLE Utilisateurs
RENAME COLUMN site_web TO site_internet;
table sujet_vide

On pense aussi à ajouter une fonctionnalité de message privé sur le forum. Afin d'éviter les erreurs d'interprétation, on choisit donc de renommer la table Messages en MessagesForum pour plus de lisibilité :

1
2
ALTER TABLE Messages
RENAME TO MessagesForum;
table sujet_vide

Enfin, on ajoute une table pour les messages privés dans la base de données :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
CREATE TABLE MessagesPrive (
    id_message_prive   INTEGER PRIMARY KEY,
    nom_utilisateur    TEXT NOT NULL,
    nom_destinataire   TEXT NOT NULL,
    contenu            TEXT NOT NULL,
    date_publication   DATE,
    heure_publication  TIME,
    FOREIGN KEY (nom_utilisateur) 
        REFERENCES Utilisateurs(nom_utilisateur),
    FOREIGN KEY (nom_destinataire) 
        REFERENCES Utilisateurs(nom_utilisateur)
);
table sujet_vide

Supprimer une table

Il est possible de supprimer une table à condition qu’elle ne serve pas de référence à la clef étrangère d’une autre table.
Dans ce cas particulier, il faudra supprimer cette autre table en priorité...

1
DROP TABLE nom_table
Exemple

Le projet des messages privés est abandonné en fin de compte.
On supprime donc la table qui devait les contenir :

1
DROP TABLE MessagesPrive;
table sujet_vide