Chapitre 7 :
SQL, le structuré
Langage de requête
Soid Quintero & Ervi Bongso
CS157B
Aperçu
Introduction
Commandes DDL
Commandes DML
Instructions SQL, Opérateurs, Clauses
Fonctions d'agrégation
Langage de requête structuré (SQL)
La langue standard ANSI pour la définition
et manipulation de bases de données relationnelles.
Inclut le langage de définition de données (DDL),
déclarations qui spécifient et modifient la base de données
schémas.
Comprend un langage de manipulation de données (DML),
déclarations qui manipulent le contenu de la base de données.
Quelques faits sur SQL
Les données SQL sont sensibles à la casse, les commandes SQL ne le sont pas.
La première version a été développée chez IBM par Donald D.
Chamberlin and Raymond F. Boyce. [SQL]
Développé en utilisant le papier du Dr E.F. Codd, « Un Relationnel
Modèle de données pour de grandes banques de données partagées.
La requête SQL comprend des références aux variables de tuples
et les attributs de ces variables
SQL : Commandes DDL
CRÉER UNE TABLE : utilisé pour créer une table.
ALTER TABLE : modifie une table après sa création.
SUPPRIMER TABLE : supprime une table d'une base de données.
SQL : CRÉER TABLE Énoncé
Les choses à considérer avant de créer votre table sont :
Le type de données
le nom de la table
quelles colonnes composeront la clé primaire
les noms des colonnes
Syntaxe de l'instruction CREATE TABLE :
CRÉER TABLE <nom de la table>
( champ1 type de données (NON NULL) ,
type de champ2 (NON NUL)
);
SQL : Types d'attributs
Tableau 7.6 p.164
SQL : Instruction ALTER TABLE
Pour ajouter ou supprimer des colonnes dans des tables existantes.
Syntaxe de la déclaration ALTER TABLE :
MODIFIER TABLE <nom de la table>
Ajouter le type de donnée attr;
ou
SUPPRIMER COLONNE attr;
SQL : SUPPRIMER TABLEInstruction
A deux options :
CASCADE : Spécifie que toute contrainte de clé étrangère
les violations causées par la suppression de la table vont
faire en sorte que les lignes correspondantes de la table associée
être supprimé.
RESTRICT : bloque la suppression de la table de tout
des violations de contrainte de clé étrangère seraient créées.
Syntaxe de l'instruction DROP TABLE :
SUPPRIMER TABLE <nom de la table> [RESTRICTION|CASCADE];
Exemple :
CRÉER TABLE FoodCart
(
date varchar(10) Chariot de nourriture
nourriture varchar(20)
date food profit
profit flottant
);
Chariot de nourriture
ALTER TABLE FoodCart ( date food profit sold
AJOUTER vendu int
);
Chariot de nourriture
MODIFIER TABLE FoodCart( date de vente des aliments
SUPPRIMER LA COLONNE profit
);
SUPPRIMER TABLE FoodCart;
SQL : Commandes DML
INSERT : ajoute de nouvelles lignes à une table.
MISE À JOUR : modifie un ou plusieurs attributs.
DELETE : supprime une ou plusieurs lignes d'une table.
SQL : Instruction INSERT
Pour insérer une ligne dans une table, il est nécessaire de
avoir une valeur pour chaque attribut, et un ordre
choses.
Syntaxe de l'instruction INSERT :
INSÉRER dans <nom de la table>
VALEURS('valeur1', 'valeur2', NULL);
Exemple :INSÉRER dans le panier alimentaire
VALEURS(„02/26/08', „pizza', 70 );
Chariot de nourriture nourriture de datte vendu
date vendu
nourriture 25/02/08 pizza 350
25/02/08 pizza 350 02/26/08 hotdog 500
02/26/08 hotdog 500 02/26/08 pizza 70
SQL : Instruction UPDATE
Pour mettre à jour le contenu du tableau :
Syntaxe de l'instruction UPDATE :
METTRE À JOUR<table name>RÉGLER<attr> = <value>
OÙ<condition de sélection>;
MISE À JOUR PanierDeNourriture SET vendu = 349
OÙ date = „25/02/08‟ ET nourriture = „pizza‟;
Chariot Alimentaire
aliments de dattes date de vente nourriture vendu
25/02/08 pizza 350 02/25/08 pizza 349
02/26/08 hotdog 500 02/26/08 hotdog 500
26/02/08 pizza 70 02/26/08 pizza 70
SQL : Déclaration DELETE
Pour supprimer des lignes de la table :
Syntaxe de l'instruction DELETE :
SUPPRIMER DE <nom de la table>
OÙ<condition>;
SUPPRIMER DE FoodCart
WHEREfood = „hotdog‟;
Chariot de nourriture
date nourriture date de vente nourriture vendu
02/25/08 pizza 349 25/02/08 pizza 349
02/26/08 hotdog 500 02/26/08 pizza 70
02/26/08 pizza 70
Remarque : Si la clause WHERE est omise, toutes les lignes de données sont supprimées de la table.
Instructions SQL, Opérations, Clauses
Instructions SQL :
Sélectionner
SQL Operations:
Rejoindre
Jointure à gauche
Jointure à droite
Aimer
Clauses SQL :
Trier par
Grouper par
Ayant
SQL : Sélectionnez une déclaration
Une instruction SELECT de base comprend 3 clauses
SÉLECTIONNER <nom d'attribut> À PARTIR DE <tables> OU <condition>
SÉLECTIONNER DE OÙ
Précise le Spécifie le Spécifie le
attributs qui sont tables qui servent condition de sélection,
partie de le comme entrée au y compris le joint
relation résultante déclaration condition.
Remarque : vous n'avez pas besoin d'utiliser WHERE
SQL :Sélectionner l'énoncé (suite)
Utiliser un "*" dans une instruction select indique que
chaque attribut de la table d'entrée doit être
selected.
Exemple : SÉLECTIONNER * DE…OÙ…;
Pour obtenir des lignes uniques, tapez le mot-clé
DISTINCT après SELECT.
EXAMPLERENDEZ DIVERSE * DE ...
OÙ …;
Example: 1)SÉLECTIONNER *
Personne DE la personne
Name Age Weight OÙ l'âge > 30;
Harry 34 80 Name Age Weight
Sally 28 64 Harry 34 80
George 29 70 Hélène 54 54
Hélène 54 54 Pierre 34 80
Pierre 34 80
2)SÉLECTIONNER le poids 3)SÉLECTIONNER poids distinct
DE la personne
DE personne
OÙ âge > 30; OÙ age > 30;
Poids Poids
80 80
54 54
80
SQL : opération de jointure
Une jointure peut être spécifiée dans la clause FROM
qui liste les deux relations d'entrée et le
CLAUSE WHERE qui liste la jointure
condition.
Exemple :
Emp Dépt
ID State Division ID
1000 CA 1001 TI
1001 MA 1002 Ventes
1002 TN 1003 Biotech
SQL:Joinoperation (cont.)
inner join =join
SÉLECTIONNER *
DEPTempjoinde (ou DEPTemp, emp)
[Link] = [Link];
[Link] [Link] [Link] [Link]
1001 MA 1001 TI
1002 TN 1002 Ventes
SQL : Opération de jointure (suite).
left outer join =left join
SÉLECTIONNER *
DE LA gauche de l'emploi joint au département
[Link] = [Link];
[Link] [Link] [Link] [Link]
1000 CA null null
1001 MA 1001 TI
1002 TN 1002 Ventes
SQL : Opération de jointure (suite)
right outer join =right join
SÉLECTIONNER *
DEde droit d'emprunt joindept
[Link] = [Link];
[Link] [Link] [Link] [Link]
1001 MA 1001 TI
1002 TN 1002 Ventes
null null 1003 Biotech
SQL: opération Like
Sélection par correspondance de motifs
% (chaîne arbitraire)
SÉLECTIONNER *
DEMempt
OÙJ'aime"%01";
trouve des identifiants qui se terminent par 01, par exemple 1001, 2001, etc.
_
SÉLECTIONNER *
DEEmploi
OÙJ'aimerais„_01_‟;
trouve l'ID qui a le deuxième et le troisième caractère
comme 01, par exemple 1010, 1011, 1012, 1013, etc
SQL : La clause ORDER BY
Sélection de résultats ordonnée
desc (ordre décroissant)
SÉLECTIONNER *
DEMP
commande par état desc
met l'état par ordre décroissant, par exemple TN, MA, CA
asc (ordre croissant)
SÉLECTIONNER *
DEmem
trier par id asc
met les ID par ordre croissant, par exemple 1001, 1002, 1003
SQL : La clause GROUP BY
La fonction pour diviser les tuples en groupes et
renvoie un agrégat pour chaque groupe.
En général, c'est le compagnon d'une fonction agrégate.
SELECTfood, sum(sold)astotalSold
DELaChariotDeNourriture
groupe par nourriture;
Chariot de nourriture
date de vente des alimentsfood totalSold
25/02/08 pizza 349 hotdog 500
26/02/08 hot-dog 500 pizza 419
02/26/08 pizza 70
SQL : La clause HAVING
Le substitut de WHERE pour les fonctions d'agrégation
En général, c'est un compagnon de fonction d'agrégation.
SÉLECTIONNER nourriture, somme(vendu) comme totalVendu
DELAremorqueÀNourriture
groupe par nourriture
havingsum(sold) > 450;
Chariot de nourriture
date de vente de la nourriture
food totalSold
02/25/08 pizza 349 hot-dog 500
26/02/08 hot-dog 500
26/02/08 pizza 70
SQL : Fonctions d'agrégation
Sont utilisés pour fournir des informations de résumé pour
Instructions SQL, qui retournent une seule valeur.
NOMBRE(attr)
SOMME(attr)
MAX(attr)
MIN(attr)
AVG(attr)
Remarque : lors de l'utilisation des fonctions d'agrégation, les valeurs NULL
ne sont pas considérés, sauf dans COUNT(*) .
SQL : Fonctions d'agrégation (suite)
Chariot de nourriture
date de vente des aliments
25/02/08 pizza 349
26/02/08 hot-dog 500
26/02/08 pizza 70
COUNT(attr) -> retourne le nombre de lignes qui ne sont pas nulles
Ex:COUNT(distinctfood) fromFoodCart; -> 2
SUM(attr) -> renvoie la somme des valeurs dans l'attribut
Ex:SUM(vendu) deFoodCart; -> 919
MAX(attr) -> retourne la valeur la plus élevée de l'attribut attr
Ex:MAX(sold) fromFoodCart; -> 500
SQL : Fonctions d'agrégation (suite)
Chariot de nourriture
date food sold
25/02/08 pizza 349
26/02/08 hot-dog 500
26/02/08 pizza 70
MIN(attr) -> renvoie la valeur la plus basse de l'attrib
Ex:MIN(vente) depuisFoodCart; -> 70
AVG(attr) -> retourne la valeur moyenne de l'attribut
Ex:AVG(sold) fromFoodCart; -> 306,33
Remarque : la valeur est arrondie à la précision du type de données
Références
Riccardi, Greg. Principes des systèmes de base de données avec des applications Internet et Java.
Addison Wesley, 2001.
Ronald R. Plew, Ryan K. Stephens. Teach Yourself SQL in 24 Hours 3rd Edition.
Sams Publishing, 2003.
SQL[Link]
W3C[Link]
Wikipédia - SQL[Link]
Wikipedia - rejoindre[Link]