Logo de kxs.frCours d'informatique pour le lycée et la prépa

Contenu d'une table

Nous allons maintenant nous intéresser au contenu de la table citation. Nous reviendrons sur sa structure par la suite.

SELECT … FROM …

Pour afficher simplement le contenu d'une table, il faut saisir la commande suivante :

SELECT * FROM citations;

On obtient le résultat suivant :

+-------------+--------------------------------------------------------------------------------------------------+---------+
| id_citation | texte                                                                                            | id_film |
+-------------+--------------------------------------------------------------------------------------------------+---------+
|           1 | Vers l'infini et au-delà !                                                                       |       1 |
|           2 | Allez bonne nuit, et tâche de dormir sinon je vends tout tes jouets !                            |       2 |
|           3 | Avengers rassemblement !                                                                         |       2 |
|           4 | La fin fait partie du voyage.                                                                    |       2 |
|           5 | C'est dans ses rêves que l'homme trouve la liberté, cela fut, est, et restera la vérité.         |       3 |
|           6 | C'est seulement quand on a tout perdu qu'on est libre de faire tout ce qu'on veut.               |       4 |
|           7 | On a frôlé la vie !                                                                              |       4 |
|           8 | Monsieur, quand le doigt montre le ciel, l'imbécile regarde le doigt.                            |       5 |
|           9 | Ou tu sors ou je te sors, mais faudra prendre une décision.                                      |       6 |
|          10 | Ce n'est pas parce que tu as une personnalité que tu as de la personnalité.                      |       7 |
|          11 | C'est à une demi-heure d'ici. J'y suis dans dix minutes.                                         |       7 |
|          12 | Je préfère partir plutôt que d'entendre ça plutôt que d'être sourd !                             |       8 |
|          13 | Raté, vous nous avez raté ! Eh les romains, vous êtes des romaines !                             |       9 |
|          14 | À mon signal, déchaine les enfers.                                                               |      10 |
|          15 | Cours Forrest, cours !                                                                           |      11 |
+-------------+--------------------------------------------------------------------------------------------------+---------+
15 rows in set (0.00 sec)

Le contenu d'une table est donc un tableau dont les colonnes sont ses champs et les ligne ses enregistrements.

L'instruction SELECT … FROM … permet de faire une sélection sur une table. Il faut indiquer après le SELECT les champs que l'on veut afficher. On les sépare par des virgules. * signifie tous les champs de la table. On indique après le FROM la table sur laquelle on fait la sélection.

1) Proposez et testez une requête qui permet d'afficher uniquement le texte des citations.

SELECT texte FROM citations;

2) Proposez et testez une requête qui permet d'afficher le champ id_citation et le texte des citations.

SELECT id_citation, texte FROM citations;

Intéressons-nous à la table films.

3) Donnez la structure de la table films.

  • id_film : int
  • titre : varchar(100)
  • annee : int

4) Proposez et testez une requête pour afficher le contenu complet de la table films.

SELECT * FROM films;

SELECT … FROM … WHERE …

Afficher quelques colonnes d'une table ne montre pas la puissance de SQL. Nous allons donc ajouter une clause WHERE. La clause WHERE permet de filtrer les lignes de la table.

Par exemple, pour obtenir uniquement la première citation on utilisera la requête :

SELECT * FROM citations WHERE id_citation = 1;

Résultat :

+-------------+-------------------------------+---------+
| id_citation | texte                         | id_film |
+-------------+-------------------------------+---------+
|           1 | Vers l'infini et au-delà !    |       1 |
+-------------+-------------------------------+---------+
1 row in set (0.00 sec)

Vous avez dû remarquer que MySQL vous donne le nombre de lignes et le temps mis pour effectuer la requête. Celà peut être utile lorsqu'on effectue des requêtes complexes sur des tables plus grandes.

5) Proposez et testez une requête pour afficher les 5 premières lignes de la table citations.

SELECT * FROM citations WHERE id_citation <= 5;

Il est possible de chercher dans un texte avec l'opérateur LIKE. LIKE s'utilise généralement avec le caractère joker % qui signifie n'importe quel enchainement de caractères. Voici des exemples avec leur signification :

Par exemple, pour avoir toutes les citations finissant par un point d'exclamation :

SELECT * FROM citations WHERE texte LIKE '%!';

Le résultat :

+-------------+--------------------------------------------------------------------------------+---------+
| id_citation | texte                                                                          | id_film |
+-------------+--------------------------------------------------------------------------------+---------+
|           1 | Vers l'infini et au-delà !                                                     |       1 |
|           2 | Allez bonne nuit, et tâche de dormir sinon je vends tout tes jouets !          |       2 |
|           3 | Avengers rassemblement !                                                       |       2 |
|           7 | On a frôlé la vie !                                                            |       4 |
|          12 | Je préfère partir plutôt que d'entendre ça plutôt que d'être sourd !           |       8 |
|          13 | Raté, vous nous avez raté ! Eh les romains, vous êtes des romaines !           |       9 |
|          15 | Cours Forrest, cours !                                                         |      11 |
+-------------+--------------------------------------------------------------------------------+---------+
7 rows in set (0.00 sec)

6) Proposez et testez une requête pour afficher les lignes de la table citations contenant « je ».

SELECT * FROM citations WHERE texte LIKE '%je%';

Il est possible de combiner plusieurs conditions dans la clause WHERE avec les opérateurs logiques AND et OR

7) Proposez et testez une requête pour afficher les lignes de la table citations contenant « je » et finissant par un point d'exclamation.

SELECT * FROM citations WHERE texte LIKE '%je%' AND texte LIKE '%!';

8) Proposez et testez une requête pour afficher parmi les dix premières lignes de la table citations celles qui contiennent « est ».

SELECT * FROM citations WHERE texte LIKE '%est%' AND id_citation <= 10;

UPDATE

La commande UPDATE permet de modifier une plusieurs lignes d'une table. Cette commande est à manipuler avec attention car elle peut changer toutes les lignes d'une table.

Voici la syntaxe générale de cette commande :

UPDATE table
SET champ1 = 'nouvelle_valeur',
	champ2 = 'autre_nouvelle_valeur',
	…
WHERE condition

Elle se décompose comme ceci :

Comme vous avez surement déjà remarqué, il y a une faute impardonnable dans une citation ! Dans la première citation, on a écrit « au-dela » au lieu de « au-delà ». Il faut absolument rectifier cela ! Voici donc la commande pour effectuer cette action :

UPDATE citations SET texte = "Vers l'infini et au-delà !" WHERE id_citation = 1;

Nous utilisons ici la clé id_citation pour identifier de manière certaine la ligne à modifier.

9) Saisissez cette commande et vérifiez que cela a bien fonctionné.

Vous avez peut-être remarqué que nous avons utilisé ici les doubles quotes " au lieu des simples quotes ' pour délimiter le nouveau texte. Nous avons dû faire cela car le texte contient lui-même une simple quote '. Si on veut conserver les simples quotes ' comme délimiteur, il est possible d'échapper les simples quotes à l'intérieur du texte avec un antislash \'. La commande serait alors :

UPDATE citations SET texte = 'Vers l\'infini et au-delà !' WHERE id_citation = 1;

10) Une autre erreur s'est glissée dans la citation 5. « fût » est écrit avec un accent alors qu'il ne devrait pas y en avoir. Proposez et testez une requête pour corrigez cette coquille.

UPDATE citations SET texte = "C'est dans ses rêves que l'homme trouve la liberté, cela fut, est, et restera la vérité." WHERE id_citation = 5;

11) Proposez et testez des requêtes pour ajouter les dates manquantes dans la table films. (Vous devrez les chercher sur internet)

UPDATE films SET annee = 2019 WHERE id_film = 2;
UPDATE films SET annee = 1999 WHERE id_film = 4;
UPDATE films SET annee = 2002 WHERE id_film = 9;
UPDATE films SET annee = 2000 WHERE id_film = 10;

INSERT

La commande INSERT permet, comme son nom l'indique, d'insérer des nouvelles lignes dans une table.

Voici la syntaxe générale de cette commande :

INSERT INTO table
VALUES ('valeur champ 1', 'valeur champ 2', …);

Elle se décompose comme ceci :

Il faut obligatoirement mettre les champs text ou varchar entre guillemets simples, ce n'est pas nécessaire pour les champs numériques.

12) Ajoutez votre citation de film préférée à la table citations (une vraie citation d'un vrai film, c'est important pour la suite). Faites attention à bien choisir son id_citation et on mettra 0 pour l'id_film. Choisissez une citation d'un film qui n'est pas déjà dans la base.

INSERT INTO citations VALUES(16, "Tu me chies dans les bottes Vincent !", 0);

Il est possible de spécifier seulement certaines colonnes lors de l'ajout d'un enregistrement. Cela peut être utile lorsque des valeurs par défaut sont définies pour certaines colonnes. On spécifie alors la liste des champs puis la liste des valeurs comme ci-dessous :

INSERT INTO table (champ1, champ2, …)
VALUES ('valeur champ 1', 'valeur champ 2', …);

Nous n'aurons pas beaucoup à utiliser cette méthode.

DELETE

La commande DELETE permet de supprimer des lignes dans une table. Cette commande est également à manipuler avec attention car elle peut supprimer toutes les lignes d'une table.

Voici la syntaxe générale de cette commande :

DELETE FROM table
WHERE condition;

Elle se décompose comme ceci :

Nous allons maintenant ajouter une ligne pour la supprimer ensuite :

INSERT INTO citations VALUES (20, 'Citation à supprimer', 20);

13) Supprimez la ligne que nous venons d'ajouter et donnez la requête utilisée.

DELETE FROM citations WHERE id_citation = 20;

Il est temps maintenant de faire le point sur la structure de notre base de données.

BONUS

Il est possible, si cela vous amuse, de sélectionner une citation aléatoire avec la requête suivante :

SELECT * FROM citations ORDER BY RAND() LIMIT 1;