Qu'est-ce que SQL ?
Langage standard des bases de données relationnelles, qui sert à définir les tables, à rechercher, insérer, mettre à jour et supprimer des données, et à contrôler les privilèges. Il est normalisé par l'ISO/IEC (au Japon aussi sous forme de norme JIS). Ses instructions comprennent SELECT, INSERT, UPDATE, DELETE, CREATE TABLE et GRANT.
Nom japonais: SQL
« SQL » apparaît dans 15 questions d'entraînement réparties sur 3 thèmes, dont Bases des bases de données, Bases de la sécurité de l'information, Flot de conception de circuits intégrés et EDA.
Domaine: Bases des bases de données
Types d'instructions SQL
Les instructions SQL se répartissent en 3 grands groupes selon leur rôle. Le langage de définition de données (DDL), comme CREATE, ALTER et DROP, définit des structures comme les tables, les vues et les index. Le langage de manipulation de données (DML), comme SELECT, INSERT, UPDATE et DELETE, traite les données des tables. Le langage de contrôle de données (DCL), comme GRANT et REVOKE, contrôle les privilèges. COMMIT, qui rend une transaction définitive, et ROLLBACK, qui l'annule, sont tantôt rangées dans le DCL, tantôt traitées à part comme instructions de contrôle des transactions.
Clauses de l'instruction SELECT et ordre de traitement
Une instruction SELECT s'écrit en énumérant des clauses, comme SELECT colonnes FROM table WHERE condition GROUP BY colonnes HAVING condition ORDER BY colonnes. Contrairement à l'ordre d'écriture, il est plus facile de comprendre le traitement dans l'ordre FROM (choisir et joindre les tables), WHERE (sélectionner les lignes), GROUP BY (former les groupes), HAVING (sélectionner les groupes), SELECT (extraire les colonnes et calculer les fonctions d'agrégation) et ORDER BY (trier). C'est pourquoi on ne peut pas écrire de fonctions d'agrégation dans WHERE et pourquoi les conditions sur les groupes se placent dans HAVING.
Questions fréquentes
Quelle est la différence entre les clauses WHERE et HAVING en SQL ?
La clause WHERE est une condition sur les lignes individuelles avant le regroupement, et l'on ne peut pas y écrire de fonctions d'agrégation. La clause HAVING est une condition sur les groupes formés par GROUP BY, et elle peut utiliser des fonctions d'agrégation, comme dans HAVING SUM(Montant) >= 1000.
Comment trouver en SQL les lignes qui contiennent NULL ?
On écrit WHERE colonne IS NULL. WHERE colonne = NULL ne sélectionne aucune ligne, car une comparaison avec NULL n'est jamais vraie. Les lignes non NULL se sélectionnent avec IS NOT NULL.