Le langage SQL DML (2)

Documents pareils
Exercices et solutions

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

SQL Historique

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Bases de Données relationnelles et leurs systèmes de Gestion

Langage SQL : créer et interroger une base

Cours d Informatique Bases de données

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Bases de données relationnelles

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Olivier Mondet

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

ST3 : Techniques de bases de données avancées

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

Corrigés détaillés des exercices

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Création et Gestion des tables

PHP 5. La base de données MySql. A. Belaïd 1

CREATION WEB DYNAMIQUE

Cours Bases de données 2ème année IUT

Gestion de base de données

BTS/CGO P10 SYSTEME INFORMATION Année

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Compétences Business Objects

1. Base de données SQLite

Intégrité des données

Historisation des données

Introduction au Système de Gestion de Base de Données et aux Base de Données

Le Langage De Description De Données(LDD)

Les bases de données

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

A QUOI SERVENT LES BASES DE DONNÉES?

Le Langage SQL version Oracle

TP Contraintes - Triggers

Durée : 4 heures Le sujet se présente sous la forme de deux dossiers indépendants

I4 : Bases de Données

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

MySQL / SQL EXEMPLES

Le langage SQL (première partie) c Olivier Caron

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

Intégrité sémantique dans les bases de données relationnelles

TP3 : Creation de tables 1 seance

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Modélisation et Gestion des bases de données avec mysql workbench

Devoir Data WareHouse

Bases de données. Yamine AIT AMEUR. INPT-ENSEEIHT DIMA 2 Rue Charles Camichel Toulouse Cedex 7

A QUOI SERVENT LES BASES DE DONNÉES?

I. MySQL : Serveur et SGBD

Cours SQL. Base du langage SQL et des bases de données

Présentation Windows Azure Hadoop Big Data - BI

Notes de cours : bases de données distribuées et repliquées

Le langage SQL Rappels

Introduction aux Bases de Données 2004/2005

TP Bases de données réparties

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

OpenPaaS Le réseau social d'entreprise

Mysql. Les requêtes préparées Prepared statements

Durée : 4 heures coefficient : 4 Le sujet se présente sous la forme de deux dossiers indépendants

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Bases de données Cours 4 : Le langage SQL pour ORACLE

Vincent Augusto

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

16H Cours / 18H TD / 20H TP

Application web de gestion de comptes en banques

Auto-évaluation Oracle: cours de base

Les BASES de DONNEES dans WampServer

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

IFT3030 Base de données. Chapitre 1 Introduction

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

TD n 10 : Ma première Base de Données

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

FileMaker 13. Guide de référence SQL

Optimisation SQL. Quelques règles de bases

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Pour les débutants. langage de définition des données

Installation d'un serveur FTP géré par une base de données MySQL

Gestion des utilisateurs et de leurs droits

Développement de base de données Microsoft SQL Server Durée : 5 jours Référence : DPSQL12. Contenu

Administration des bases de données. Jean-Yves Antoine

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

WEB DEVELOPER SGBD SYSTEME DE GESTION DE BASES DE DONNEES L étudiant sera capable :

Cours SGBD 1. Concepts et langages des Bases de Données Relationnelles

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

Support de cours. Introduction à SQL et MySQL. 2003, Sébastien Namèche

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

1 Position du problème

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

SQL Server 2000, Analysis Services et DTS

La présente publication est protégée par les droits d auteur. Tous droits réservés.

I/ Présentation. On considère une BD CIRQUE dont le schema conceptuel : PERSONNEL _CIRQUE (NOM, ROLE) ;

Transcription:

Chapitre 8 8 Le langage SQL DML (2) Ce document reprend les requêtes SQL du chapitre 8 de l ouvrage Bases de données - Concepts, utilisation et développement. 8.1 INTRODUCTION 8.2 EXTRACTION DE DONNÉES DE PLUSIEURS TABLES (JOINTURE) select NCOM, CLIENT.NCLI, DATECOM, NOM, LOCALITE from COMMANDE, CLIENT where COMMANDE.NCLI = CLIENT.NCLI; select CLIENT.NCLI, NOM, DATECOM, NPRO, COMMANDE, DETAIL where CLIENT.NCLI = COMMANDE.NCLI and COMMANDE.NCOM = DETAIL.NCOM; 8.2.1 Conditions de jointure et conditions de sélection select NCOM, CLIENT.NCLI, DATECOM, NOM, ADRESSE from COMMANDE, CLIENT where COMMANDE.NCLI = CLIENT.NCLI and CAT = 'C1' and DATECOM < '23-12-2009';

Chapitre 8 Le langage SQL DML (2) 8.2.2 La jointure et les lignes célibataires select NCOM, CLIENT.NCLI, DATECOM, NOM, LOCALITE from COMMANDE, CLIENT where COMMANDE.NCLI = CLIENT.NCLI union select '--', NCLI, '--', NOM, LOCALITE where not exists (select * from COMMANDE where NCLI = CLIENT.NCLI); 8.3 LES OPÉRATEURS ENSEMBLISTES select LOCALITE where CAT = 'C1' union select LOCALITE where COMPTE < 0; select LOCALITE where CAT = 'C1' union all select LOCALITE where COMPTE < 0; 8.4 LE PRODUIT RELATIONNEL select NCOM, CLIENT.NCLI, DATECOM, NOM, ADRESSE from COMMANDE, CLIENT; select distinct LOCALITE, NPRO,PRODUIT; select distinct LOCALITE, NPRO C,COMMANDE M,DETAIL D where C.NCLI=M.NCLI and M.NCOM=D.NCOM; select distinct LOCALITE, NPRO, PRODUIT except select distinct LOCALITE,NPRO C,COMMANDE M,DETAIL D where C.NCLI=M.NCLI and M.NCOM=D.NCOM;

8.5 Requêtes sur des structures de données cycliques 8.5 REQUÊTES SUR DES STRUCTURES DE DONNÉES CYCLIQUES create table PERSONNE ( NPERS char (4) not null, NOM char(25) not null, RESPONSABLE char (4), primary key (NPERS), foreign key (RESPONSABLE) references PERSONNE); select S.NPERS, R.NPERS, R.NOM from PERSONNE S, PERSONNE R where S.RESPONSABLE = R.NPERS; select S.NPERS, R.NPERS, R.NOM from PERSONNE S, SUPERIEUR R where S.RESPONSABLE = R.NPERS and S.NOM = 'Dupont'; select S.NPERS, R.NPERS, R.NOM from PERSONNE S, PERSONNE R where S.RESPONSABLE = R.NPERS and S.NOM = 'Dupont' union select NPERS, '--', '--' from PERSONNE where RESPONSABLE is null and NOM = 'Dupont'; select R.NPERS, R.NOM, SS.NPERS, SS.NOM from PERSONNE R, PERSONNE S, PERSONNE SS where R.NPERS = 'p4' and R.NPERS = S.RESPONSABLE and S.NPERS = SS.RESPONSABLE; select H.NPRO,H.LIBELLE,C.QTE,B.NPRO,B.LIBELLE from PRODUIT H, COMPOSITION C, PRODUIT B where C.COMPOSE = H.NPRO and C.COMPOSANT = B.NPRO and H.NPRO = 'p4'; Dunod La photocopie non autorisée est un délit. 8.6 COMPLÉMENTS SUR LES JOINTURES 8.6.1 Sous-requête ou jointure? select NCOM,DATECOM from COMMANDE where NCLI in (select NCLI where LOCALITE = 'Poitiers');

Chapitre 8 Le langage SQL DML (2) select NCOM,DATECOM from COMMANDE, CLIENT where COMMANDE.NCLI = CLIENT.NCLI and LOCALITE = 'Poitiers'; select * from COMMANDE where NCOM in (select NCOM from DETAIL where NPRO = 'PA60' and QCOM < (select QCOM from DETAIL where NPRO = 'PA60' and NCOM = '30182')); select M.NCOM, DATECOM, NCLI from COMMANDE M, DETAIL D1, DETAIL D2 where M.NCOM = D1.NCOM and D1.NPRO = 'PA60' and D2.NCOM = '30182' and D2.NPRO = 'PA60' and D1.QCOM < D2.QCOM; select NCOM, DATECOM, NCLI from COMMANDE where NCOM not in ( select NCOM from DETAIL where NPRO = 'PA60'); select distinct COMMANDE.NCOM, DATECOM, NCLI from COMMANDE, DETAIL where COMMANDE.NCOM = DETAIL.NCOM and NPRO <> 'PA60'; select distinct COMMANDE.NCOM, DATECOM, NCLI from COMMANDE, DETAIL where COMMANDE.NCOM <> DETAIL.NCOM and NPRO = 'PA60'; select C.NCLI, C.NFOURN,... from COMPTE C, ACHAT A where A.NCLI = C.NCLI and A.NFOURN = C.NFOURN and DATEA = '12-09-2009'; 8.6.2 Valeurs dérivées dans une jointure select NCOM, D.NPRO, QCOM*PRIX from DETAIL D, PRODUIT P where D.NPRO = P.NPRO; select 'Montant commande 30184 = ', sum(qcom*prix) from DETAIL D, PRODUIT P where D.NCOM = '30184'

8.7 Extraction de données groupées and D.NPRO = P.NPRO; select distinct PRODUIT,VILLE,PRIX from VENTE V, LOCALISATION L where V.CHAINE = L.CHAINE; select NCLI, NOM, CODE_CPT, CLASSE_CPT where CAT = 'C1' and COMPTE >= MIN_CPT and COMPTE < MAX_CPT; 8.6.3 Interprétation du résultat d une jointure select C.NCLI, NOM, LOCALITE C, COMMANDE M where M.NCLI = C.NCLI; select * from TA, TB where TA.IA = TB.RA; select COMMANDE.NCOM,DATECOM,NCLI from COMMANDE,DETAIL where COMMANDE.NCOM = DETAIL.NCOM; select D.NCOM,D.NPRO,LOCALITE,LIBELLE CLI,COMMANDE COM,DETAIL D,PRODUIT P where CLI.NCLI = COM.NCLI and COM.NCOM = D.NCOM and D.NPRO = P.NPRO; select * from TA, TB where TA.IA = TB.RA; select LOCALITE,LIBELLE CLI,COMMANDE COM,DETAIL D,PRODUIT P where CLI.NCLI = COM.NCLI and COM.NCOM = D.NCOM and D.NPRO = P.NPRO; Dunod La photocopie non autorisée est un délit. 8.7 EXTRACTION DE DONNÉES GROUPÉES 8.7.1 Notion de groupe de lignes select LOCALITE, count(*) as NOMBRE_CLIENTS, avg(compte) as MOYENNE_COMPTE group by LOCALITE;

Chapitre 8 Le langage SQL DML (2) 8.7.2 Sélection de groupes et sélection de lignes select LOCALITE, count(*), avg(compte) group by LOCALITE having count (*) >= 3; select NCLI, count(*) from COMMANDE group by NCLI; select NCLI, count(*) from COMMANDE group by NCLI having count(*) >= 2; select NCLI, count(*) from COMMANDE where NCOM in ( select NCOM from DETAIL where NPRO = 'PA45') group by NCLI having count(*) >= 2; 8.7.3 Groupes et jointures select M.NCLI, count(*), sum(qcom) from COMMANDE M, DETAIL D where M.NCOM = D.NCOM and NPRO = 'PA45' group by M.NCLI having count(*) >= 2; select 'Montant dû par ',C.NCLI,' = ',sum(qcom*prix) C, COMMANDE M, DETAIL D, PRODUIT P where LOCALITE = 'Poitiers' and M.NCLI = C.NCLI and M.NCOM = D.NCOM and D.NPRO = P.NPRO group by M.NCLI; select P.NPRO, QSTOCK - sum(d.qcom) as SOLDE from DETAIL D, PRODUIT P where D.NPRO = P.NPRO group by P.NPRO, QSTOCK; 8.7.4 Composition du critère de groupement select LOCALITE,P.NPRO,sum(QCOM*PRIX) as Montant C, COMMANDE M, DETAIL D, PRODUIT P where M.NCLI = C.NCLI

8.8 Ordre des lignes d un résultat and M.NCOM = D.NCOM and D.NPRO = P.NPRO group by LOCALITE, P.NPRO; select substring(cat from 1 for 1) as CAT, count(*) as N group by substring(cat from 1 for 1); select "de ", int(compte/1000)*1000 as Min, " à ", int(compte/1000)*1000 + 999 as Max, count(*) as N C group by int(compte/1000); 8.7.5 Attention aux groupements multiniveaux select LOCALITE, sum(compte), count(*) C, COMMANDE M where C.NCLI = M.NCLI group by LOCALITE; select M.NCLI,count(distinct M.NCOM),sum(QCOM*PRIX) from COMMANDE M, DETAIL D, PRODUIT P where M.NCOM = D.NCOM and D.NPRO = P.NPRO group by M.NCLI; 8.7.6 Peut-on éviter l utilisation de données groupées? Dunod La photocopie non autorisée est un délit. select D.NPRO from DETAIL D, COMMANDE M where D.NCOM = M.NCOM and DATECOM like '%2009' group by D.NPRO having sum(qcom) > 500; select NPRO from PRODUIT P where (select sum(qcom) from DETAIL where NPRO = P.NPRO and NCOM in (select NCOM from COMMANDE where DATECOM like '%2008')) > 500; 8.8 ORDRE DES LIGNES D UN RÉSULTAT select NCLI, NOM, LOCALITE where CAT in ('C1','C2')

Chapitre 8 Le langage SQL DML (2) order by LOCALITE; select * order by LOCALITE, CAT; select * from PRODUIT where LIBELLE like '%SAPIN%' order by QSTOCK desc; select LOCALITE, count(*) as POPULATION, sum(compte) group by LOCALITE order by POPULATION desc; select NCOM, NPRO, QCOM from DETAIL D, PRODUIT P where D.NPRO = P.NPRO order by NCOM, QCOM*PRIX desc; 8.9 INTERPRÉTATION D UNE REQUÊTE 7 : select NCLI, count(*), sum(qcom) 1 : from COMMANDE M, DETAIL D 2 : where M.NCOM = D.NCOM 3 : and NPRO = 'PA60' 4 : group by NCLI 5 : having count(*) >= 2 6 : order by NCLI 8.10 MODIFICATION DES DONNÉES 8.10.1 Ajout de lignes insert into DETAIL values ('30185','PA45',12); insert into CLIENT (NCLI,NOM,ADRESSE,COMPTE,LOCALITE) values ('C402','BERNIER','avenue de France, 28', -2500,'Lausanne'); insert into CLIENT_TOULOUSE select NCLI, NOM, ADRESSE where LOCALITE = 'Toulouse';

8.10 Modification des données 8.10.2 Suppression de lignes delete where NCLI = 'K111'; delete from DETAIL where NPRO in (select NPRO from PRODUIT where QSTOCK <= 0); 8.10.3 Modification de lignes update CLIENT set ADRESSE = '29, av. de la Magne', LOCALITE = 'Niort' where NCLI = 'F011'; update PRODUIT set PRIX = PRIX * 1.05 where LIBELLE like '%SAPIN%'; update PRODUIT P set QSTOCK = QSTOCK - (select sum(qcom) from DETAIL where NPRO = P.NPRO) where exists (select * from DETAIL where NPRO = P.NPRO); 8.10.4 Mise à jour et contraintes référentielles create table CLIENT ( NCLI char(10) not null,..., primary key (NCLI) ); create table COMMANDE ( NCOM char(12) not null, NCLI char(10) not null,..., primary key (NCOM), foreign key (NCLI) references CLIENT); Dunod La photocopie non autorisée est un délit. create table COMMANDE ( NCOM char(12) not null, NCLI char(10) not null,..., primary key (NCOM), foreign key (NCLI) references CLIENT on delete no action); create table COMMANDE ( NCOM char(12) not null, NCLI char(10) not null,..., primary key (NCOM), foreign key (NCLI) references CLIENT on delete cascade);

Chapitre 8 Le langage SQL DML (2) create table COMMANDE ( NCOM char(12) not null, NCLI char(10),..., primary key (NCOM), foreign key (NCLI) references CLIENT on delete set null); create table COMMANDE ( NCOM char(12) not null, NCLI char(10) not null,..., primary key (NCOM), foreign key (NCLI) references CLIENT on delete no action on update cascade); create table CLIENT ( NCLI char(10) not null, primary key (NCLI) ) create table COMMANDE ( NCOM char(12) not null, NCLI char(10) not null, primary key (NCOM), foreign key (NCLI) references CLIENT on delete cascade); create table DETAIL ( NCOM char(12) not null, NPRO char(15) not null, foreign key (NCOM) references COMMANDE on delete no action); 8.10.5 Déterminisme des requêtes de modification update CLIENT set ADRESSE = LOCALITE, LOCALITE = ADRESSE; create table PERSONNE ( NPERS char (4) not null, NOM char(25) not null, RESPONSABLE char (4), primary key (NPERS), foreign key (RESPONSABLE) references PERSONNE on delete no action); delete from PERSONNE where NPERS = 'p2'; delete from PERSONNE where NPERS = 'p8'; I delete from PERSONNE where NPERS in ('p2','p8'); delete from PERSONNE where C; create table A(IA primary key,...); create table B(IB primary key, RA,..., foreign key (RA) reference A on delete cascade); create table C(IC primary key, RA,..., foreign key (RA) reference A on delete cascade);

8.10 Modification des données create table D(ID primary key, RB, RC,... foreign key (RB) reference B on delete cascade, foreign key (RC) reference C on delete no action); Dunod La photocopie non autorisée est un délit.

Chapitre 8 Le langage SQL DML (2)