You are on page 1of 15

Chapitre VI : Le langage SQL

q

Objectifs :
Savoir utiliser les bases de données à travers un langage de manipulation offert par les SGBD Maîtriser les ordres SQL Maîtriser le langage de définition des données Maîtriser le langage de manipulation des données.

q

Plan du chapitre :
I. Introduction II. Le langage de définition des données (LDD) III. Le langage de manipulation de données (LMD)

Ainsi. vous ne connaissez pas son utilisation.I. C’est le langage standard des SGBD relationnels. Le langage de définition des données (LDD) La première série de commandes sert à la maintenance de la base de données : création des tables et des indexes. Les instructions du langage SQL se décomposent en deux sous ensembles : § § Le langage de définition des données (LDD) qui permet la description (la création) de la structure de la BD. validation des modifications. SQL Server. avec SQL. Le langage de manipulation des données (LMD) qui permet la manipulation des tables constituant la BD c’est à dire la sélection. L'intérêt de SQL est que c'est un langage de manipulation de bases de données standard. Oracle ou Informix par exemple (les bases de données les plus utilisées). SQL dispose pour cela des instructions suivantes : CREATE TABLE ALTER TABLE DROP TABLE . vous pourrez l'utiliser sur n'importe quelle base de données. Il fournit aux utilisateurs les instructions nécessaires à la définition et la manipulation des données. Introduction SQL est un langage de manipulation de bases de données mis au point dans les années 70 par IBM. Il existe un troisième sous ensemble pour des tables. dBase. Les commandes de base sont toujours les mêmes mais ont parfois des variantes ou des extensions. § Le langage de contrôle des données qui permet la gestion des droits d'accès aux tables : Contrôle des données : droits d'accès. à priori. la modification et la suppression d'enregistrements. II. mais aussi Paradox. même si. modification de la structure d'une table ou suppression d'une table ou d'un index. la modification et la suppression d’une table. Le langage SQL a souvent été implémenté de façon différente. vous pouvez gérer une base de données Access.

. CHAR(n) : chaîne de caractères de taille n. CONSTRAINT pour déclarer une contrainte. (n est le nombre maximum de caractères autorisés dans le champ) VARCHAR(n) : chaîne de caractères de taille variable.3). CAclt) Create table Client ( Nclt number(3). CONSTRAINT Nom_de_la_contrainte FOREIGN KEY (attribut_clè_étrangère) REFERENCES Nom_de_table (attribut_clè_primaire)) . Exemple : a) Créer la table Client définie par : (Nclt. Les types de données possibles : NUMBER(n) : nombre entier à n chiffres.m) : Nombre réel à n chiffres au total (virgule comprise) et m chiffres après la virgule.1. CAclt number(6. FOREIGN KEY signifie que l’attribut est une clé étrangère REFERENCES pour indiquer le nom de la table dans laquelle cette clé est une clé primaire.II. PRIMARY KEY signifie que l’attribut est une clé primaire. CONSTRAINT Nom_de_la_contrainte PRIMARY KEY(attribut_clè_primaire). Adrclt. Telclt number(8). Sa syntaxe est la suivante : CREATE TABLE Nom_de_la_table (Nom_attribut1 Type_attribut [NULL/NOT NULL]. Nom_attribut2 Type_attribut. Adrclt varchar(60). Creation d’une table La commande CREATE TABLE permet de créer une table dans la base de données courante. DATE. Constraint PK_Client Primary Key (Nclt)). Telclt. NUMBER(n. Les contraintes d’intégrité : NOT NULL autorise ou non que l’attribut puisse être vide.

b) Puis créer la table Commande définie par : Commande(Ncde. Modification d’une table Une table existante peut être modifiée en vue d’ajouter un nouvel attribut ou modifier la taille d’un attribut. les spécifications du champ de la même façon que pour la commande CREATE TABLE. ces actions sont : . Exemple : Modifier la structure de la table Client est ce en ajoutant un nouvel attribut appelé Prénomclt et en modifiant la taille de l’adresse Client qui devient de taille 80. Après l'action. Nclt nuber(3). sa syntaxe est la suivante : ALTER TABLE nom_de_la_table Action (spécifications du champ). Datecde. Modification d une table : Foreign Key (Nclt) references Client (Nclt)). #Nclt) Create table Client ( Ncde number(3).2. ALTER TABLE Client Add Prénomclt Varchar(15) ALTER TABLE Client Modify Adrclt varchar(80) . La commande ALTER TABLE permet de modifier la structure d'une table. Constraint FK_Commande II. entre parenthèses. 1.DROP Supprime un champ d'une table DROP Nom_attribut.ADD Ajoute un champ à une table ADD Nom_attribut type_attribut. Constraint PK_Commande Primary Key (Ncde).MODIFY Modifie les caractéristiques d'un champ MODIFY Nom_attribut type_attribut. ALTER TABLE permet trois actions. . . Datecde date. On ne peut faire qu'une action à la fois (ajout. on indique. suppression ou modification dans la même commande).

2000. Prénomc...).. Le langage de manipulation de données (LMD) Une fois les tables créées. Qtes. Qtec) Produits(Codp. 1200. On créera un nouvel enregistrement dont le contenu du champ1 sera valeur1.1. Insérer le client ‘Ali Ben Mohamed’ dont le code est ‘100’. La commande INSERT Soit la BD constituée des 4 tables suivantes : Clients (Codc.3. Codc) Lignes_Commandes(Nc. Couleur) Présentation & syntaxe La commande INSERT est utilisée pour ajouter des enregistrements ou des parties d'enregistrements dans des tables. Crédit. libellé.SELECT III. on peut commencer à y insérer des données. Insert into client values (‘100’. pu. champ2. ‘Ali’. le crédit max est 2000D et qui habite à Tunis. les supprimer ou y faire des requêtes. Datec. Cette forme est utilisée lorsqu'on veut insérer un seul enregistrement ou une partie d'un seul enregistrement. le crédit est 1200D. Exemples : a. Ville) Commandes(Nc.UPDATE .. Pour effectuer ces manipulations. etc. SQL dispose de 5 instructions : . Nomc. Créditmax..II. les mettre à jour. III. Suppression d’une table Il s’agit d’une suppression physique de la table. ‘Tunis’) .DELETE . le contenu du champ2 sera valeur2. INSERT INTO nom_de_la_table [champ1..'valeur2'.INSERT . Drop table Nom_table ..] VALUES ('valeur1'. Toutes ces opérations sont des opérations de manipulation des bases de données. Codp.. ‘Ben Mohamed’.

ville values (‘101’. Si la clause WHERE est absente. La commande UPDATE affecte tous les enregistrements qui répondent à la condition donnée dans la clause WHERE. Ajouter 100D aux crédits de tous les clients UPDATE Client SET credit = credit + 100. Les champs non spécifiés après la clause SET ne seront pas modifiés. III. Modifier la quantité en stock du produit de code ‘5’ qui devient de 98 unités. Les valeurs des champs à insérer doivent cependant apparaître dans le même ordre que les noms des champs lors de la création de la table.b. La commande UPDATE La commande UPDATE est utilisée pour changer des valeurs dans des champs d'une table. tous les enregistrements de la table seront affectés. b. ‘Tunis’) Si des valeurs doivent être insérées dans tous les champs de l'enregistrement de la table. champ2 = nouvelle_valeur2. sans oublier un seul champ. . si nous tapons : UPDATE produits SET pu = 1000. Insert into client codc. La clause SET indique quels champs de la table vont être mis à jour et avec quelles valeurs ils vont l'être. Insérer le client de code ‘101’qui habite à Tunis. Exemples : a. la liste des noms des champs n'a pas besoin d'être explicitement indiquée dans la commande. champ3 = nouvelle_valeur3 [WHERE condition].2. UPDATE Produit SET Qtes = 98 Where codp = ‘5’ . Sa syntaxe est : UPDATE table SET champ1 = nouvelle_valeur1. Par exemple.

Cette commande va servir à faire des requêtes pour récupérer des données dans les tables. n'indiquez pas de clause WHERE : DELETE FROM table. La syntaxe est la suivante : DELETE FROM table [WHERE condition]. c'est pour cela qu'il n'est pas nécessaire d'indiquer ici des noms de champs. III. La commande DELETE supprime des enregistrements entiers. Exemple : c. La forme générale de l’instruction SELECT : (Entre crochets : lignes facultatives) .4. On ne peut pas supprimer seulement le contenu de quelques champs des enregistrements.Le prix unitaire de tous les produits de la table produit va être modifié. Elle peut être associée à une des commandes de manipulation de tables vues avant pour spécifier une condition. La condition spécifiée après WHERE va déterminer quels sont les enregistrements à supprimer. Delete From Client Where codc = ‘101’ . III. utilisez la commande DELETE. La commande DELETE Pour supprimer des enregistrements d'une table. La commande SELECT a°) Requête de sélection sur une table Présentation & Syntaxe : La commande SELECT est la commande la plus complexe de SQL. Pour supprimer tous les enregistrements d'une table.3. Supprimer le client de code 101 . Cette variante de la commande DELETE ne supprime pas la table. elle supprime seulement les enregistrements contenus dans cette table et laisse une table vide.

Critère facultatif de tri sur un des attributs de la réponse. et non pas dans l'ordre qu'ils ont été créés dans la table. Critères facultatifs de sélection sur la valeur des occurrences des attributs. An). Requête2: Donner la liste de toutes les informations sur les clients. Requête1: Donner la liste des NC et des dates de commandes. les champs doivent être séparés par des virgules. Tablep [WHERE C1 and C2 … and Cn] Tables concernées par la requête. la syntaxe est la suivante : SELECT * FROM table. An Attributs conservés dans la réponse (projection sur les attributs A1. A2. ….SELECT [ALL/DISTINCT]A1. Critères de sélection (cas simples) : < champ> <compérateur> <champ> < champ> <compérateur> valeur Critères de tri des réponses : ASC DESC Sens croisant Sens décroissant S'il y a plus d'un champ spécifié après SELECT. . …. FROM Table1.…. [ORDER BY Ai Sens] . Si on veut récupérer tous les champs des enregistrements sélectionnés. Table2. Les champs sont retournés dans l'ordre spécifié après la clause SELECT.

Requête3: Donner la liste des produits commandés (Codp). indiquer des critères de sélection avec la clause WHERE : SELECT * FROM table WHERE condition. . Requête4: Donner la liste des clients de Tunis (Codc et nom). on peut. Requête5: Donner la liste des commandes effectuées par le client de code 8. A l’opposé. C’est la valeur par défaut lorsque l’attribut n’est pas spécifié. . § La clause WHERE : Permet d’introduire une condition pour spécifier les lignes à afficher. <. l’attribut ALL affiche toutes les réponses. . >. § Les opérateurs de condition : On peut utiliser les opérateurs suivants dans les conditions : =.§ L’attribut DISTINCT : Sert à omettre dans les occurrences d’enregistrement de la réponse qui seraient en double. Les clauses SELECT et FROM doivent obligatoirement apparaître au début de chaque requête. ensuite.(NC).

Requête6: Donner la ville où habite le client « Ahmed ». L’utilisation des instructions BETWEEN. § L’utilisation des instructions IS NULL et IS NOT NULL : détection occurrence d’un attribut vide IS NULL IS NOT NULL détection occurrence d’un attribut non vide Requête8: Donner la liste des clients dont on ne connaît pas la ville où il habite. IN. § Clauses IN et BETWEEN: . NOT IN et LIKE : Ces instructions permettent de spécifier les conditions de recherche. L'opérateur OR réunit deux conditions mais sélectionne un enregistrement si UNE des conditions listées est satisfaite. (C'est-à-dire que toutes les conditions séparées par AND sont vraies). Requête7: Donner la liste des commandes passées après le 04/01/2005. § Opérateurs logiques : Il est possible de combiner plusieurs conditions avec des opérateurs logiques : L'opérateur AND réunit deux ou plusieurs conditions et sélectionne un enregistrement seulement si cet enregistrement satisfait TOUTES les conditions listées.

Pour sélectionner les produits dont le prix n'est pas dans cet intervalle : De la même façon. à Djerba ou à sfax. Requête11: Donner la liste des clients qui n habitent pas à Tunis. § IN vérifie si une valeur d’un attribut correspond à l’une des celles spécifiées dans la liste. on utilise les clauses IN et BETWEEN. Requête9: Donner la liste des commandes passées au cours de cette année.Pour sélectionner des enregistrements dont la valeur d'un champ peut être comprise dans une liste ou entre deux valeurs. . § § Le caractère % représente n’importe quel nombre de caractères. Requête10: Donner la liste des produits dont la quantité en stock est comprise entre 100 et 200 unités. § La clause LIKE : La clause LIKE permet de faire des recherches approximatives sur le contenu d'un champ à l’aide de caractères de remplacement. NOT IN sélectionne les enregistrements exclus de la liste spécifiée après IN. Le caractère _ représente un seul caractère quelconque Requête12: Donner la liste des clients dont le nom commence par ‘A’.

COUNT (*) Renvoie le nombre d’enregistrements satisfaisant la requête. Requête15: Donner le nombre total des clients qui habitent à tunis. MAX ( ) Donne la valeur la plus élevée d’un champ de tous les enregistrements satisfaisant la condition de la requête. Le champ doit bien sur être de type numérique. . § Les fonctions d'ensemble : SQL a cinq fonctions importantes : SUM. MIN et COUNT. AVG ( ) Donne la moyenne d’un champ de tous les enregistrements satisfaisant la condition de la requête. MIN ( ) Donne la valeur la plus petite d’un champ de tous les enregistrements satisfaisant la condition de la requête. AVG. MAX.Requête13: Donner la liste des clients dont le nom contient le mot ‘hm’. Requête15: Donner la moyenne des quantités commandées pour la commande n°100. Fonction SUM ( ) Signification Donne le total d’un champ de tous les enregistrements satisfaisant la condition de la requête. Syntaxe : SELECT fonction(Attribut) AS [Nom_chp_calcule] Requête14: Donner le nombre total des clients. On les appelle fonctions d'ensemble parce qu'elles résument le résultat d'une requête plutôt que de renvoyer une liste d'enregistrements.

..Requête16: Donner le prix unitaire maximum... suivant un certain critère. Requête18: Classer par ordre décroissant les prix unitaires des produits. plutôt que sur l’ensemble des occurrences résultat. . à placer entre la clause WHERE et la clause ORDER BY : • [GROUP BY champ1. § Regroupement d’enregistrements : Effectuer les calculs sur des regroupements d’enregistrement. champn) . § Classement des données : La clause ORDER BY : spécifie la liste d’attributs sur lesquels l’affichage doit être trié (croissant ou décroissant). Chaque agrégat sur lequel s’effectuent les calculs correspond à l’ensemble des enregistrements présentant les mêmes occurrences du champs (champ1. moyen. champn] critères de groupement : Définition des champs formant le groupement... Requête17: Donner la liste des commandes classées par date de commande. des produits. Ä Deux nouvelles clauses (facultatives) dans la requête SQL. minimum. .

.• [HAVING Condition] critère de sélection portant sur les regroupements et non pas sur les enregistrements isolés. Requête23: Donner le nombre des produits par commande pour les commandes ayant plus que 10 produits et dont la quantité commandée est supérieure ou égale à 150 unités. Requête21: Donner le nombre des fois où chaque produit est commandé. Requête20: Donner le nombre des produits par commande. Requête19: Donner le nombre des clients par ville. Requête22: Donner le nombre des produits par commande pour les commandes ayant plus que 10 produits.

et pour les différencier. la notation: table.nom_du_champ. Il va néanmoins falloir indiquer comment se fait la relation entre ces tables. il faut faire attention que deux tables n'aient pas de champs ayant le même nom. si c'est le cas. Notez que lorsqu'on utilise plusieurs tables. on utilise. on peut l'utiliser sans le préfixer avec le nom de la table. Requête25: Donner les noms des clients qui ont passé des commandes en 2005 concernant les produits dont le prix unitaire est supérieur à 10. . Si on est sur que le nom ne se retrouvera pas dans plusieurs tables.b°) Requête de sélection multitables : Les jointures La jointure va nous permettre de sélectionner des informations dans plusieurs tables grâce aux relations existant entre ces tables. comme dans l'exemple. Requête24: Donner les noms des clients qui ont passé des commandes.