Le langage SQL.

Slides:



Advertisements
Présentations similaires
Initiation au langage S.Q.L.*
Advertisements

Bases de Données Avancées: Bases de Données Relationnelles
Benoît Piranda Équipe SISAR Université de Marne La Vallée Bases de données Algèbre relationnelle, opérations Requêtes SQL.
Rappels. Les Systèmes de Gestion de Bases de Données (SGBD) L'algèbre relationnelle.
Bases de données : modèlisation et SGBD
Algèbre relationnelle
Bases de données orientées-objets
Optimisation de Requêtes
LE MODELE RELATIONNEL INVENTE PAR T. CODD (IBM SAN-JOSE)
Programme Introduction aux BD et aux SGBD Le modèle relationnel
Programme Introduction aux BD et aux SGBD Le modèle relationnel
Année universitaire Système dinformation Le SQL (Structured Query Language) langage dinterrogation dune base de données.
LE LANGAGE SQL : LDD La création de tables L’ordre CREATE CREATE TABLE nom_de_table (Nom_colonne Type_colonne, Nom_colonne Type_colonne,
LMD: Langage de Manipulation de Données
Contrôles d'accès aux données
Eléments d ’algèbre relationnelle
Rappel sur les bases de données et le vocabulaire
BASE DE DONNEES RELATIONNELLES
LE LANGAGE SQL Langage de manipulation de données (LMD)
Les bases de données Cours assuré par: Mlle Smii imen
Bases de données et SGBD relationnels
SELECT {* | Expression [Alias] [,...] } FROM Table [WHERE Condition] [ORDER BY { Expression | Alias } [ ASC | DESC ] [NULLS FIRST | NULLS LAST ] [,...]
L’utilisation des bases de données
Algèbre relationnelle et SQL
SQL Partie 3 : (LID : Langage d'interrogation de données)
Cours N°2 Base de Données & Langage SQL
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL PHILIPPE BANCQUART.
BASE DE DONNEES RELATIONNELLES
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
Cours de Base de Données & Langage SQL
Cours N°2 Base de Données & Langage SQL
Inventé par T. Codd (IBM Recherche)
Manipulation des données Requêtes simples
Initiation aux bases de données et à la programmation événementielle
Initiation aux bases de données et à la programmation événementielle
Michel Tollenaere SQL et relationnel 1 Cours MSI-2A filière ICL version 1.1 du 2 novembre 2010 Cours de Management des Systèmes dInformation
Michel Tollenaere SQL et relationnel ENSGI Cours MSI 2A Relationnel et SQL version 1.4 du 25 septembre 2007 (ajout jointures) 1 Modèle relationnel Historique.
Limiter et trier des données
Introduction Le SQL (Structured  Query Language) est un langage universel de gestion des bases de données. Il a une triple fonction : LDD Langage de Définition.
Cours 4b: Introduction au SQL, le langage des SGBD Relationnels
Chapitre 5 : Le langage SQL
SQL Partie 1.
Le langage SQL LDD : Langage de Définition de Données
01. Liste des noms de candidats avec leur date de naissance.
SIO SLAM1: Exploitation d’un schéma de données
Traduction des opérations sous MySQL
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
1 PHP 5 Notions fondamentales (cours #5) Formation continue – Cégep de Sainte-Foy.
Sélection de colonnes (la projection)
1 Initiation aux bases de données et à la programmation événementielle Responsable : Souheib BAARIR. (le sujet de votre .
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
Copyright  Oracle Corporation, Tous droits réservés. 2 Sélection et Tri des Lignes Retournées par un SELECT.
Structured Query Language 1/34. SQL Types de données Langage de Définition de Données (LDD) Langage de Manipulation de Données (LDM) Langage de Contrôle.
Séance /10/2004 SGBD - Approches & Principes.
Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage d’interrogation de données. (Les requêtes statistiques et autres).
NIVEAU LOGIQUE Vues. Fenêtre dynamique sur la base Ses données proviennent d'autres tables ou d'autres vues.
Op é rateurs ensemblistes Module 4. 2 La clause GROUP BY La clause GROUP BY est nécessaire dès que l'on utilise des fonctions de calculs statistiques.
Le Langage d ’ Interrogation des donn é es (LID) Module 2.
Bases de données – Cours 3
CONCEPTS BD - Synthèse journée 1 :
Modélisation et utilisation Aurélien Marion1 Aurélien Marion
De Arnault Chazareix :
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
1 Les bases de données Séance 6 L ’extraction de données Le SELECT.
Langage de manipulation de données (LMD)
SQL LID – INTERROGATIN DES DONNEES
Manipulation D’Une Base De Données
Transcription de la présentation:

Le langage SQL

Le langage SQL SQL (Structured Query Langage ou langage de requête structuré) : pseudo-langage informatique destiné à interroger ou à manipuler les bases de données relationnelles historique :  mis au point par Codd (SEQUEL  SQL)  normalisation par l’ANSI en 1986 et par l’ISO en 1987  SQL2 en 1992, SQL3 en 1999 caractéristiques générales :  manipulation de relations (tables) Les modèles de données (ou modèles de BD) décrivent la manière dont l’information est structurée dans une BD. Ils permettent de traduire l’information vers une représentation utilisable en informatique. L’évolution de ces modèles a suivie les avancées de l’informatique. Dans la première génération de modèles, le modèle hiérarchique où les données sont représentées sous forme d’un arbre, et le modèle réseau, où les données sont représentées sous forme d’un graphe quelconque, il existe un lien très fort entre le niveau logique et le niveau physique, ce qui présente certains inconvénients La séparation de ce deux niveaux est arrivée avec le modèle de 2ème génération, le modèle relationnel dans lequel les données sont représentées sous forme de tables. Dans les années 80 après le développement des langages orientés objets, sont apparus les modèles de 3ème génération : le modèle objet où les données sont représentées sous forme d’objets et le modèle relationnel-objet hybride entre le modèle objet et le modèle relationnel. Malgré leur apparition, le modèle relationnel reste celui qui le plus utilisé aujourd’hui. C’est donc celui que nous verrons (reverrons en fait).  langage « non procédural » ou « déclaratif »  possibilité d’intégration dans des langages comme VB ou Java  aucun SGBD ne couvre toute la norme  interface SQL dans la majorité des SGBD (phpMyAdmin pour MySQL)

Principe général du langage SQL requête : ensemble d’instructions SQL (toujours terminé par « ; » ) contient :  un langage de définition des données (LDD ou en anglais DDL Data Definition Language) : création, modification ou suppression de tables  un langage de manipulation des données (LMD ou en anglais DML Data Manipulation Language) : insertion, modification, suppression de données dans une table + interrogation des tables  un langage de contrôle des données (LCD ou en anglais DCL Data Control Language) : définition des privilèges afférents aux utilisateurs Les modèles de données (ou modèles de BD) décrivent la manière dont l’information est structurée dans une BD. Ils permettent de traduire l’information vers une représentation utilisable en informatique. L’évolution de ces modèles a suivie les avancées de l’informatique. Dans la première génération de modèles, le modèle hiérarchique où les données sont représentées sous forme d’un arbre, et le modèle réseau, où les données sont représentées sous forme d’un graphe quelconque, il existe un lien très fort entre le niveau logique et le niveau physique, ce qui présente certains inconvénients La séparation de ce deux niveaux est arrivée avec le modèle de 2ème génération, le modèle relationnel dans lequel les données sont représentées sous forme de tables. Dans les années 80 après le développement des langages orientés objets, sont apparus les modèles de 3ème génération : le modèle objet où les données sont représentées sous forme d’objets et le modèle relationnel-objet hybride entre le modèle objet et le modèle relationnel. Malgré leur apparition, le modèle relationnel reste celui qui le plus utilisé aujourd’hui. C’est donc celui que nous verrons (reverrons en fait).  un langage de contrôle des transactions (LCT ou en anglais TCL Transaction Control Language) : gestion des transactions (mécanismes assurant la cohérence et la stabilité de la base quoi qu’il arrive)

Le langage SQL : les requêtes Les requêtes monotabulaires  La projection  La sélection/restriction  Opérateurs, expressions et fonctions non typés  Fonctions statistiques et groupage - Fonctions statistiques - Groupage - Filtrage des agrégats  Tri du résultat d’une requête Les requêtes multitabulaires  La notation pointée  Le produit cartésien  La jointure interne

Le langage SQL : les requêtes Les requêtes monotabulaires  La projection  La sélection/restriction  Opérateurs, expressions et fonctions non typés  Fonctions statistiques et groupage - Fonctions statistiques - Groupage - Filtrage des agrégats  Tri du résultat d’une requête Les requêtes multitabulaires  La notation pointée  Le produit cartésien  La jointure interne

Base de données utilisée en exemple Voiture (NumVoit, Marque, Style, Couleur) NumVoit Marque Style Couleur 1 Peugeot 404 Rouge 2 Citroen SM Noire 3 Opel GT Blanche 4 Peugeot 403 Blanche 5 Renault Alpine A310 Rose 6 Renault Floride Bleue Personne (NumAch, Nom, Age, Ville, Sexe) NumAch Nom Age Ville Sexe 1 Nestor 96 Paris M 2 Irma 20 Lille F 3 Henri 45 Paris M 4 Josette 34 Lyon F 5 Jacques 50 Bordeaux M Vente (DateVente, Prix, NumVoit, NumAch) DateVente Prix NumVoit NumAch 1985-12-03 10 000 1 1 1996-03-30 70 000 2 4 1998-06-14 30 000 4 1 2000-04-02 45 000 5 2

Projection entrée : une relation sortie : une nouvelle relation ayant une partie des attributs de la relation initiale et regroupant tous les enregistrements de la relation initiale  extraction de certaines colonnes de la table  diminution du degré de la relation notation : A(R)  projection des attributs A de la relation R SELECT liste_des_colonnes_séparées_par_des_virgules FROM nom_de_la_table

Projection possibilité de sélectionner toutes les colonnes : SELECT * exemple : Nom Ville Nestor Paris SELECT Nom, Ville FROM Personne; Irma Lille Henri Paris Josette Lyon Jacques Bordeaux possibilité de sélectionner toutes les colonnes : SELECT *  affichage de la table exemple : NumAch Nom Age Ville Sexe SELECT * FROM Personne; 1 Nestor 96 Paris M 2 Irma 20 Lille F 3 Henri 45 Paris M 4 Josette 34 Lyon F 5 Jacques 50 Bordeaux M

Projection possibilité de renommer les colonnes : [AS] ([ ]  optionnel) exemple : City SELECT Ville AS City FROM Personne; Paris Lille Paris Lyon Bordeaux possibilité d’éliminer les doublons d’une colonne : DISTINCT exemple : Marque SELECT DISTINCT Marque FROM Voiture; Citroen Opel Peugeot Renault

Projection possibilité de créer une colonne : utilisation possible de constantes, d’expressions utilisant des opérateurs algébriques ou des fonctions opérateurs algébriques : + Addiction - Soustraction * Multiplication / Division % Modulo exemple : SELECT Prix, DateVente, (Prix / 6.55957) AS Prix_Euros FROM Vente; Prix DateVente Prix_Euros 10 000 1985-12-03 1 524.4902 70 000 1996-03-30 10 671.4312 30 000 1998-06-14 4 573.4705 45 000 2000-04-02 6 860.2058

Sélection (ou restriction) entrée : une relation sortie : une nouvelle relation ayant tous les attributs de la relation initiale et regroupant uniquement les enregistrements de la relation initiale satisfaisant certains critères  extraction de certaines lignes de la table  diminution de la cardinalité de la relation notation : C(R)  sélection des enregistrement de la relation R satisfaisant aux critères C WHERE expressions_de_conditions

Sélection (ou restriction) pour construire les expressions de conditions, utilisation d’opérateurs, d’expressions et de fonctions de différents types :  non typés  spécifiques des chaînes de caractères  spécifiques des nombres  spécifiques des valeurs temporelles  spécifiques des valeurs binaires  fonctions « système »

Opérateurs, expressions et fonctions non typés opérateurs de comparaison : = Egal < > Différent < Inférieur > Supérieur <= Inférieur ou égal >= Supérieur ou égal exemple : SELECT * FROM Vente WHERE Prix > 50000; DateVente Prix NumVoit NumAch 1996-03-30 70 000 2 4

Opérateurs, expressions et fonctions non typés remarque : pour les chaînes de caractères, utiliser l’opérateur LIKE s LIKE m Compare la chaîne de caractères s avec le motif m jokers du motif m : %  zéro, un ou plusieurs caractères _  un et un seul caractère exemples : SELECT * FROM Voiture WHERE Couleur LIKE ‘Rouge’; NumVoit Marque Style Couleur 1 Peugeot 404 Rouge NumAch Nom Age Ville Sexe SELECT * FROM Personne WHERE Nom LIKE ‘%e%’; 1 Nestor 96 Paris M 3 Henri 45 Paris M 4 Josette 34 Lyon F 5 Jacques 50 Bordeaux M

Opérateurs, expressions et fonctions non typés opérateurs permettant de constituer des expressions SQL : BETWEEN <valeur> AND <valeur> Appartient à l’intervalle IN <liste de valeurs > Appartient à l’ensemble de valeurs IS NULL Teste si la colonne n’est pas renseignée exemples : SELECT * FROM Personne WHERE Age BETWEEN 40 AND 60; NumAch Nom Age Ville Sexe 3 Henri 45 Paris M 5 Jacques 50 Bordeaux M SELECT * FROM Voiture WHERE Couleur IN (‘Blanc’, ‘Rouge’); NumVoit Marque Style Couleur 1 Peugeot 404 Rouge

Opérateurs, expressions et fonctions non typés connecteurs logiques et opérateur de négation: AND Et : les deux conditions sont vraies simultanément OR Ou : l’une de deux conditions est vraie NOT Inversion de la condition exemples : NumVoit Marque Style Couleur 1 Peugeot 404 Rouge SELECT * FROM Voiture WHERE Couleur = ‘Blanche’ OR Marque = ‘Peugeot’; 3 Opel GT Blanche 4 Peugeot 403 Blanche SELECT * FROM Personne WHERE NOT Ville = ‘Paris’; NumAch Nom Age Ville Sexe 2 Irma 20 Lille F 4 Josette 34 Lyon F 5 Jacques 50 Bordeaux M

Opérateurs, expressions et fonctions non typés Personne (NumAch, Nom, Age, Ville, Sexe) NumAch Nom Age Ville Sexe 1 Nestor 96 Paris M 2 Irma 20 Lille F 3 Henri 45 Paris M 4 Josette 34 Lyon F 5 Jacques 50 Bordeaux M exemples : SELECT Nom, Sexe FROM Personne WHERE Ville LIKE ‘Paris’; Nom Sexe Nestor M Henri M SELECT NumAch, Nom, Age FROM Personne WHERE (Age BETWEEN 30 AND 50) AND Sexe LIKE ‘F’; NumAch Nom Age 4 Josette 34

Fonctions statistiques et groupage : fonctions statistiques objectif : effectuer des calculs statistiques sur toutes les valeurs d’une colonne d’une table quelques fonctions statistiques de SQL : COUNT Comptage du nombre d’éléments MAX Maximum des éléments d’une colonne MIN Minimum des éléments d’une colonne AVG Moyenne des éléments d’une colonne SUM Somme des éléments d’une colonne remarque : COUNT(*) compte le nombre de lignes de la table

Fonctions statistiques et groupage : fonctions statistiques exemples : SELECT AVG(Prix) AS Prix_Moyen FROM Vente; Prix_Moyen 38 750.0000 SELECT COUNT(*) AS Nombre_Personnes FROM Personne; Nombre_Personnes 5

Fonctions statistiques et groupage : le groupage objectif : regrouper les lignes d’une table par valeurs contenues dans une colonne GROUP BY nom_de_la_colonne_où_s’effectue_l’agrégat exemple : Marque SELECT Marque FROM Voiture GROUP BY Marque; Citroen Opel Peugeot Renault

Fonctions statistiques et groupage : le groupage utilisation courante de GROUP BY: appliquer en une seule instruction des fonctions statistiques aux différents sous-ensembles d’une table constitués par GROUP BY exemples : SELECT Marque, COUNT(*) AS Compte FROM Voiture GROUP BY Marque; Marque Compte Citroen 1 Opel 1 Peugeot 2 Renault 2 Ville Age_Moyen SELECT Ville, AVG (Age) AS Age_Moyen FROM Personne GROUP BY Ville; Bordeaux 50.0000 Lille 20.0000 Lyon 34.0000 Paris 70.5000

Fonctions statistiques et groupage : filtrage des agrégats objectif : filtrage du résultat des fonctions statistiques appliquées aux sous-ensembles définis par le groupage HAVING expressions_de_conditions exemple : SELECT Marque, COUNT(*) AS Compte FROM Voiture GROUP BY Marque HAVING COUNT(*) > 1; Marque Compte Peugeot 2 Renault 2

Fonctions statistiques et groupage : filtrage des agrégats  remarque : HAVING permet d’effectuer une sélection sur le résultat de l’opération de groupage, i.e. après le groupage  le mot clé WHERE opère une sélection sur les éléments de la table avant l’opération de groupage exemple : SELECT Marque, COUNT(*) AS Compte FROM Voiture WHERE NOT (Couleur = ‘Rouge’) GROUP BY Marque; Marque Compte Citroen 1 Opel 1 Peugeot 1 Renault 2

Fonctions statistiques et groupage : filtrage des agrégats  remarque : HAVING permet d’effectuer une sélection sur le résultat de l’opération de groupage, i.e. après le groupage  le mot clé WHERE opère une sélection sur les éléments de la table avant l’opération de groupage exemple : SELECT Marque, COUNT(*) AS Compte FROM Voiture WHERE NOT (Couleur = ‘Rouge’) GROUP BY Marque HAVING COUNT(*) > 1; Marque Compte Renault 2

Tri du résultat d’une requête objectif : trier le résultat d’une requête selon une ou plusieurs colonnes ORDER BY liste_des_colonnes_séparées_par_des_virgules possibilité de préciser l’ordre du tri : ASC (croissant par défaut) ou DESC (décroissant)

Tri du résultat d’une requête exemples : Prix DateVente SELECT Prix, DateVente FROM Vente ORDER BY Prix DESC; 70 000 1996-03-30 45 000 2000-04-02 30 000 1998-06-14 10 000 1985-12-03 Nom Age Ville SELECT Nom, Age, Ville FROM Personne ORDER BY Ville, Age; Jacques 50 Bordeaux Irma 20 Lille Josette 34 Lyon Henri 45 Paris Nestor 96 Paris

Le langage SQL : les requêtes Les requêtes monotabulaires  La projection  La sélection/restriction  Opérateurs, expressions et fonctions non typés  Fonctions statistiques et groupage - Fonctions statistiques - Groupage - Filtrage des agrégats  Tri du résultat d’une requête Les requêtes multitabulaires  La notation pointée  Le produit cartésien  La jointure interne

Le langage SQL : les requêtes Les requêtes monotabulaires  La projection  La sélection/restriction  Opérateurs, expressions et fonctions non typés  Fonctions statistiques et groupage - Fonctions statistiques - Groupage - Filtrage des agrégats  Tri du résultat d’une requête Les requêtes multitabulaires  La notation pointée  Le produit cartésien  La jointure interne

Base de données utilisée en exemple Voiture (NumVoit, Marque, Style, Couleur) NumVoit Marque Style Couleur 1 Peugeot 404 Rouge 2 Citroen SM Noire 3 Opel GT Blanche 4 Peugeot 403 Blanche 5 Renault Alpine A310 Rose 6 Renault Floride Bleue Personne (NumAch, Nom, Age, Ville, Sexe) NumAch Nom Age Ville Sexe 1 Nestor 96 Paris M 2 Irma 20 Lille F 3 Henri 45 Paris M 4 Josette 34 Lyon F 5 Jacques 50 Bordeaux M Vente (DateVente, Prix, NumVoit, NumAch) DateVente Prix NumVoit NumAch 1985-12-03 10 000 1 1 1996-03-30 70 000 2 4 1998-06-14 30 000 4 1 2000-04-02 45 000 5 2

La notation pointée objectif : distinguer les tables dont on manipule les colonnes  remarque : cette notation est aussi utilisable avec une seule table remarque : cette notation peut devenir fastidieuse  alias de la table FROM nom_de_la_table AS alias_de_la_table exemples : Marque Couleur Peugeot Rouge SELECT Voiture.Marque, Voiture.Couleur FROM Voiture; Citroen Noire Opel Blanche Peugeot Blanche Renault Rose Renault Bleue Marque Couleur Peugeot Rouge SELECT Vo.Marque, Vo.Couleur FROM Voiture AS Vo; Citroen Noire Opel Blanche Peugeot Blanche Renault Rose Renault Bleue

Le produit cartésien entrée : deux relations ayant des attributs quelconques sortie : une nouvelle relation ayant tous les attributs de la première relation et tous les attributs de la seconde relation et regroupant toutes les possibilités de combinaison des enregistrements des deux relations notation :  SELECT * FROM table_1, table_2

Le produit cartésien exemple : Vente (DateVente, Prix, NumVoit, NumAch) Personne (NumAch, Nom, Age, Ville, Sexe) DateVente Prix NumVoit NumAch NumAch Nom Age Ville Sexe 1985-12-03 10 000 1 1 1 Nestor 96 Paris M 1996-03-30 70 000 2 4 2 Irma 20 Lille F 1998-06-14 30 000 4 1 3 Henri 45 Paris M 2000-04-02 45 000 5 2 4 Josette 34 Lyon F 5 Jacques 50 Bordeaux M

Le produit cartésien exemple : SELECT * From Vente, Personne DateVente Prix NumVoit Vente.NumAch Personne.NumAch Nom Age Ville Sexe 1985-12-03 10 000 1 1 1 Nestor 96 Paris M 1996-03-30 70 000 2 4 1 Nestor 96 Paris M 1998-06-14 30 000 4 1 1 Nestor 96 Paris M 2000-04-02 45 000 5 2 1 Nestor 96 Paris M 1985-12-03 10 000 1 1 2 Irma 20 Lille F 1996-03-30 70 000 2 4 2 Irma 20 Lille F 1998-06-14 30 000 4 1 2 Irma 20 Lille F 2000-04-02 45 000 5 2 2 Irma 20 Lille F 1985-12-03 10 000 1 1 3 Henri 45 Paris M 1996-03-30 70 000 2 4 3 Henri 45 Paris M 1998-06-14 30 000 4 1 3 Henri 45 Paris M 2000-04-02 45 000 5 2 3 Henri 45 Paris M 1985-12-03 10 000 1 1 4 Josette 34 Lyon F 1996-03-30 70 000 2 4 4 Josette 34 Lyon F 1998-06-14 30 000 4 1 4 Josette 34 Lyon F 2000-04-02 45 000 5 2 4 Josette 34 Lyon F 1985-12-03 10 000 1 1 5 Jacques 50 Bordeaux M 1996-03-30 70 000 2 4 5 Jacques 50 Bordeaux M 1998-06-14 30 000 4 1 5 Jacques 50 Bordeaux M 2000-04-02 45 000 5 2 5 Jacques 50 Bordeaux M

La jointure interne entrée : deux relations R1 et R2 ayant au plus un attribut commun (A) sortie : une nouvelle relation ayant tous les attributs des deux relations et regroupant uniquement toutes les possibilités de combinaison des enregistrements des relations R1 et R2 pour lesquels il y a égalité entre l’attribut A (ou A1) de la relation R1 et l’attribut A (ou A2) de la relation R2 produit cartésien des deux relations puis sélection des enregistrements dont les contenus des attributs sur lesquels on fait la jointure sont égaux notation : R1A1 A2R2  A1=A2(R1R2) FROM table_1 INNER JOIN table_2 ON table_1.attributA1 = table_2.attributA2 FROM table_1, table_2 WHERE table_1.attributA1 = table_2.attributA2

La jointure interne exemple : Vente (DateVente, Prix, NumVoit, NumAch) Personne (NumAch, Nom, Age, Ville, Sexe) DateVente Prix NumVoit NumAch NumAch Nom Age Ville Sexe 1985-12-03 10 000 1 1 1 Nestor 96 Paris M 1996-03-30 70 000 2 4 2 Irma 20 Lille F 1998-06-14 30 000 4 1 3 Henri 45 Paris M 2000-04-02 45 000 5 2 4 Josette 34 Lyon F 5 Jacques 50 Bordeaux M

La jointure interne exemple : Vente x Personne DateVente Prix NumVoit Vente.NumAch Personne.NumAch Nom Age Ville Sexe 1985-12-03 10 000 1 1 1 Nestor 96 Paris M 1996-03-30 70 000 2 4 1 Nestor 96 Paris M 1998-06-14 30 000 4 1 1 Nestor 96 Paris M 2000-04-02 45 000 5 2 1 Nestor 96 Paris M 1985-12-03 10 000 1 1 2 Irma 20 Lille F 1996-03-30 70 000 2 4 2 Irma 20 Lille F 1998-06-14 30 000 4 1 2 Irma 20 Lille F 2000-04-02 45 000 5 2 2 Irma 20 Lille F 1985-12-03 10 000 1 1 3 Henri 45 Paris M 1996-03-30 70 000 2 4 3 Henri 45 Paris M 1998-06-14 30 000 4 1 3 Henri 45 Paris M 2000-04-02 45 000 5 2 3 Henri 45 Paris M 1985-12-03 10 000 1 1 4 Josette 34 Lyon F 1996-03-30 70 000 2 4 4 Josette 34 Lyon F 1998-06-14 30 000 4 1 4 Josette 34 Lyon F 2000-04-02 45 000 5 2 4 Josette 34 Lyon F 1985-12-03 10 000 1 1 5 Jacques 50 Bordeaux M 1996-03-30 70 000 2 4 5 Jacques 50 Bordeaux M 1998-06-14 30 000 4 1 5 Jacques 50 Bordeaux M 2000-04-02 45 000 5 2 5 Jacques 50 Bordeaux M

La jointure interne exemple : NumAch=NumAch(VentePersonne) DateVente Prix NumVoit Vente.NumAch Personne.NumAch Nom Age Ville Sexe 1985-12-03 10 000 1 1 1 Nestor 96 Paris M 1996-03-30 70 000 2 4 1 Nestor 96 Paris M 1998-06-14 30 000 4 1 1 Nestor 96 Paris M 2000-04-02 45 000 5 2 1 Nestor 96 Paris M 1985-12-03 10 000 1 1 2 Irma 20 Lille F 1996-03-30 70 000 2 4 2 Irma 20 Lille F 1998-06-14 30 000 4 1 2 Irma 20 Lille F 2000-04-02 45 000 5 2 2 Irma 20 Lille F 1985-12-03 10 000 1 1 3 Henri 45 Paris M 1996-03-30 70 000 2 4 3 Henri 45 Paris M 1998-06-14 30 000 4 1 3 Henri 45 Paris M 2000-04-02 45 000 5 2 3 Henri 45 Paris M 1985-12-03 10 000 1 1 4 Josette 34 Lyon F 1996-03-30 70 000 2 4 4 Josette 34 Lyon F 1998-06-14 30 000 4 1 4 Josette 34 Lyon F 2000-04-02 45 000 5 2 4 Josette 34 Lyon F 1985-12-03 10 000 1 1 5 Jacques 50 Bordeaux M 1996-03-30 70 000 2 4 5 Jacques 50 Bordeaux M 1998-06-14 30 000 4 1 5 Jacques 50 Bordeaux M 2000-04-02 45 000 5 2 5 Jacques 50 Bordeaux M

La jointure interne exemple : NumAch=NumAch(VentePersonne) DateVente Prix NumVoit Vente.NumAch Personne.NumAch Nom Age Ville Sexe 1985-12-03 10 000 1 1 1 Nestor 96 Paris M 1998-06-14 30 000 4 1 1 Nestor 96 Paris M 2000-04-02 45 000 5 2 2 Irma 20 Lille F 1996-03-30 70 000 2 4 4 Josette 34 Lyon F NumAch=NumAch(VentePersonne)  VenteNumAch NumAchPersonne

La jointure interne exemple : NumAch=NumAch(VentePersonne) SELECT * DateVente Prix NumVoit Vente.NumAch Personne.NumAch Nom Age Ville Sexe 1985-12-03 10 000 1 1 1 Nestor 96 Paris M 1998-06-14 30 000 4 1 1 Nestor 96 Paris M 2000-04-02 45 000 5 2 2 Irma 20 Lille F 1996-03-30 70 000 2 4 4 Josette 34 Lyon F SELECT * FROM Vente, Personne WHERE Vente.NumAch = Personne.NumAch; SELECT * FROM Vente INNER JOIN Personne ON Vente.NumAch = Personne.NumAch;

La jointure interne exemple : NumAch=NumAch(PersonneVente) SELECT * Personne.NumAch Nom Age Ville Sexe DateVente Prix NumVoit Vente.NumAch 1 Nestor 96 Paris M 1985-12-03 10 000 1 1 1 Nestor 96 Paris M 1998-06-14 30 000 4 1 2 Irma 20 Lille F 2000-04-02 45 000 5 2 4 Josette 34 Lyon F 1996-03-30 70 000 2 4 SELECT * FROM Personne, Vente WHERE Vente.NumAch =Personne.NumAch; SELECT * FROM Personne INNER JOIN Vente ON Vente.NumAch =Personne.NumAch;

La jointure interne Pour les personnes ayant acheté une voiture, donnez leur nom, le nom de leur ville d’origine, la date de l’achat et le prix de cet achat. Nom Ville DateVente Prix Nestor Paris 1985-12-03 10 000 Nestor Paris 1998-06-14 30 000 Irma Lille 2000-04-02 45 000 Josette Lyon 1996-03-30 70 000 SELECT Personne.Nom, Personne.Ville, Vente.DateVente, Vente.Prix FROM Vente, Personne WHERE Vente.NumAch = Personne.NumAch; SELECT Personne.Nom, Personne.Ville, Vente.DateVente, Vente.Prix FROM Vente INNER JOIN Personne ON Vente.NumAch = Personne.NumAch;

La jointure interne Pour les personnes ayant acheté une voiture et vivant à Paris, donnez leur nom, la date de l’achat et le prix de cet achat. Nom DateVente Prix Nestor 1985-12-03 10 000 Nestor 1998-06-14 30 000 SELECT Personne.Nom, Vente.DateVente, Vente.prix FROM Vente, Personne WHERE Vente.NumAch = Personne.NumAch AND Personne.Ville = ‘Paris’; SELECT Personne.Nom, Vente.DateVente, Vente.Prix FROM Vente INNER JOIN Personne ON Vente.NumAch = Personne.NumAch WHERE Ville = ‘Paris’;

La jointure interne Personne (NumAch, Nom, Age, Ville, Sexe) Voiture (NumVoit, Marque, Style, Couleur) NumAch Nom Age Ville Sexe 1 Nestor 96 Paris M NumVoit Marque Style Couleur 2 Irma 20 Lille F 1 Peugeot 404 Rouge 3 Henri 45 Paris M 2 Citroen SM Noire 4 Josette 34 Lyon F 3 Opel GT Blanche 5 Jacques 50 Bordeaux M 4 Peugeot 403 Blanche 5 Renault Alpine A310 Rose Vente (DateVente, Prix, NumVoit, NumAch) 6 Renault Floride Bleue DateVente Prix NumVoit NumAch 1985-12-03 10 000 1 1 1996-03-30 70 000 2 4 1998-06-14 30 000 4 1 2000-04-02 45 000 5 2 Donnez le nom des personnes ayant acheté une voiture et le style de la voiture achetée. SELECT Personne.Nom, Voiture.Style FROM Personne, Vente, Voiture WHERE Personne.NumAch = Vente.NumAch AND Vente.NumVoit = Voiture.NumVoit;

La jointure interne Personne (NumAch, Nom, Age, Ville, Sexe) Voiture (NumVoit, Marque, Style, Couleur) NumAch Nom Age Ville Sexe 1 Nestor 96 Paris M NumVoit Marque Style Couleur 2 Irma 20 Lille F 1 Peugeot 404 Rouge 3 Henri 45 Paris M 2 Citroen SM Noire 4 Josette 34 Lyon F 3 Opel GT Blanche 5 Jacques 50 Bordeaux M 4 Peugeot 403 Blanche 5 Renault Alpine A310 Rose Vente (DateVente, Prix, NumVoit, NumAch) 6 Renault Floride Bleue DateVente Prix NumVoit NumAch 1985-12-03 10 000 1 1 1996-03-30 70 000 2 4 1998-06-14 30 000 4 1 2000-04-02 45 000 5 2 Donnez le nom des personnes ayant acheté une voiture et le style de la voiture achetée. SELECT Personne.Nom, Voiture.Style FROM Personne INNER JOIN Vente INNER JOIN Voiture ON Personne.NumAch = Vente.NumAch AND Vente.NumVoit = Voiture.NumVoit;

La jointure interne Personne (NumAch, Nom, Age, Ville, Sexe) Voiture (NumVoit, Marque, Style, Couleur) NumAch Nom Age Ville Sexe 1 Nestor 96 Paris M NumVoit Marque Style Couleur 2 Irma 20 Lille F 1 Peugeot 404 Rouge 3 Henri 45 Paris M 2 Citroen SM Noire 4 Josette 34 Lyon F 3 Opel GT Blanche 5 Jacques 50 Bordeaux M 4 Peugeot 403 Blanche 5 Renault Alpine A310 Rose Vente (DateVente, Prix, NumVoit, NumAch) 6 Renault Floride Bleue DateVente Prix NumVoit NumAch 1985-12-03 10 000 1 1 1996-03-30 70 000 2 4 1998-06-14 30 000 4 1 2000-04-02 45 000 5 2 Donnez le nom des personnes ayant acheté une voiture de style 404 SELECT Personne.Nom, Voiture.Style FROM Personne, Vente, Voiture WHERE Personne.NumAch = Vente.NumAch AND Vente.NumVoit = Voiture.NumVoit AND Voiture.Style = ‘404’;

La jointure interne Personne (NumAch, Nom, Age, Ville, Sexe) Voiture (NumVoit, Marque, Style, Couleur) NumAch Nom Age Ville Sexe 1 Nestor 96 Paris M NumVoit Marque Style Couleur 2 Irma 20 Lille F 1 Peugeot 404 Rouge 3 Henri 45 Paris M 2 Citroen SM Noire 4 Josette 34 Lyon F 3 Opel GT Blanche 5 Jacques 50 Bordeaux M 4 Peugeot 403 Blanche 5 Renault Alpine A310 Rose Vente (DateVente, Prix, NumVoit, NumAch) 6 Renault Floride Bleue DateVente Prix NumVoit NumAch 1985-12-03 10 000 1 1 1996-03-30 70 000 2 4 1998-06-14 30 000 4 1 2000-04-02 45 000 5 2 Donnez le nom des personnes ayant acheté une voiture de style 404 SELECT Personne.Nom, Voiture.Style FROM Personne INNER JOIN Vente INNER JOIN Voiture ON Personne.NumAch = Vente.NumAch AND Vente.NumVoit = Voiture.NumVoit WHERE Voiture.Style = ‘404’;

<,<=, >, >=, =, < > Résumé des requêtes SQL DISTINCT, [AS] +,-,*,/,% AVG, MAX, MIN, SUM, COUNT SELECT liste_des_attributs FROM liste_des_tables INNER JOIN ON [ WHERE liste_de_critères ] [ GROUP BY liste_des_attributs ] <,<=, >, >=, =, < > [ HAVING liste_de_critères ] BETWEEN, IN, IS NULL [ ORDER BY liste_des_attributs ] LIKE AND, OR, NOT [ASC], DESC