|
|
|
|
SQL : Structured Query Language Caractéristiques 1) Historique :
2) SQL n'est pas un langage de programmation.
- interactif : on
tape directement une instruction SQL, instantanément traitée ; 3) Modèles hiérarchiques, en réseau, relationnels. Il existe 3 modèles logiques de représentation des enregistrements d'une base de donnée :
4) DDL, DCL et DML. Le langage SQL peut être divisé en 3 parties :
5) Serveurs de bases de données (modèle client / serveur). Dans les S.I. modernes, une B de D est en général partagée entre plusieurs
utilisateurs. Terminologie
Un S.G.B.D. est un outil pour organiser, stocker, modifier, calculer et
extraire des infos.
Les commandes associées à la définition de table sont : · CREATE TABLE ( Création ) · ALTER TABLE ( Modification de la structure ) · DROP TABLE ( Effacement ) Pour modifier le contenu des tables, on utilise : · INSERT ( Ajout ) · DELETE ( Effacement ) · UPDATE ( Modification ) 2) Lignes, colonnes champs et valeurs. Les tables sont composées de lignes et de colonnes. 3) Types de données. Voici quelques types : SMALLINT : nbres entiers de -99999 à 99999.
4) Syntaxe des instructions. Toutes les instructions SQL doivent se terminer par un point-virgule (;)
Créer une base de donnée Avant d'enregistrer des informations dans des tables, il faut créer une base de données SQL dans laquelle on va ranger les tables. Syntaxe : CREATE DATABASE [chemin d'accès]nom_base ; Ex : CREATE DATABASE a:\exercice ; Rem : Le fait de créer une base de données l'ouvre automatiquement.
START DATABASE nom_base ; Rem : Après s'être servi d'une base de données, il faut la fermer : STOP DATABASE ; · La commande SHOW DATABASE ; répertorie les bases de données SQL.
a) Création : CREATE TABLE nom_table Ex :
CREATE TABLE
employe b) Effacement : DROP TABLE nom_table ; Ex : DROP TABLE employe ;
2) Créer / effacer une vue. Une vue est un moyen de synthétiser l'info. qui figurerait dans une ou plusieurs tables, en une seule table (logique). On a donc l'impression de travailler avec une seule table alors que l'on utilise les infos de plusieurs tables. Rem : la majeure partie des commandes SQL s'appliquant à une table s'appliquent à une vue. a) Création : CREATE VIEW nom_vue Ex :
CREATE VIEW
vue1 Ex :
CREATE VIEW
cadre b) Effacement : DROP VIEW nom_vue ; Ex : DROP VIEW cadre ;
3) Créer / effacer une index. a) Création : CREATE [UNIQUE] INDEX nom_index Ex : CREATE INDEX nom_emp Crée un index sur la colonne Nom de la table Employe. Crée un index sur les colonnes Nom et Prenom. Rem : · UNIQUE empêche d'avoir 2 ou plusieurs lignes identiques pour la même clé. · les index ne peuvent être créés que sur des tables (pas des vues). · une fois créé, un index est automatiquement mis à jour par SQL. b) Effacement : DROP INDEX nom_index ; Ex : DROP INDEX nom_emp ; Modifier / enrichir une base de donnée 1) Insertion de colonnes dans une table. Format : ALTER TABLE nom_table Rem : · la valeur initiale des champs rajoutés est nulle. · la (les) colonne rajoutée est la dernière de la table. Ex : ALTER TABLE employe 2) Insertion de lignes dans une table (vue). Format : INSERT INTO nom_table Ex :
INSERT INTO employe 3) Effacement de lignes dans une table. DELETE FROM nom_table Ex :
DELETE FROM
employe
Efface dans la table des employés, toutes les personnes qui sont parties en retraite. 4) Modification de lignes dans une table. UPDATE nom_table Ex :
UPDATE employe L'employé Dupont aura son salaire fixé à 13000 F.
UPDATE employe Tous les salaires sont augmentés de 5 %.
UPDATE employe Seuls les cadres sont augmentés.
Interroger une table
Une commande de sélection contient les clauses suivantes : SELECT ..... FROM ..... WHERE ..... GROUP BY ..... HAVING ..... ORDER BY .....
2) Sélection de colonnes. a) Toutes les colonnes : SELECT * FROM nom_table ; Ex : SELECT * FROM employe ; b) Une (des) colonne(s) : SELECT nom_col , .......... Ex :
SELECT nom , prenom , age
3) Sélection de lignes. ( WHERE ) SELECT nom_col , ...... Ex :
SELECT nom , prenom , age
4) Critères généraux de sélection.
a) BETWEEN : valider si une expression est comprise entre 2 valeurs. Syntaxe : Expression1 [NOT] BETWEEN Expression2 AND Expression3 Exemple :
SELECT nom, prenom FROM
Employe b) LIKE : rechercher des valeurs possédant certaines caractéristiques. On peut utiliser les caractères jokers : · _ (souligné ) qui remplace n'importe quel caractère ; · %(pourcentage) qui remplace n'importe quelle chaîne de caractères. Syntaxe : Nom_Col [NOT] LIKE Expression Exemple :
SELECT Nom, Prenom FROM
Employe Sélectionne tous les employés dont le nom commence par Du. Exemple : SELECT Nom, Prenom FROM Employe Sélectionne tous les employés dont le nom contient un R en 3ème position. Exemple :
SELECT Nom, Prenom FROM
Employe Sélectionne tous les employés dont le nom contient "RA". c) EXISTS : teste si le résultat d'une sélection contient au moins une ligne. Syntaxe : EXISTS ( sélection) ; Exemple :
SELECT nom FROM employe d) IN : sélectionne les lignes contenant une valeur coïncidant avec l'une des valeurs dans une liste. Syntaxe : expression [NOT] IN liste Exemple :
SELECT * FROM employe Sélectionne tous les employés ayant 64 ou 65 ans. Rem : cette commande est équivalente à :
SELECT * FROM employe e) Opérateurs : On peut aussi utiliser les opérateurs : · booléens : AND, OR et NOT, · de comparaison : = , > , et < ( et leur combinaisons ) Exemples :
SELECT * FROM Employe
ou
SELECT * FROM Employe
f) ALL : utilisé avec un opérateur de comparaison, sert à tester si une expression est vérifiée dans tous les cas de figure. L'expression est juste si la comparaison est vérifiée pour toutes les valeurs renvoyées par la clause "sous-sélection". Ex :
SELECT * FROM employe permet de vérifier si tout le personnel a moins de 65 ans. g) ANY : Contrairement à ALL, l'expression est juste si la comparaison est vérifiée dans la clause de sous-sélection pour au moins une valeur. Ex :
SELECT * FROM employe si au moins une valeur de la sélection " SELECT age FROM employe" est > à 65, alors on affiche " * FROM employe "
5) TRI des résultats : Il est possible de trier les résultats d'une sélection avec la clause ORDER BY : Syntaxe : ORDER BY nom_col [ ASC / DESC ] Exemple :
SELECT statut, nom, prenom,
salaire FROM employe On sélectionne les employés et on les classe par statut ; pour chaque statut, ils sont classés par salaire, le salaire le moins important en premier.(le champ critère de tri doit être présent après le SELECT)
6) Pour éviter de sélectionner des lignes en double (redondantes) : on utilise la clause DISTINCT. Syntaxe : SELECT DISTINCT nom_col, .... FROM nom_table Exemple : SELECT DISTINCT nom FROM employe
Interroger une table 7) Fonctions de groupe de valeurs : Les fonctions de groupe de valeurs permettent de traiter des informations récapitulatives. Il y en a 2 : a) GROUP BY : permet de grouper les lignes par type. Syntaxe : GROUP BY nom_col , ... Exemple :
SELECT statut, SUM(salaire)
FROM employe va donner, statut par statut, le total des salaires des employés. le résultat pourrait être :
Exemple :
SELECT statut, COUNT(*),
SUM(salaire) FROM employe le résultat pourrait être :
b) HAVING : permet de spécifier des critères de sélections sur les groupes de valeur. (accompagne toujours le GROUP BY) Syntaxe : GROUP BY ...... Exemple :
SELECT statut, COUNT(*),
SUM(salaire) FROM employe le résultat pourrait être :
on ne prend en compte que les statuts qui comprennent plus de 10 personnes. Rem : la différence entre HAVING et WHERE est que WHERE s'applique à des lignes seules et que HAVING s'applique à des groupes de lignes.
8) Fonctions numériques s'appliquant sur les colonnes : 1) AVG : permet de calculer la moyenne de valeurs. Syntaxe : AVG ( [ALL] expression ) Exemple : SELECT AVG ( age ) FROM employe ; calcule la moyenne des âges des employés. 2) COUNT : comptage du nombre d'élément sélectionnés. Syntaxe : COUNT (*) Exemple :
SELECT COUNT(*) FROM
employe compte le nombre de cadres. SELECT COUNT (DISTINCT statut ) FROM employe ; compte le nombre de status différents au sein de l'entreprise. 3) MAX : détermine la valeur maximale d'un ensemble de valeurs. Syntaxe : MAX ( [ALL] expression ) Exemple :
SELECT MAX (age) FROM
employe trouve l'âge le plus élevé dans la catégorie cadre. 4) MIN : semblable à MAX, pour le minimum de valeurs. 5) SUM : permet de déterminer la somme de valeurs. Syntaxe : SUM ( [ALL] expression ) Exemple :
SELECT SUM (salaire) FROM
employe trouve le total des salaires des cadres.
Interrogation de tables multiples 1) Interrogation sur plusieurs tables : Il est possible d' utiliser plus d'une table dans une instruction " SELECT .... FROM ...." Exemple :
SELECT nom, CA , SUM(facture)
FROM Ventes, Compta sélectionne les ingénieurs commerciaux dont le total de facture en cours de leurs clients dépasse 10000 francs On accède ici à 2 tables : · Vente qui contient notamment le nom du commercial et son chiffre d'affaire annuel ; · Compta qui contient, pour chaque facture en cours, le nom du commercial et le montant correspondant. Le critère qui permet la jointure des deux tables est : Ventes.nom = Compta.nom Il indique que pour un même ingénieur commercial, on va chercher dans la table Vente le chiffre d'affaire (CA) et dans la table Compta, la somme des factures en cours. Syntaxe : SELECT nom_col1, nom_col2, ... FROM table1, table2 ... Rem : l'exemple précédent aurait pu s'écrire :
SELECT nom, CA , SUM(facture)
FROM Ventes V, Compta C V est défini comme synonyme de Ventes, et C comme synonyme de Compta. 2) Sous-requêtes : Il est possible de mettre des SELECT à l'intérieur d'autres SELECT : on peut alors faire des requêtes à partir de résultats d'autres requêtes (requêtes imbriquées). Les sous-requêtes sont utilisées avec les opérateurs : IN, ALL, ANY, EXISTS, SOME.
3) Opérations sur les ensembles : a) Union : l'union de 2 tables produit une table logique qui contient à la fois les lignes renvoyées par la 1ère sélection et les lignes de la 2nde sélection. Syntaxe : sélection1 Exemple :
SELECT Societe, cp FROM
Client Permet d'obtenir une table composée des clients et des fournisseurs. Les clients qui sont également des fournisseurs ne figureront qu'une seule fois dans la table résultante. b) Intersection : sur certaines versions de SGBD SQL, il est possible d'effectuer des intersections de tables. Syntaxe : sélection1 Exemple :
SELECT societe, cp FROM
client Permet de trouver les clients qui sont également fournisseurs. c) Exclusion : on utilise l'opérateur MINUS (qui n'existe que dans certaines versions de SGBD). Syntaxe : sélection1 (c) Par William Vaughn - Mis en ligne le 23/10/02 site : http://www.itpro.fr/index1.asp?Idarticle=1207&rub=3 Voir l'article sur SQL : Exchange 2000 et Sharepoint Portal Server http://www.itpro.fr/index1.asp?Idarticle=1001&rub=2 Et l'article sur Windows & .NET MAGAZINE Vol.1 - Numéro 2 de Février 2002 sur Exchange 2000 et SharePoint Portal Server : http://www.itpro.fr/index1.asp?Idarticle=1001&rub=2 http://www.itpro.fr/index1.asp?Idarticle=966&rub=2 http://www.itpro.fr/index1.asp?Idarticle=826&rub=2 et le site Microsoft : http://www.microsoft.com/france/sql/default.asp 07/06/2003 |
|
|