Il est possible d’utiliser SELECT pour n’afficher que certaines colonnes d’une table. Syntaxe :
SELECT <colonne_1>, <colonne_2>, ..., <colonne_n> FROM <table>
Cette instruction s’appelle une requête, elle affichera pour chaque ligne de la table les valeurs des colonnes colonne1 à colonnen. Il est possible de supprimer les lignes en double à l’aide du mot-clé DISTINCT. Par exemple :
SELECT DISTINCT <colonne_1>, <colonne_2>, ..., <colonne_n> FROM <table>
Pour trier les données, on utilise ORDER BY. Exemple :
SELECT <colonne_1>, <colonne_2>, ..., <colonne_n> FROM <table> ORDER BY <colonne_1bis>, <colonne_2bis>, ..., <colonne_nbis>
Cette instruction trie les données par colonne1bis croissants. En cas d’égalité, le tri est fait par colonne2bis croissants, etc. Pour trier par ordre décroissant, on ajoute DESC après le nom de la colonne choisie comme critère décroissant. Par exemple :
SELECT <colonne_1>, <colonne_2>, ..., <colonne_n> FROM <table> ORDER BY <colonne_1bis> DESC, <colonne_2bis>, ..., <colonne_nbis>
Cette instruction permet de ne sélectionner que certaines lignes de la table. Par exemple la requête va afficher le nom du produit numéro 1 :
SELECT nomprod FROM produit WHERE numprod = 1
La syntaxe générale est
SELECT <colonne_1>, <colonne_2>, ..., <colonne_n> FROM <table> WHERE <condition>
condition sera évaluée pour chaque ligne de la table, et seules celles qui véfieront cette condition feront partie du résultat de la requête.
Les conditions peuvent être des relations d’égalité (=), de différence (<>), d’inégalité (<, >, >= ou <=) sur des colonnes :
numero_client = 2 nom_client = 'Marcel' prenom_client <> 'Ginette' salary < 230 taxes >= 23000
La négation d’une condition s’obtient à l’aide de NOT. Par exemple, il est possible de ré-ecrire les conditions ci-avant :
NOT (numero_client <> 2) NOT (nom_client <> 'Marcel') NOT (prenom_client = 'Ginette') NOT (salary >= 230) NOT (taxes < 23000)
De même, vous avez à votre disposition tous les connecteurs logiques binaires : AND, OR. Ainsi, les deux conditions suivantes sont les mêmes :
NOT((nom = 'Raymond') AND (prenom <> 'Huguette')) (nom <> 'Raymond') OR (prenom = 'Huguette')
Un champ non renseigné a la valeur NULL, dans une comparaison, NULL n’est jamais égal à quelque valeur qu’il soit ! La condition suivante est toujours fausse :
NULL = NULL;
La requête suivante ne renvoie aucune ligne :
INSERT INTO MP3 (numMp3) VALUES (3); SELECT * FROM MP3 WHERE nomMp3 = NULL;
Pour tester la nullité d’un champ, on utilise IS NULL, par exemple :
SELECT * FROM MP3 WHERE nomMp3 IS NULL;
La non-nullité se teste de deux façons :
WHERE NOT (nomMp3 IS NULL);
ou encore
SELECT * FROM MP3 WHERE nomMp3 IS NOT NULL; numMp3 nomMp3 1 Get Lucky 2 Locked Down
Une valeur numérique peut être encadrée à l’aide de l’opérateur BETWEEN, par exemple les deux conditions suivantes sont équivalentes :
SALAIRE BETWEEN 1000 AND 5000 (SALAIRE >= 1000) AND (SALAIRE <= 5000)
L’opérateur IN permet de tester l’appartenance à une liste de valeurs. Les deux propositions suivantes sont équivalentes
NAME IN ('Gégé', 'Ginette', 'Marcel') (NAME = 'Gégé') OR (NAME = 'Ginette') OR (NAME = 'Marcel')
LIKE sert à comparer le contenu d’une variable à un littéral générique. Par exemple, la condition
NAME LIKE 'M%'
sera vérifiée si NAME commence par un ’M’. Ca fonctionne aussi sur les valeurs de type numérique, la condition
SALARY LIKE '%000000000'
sera vérifiée si SALARY se termine par 000000000. Le caractère % peut remplacer dans le littéral n’importe quelle suite, vide ou non, de caractères ; il a le même rôle que * en DOS et en SHELL. Le caractère _ remplace un et un seul caractère dans le littéral. Par exemple, la condition
NAME LIKE 'K_r%'
ne sera vérifiée que si NAME commence par un ’K’ et contient un ’r’ en troisième position.
L’expression
DELETE FROM <NOMTABLE> WHERE <CONDITION>
efface de la table NOMTABLE toutes les lignes vérifiant condition. Attention ! La commande
DELETE FROM <NOMTABLE>
efface toutes les lignes de la table NOMTABLE !
L’expression
UPDATE <NOMTABLE> SET <colonne_1> = <valeur_1>, <colonne_2> = <valeur_2>, ..., <colonne_n> = <valeur_n> WHERE <CONDITION>
modifie les lignes de la table NOMTABLE vérifiant condition. Elle affecte au champ colonnei la valeur valeuri. Par exemple,
UPDATE CLIENT SET prenomcli = 'Dark' WHERE nomcli = 'Vador'
affecte la valeur ’Dark’ aux champs prenomcli de toutes les lignes dont la valeur nomcli est égale à ’Vador’. Il est possible, dans une modification, d’utiliser les valeurs des autres champs de la ligne, voire même l’ancienne valeur de ce champ. Par exemple,
UPDATE OPERATION SET montantoper = montantoper + 5000
augmente les montants de toutes les opérations bancaires de 5000 (choisissez l’unité !).