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) :
| 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 :
| INSERT INTO Sujets (nom)
VALUES ("Les séries du moment"),
("Les films du moment"),
("Les chansons du moment"),
("Le prochain Zelda");
|
| 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);
|
| 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"));
|
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 :
| BEGIN TRANSACTION
/* Les requêtes */
COMMIT ;
|
Ajouter une colonne
La nouvelle colonne est remplie de valeurs initialisées à NULL
.
| 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 :
| ALTER TABLE Utilisateurs
ADD COLUMN site_web TEXT;
|
Cette syntaxe permet aussi de renommer une table ou une colonne :
| 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
:
| ALTER TABLE Utilisateurs
RENAME COLUMN site_web TO site_internet;
|
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é :
| ALTER TABLE Messages
RENAME TO MessagesForum;
|
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)
);
|
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é...
Exemple
Le projet des messages privés est abandonné en fin de compte.
On supprime donc la table qui devait les contenir :
| DROP TABLE MessagesPrive;
|