Langage SQL ENCG-Tanger Le Langage SQL (1) INTRODUCTION

Slides:



Advertisements
Présentations similaires
Année universitaire Système dinformation Le SQL (Structured Query Language) langage dinterrogation dune base de données.
Advertisements

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
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.
Le langage SQL LDD : Langage de Définition de Données
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
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.
Le langage SQL.
Initiation aux bases de données et à la programmation événementielle
Cours n°2 Implémentation et exploitation
Le Langage de Manipulation de Données LMD Module 6.
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
RAPPEL SUR LES BASES DE DONNÉES, LE SQL 1 er trimestre V1.0 06/01/2015.
1- Régles de normalisation 2ème partie : normalisation Modèle Conceptuel des Données 2- Les Formes Normales 3- Dépendances Fonctionnelles 4- Recap - Méthodologie.
1- Introduction 1ère partie Le langage SQL 2- Connexion 3- Structure & Contenu 4- Requêtes.
SQL partie 5 1 LMD create – update – primary key secondary key.
Le langage de définition de données B.T.S. S.I.O – SI3 –
SQL : 4 fonctions d'exploitation de SGBD SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage informatique ayant pour.
SQL query - 1 / D. Berrabah SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes Agrégats et groupement.
1- phpMyAdmin 3ème partie : Manipulation des données Le langage SQL 2- Gérer les tables 3- Gérer les données.
SQL partie 1 Langage de Définition de Données. SQL est un langage de définition de données  SQL est un langage de définition de données (LDD), c'est-à-dire.
GESTION DES BASES DE DONNÉES Prof. Ouadoudi Zytoune 2016/2017ENCG-K.
Construire des requêtes
Environnement du développement de BD ORACLE REPORTS 10g
ملخص Initiation à la sgbdr
Structured Query Language SQL DDL
Intégration du P7 dans l’épreuve E41
Initiation aux bases de données et à la programmation événementielle
Université Stendhal - Grenoble
LE LANGAGE DE REQUETES SQL
Langage de manipulation de données (LMD)
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Structured Query Language
Généralité sur les bases de données
Les bases de données et le modèle relationnel
Corrigé du TP SQL 2 Énoncé -Rappel Requête 1 :
Langage de Manipulation des Données LMD
1 Présentation projet Base de Données & Langage SQL Bakary DIABY, Insa Rouen Promo. MS-ESD 16/17.
Langage d’interrogation des Données LID
SQL LID – INTERROGATIN DES DONNEES
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
Création Et Modification De La Structure De La Base De Données
SQL LMD FICHE 4.6.
Manipulation D’Une Base De Données
Structure D’une Base De Données Relationnelle
Langage d’interrogation des Données LID
I Copyright © 2004, Oracle. Tous droits réservés. Introduction.
1 Copyright © 2004, Oracle. Tous droits réservés. Extraire des données à l'aide de l'instruction SQL SELECT.
2 Copyright © 2004, Oracle. Tous droits réservés. Restreindre et trier les données.
Bases de données sous Access. Initiation aux bases de données  Structure d’une base de données.
4 Copyright © 2004, Oracle. Tous droits réservés. Afficher des données agrégées à l'aide des fonctions de groupe.
5 Copyright © 2004, Oracle. Tous droits réservés. Afficher des données de plusieurs tables.
6 Copyright © 2004, Oracle. Tous droits réservés. Utiliser des sous-interrogations pour résoudre des interrogations.
7 Copyright © 2004, Oracle. Tous droits réservés. Utiliser les opérateurs ensemblistes.
Préface Introduction Objectifs du chapitre I-2 Objectifs du cours I-3 Oracle10g I-4 Oracle Database 10g I-6 Oracle Application Server 10g I-7 Oracle Enterprise.
Remarque : Un nombre ou une lettre en gras fait référence à un chapitre entier ou à une annexe entière. A Affichage des dates par défaut 02-06, Ajouter.
Langage d’interrogation des Données Les fonctions de groupes
1. LE LANGAGE SQL DDL Version 2 - Janvier Le langage SQL-DDL
Semaine 3 Retour sur la semaine 2 Plan de séance
Les Requêtes S.Q.L « Structured Query Language). SQL Historique.
Introduction aux Bases de Données SGBDR Microsoft Access.
Info Bases de données avancées
PRESENTATION ACCESS Editeur : Microsoft Environnement Windows (SE)
SQL Structured Query Language
Bases de Données Relationnelles(1)
1. LE LANGAGE SQL DDL Version 1 - Mai 2009 corrigé le 11/2/2011
Systèmes d’Information et Application
Systèmes d’Information et Application
DONNÉE DE BASE QM Manuel de formation. Agenda 2  Introduction  Objectif de la formation  Données de base QM: Caractéristique de contrôle Catalogue.
Transcription de la présentation:

Langage SQL ENCG-Tanger Le Langage SQL (1) INTRODUCTION Le sigle SQL signifie "Structured Query Language", soit en français "Langage de recherche structuré". Le SQL est un langage structuré de requêtes qui permet de créer, de modifier et gérer des informations dans des BDR Il a été développé par IBM au cours des années 70 et son nom était SEQUEL, abréviation de Structured English QUEry Language A. ELKHARRAZ

Le Langage SQL (2) SQL a été normalisé par l'ANSI (American National Standards Institute) et par l'ISO (International Organization for Standardization). Cette normalisation a donné naissance à une 1ère version (SQL1) en 1987 puis à une 2ème version (SQL2) en 1992 Une troisième norme (SQL3) est en cours de rédaction depuis 1999 par l'ANSI et l'ISO,

Le Langage SQL (3) Malgré la normalisation ISO, il existe plusieurs variantes de SQL sur le marché car chaque éditeur de SGBDR tente d’étendre le standard pour accroître l’attrait commercial de son produit Une requête en SQL commence par les mots clés: SELECT, DELETE, UPDATE, INSERT INTO, CREATE et DROP Chaque requête SQL doit obligatoirement se terminer par un Point Virgule On distingue 2 types de requêtes: Actions et Sélections

Le Langage SQL (4) I. Requêtes Actions Syntaxe Sont des requêtes qui permettent de créer des tables, d’ajouter, de supprimer des enregistrements d’une table, d’ajouter une colonne… L’instruction CREATE TABLE permet de créer une nouvelle table Syntaxe 1. Création d’une table avec un seul champ comme clé primaire CREATE TABLE Nom_table (champ1 type CONSTRAINT nom_contrainte PRIMARY KEY, champ2 type [NOT NULL], …, champN type [NOT NULL]);

Le Langage SQL (5) champ2 type [NOT NULL], …, champN type, CONSTRAINT 2. Création d’une table avec plusieurs champs comme clé primaire CREATE TABLE Nom_table (champ1 type [NOT NULL], champ2 type [NOT NULL], …, champN type, CONSTRAINT nom_contrainte PRIMARY KEY (champ1, champ2,…)) ); /* Créez une requête SQL permettant de créer la table EMPLOYES ( Nemployé, Nom, Prénom, Fonction, Adresse, Codeville) tels que le 1er champ est de type entier les autres de type texte ayant respectivement une taille de: 25, 20, 15 et 50. Tandis que le champ Codeville est de type Entier long */ CREATE TABLE EMPLOYES ( Nemployé INTEGER PRIMARY KEY, Nom TEXT(25), Prénom TEXT(20), Fonction TEXT(15), Adresse TEXT(50), Codeville LONG) ) ;

Le Langage SQL (6) Les conventions relatives aux noms des tables et des champs varient quelque peu d'un SGBD à l'autre. En ce qui concerne plus particulièrement les champs: Le nombre de caractères ne doit pas être trop grand (64 dans Access, 18 à 30 dans d'autres SGBD) ; Seuls les lettres, les nombres et le caractère de soulignement sont autorisés. Access admet les caractères accentués. Il admet aussi l'espace, mais le nom du champ doit alors être écrit entre crochets ; Certains SGBD requièrent que le nom d'un champ commence par une lettre, mais ce n'est pas le cas d'Access ;

Le Langage SQL (7) Les termes faisant partie du vocabulaire du langage SQL sont interdits ("date" par exemple). Ce sont les mots réservés. Voici un échantillon représentatif des différentes façons d'exprimer un type de données lors de la création d'une table en SQL dans Access : Booléen (Oui / Non) : BIT ; Nombre entier : SHORT (entier), SMALLINT (entier), LONG (entier long), INTEGER (entier long), BYTE (octet) ; Nombre réel : SINGLE (réel simple), DOUBLE (réel double), NUMERIC (réel double) ;

Le Langage SQL (8) Remarque: Monétaire : CURRENCY, MONEY ; Date/Heure : DATE, TIME, DATETIME ; Texte : VARCHAR (255 caractères), CHAR(n) ou TEXT(n) (n caractères), LONGTEXT (mémo, 65 535 caractères =32K max.) ; Fichier binaire : LONGBINARY (Objet OLE) ; Compteur : COUNTER (NuméroAuto). Remarque: On notera qu'il n'est pas possible de créer un champ de type hypertexte via une commande SQL dans Access. Même remarque en ce qui concerne les listes de choix.

Le Langage SQL (9) /* Créez une requête SQL permettant de créer la table DETAILS ( Ncommande, Réf, Pu,Quantité, Remise) tels que les champs sont de type respectivement: entier long, texte de taille 30, monétaire, entier et réel simple et tel que aussi les champs Pu & Quantité sont non nuls*/ CREATE TABLE DETAILS ( Ncommande Integer, Réf Char(30), Pu Currency NOT NULL, Quantité Smallint NOT NULL, Remise Single, PRIMARY KEY ( Ncommande, Réf ) ) ; L’instruction ALTER TABLE permet d’ajouter ou de supprimer un seul champ à une table. Elle permet aussi la création et la suppression des liens entre les tables d’une base de données.

Le Langage SQL (10) /* Créez une requête SQL permettant de créer la table VILLES ( Codeville, Ville) tels que le 1er champ est de type NuméroAuto et le deuxième est de type texte ayant une taille de 20*/ CREATE TABLE VILLES ( Codeville Counter PRIMARY KEY, Ville Text(20) ) ; /* Modifiez la table EMPLOYES en déclarant le champ "CodeVille" comme clé étrangère, puis créez un lien nommé lien_ville sur le champ CodeVille, en précisant que le côté 1 du lien est le champ Code_Ville de la table VILLES .*/

Le Langage SQL (11) ALTER TABLE EMPLOYES ADD CONSTRAINT Lien_ville FOREIGN KEY (Code_Ville) REFERENCES VILLES (Code_Ville); /* Supprimer le lien nommé lien_ville existant entre la table EMPLOYES et la table VILLES  selon le champ Codeville.*/ ALTER TABLE EMPLOYES DROP CONSTRAINT Lien_ville; /* Créez une requête SQL permettant d’ajouter le champ Codecli à la table DETAILS. Ce champ est de type texte, de taille 20 caractères et il est non nulle ALTER TABLE DETAILS ADD COLUMN Codecli TEXT(20) NOT NULL;

Le Langage SQL (12) Syntaxe /* Créez une requête SQL permettant de supprimer le champ Codecli de la table DETAILS. ALTER TABLE DETAILS DROP COLUMN Codecli ; L’instruction DROP TABLE permet de supprimer une table d’une base de données Syntaxe DROP TABLE Nom_table ;

Le Langage SQL (13) /* Créez une requête SQL permettant de supprimer la table DETAILS définitivement de la base de données DROP TABLE DETAILS ; Soit la table ACTEURS créée sous ACCESS: ACTEURS (N_act, Nom, Prénom, Nationalité, Salaire, Age, Films) L’instruction DELETE permet d’effacer des enregistrements d’une table /* Effacez tous les enregistrements de la table ACTEURS*/

Le Langage SQL (14) (Ou bien ) DELETE * FROM ACTEURS ; (Ou bien ) DELETE N_act FROM ACTEURS ; /* Effacez tous les acteurs de nationalité marocaine*/ DELETE * FROM ACTEURS WHERE Nationalité= "marocaine"; L’instruction UPDATE permet la mise à jour d’une table Syntaxe : UPDATE table SET nouvellesvaleurs WHERE critères ;

Le Langage SQL (15) /* Créez une requête permettant de modifier l’adresse de l'employé  numéro 10 tout en sachant que la nouvelle adresse sera "10 Avenue Mohamed VI, Tanger"*/ UPDATE EMPLOYES SET Adresse = "10 Avenue Mohamed VI, Tanger" WHERE Nemployé = 10 ; /* Créez une requête permettant d’augmenter de 3% le salaire de tous les acteurs */ UPDATE ACTEURS SET Salaire = Salaire * 1.03 ; L’instruction INSERT INTO permet d’ajouter un ou plusieurs enregistrements à une table

Le Langage SQL (16) Syntaxe 1. Requête ajout d’un seul enregistrement INSERT INTO Nom_table [(champ1, champ2, …)] VALUES (valeur1, valeur2, …) ; 2. Requête ajout de plusieurs enregistrements INSERT INTO Nom_table 1 [IN externaldatabase] (Champ1, Champ2, …) SELECT (Champ1, Champ2, …) FROM Nom_table 2 ;

Le Langage SQL (17) /* Créez une requête permettant d’ajouter l’enregistrement suivant dans la table EMPLOYES: (100, BEN AZOUZ, Aziz, Ingénieur, 90050) */ INSERT INTO EMPLOYES (Nemployé, Nom, Prénom, Fonction, Codeville) VALUES (100, "BEN AZOUZ", "Aziz", "Ingénieur", 90050) ; /* Soit la table NOUVEAUX_EMPLOYES (Nemployé, Nom, Prénom, Fonction, Adr, Codeville) Supposons que cette table contient des enregistrements. Question: Ajoutez tous les enregistrements de la table ci-dessus dans la table EMPLOYES*/ INSERT INTO EMPLOYES SELECT * FROM NOUVEAUX_EMPLOYES ;

Le Langage SQL (18) I. Requête SELECTION Une requête de type SELECTION permet d'interroger une base de données En la laissant intacte (sans la modifier) Le résultat d’une telle requête est renvoyé sous forme d’une table formée d’un ou plusieurs attributs.

Le Langage SQL (19) SELECT [Prédicat] Syntaxe SELECT [Prédicat] {* / table.* /[table.attribut1 As alias1], [table.attribut2 As alias2], …} FROM Liste de table [IN externaldatabase] [WHERE Critère de sélection] [GROUP BY Liste des attributs] [HAVING Critère de sélection] [ORDER BY Critère d’ordre]

Le Langage SQL (20) Remarques [ ] signale une clause optionnelle, c.à.d on peut utiliser la requête SELECT sans cette clause Chaque instruction SQL doit se terminer par un point-virgule Elément Description Prédicat L’un des prédicats suivants: ALL, DISTINCT, ou TOP. Les prédicats permettent de limiter le nombre d’enregistrement renvoyés. ALL est choisi par défaut * Indique que tous les champs de la ou des tables spécifiées seront sélectionnés

Le Langage SQL (21) Elément Description table Nom de la table contenant les champs dans lesquels les enregistrements sont sélectionnés attribut1, attribut2 Noms des champs contenant les données à extraire. alias1, alias2 Utilisés pour renommer un attribut externaldatabase Nom de la base de données contenant les tables si elles ne se trouvent pas dans la base de données en cours

Le Langage SQL (22) Exemple 1 Soit la table ACTEURS créée sous ACCESS: ACTEURS (N_act, Nom, Prénom, Nationalité, Salaire, Age, Films) /* Afficher tous les champs et tous les enregistrements de la table ACTEURS*/ SELECT * FROM ACTEURS; /* Afficher uniquement le Nom et Prénom de chaque Acteur */ SELECT Nom, Prénom FROM ACTEURS; /* Afficher les différentes nationalités sans doublons même si plusieurs acteurs ont la même nationalité */ SELECT DISTINCT Nationalité FROM ACTEURS;

Le Langage SQL (23) /* Afficher les 3 premiers acteurs de la table ACTEURS */ SELECT TOP 3 * FROM ACTEURS; /* Afficher 50% des acteurs de la table ACTEURS*/ SELECT TOP 50 PERCENT * FROM ACTEURS; Avec l’instruction SELECT, il est possible d’utiliser les fonctions suivantes pour effectuer des calculs: SUM () renvoie la somme d’un champ AVG () renvoie la moyenne d’un champ MAX () renvoie la valeur maximale d’un champ MIN () renvoie la valeur minimale d’un champ COUNT (*) renvoie le nombre d’enregistrements de la table

Le Langage SQL (24) /* Afficher le nombre totale d’enregistrement de la table ACTEURS */ SELECT COUNT(*) FROM ACTEURS; /* Afficher le nombre totale d’enregistrement de la table ACTEURS et nommer le champ retourné Nombre totale*/ SELECT COUNT(*) As [Nombre Totale] FROM ACTEURS; /* Afficher le nombre d’enregistrement de la table ACTEURS qui ont une entrée dans le champ Nom et nommer le champ retourné Nombre d’entrée*/ SELECT COUNT(Nom) As [Nombre d’entrée] FROM ACTEURS;

Le Langage SQL (25) /* Afficher le totale des salaires de la table ACTEURS et nommer le champ retourné Totale des salaires */ SELECT SUM(Salaire) As [Totale des salaires] FROM ACTEURS; /* Afficher la moyenne des salaires de la table ACTEURS et nommer le champ retourné Moyenne des salaires*/ SELECT AVG(Salaire) As [Moyenne des salaires] FROM ACTEURS; /* Afficher le salaire le plus élevé de la table ACTEURS et nommer le champ retourné Salaire maximal*/ SELECT MAX(Salaire) As [Salaire maximal] FROM ACTEURS;

Le Langage SQL (26) Les éléments de la clause WHERE /* Afficher l’âge de l’acteur le plus jeune et nommer le champ retourné Age minimal */ SELECT MIN(Age) As [Age minimal] FROM ACTEURS; Les éléments de la clause WHERE Ils permettent de définir la condition dans cette clause. La clause peut être accompagnée des opérateurs logiques AND, OR ou NOT Comparaison à une valeur (=, <, >, >=, <=, <>) Comparaison à une fourchette de valeurs (BETWEEN … AND) Comparaison à une liste de valeur ( IN (. , . ,...) ) Comparaison à un filtre (LIKE) Test  "tous" ou "au moins" (ALL, ANY/SOME)

Le Langage SQL (27) /* Afficher tous les noms d’acteur dont l’âge est supérieur à 25*/ SELECT Nom FROM ACTEURS WHERE Age >= 25; /* Afficher tous les noms d’acteur dont la nationalité est américaine et l’âge est supérieur à 25*/ SELECT Nom FROM ACTEURS WHERE (Nationalité="américaine") AND (Age >= 25); /* Afficher tous les noms d’acteur dont la nationalité est américaine ou l’âge est supérieur à 25*/ SELECT Nom FROM ACTEURS WHERE (Nationalité="américaine") OR (Age >= 25); /* Afficher les acteurs dont l’âge est entre 35 et 50 */ SELECT * FROM ACTEURS WHERE Age BETWEEN 35 AND 50;

Le Langage SQL (28) /* Afficher tous les acteurs dont la nationalité est américaine, française ou marocaine*/ SELECT * FROM ACTEURS WHERE Nationalité IN ("américaine","française", "marocaine"); /* Afficher tous les noms d’acteurs qui commencent par "DE" */ SELECT Nom FROM ACTEURS WHERE Nom LIKE "DE*"; /* Afficher tous les noms d’acteur ne commençant pas par D et ayant 4 lettres */ SELECT Nom FROM ACTEURS WHERE Nom NOT LIKE "D*"  AND Nom LIKE "????"; /* Afficher le nom d’acteur le plus âgé */ SELECT Nom FROM ACTEURS WHERE Age >= ALL (SELECT Age FROM ACTEURS );

Le Langage SQL (29) Exemple 2 /* Afficher le nom d’acteur le plus jeune*/ SELECT Nom FROM ACTEURS WHERE Age <= ALL (SELECT Age FROM ACTEURS); Exemple 2 Soit les tables PRODUITS, COMMANDES, DETAILS et VENDEURS créées sous ACCESS: PRODUITS (Réf , Design, Nfournisseur, Pu) COMMANDES(Ncommande, Codecli, Nvend, Date commande) DETAILS(Ncommande, Réf , Quantité, Remise) VENDEURS(Nvend, Nom, Prénom, Fonction, Adresse, Ville)

Le Langage SQL (30) Les éléments de la clause FROM (Ou bien ) /* Afficher tous les produits (Réf, Design) qui ont été vendus*/ SELECT PRODUITS.Réf, Design FROM PRODUITS INNER JOIN DETAILS ON PRODUITS.Réf = DETAILS.Réf ; (Ou bien ) SELECT PRODUITS.Réf, Design FROM PRODUITS, DETAILS WHERE PRODUITS.Réf = DETAILS.Réf ;

Le Langage SQL (31) Les jointures La clause INNER JOIN a fait son apparition avec la version 2 de SQL, parce que le besoin s'était de préciser à quel type de jointure appartenait une relation. Plus précisément, on distingue :  la jointure interne, qui utilise INNER JOIN. Ne sont incluses dans le résultat final que les lignes qui se correspondent dans les deux tables. Ce cas est celui que nous avons traité précédemment ; la jointure externe gauche, dans laquelle INNER JOIN est remplacé par LEFT JOIN. Toutes les lignes de la première table sont incluses dans le résultat de la requête, même s'il n'existe pas de ligne correspondante dans la seconde table ;

Le Langage SQL (32) (Ou bien )  la jointure externe droite, dans laquelle INNER JOIN est remplacé par RIGHT JOIN. Toutes les lignes de la seconde table sont incluses dans le résultat de la requête, même s'il n'existe pas de ligne correspondante dans la première table. /* Afficher tous les produits (Réf, Design, Mois de vente) qui ont été vendus pendant le mois 6*/ SELECT PRODUITS. Réf, Design, Month ([Date commande]) AS [Mois de vente] FROM PRODUITS INNER JOIN (DETAILS INNER JOIN COMMANDES ON DETAILS. Ncommande = COMMANDES . Ncommande ) ON PRODUITS . Réf = DETAILS . Réf, WHERE Month ([Date commande]) =6 ; (Ou bien )

Le Langage SQL (33) SELECT PRODUITS.Réf, Design, Month ([Date commande]) AS [Mois de vente] FROM PRODUITS, DETAILS, COMMANDES WHERE PRODUITS.Réf = DETAILS .Réf AND DETAILS.Ncommande = COMMANDES . Ncommande AND Month ([Date commande]) =6;

Le Langage SQL (34) /* Afficher tous les produits dont le prix unitaire est supérieur au prix d’au moins d’un produit vendu avec une remise de 25%*/ SELECT Réf, Design, FROM PRODUITS WHERE Pu >= ANY ( SELECT Pu FROM DETAILS Inner Join PRODUITS ON PRODUITS.Réf=DETAILS.Réf WHERE Remise = 0.25 );

Le Langage SQL (35) Remarque /* Afficher tous les produits (Réf, Design) qui ont été vendus par ordre décroissant selon le champ Réf*/ SELECT PRODUITS. Réf, Design FROM PRODUITS , DETAILS WHERE PRODUITS. Réf = DETAILS . Réf ORDER BY PRODUITS.Réf DESC; Remarque Par défaut, le résultat d’une requête sélection est trié selon l’ordre croissant du premier attribut qui figure dans la clause SELECT

Le Langage SQL (36) On pourra changer temporairement les noms des tables et de travailler avec lors de création d’une requête de type sélection Exemple /* Afficher tous les produits (Réf, Design) qui ont été vendus par ordre décroissant selon le champ Réf*/ SELECT T1.Réf, Design FROM PRODUITS AS T1 , DETAILS AS T2 WHERE T1.Réf = T2.Réf ORDER BY T1.Réf DESC;

Le Langage SQL (37) Ncommande Réf Quantité Remise 1 R1 10 0.6 R2 20 2 15 0.5 R3 R6 25 0.9 3 5 R7 65 0.1 R8 DETAILS

Le Langage SQL (38) /* Afficher pour chaque commande le totale de quantités des produits vendus*/ SELECT Ncommande, SUM(Quantité) AS [Totale quantités vendues] FROM DETAILS GROUP BY Ncommande ; /* Afficher pour chaque commande le totale de quantités des produits vendus et tel que ce totale est > 60 */ SELECT Ncommande, SUM(Quantité) AS [Totale quantités vendues] FROM DETAILS GROUP BY Ncommande HAVING SUM(Quantité) > 60 ;

Le Langage SQL (39) /* Afficher les commandes qui contiennent plus que 3 produits (>=3)*/ SELECT Ncommande, COUNT(Réf) AS [Nombre de produits] FROM DETAILS GROUP BY Ncommande HAVING COUNT(Réf) >=3 ; /* Afficher pour chaque commande le totale de quantités des produits vendus avec une remise de 7% et tel que ce totale est > 60 */ SELECT Ncommande, SUM([Quantité]) AS [Totale quantités vendues] FROM DETAILS WHERE Remise=0,07 GROUP BY Ncommande HAVING SUM([Quantité]) > 60 ;

Le Langage SQL (40) /* Afficher les vendeurs qui ont passé plus de 4 commandes*/ SELECT Nvend, COUNT(Ncommande) AS [Nombre de commandes passées] FROM COMMANDES GROUP BY Nvend HAVING COUNT(Ncommande) > 4 ; /* Afficher les vendeurs de la ville d’Asilah qui ont passé plus de 4 commandes*/ SELECT VENDEURS.Nvend, COUNT(Ncommande) AS [Nombre de cdes passées] FROM COMMANDES, VENDEURS WHERE VENDEURS.Nvend=COMMANDES.Nvend AND Ville ="Asilah" GROUP BY VENDEURS.Nvend HAVING COUNT(Ncommande) > 4 ;