SQL Structured Query Language SGBD-R SQL Structured Query Language 24/04/2019 Halim M'SILTI
Partie I SQL : Définition 24/04/2019 Halim M'SILTI
SQL : définition Langage standard et structuré de consultation et manipulation de bases de données relationnelles Possède des commandes interactives ensemblistes qui opèrent sur des tables entières (ensembles logiques de données appelés relations) Offre des opérateurs pour manipuler les tables Son domaine de prédilection est l'extraction des données. 24/04/2019 Halim M'SILTI
Partie II SQL en pratique 24/04/2019 Halim M'SILTI
SELECT < colonne1, colonne2,..., colonneN > La structure de base d'une expression SQL (requête) comporte trois clauses : SELECT < colonne1, colonne2,..., colonneN > FROM < table(s) > [ WHERE <condition(s)> ] … Les crochets et les parenthèses angulaires ne font pas partie de la syntaxe. Ils indiquent respectivement une clause facultative et les éléments qui doivent être saisis. 24/04/2019 Halim M'SILTI
Syntaxe complète d’une commande SQL Les clauses doivent être énumérées selon un ordre précis : SELECT [ DISTINCT ] < ... > [ INTO < ... > ] FROM < ... > [ WHERE < ... > ] [ GROUP BY < ... > ] [ HAVING < ... > ] [ UNION sous-sélection ] [ ORDER BY < ... > / FOR UPDATE OF < ... > ] [ … ] 24/04/2019 Halim M'SILTI
Consultation typique SQL SELECT A1, A2, ..., An FROM r1, r2, ..., rn WHERE P Les Ai représentent les attributs Les rk représentent les tables P représente le prédicat La liste des attributs peut être remplacée par une astérisque pour indiquer que l’on sélectionne tous les attributs d’une relation 24/04/2019 Halim M'SILTI
Résultat d’une commande SELECT Table résultante. Cette dernière ne ressemble pas aux autres tables. Elle n'est pas enregistrée et on ne peut pas la consulter une fois l'exécution de SELECT achevée. Il est possible d'utiliser une clause particulière afin de sauvegarder la table résultante dans une table SQL temporaire. Elle pourra alors être réutilisée pendant la session en cours. On peut aussi la sauvegarder en tant que table d'une base de données avec une option spéciale. 24/04/2019 Halim M'SILTI
Syntaxe des Commandes SQL Partie III Syntaxe des Commandes SQL 24/04/2019 Halim M'SILTI
CREATE TABLE <nom de la table> ( < colonne1 > < type de données >, < colonne 2 > < type de données >, ... < colonne n > < type de données > ) 24/04/2019 Halim M'SILTI
INSERT INTO < nom de la table > [ ( < liste de colonnes > ) ] VALUES ( < liste de valeurs > ) 24/04/2019 Halim M'SILTI
UPDATE < table > / < vue > SET < colonne > = ( < expression > ), < colonne > = ( < expression > ), … [ WHERE < condition(s) > ] La commande UPDATE permet de modifier les valeurs d'une ou plusieurs lignes d'une table 24/04/2019 Halim M'SILTI
ALTER TABLE <table> ADD ( <colonne> <type de données>, <colonne> <type de données>, ... <colonne> <type de données>) La commande ALTER TABLE permet de modifier la structure d'une table 24/04/2019 Halim M'SILTI
DELETE FROM <table> WHERE (< condition(s)>) La commande DELETE TABLE permet de supprimer une ou plusieurs lignes d'une table 24/04/2019 Halim M'SILTI
(<colonne> [ASC/DESC], ... <colonne> [ASC/DESC]) CREATE [UNIQUE] INDEX <nom du fichier index> ON <table> (<colonne> [ASC/DESC], ... <colonne> [ASC/DESC]) 24/04/2019 Halim M'SILTI
Exemples de commandes SQL Partie IV Exemples de commandes SQL 24/04/2019 Halim M'SILTI
(SELECT agence, client FROM depot) UNION FROM credit) 24/04/2019 CREATE VIEW fichier_client AS (SELECT agence, client FROM depot) UNION FROM credit) 24/04/2019 Halim M'SILTI
VALUES (‘Wagram’, ‘9732’, ‘Martin’, 1200) INSERT INTO depot VALUES (‘Wagram’, ‘9732’, ‘Martin’, 1200) INSERT INTO depot ( SELECT agence, pret, client, 200 FROM credit WHERE agence = ‘Wagram’ ) 24/04/2019 Halim M'SILTI
SELECT SUM (montant) FROM Credit 24/04/2019 Halim M'SILTI
SQL : Opérateurs & Fonctions statistiques Partie V SQL : Opérateurs & Fonctions statistiques 24/04/2019 Halim M'SILTI
SQL : opérateurs SQL dispose de plusieurs opérateurs pour définir des conditions de recherche Opérateurs logiques : NOT AND OR Opérateurs arithmétiques : ** ^ + - * / Opérateurs de comparaison : = < > $ # <> ! L'opérateur ! représente la négation des opérateurs de comparaison. On peut écrire, par exemple != ou !<. 24/04/2019 Halim M'SILTI
COUNT ( * / [ DISTINCT ] <colonne> ) Dénombre les lignes sélectionnées SUM([ ALL / [ DISTINCT ] < colonne > ) Additionne les valeurs d'une colonne numérique MIN( [ ALL / DISTINCT ] <colonne>) Trouve la valeur minimale d'une colonne de type caractère ou numérique. MAX( [ ALL / DISTINCT ] <colonne>) Trouve la valeur maximale d'une colonne de type caractère ou numérique. AVG( [ ALL / DISTINCT ] <colonne>) Calcule la moyenne des valeurs d'une colonne numérique. 24/04/2019 Halim M'SILTI
Les fonctions statistiques peuvent traiter l'ensemble des valeurs d'une colonne (ou toutes les colonnes) d'une table, d'une vue ou d'une table intermédiaire, ou encore des ensembles de valeurs d'un groupe de lignes définies par une clause GROUP BY ou HAVING Seules les expressions comprenant un nom de colonne peuvent être utilisées comme arguments des fonctions SQL. 24/04/2019 Halim M'SILTI
Les fonctions statistiques traitent les valeurs des colonnes de toutes les lignes d'une table résultante ou de toutes celles d'un groupe. IL EST IMPOSSIBLE DE REGROUPER DES FONCTIONS STATISTIQUES ET DES NOMS DE COLONNES DANS LA CLAUSE SELECT, SAUF LORSQUE LA CLAUSE GROUP BY L'Y AUTORISE. 24/04/2019 Halim M'SILTI
L'utilisation de la clause GROUP BY est soumise à quelques restrictions Chaque nom de colonne figurant dans SELECT doit également être inclus dans GROUP BY et réciproquement Vous ne pouvez spécifier une colonne dérivée dans une clause GROUP BY à l'exception des noms de colonnes utilisées dans les fonctions statistiques de la clause SELECT. 24/04/2019 Halim M'SILTI
SQL : Principales caractéristiques Partie VI SQL : Principales caractéristiques 24/04/2019 Halim M'SILTI
Les commandes SQL spécifient les données à extraire des tables, et non la procédure employée pour accéder à ces données. C'est le système qui détermine la méthode optimale d'extraction. Cette approche est qualifiée de non procédurale. Cela signifie qu'il est inutile de décrire l'organisation des données sur disque ou en mémoire et donc de spécifier l'accès à une procédure. 24/04/2019 Halim M'SILTI
Une seule commande SQL peut remplacer plusieurs commandes d'un langage classique pour effectuer un même travail. Gain de temps appréciable pour le traitement de gros volumes d'informations. Cette particularité, est due au fait qu'une commande en langage SQL agit sur les enregistrements en les prenant un à un ou en groupe. 24/04/2019 Halim M'SILTI
Définition des données et des index correspondants Extraction des données Manipulation des données stockées Ajout Modification Suppression 24/04/2019 Halim M'SILTI
Contrôle des accès utilisateur Contrôle de l'intégrité des données Partage des données Contrôle des accès utilisateur Contrôle de l'intégrité des données Possibilité d'élaborer des procédures de sécurisation des données 24/04/2019 Halim M'SILTI
Accès à des bases de données distantes (sur gros système) Accès à des bases de données réparties ou distribuée sur un réseau La base de données se trouve sur un ou plusieurs serveurs Seule les requêtes et les données résultantes circulent sur le réseau. Respect des implémentations de type Client/Serveur 24/04/2019 Halim M'SILTI
SQL ne définit aucune opération d'entrée-sortie (clavier, écran, imprimante). Il doit être utilisé avec un autre langage pour gérer les entrées-sorties. Un programme SQL peut être "encapsulé" dans un autre programme écrit en langage C, Pascal, Fortran, …, pour construire des applications fonctionnant sur micro-ordinateurs ou gros systèmes. Ne prend pas en compte le réglage des performances et les outils d’amélioration de la productivité 24/04/2019 Halim M'SILTI
On peut utiliser les commandes SQL : soit, en mode interactif Les commandes sont exécutées une à une soit, en mode intégré Les commandes peuvent être intégrées dans un programme d’application 24/04/2019 Halim M'SILTI