Vous êtes sur la page 1sur 15

Chapitre VI : Le langage SQL

Objectifs :
Savoir utiliser les bases de donnes travers un langage de manipulation offert par les SGBD Matriser les ordres SQL Matriser le langage de dfinition des donnes Matriser le langage de manipulation des donnes.

Plan du chapitre :
I. Introduction II. Le langage de dfinition des donnes (LDD) III. Le langage de manipulation de donnes (LMD)

I. Introduction
SQL est un langage de manipulation de bases de donnes mis au point dans les annes 70 par IBM. Cest le langage standard des SGBD relationnels. Il fournit aux utilisateurs les instructions ncessaires la dfinition et la manipulation des donnes. Les instructions du langage SQL se dcomposent en deux sous ensembles : Le langage de dfinition des donnes (LDD) qui permet la description (la cration) de la structure de la BD, la modification et la suppression dune table. Le langage de manipulation des donnes (LMD) qui permet la manipulation des tables constituant la BD cest dire la slection, la modification et la suppression d'enregistrements. Il existe un troisime sous ensemble pour des tables. Le langage de contrle des donnes qui permet la gestion des droits d'accs aux tables : Contrle des donnes : droits d'accs, validation des modifications.

L'intrt de SQL est que c'est un langage de manipulation de bases de donnes standard, vous pourrez l'utiliser sur n'importe quelle base de donnes, mme si, priori, vous ne connaissez pas son utilisation. Ainsi, avec SQL, vous pouvez grer une base de donnes Access, mais aussi Paradox, dBase, SQL Server, Oracle ou Informix par exemple (les bases de donnes les plus utilises). Le langage SQL a souvent t implment de faon diffrente. Les commandes de base sont toujours les mmes mais ont parfois des variantes ou des extensions.

II. Le langage de dfinition des donnes (LDD)


La premire srie de commandes sert la maintenance de la base de donnes : cration des tables et des indexes, modification de la structure d'une table ou suppression d'une table ou d'un index. SQL dispose pour cela des instructions suivantes : CREATE TABLE ALTER TABLE DROP TABLE

II.1. Creation dune table


La commande CREATE TABLE permet de crer une table dans la base de donnes courante. Sa syntaxe est la suivante : CREATE TABLE Nom_de_la_table (Nom_attribut1 Type_attribut [NULL/NOT NULL], Nom_attribut2 Type_attribut,

CONSTRAINT Nom_de_la_contrainte PRIMARY KEY(attribut_cl_primaire), CONSTRAINT Nom_de_la_contrainte FOREIGN KEY (attribut_cl_trangre)

REFERENCES Nom_de_table (attribut_cl_primaire)) ; Les types de donnes possibles : NUMBER(n) : nombre entier n chiffres. NUMBER(n,m) : Nombre rel n chiffres au total (virgule comprise) et m chiffres aprs la virgule. CHAR(n) : chane de caractres de taille n. (n est le nombre maximum de caractres autoriss dans le champ) VARCHAR(n) : chane de caractres de taille variable. DATE. Les contraintes dintgrit : NOT NULL autorise ou non que lattribut puisse tre vide. CONSTRAINT pour dclarer une contrainte. PRIMARY KEY signifie que lattribut est une cl primaire. FOREIGN KEY signifie que lattribut est une cl trangre REFERENCES pour indiquer le nom de la table dans laquelle cette cl est une cl primaire. Exemple : a) Crer la table Client dfinie par : (Nclt, Adrclt, Telclt, CAclt) Create table Client ( Nclt number(3), Adrclt varchar(60), Telclt number(8), CAclt number(6,3), Constraint PK_Client Primary Key (Nclt));

b) Puis crer la table Commande dfinie par : Commande(Ncde, Datecde, #Nclt) Create table Client ( Ncde number(3), Datecde date, Nclt nuber(3), Constraint PK_Commande Primary Key (Ncde),

1. Modification d une table : Foreign Key (Nclt) references Client (Nclt)); Constraint FK_Commande

II.2. Modification dune table


Une table existante peut tre modifie en vue dajouter un nouvel attribut ou modifier la taille dun attribut. La commande ALTER TABLE permet de modifier la structure d'une table, sa syntaxe est la suivante : ALTER TABLE nom_de_la_table Action (spcifications du champ);

ALTER TABLE permet trois actions, ces actions sont : - ADD Ajoute un champ une table ADD Nom_attribut type_attribut; - DROP Supprime un champ d'une table DROP Nom_attribut; - MODIFY Modifie les caractristiques d'un champ MODIFY Nom_attribut type_attribut;

Aprs l'action, on indique, entre parenthses, les spcifications du champ de la mme faon que pour la commande CREATE TABLE. On ne peut faire qu'une action la fois (ajout, suppression ou modification dans la mme commande). Exemple : Modifier la structure de la table Client est ce en ajoutant un nouvel attribut appel Prnomclt et en modifiant la taille de ladresse Client qui devient de taille 80. ALTER TABLE Client Add Prnomclt Varchar(15) ALTER TABLE Client Modify Adrclt varchar(80)

II.3. Suppression dune table


Il sagit dune suppression physique de la table. Drop table Nom_table ;

III. Le langage de manipulation de donnes (LMD)


Une fois les tables cres, on peut commencer y insrer des donnes, les mettre jour, les supprimer ou y faire des requtes. Toutes ces oprations sont des oprations de manipulation des bases de donnes. Pour effectuer ces manipulations, SQL dispose de 5 instructions : - INSERT - UPDATE - DELETE - SELECT

III.1. La commande INSERT


Soit la BD constitue des 4 tables suivantes : Clients (Codc, Nomc, Prnomc, Crdit, Crditmax, Ville) Commandes(Nc, Datec, Codc) Lignes_Commandes(Nc, Codp, Qtec) Produits(Codp, libell, pu, Qtes, Couleur)

Prsentation & syntaxe


La commande INSERT est utilise pour ajouter des enregistrements ou des parties d'enregistrements dans des tables. INSERT INTO nom_de_la_table [champ1, champ2,...] VALUES ('valeur1','valeur2',...); Cette forme est utilise lorsqu'on veut insrer un seul enregistrement ou une partie d'un seul enregistrement. On crera un nouvel enregistrement dont le contenu du champ1 sera valeur1, le contenu du champ2 sera valeur2, etc... Exemples : a. Insrer le client Ali Ben Mohamed dont le code est 100, le crdit est 1200D, le crdit max est 2000D et qui habite Tunis. Insert into client values (100, Ben Mohamed, Ali, 1200, 2000, Tunis)

b. Insrer le client de code 101qui habite Tunis. Insert into client codc, ville values (101, Tunis)

Si des valeurs doivent tre insres dans tous les champs de l'enregistrement de la table, la liste des noms des champs n'a pas besoin d'tre explicitement indique dans la commande. Les valeurs des champs insrer doivent cependant apparatre dans le mme ordre que les noms des champs lors de la cration de la table, sans oublier un seul champ.

III.2. La commande UPDATE


La commande UPDATE est utilise pour changer des valeurs dans des champs d'une table. Sa syntaxe est : UPDATE table SET champ1 = nouvelle_valeur1, champ2 = nouvelle_valeur2, champ3 = nouvelle_valeur3 [WHERE condition]; La clause SET indique quels champs de la table vont tre mis jour et avec quelles valeurs ils vont l'tre. Les champs non spcifis aprs la clause SET ne seront pas modifis. Exemples : a. Modifier la quantit en stock du produit de code 5 qui devient de 98 units. UPDATE Produit SET Qtes = 98 Where codp = 5 ; b. Ajouter 100D aux crdits de tous les clients UPDATE Client SET credit = credit + 100; La commande UPDATE affecte tous les enregistrements qui rpondent la condition donne dans la clause WHERE. Si la clause WHERE est absente, tous les enregistrements de la table seront affects. Par exemple, si nous tapons : UPDATE produits SET pu = 1000;

Le prix unitaire de tous les produits de la table produit va tre modifi.

III.3. La commande DELETE


Pour supprimer des enregistrements d'une table, utilisez la commande DELETE. La syntaxe est la suivante : DELETE FROM table [WHERE condition]; On ne peut pas supprimer seulement le contenu de quelques champs des enregistrements. La commande DELETE supprime des enregistrements entiers, c'est pour cela qu'il n'est pas ncessaire d'indiquer ici des noms de champs. La condition spcifie aprs WHERE va dterminer quels sont les enregistrements supprimer. Exemple : c. Supprimer le client de code 101 . Delete From Client Where codc = 101 ;

Pour supprimer tous les enregistrements d'une table, n'indiquez pas de clause WHERE : DELETE FROM table; 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.

III.4. La commande SELECT

a) Requte de slection sur une table


Prsentation & Syntaxe : La commande SELECT est la commande la plus complexe de SQL. Cette commande va servir faire des requtes pour rcuprer des donnes dans les tables. Elle peut tre associe une des commandes de manipulation de tables vues avant pour spcifier une condition. La forme gnrale de linstruction SELECT : (Entre crochets : lignes facultatives)

SELECT [ALL/DISTINCT]A1, A2, , An

Attributs

conservs

dans

la

rponse

(projection sur les attributs A1,, An). FROM Table1, Table2, , Tablep [WHERE C1 and C2 and Cn] Tables concernes par la requte. Critres facultatifs de slection sur la valeur des occurrences des attributs. [ORDER BY Ai Sens] ; Critre facultatif de tri sur un des attributs de la rponse.

Critres de slection (cas simples) : < champ> <comprateur> <champ> < champ> <comprateur> valeur Critres de tri des rponses : ASC DESC Sens croisant Sens dcroissant

S'il y a plus d'un champ spcifi aprs SELECT, les champs doivent tre spars par des virgules. Les champs sont retourns dans l'ordre spcifi aprs la clause SELECT, et non pas dans l'ordre qu'ils ont t crs dans la table. Requte1: Donner la liste des NC et des dates de commandes.

Si on veut rcuprer tous les champs des enregistrements slectionns, la syntaxe est la suivante :

SELECT * FROM table;


Requte2: Donner la liste de toutes les informations sur les clients.

Lattribut DISTINCT :

Sert omettre dans les occurrences denregistrement de la rponse qui seraient en double. A loppos, lattribut ALL affiche toutes les rponses. Cest la valeur par dfaut lorsque lattribut nest pas spcifi. Requte3: Donner la liste des produits commands (Codp).

Les clauses SELECT et FROM doivent obligatoirement apparatre au dbut de chaque requte, on peut, ensuite, indiquer des critres de slection avec la clause WHERE : SELECT * FROM table WHERE condition; La clause WHERE :

Permet dintroduire une condition pour spcifier les lignes afficher. Requte4: Donner la liste des clients de Tunis (Codc et nom).

Les oprateurs de condition :

On peut utiliser les oprateurs suivants dans les conditions : =, , <, >, , Requte5: Donner la liste des commandes effectues par le client de code 8.(NC).

Requte6: Donner la ville o habite le client Ahmed .

Requte7: Donner la liste des commandes passes aprs le 04/01/2005.

Oprateurs logiques :

Il est possible de combiner plusieurs conditions avec des oprateurs logiques : L'oprateur AND runit deux ou plusieurs conditions et slectionne un enregistrement seulement si cet enregistrement satisfait TOUTES les conditions listes. (C'est--dire que toutes les conditions spares par AND sont vraies). L'oprateur OR runit deux conditions mais slectionne un enregistrement si UNE des conditions listes est satisfaite. Lutilisation des instructions IS NULL et IS NOT NULL : dtection occurrence dun attribut vide IS NULL

IS NOT NULL dtection occurrence dun attribut non vide Requte8: Donner la liste des clients dont on ne connat pas la ville o il habite.

Lutilisation des instructions BETWEEN, IN, NOT IN et LIKE : Ces instructions permettent de spcifier les conditions de recherche. Clauses IN et BETWEEN:

Pour slectionner des enregistrements dont la valeur d'un champ peut tre comprise dans une liste ou entre deux valeurs, on utilise les clauses IN et BETWEEN. Requte9: Donner la liste des commandes passes au cours de cette anne.

Requte10: Donner la liste des produits dont la quantit en stock est comprise entre 100 et 200 units.

IN vrifie si une valeur dun attribut correspond lune des celles spcifies dans la liste.

Pour slectionner les produits dont le prix n'est pas dans cet intervalle : De la mme faon, NOT IN slectionne les enregistrements exclus de la liste spcifie aprs IN. Requte11: Donner la liste des clients qui n habitent pas Tunis, Djerba ou sfax.

La clause LIKE :

La clause LIKE permet de faire des recherches approximatives sur le contenu d'un champ laide de caractres de remplacement. Le caractre % reprsente nimporte quel nombre de caractres. Le caractre _ reprsente un seul caractre quelconque

Requte12: Donner la liste des clients dont le nom commence par A.

Requte13: Donner la liste des clients dont le nom contient le mot hm.

Les fonctions d'ensemble :

SQL a cinq fonctions importantes : SUM, AVG, MAX, MIN et COUNT. On les appelle fonctions d'ensemble parce qu'elles rsument le rsultat d'une requte plutt que de renvoyer une liste d'enregistrements. Fonction SUM ( ) Signification Donne le total dun champ de tous les enregistrements

satisfaisant la condition de la requte. Le champ doit bien sur tre de type numrique. AVG ( ) Donne la moyenne dun champ de tous les enregistrements satisfaisant la condition de la requte. MAX ( ) Donne la valeur la plus leve dun champ de tous les enregistrements satisfaisant la condition de la requte. MIN ( ) Donne la valeur la plus petite dun champ de tous les enregistrements satisfaisant la condition de la requte. COUNT (*) Renvoie le nombre denregistrements satisfaisant la requte.

Syntaxe : SELECT fonction(Attribut) AS [Nom_chp_calcule] Requte14: Donner le nombre total des clients.

Requte15: Donner le nombre total des clients qui habitent tunis.

Requte15: Donner la moyenne des quantits commandes pour la commande n100.

Requte16: Donner le prix unitaire maximum, minimum, moyen, des produits.

Classement des donnes :

La clause ORDER BY : spcifie la liste dattributs sur lesquels laffichage doit tre tri (croissant ou dcroissant). Requte17: Donner la liste des commandes classes par date de commande.

Requte18: Classer par ordre dcroissant les prix unitaires des produits.

Regroupement denregistrements :

Effectuer les calculs sur des regroupements denregistrement, suivant un certain critre, plutt que sur lensemble des occurrences rsultat. Deux nouvelles clauses (facultatives) dans la requte SQL, placer entre la clause WHERE et la clause ORDER BY : [GROUP BY champ1, ..., champn] critres de groupement : Dfinition

des champs formant le groupement. Chaque agrgat sur lequel seffectuent les calculs

correspond lensemble des enregistrements prsentant les mmes occurrences du champs (champ1, ..., champn)

[HAVING

Condition]

critre de slection portant sur les regroupements et non pas sur les enregistrements isols.

Requte19: Donner le nombre des clients par ville.

Requte20: Donner le nombre des produits par commande.

Requte21: Donner le nombre des fois o chaque produit est command.

Requte22: Donner le nombre des produits par commande pour les commandes ayant plus que 10 produits.

Requte23: Donner le nombre des produits par commande pour les commandes ayant plus que 10 produits et dont la quantit commande est suprieure ou gale 150 units.

b) Requte de slection multitables : Les jointures


La jointure va nous permettre de slectionner des informations dans plusieurs tables grce aux relations existant entre ces tables. Il va nanmoins falloir indiquer comment se fait la relation entre ces tables. Notez que lorsqu'on utilise plusieurs tables, il faut faire attention que deux tables n'aient pas de champs ayant le mme nom, si c'est le cas, et pour les diffrencier, on utilise, comme dans l'exemple, la notation: table.nom_du_champ. Si on est sur que le nom ne se retrouvera pas dans plusieurs tables, on peut l'utiliser sans le prfixer avec le nom de la table. Requte24: Donner les noms des clients qui ont pass des commandes.

Requte25: Donner les noms des clients qui ont pass des commandes en 2005 concernant les produits dont le prix unitaire est suprieur 10.