Index de l'article


Opérateurs de comparaison
= Egale à
> Supérieur à
>= Supérieur ou égale à
< Inférieur à
<= Inférieur ou égale à
<> Différent de
BETWEEN ... AND ... Compris entre ... et ...
IN (liste_de_champ) Compris dans la liste
LIKE Ressemble en partie à la chaîne passé en paramètres
IS NULL Teste si la valeur est NULL

Utilisation des Opérateurs de comparaison.
SELECT nom, salaire
FROM nomtable;
WHERE salaire < 12500;
Affiche toutes les personnes dont le salaire est inférieur à 12500
SELECT nom, salaire
FROM nomtable;
WHERE salaire BETWEEN 8000 AND 12500;
Affiche toutes les personnes qui on un salaire entre 8000 et 12500
SELECT nom, departement
FROM nomtable;
WHERE departement IN(87,16,23);
Affiche le nom de toutes les personnes de la table dont le département de travaille se trouve dans le limousin
SELECT nom, prenom
FROM nomtable;
WHERE prenom LIKE '_y%';
Affiche le nom de toutes les personnes de la table dont la deuxième lettre du prénom est 'y'
% représente 0 ou n caractères (comme * sous unix ou dos) _ représente 1 caractére (comme ? sous unix)
SELECT nom
FROM nomtable;
WHERE salaire IS NULL;
Affiche le nom de toutes les personnes de la table dont le salaire n'est pas renseigné
(si le salaire est égale à NULL
Opérateurs Logiques
AND Retourne TRUE si les deux conditions sont VRAIES
OR Retourne TRUE si au moins une des conditions est VRAIE
NOT Retourne TRUE si la condition qui suit est FAUSSE et inversement
SELECT nom
FROM nomtable;
WHERE salaire < 7000
AND prénom = 'sylvain';
Affiche le nom de toutes les personnes de la table dont le salaire est inférieur à 7000 est dont le prénom est sylvain
 
Règles de Priorité
Ordre de priorité Opérateurs
1 Tous les opérateurs de comparaison
2 NOT
3 AND
4 OR
Les parenthèses permettent de changer les priorités
 
Tri : ORDER BY
ORDER BY ASC : par ordre croissant
DESC : Par ordre décroissant
SELECT nom
FROM nomtable;
ORDER salaire DESC;
Affiche le nom de toutes les personnes de la table en les triant du plus fort salaire au plus faible
SELECT nom
FROM nomtable;
ORDER Departement, salaire DESC;
Affiche le nom de toutes les personnes de la table en les triant par ordre croissant de Departement si dans un Departement il y a plusieurs enregistrement ces dernier sont trier par ordre décroissant de salaire
PS : les tris peuvent s'effectuer sur des colonnes ou des alias de colonnes.
 
Jointure
SELECT nomtable_1.nomcol_1, nomtable_2.nomcol_2, nomtable_1.nom_perso
FROM nomtable_1, nomtable_2
WHERE nomtable_1.nomcol_1 = nomtable_2.nomcol_2;

Cette commande fait une jointure entre la table nomtable_1 et la table nomtable_2 toutes les lignes qui réponde à la condition WHERE on relier ensemble.
SELECT nomtable_1.nomcol_1, nomtable_2.nomcol_2, nomtable_1.nom_perso
FROM nomtable_1, nomtable_2
WHERE nomtable_1.nomcol_1 = nomtable_2.nomcol_2
AND nomtable_1.salaire > 12000 ;
Grâce à AND on peut affiner la recherche
Jointure avec des alias
SELECT a.nomcol_1, b.nomcol_2
FROM nomtable_1 a , nomtable_2 b
WHERE a.nomcol_1 = b.nomcol_2;

Grâce aux alias on peut grandement simplifier l'écriture d'un select
Jointure de plus de 2 tables
SELECT a.nomcol_1, b.nomcol_2, c.nomcol_3, a.nomcol_4
FROM nomtable_1 a, nomtable_2 b,nomtable_3 c
WHERE a.nomcol_1 = b.nomcol_2
AND a.nomcol_4 = c.nomcol_3;

On fait une jointure des tables nomtable_1, nomtable_2, nomtable_3.
 
Fonctions de groupe : COUNT, AVG, ...
SELECT AVG(nomcol)
FROM nomtable;

Fait la moyenne de toutes les valeurs de la colonne nomcol
SELECT SUM(nomcol)
FROM nomtable;

Fait le totale de toutes les valeurs de la colonne nomcol
SELECT MIN(nomcol)
FROM nomtable;

Recherche dans la colonne nomcol la plus petite valeur
SELECT MAX(nomcol)
FROM nomtable;

Recherche dans la colonne nomcol la plus grande valeur
SELECT Count(expression)
FROM nomtable;

Compte le nombre de ligne de l'expression expression en sautant les valeurs NULL
expression peut être le nom d'une colonne.
SELECT Count(*)
FROM nomtable;

Compte le nombre d'enregistrement de la table nomtable.
 
Regroupement de Données : GROUP BY
SELECT ville, AVG(age)
FROM nomtable
GROUP BY ville;

Cette commande fait des regroupement par ville et fait la moyenne d'âge pour chaque ville.

note: tous les noms de colonne présent dans la clause SELECT doivent obligatoirement se retrouver dans la clause GROUP BY (les fonctions ne réponde pas à cette règle ex:AVG(non_col). par contre les noms de colonne qui se trouve dans le GROUP BY ne doivent pas obligatoirement se trouver dans le SELECT.
SELECT ville, AVG(age)
FROM nomtable
GROUP BY ville
HAVING AVG(age > 25);

Cette commande fait des regroupement par ville et fait la moyenne d'âge pour chaque ville. la clause having rajoute permet de restreindre les groupes ici seul les villes ayant une moyenne d'âge supérieur à 25.
PS : la clause WHERE est l'équivalent de la clause HAVING pour le GROUPE BY
 
Operation sur les ensembles
Union
SELECT ville
FROM nomtable
UNION
SELECT ville
FROM nomtable_2;

Combine le résultat de deux SELECT
Union All
SELECT ville
FROM nomtable
UNION ALL
SELECT ville
FROM nomtable_2;

Combine le résultat de deux SELECT mais contrairement a UNION, UNION ALL ne supprime pas les doublons et ne tri pas le résultat.
Intersect
SELECT ville
FROM nomtable
INTERSECT
SELECT ville
FROM nomtable_2;

Retourne comme résultat tous les enregistrement commun au deux SELECT.
Minus
SELECT ville
FROM nomtable
MINUS
SELECT ville
FROM nomtable_2;

Retourne le résultat de la premiére requete moins le enregistrements qui se trouve dans la deuxième requête.