Le langage SQL: Le langage de manipulation des données (LMD)

……….

A. Introduction
Le langage SQL est composé de différents sous-ensembles :
– LMD : Langage de Manipulation des données (DML, Data Manipulation Language)
Permet la manipulation et la mise à jour des tables, composé de quatre ordres fondamentaux :
SELECT, UPDATE, INSERT, DELETE.
– LDD : Langage de Définition des Données (DDL, Data Definition Language)
Permet la définition et la mise à jour du schéma relationnel de la base de données (mode administration). Composé des ordres suivants : CREATE TABLE, CREATE INDEX, CREATE VIEW, DROP
TABLE, DROP INDEX, DROP VIEW, ALTER TABLE.
– LCD : Langage de Contrôle des Données (DCL, Data Control Language)
Permet de définir les contraintes d’intégrité, de gérer les accès et les autorisations (administration).
Composé des ordres : GRANT, REVOKE, LOCK. Recouvre les déclencheurs (triggers), procédures cataloguées.
Le langage SQL a été normé par l’ANSI (American National Standards Institut) en 1986, repris par l’ISO (Organisation Internationale de Normalisation) en 1987, puis modifié en 1989. On nomme alors les différentes versions : SQL-86, SQL-87 et le SQL-89. En 1992 le SQL prend un virage avec des évolutions majeures : on l’appelle le SQL-92 ou SQL-2. En 1999 est né le SQL-99 ou SQL-3 (qui intégrera désormais les triggers ou déclencheurs). Le SQL a été adossé au XML en 2003 (SQL-2003)
L’objet de ce cours n’étant pas de retracer l’historique des ordres nous ne développeront donc pas plus cette partie.
– Extensions de SQL :
SQL+ (ORACLE), langage procédural (PL/SQL), Middleware (ODBC/JDBC), architecture Client/Serveur.
– Utilitaires :
Chargement et déchargement de tables à partir de fichiers.
Déchargement et rechargement de la base.
Générateurs d’états, gestionnaire d’écrans, QBE, interfaces.
 B. L’ordre SELECT
B.1. Ordre SELECT (version SQL89)
Permet de consulter les tables et les vues d’une BDD (extraire les données). Les clauses SELECT et FROM sont obligatoires.
SELECT [ALL|DISTINCT] <critères de projection>
FROM <tables>
[WHERE <critères de sélection et/ou de jointure
>]
[ORDER BY <critère de classement> [ASC|DESC]]
[GROUP BY <critère de regroupement>]
[HAVING <condition de regroupement>]
[FETCH FIRST n ROWS ONLY]
Les clauses sont exécutées dans cet ordre :
FROM  WHERE  GROUP BY / HAVING  SELECT  ORDER BY
Il est possible de donner un autre libellé aux colonnes projetées avec la clause AS : SELECT nomcli AS nom du client…. On peut également écrire : SELECT nomcli « nom du client »… (admis sous Oracle).
Exemple :
affichage de toutes les colonnes d’une table.
SELECT *
FROM client;
B.2. Ordre SELECT (version SQL92)
Dans sa version 92 le SQL impose une séparation distincte entre le critère de sélection et le critère dejointure (placé dans la clause WHERE initialement). Avec cette distinction on obtient une plus grandesouplesse dans l’utilisation des critères de jointure. On peut d’ailleurs remplacer l’union (clause UNION), l’intersection (clause INTERSECT) ainsi que toutes les autres opérations sur les ensembles (clause MINUS) par la seule clause JOIN.
Cet ordre est très puissant et permet de nombreuses opérations ensemblistes qui nécessitaient auparavant beaucoup de lignes. Les jointures externes sont détaillées à nouveau au point B.12.4)
SELECT <critères de projection> [AS entete1],
FROM <tables> [LEFT|RIGHT|FULL] [INNER|NATURAL|OUTER|EXCEPTION|UNION] JOIN <tables>
ON <critères de jointure>
WHERE <critères de sélection>
[ORDER BY <critère de classement> [ASC|DESC]]
[GROUP BY <critère de regroupement>]
[HAVING <condition de regroupement>]
[FETCH FIRST n ROWS ONLY]
La clause JOIN peut avoir les fonctions qui suivent :
– JOIN table2, table2 = uniquement les enregistrements en correspondance (comme les jointures classiques),
– table1 LEFT OUTER JOIN table2 = tous les enregistrements de table1,
– table1 EXCEPTION JOIN table2 = uniquement les enregistrements sans correspondance,
– table1 RIGHT OUTER JOIN table2 = tous les enregistrements de table2,
– table1 RIGHT EXCEPTION JOIN table2 = uniquement les enregistrements sans correspondance de table2.
 NB :
NATURAL JOIN permet d’éviter de préciser les colonnes concernées par la jointure (que l’on peut  restreindre à certaines colonnes avec la clause USING).  INNER JOIN précise une jointure interne, ce qui est le cas par défaut avec la simple utilisation de  JOIN. UNION permet de joindre deux tables dont la structure est différente.
Exemple :
affichage de tous les clients ayant passé au moins une commande.
SELECT numclient, nomclient
FROM client JOIN commande ON client.numclient=commande.numclient;
Exemple :
affichage de tous les clients n’ayant pas passé de commande.
SELECT numclient, nomclient
FROM client EXCEPTION JOIN commande ON client.numclient=commande.numclient;

……..

Cours pdf

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *