3. LE LANGAGE SQL DML (2) Version 2 - Janvier 2012

Slides:



Advertisements
Présentations similaires
Bases de Données Avancées: Bases de Données Relationnelles
Advertisements

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
L’utilisation des bases de données
1 LE LANGAGE DE REQUETES SQL Origines et Evolutions SQL1 86: la base SQL1 89: l'intégrité.
21/04/2015© Robert Godin. Tous droits réservés.1 6Gestion des contraintes d’intégrité en SQL n Contrainte d'intégrité statique – respectée pour chacun.
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 de Manipulation de Données LMD. 2 Les ordres SQL de manipulation INSERT –Insertion (ajout) de ligne(s) dans une table –Utiliser SQL*LOAD pour.
Cours n°2 Implémentation et exploitation
Le Langage d ’ Interrogation des donn é es (LID) Module 2.
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.
Bases de données   J-L Hainaut I. Concepts des bases de données 1. Motivation et introduction 5. Les SGBD 2. Concepts des bases de données 3.
RAPPEL SUR LES BASES DE DONNÉES, LE SQL 1 er trimestre V1.0 06/01/2015.
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 –
1- Introduction Sommaire Modèle Logique des Données 2- Structure 3- Traduction du MCD en MLD 4- Recap - Méthodologie.
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.
Les Bases de données Définition Architecture d’un SGBD
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
Langage de Manipulation des Données LMD
Langage d’interrogation des Données LID
SQL LID – INTERROGATIN DES DONNEES
Maria Berger - Maîtrise d'AES Algèbre relationnelle.
SQL LMD FICHE 4.6.
Manipulation D’Une Base De Données
Langage d’interrogation des Données LID
SQL Structured Query Language
Cours de bases de données
4. LE LANGAGE SQL AVANCE 1re partie
6. PRODUCTION DU CODE DE LA BASE DE DONNEES
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.
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.
2. CONCEPTS DES BASES DE DONNEES
Langage d’interrogation des Données Les fonctions de groupes
Algèbre relationnelle
1. LE LANGAGE SQL DDL Version 2 - Janvier Le langage SQL-DDL
2. LE LANGAGE SQL DML (1) Version 2 - Janvier 2012
7 Contraintes d’intégrité en SQL
5 Introduction au modèle relationnel 5.1 Concepts de base
Les Requêtes S.Q.L « Structured Query Language). SQL Historique.
Info Bases de données avancées
Définition des contraintes Vérification des contraintes Triggers
2. CONCEPTS DES BASES DE DONNEES
Bases – Banques Entrepôts de données
SQL Structured Query Language
1. LE LANGAGE SQL DDL Version 1 - Mai 2009 corrigé le 11/2/2011
Systèmes d’Information et Application
Transcription de la présentation:

3. LE LANGAGE SQL DML (2) Version 2 - Janvier 2012 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3. LE LANGAGE SQL DML (2) Version 2 - Janvier 2012 Support du chapitre 8, Le langage SQL DML (2) de l'ouvrage Bases de données, J-L Hainaut, Dunod 2009. II. Utilisation des bases de données

3. LE LANGAGE SQL DML (2) 3.1 Les jointures 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3. LE LANGAGE SQL DML (2) 3.1 Les jointures 3.2 Opérateurs ensemblistes 3.3 Structures cycliques 3.4 Données groupées 3.5 Ordre et interprétation 3.6 Modification des données 3.7 Modification des structures Contenu II. Utilisation des bases de données

3.1 Les jointures 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.1 Les jointures II. Utilisation des bases de données

1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.1 Les jointures La jointure permet de produire une table constituée de données extraites de plusieurs tables : colonne commune NCOM DATECOM NCLI NOM LOCALITE 30178 30179 30182 30184 30185 30186 30188 21/12/2008 22/12/2008 23/12/2008 2/01/2009 3/01/2009 K111 C400 S127 F011 B512 VANBIST FERARD VANDERKA PONCELET GILLET Lille Poitiers Namur Toulouse table COMMANDE table CLIENT select NCOM, DATECOM, CLIENT.NCLI, NOM, LOCALITE from COMMANDE, CLIENT where COMMANDE.NCLI = CLIENT.NCLI; II. Utilisation des bases de données

3.1 Les jointures - Structure d'une requête de jointure 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.1 Les jointures - Structure d'une requête de jointure NCOM DATECOM NCLI NOM LOCALITE 30178 30179 30182 30184 30185 30186 30188 21/12/2008 22/12/2008 23/12/2008 2/01/2009 3/01/2009 K111 C400 S127 F011 B512 VANBIST FERARD VANDERKA PONCELET GILLET Lille Poitiers Namur Toulouse préfixe nécessaire car ambiguité select NCOM , DATECOM, CLIENT.NCLI, NOM, LOCALITE from COMMANDE, CLIENT where COMMANDE.NCLI = CLIENT.NCLI plusieurs tables condition de jointure II. Utilisation des bases de données

conditions de sélection 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.1 Les jointures - Variantes select CLIENT.NCLI, NOM, DATECOM, NPRO from CLIENT, COMMANDE, DETAIL where CLIENT.NCLI = COMMANDE.NCLI and COMMANDE.NCOM = DETAIL.NCOM; jointure de 3 tables select NCOM, CLIENT.NCLI, DATECOM, NOM, ADRESSE from COMMANDE, CLIENT where COMMANDE.NCLI = CLIENT.NCLI and CAT = 'C1' and DATECOM < '23-12-2009'; condition de jointure + conditions de sélection II. Utilisation des bases de données

3.1 Les jointures - Produit relationnel 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.1 Les jointures - Produit relationnel select NCOM, CLIENT.NCLI, DATECOM, NOM, ADRESSE from COMMANDE, CLIENT; pas de condition de jointure ! Produit relationnel : chaque ligne de COMMANDE est couplée avec chaque ligne de CLIENT requête valide mais d'utilité réduite II. Utilisation des bases de données

3.1 Les jointures - Notion de ligne célibataire 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.1 Les jointures - Notion de ligne célibataire La requête : select NCOM, CLIENT.NCLI, DATECOM, NOM, LOCALITE from COMMANDE, CLIENT where COMMANDE.NCLI = CLIENT.NCLI; . . . ignore les lignes de CLIENT qui n'ont pas de lignes correspondantes dans COMMANDE Ces lignes de CLIENT sont dites célibataires : select '--', NCLI, '--', NOM, LOCALITE from CLIENT where not exists (select * from COMMANDE where NCLI = CLIENT.NCLI); II. Utilisation des bases de données

= 3.1 Les jointures - Sous-requêtes ou jointures ? 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.1 Les jointures - Sous-requêtes ou jointures ? Peut-on remplacer une sous-requête par une jointure ? select NCOM,DATECOM from COMMANDE where NCLI in (select NCLI from CLIENT where LOCALITE = 'Poitiers'); = select NCOM,DATECOM from COMMANDE, CLIENT where COMMANDE.NCLI = CLIENT.NCLI and LOCALITE = 'Poitiers'; II. Utilisation des bases de données

  3.1 Les jointures - Sous-requêtes ou jointures ? Mais ... 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.1 Les jointures - Sous-requêtes ou jointures ? Mais ... 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'; II. Utilisation des bases de données

3.1 Les jointures - Sous-requêtes ou jointures ? 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.1 Les jointures - Sous-requêtes ou jointures ? La sous-requête permet de formuler  une condition d'association (in)  une condition de non-association (not in) La jointure permet de formuler  une condition d'association II. Utilisation des bases de données

3.1 Les jointures - Valeurs dérivées dans une jointure 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.1 Les jointures - 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' and D.NPRO = P.NPRO; II. Utilisation des bases de données

3.1 Les jointures - Jointures généralisées 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.1 Les jointures - Jointures généralisées pas de clé étrangère ! select distinct PRODUIT,VILLE,PRIX from VENTE V, IMPLANTATION I where V.CHAINE = I.CHAINE; II. Utilisation des bases de données

3.1 Les jointures - Interprétation du résultat d'une jointure 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.1 Les jointures - Interprétation du résultat d'une jointure  Une ligne de CLIENT représente un client.  Une ligne de COMMANDE représente une commande. select C.NCLI, NOM, LOCALITE from CLIENT C, COMMANDE M where M.NCLI = C.NCLI;  un client ?  un client qui a passé une commande ?  une commande ? Que représente chaque ligne de la jointure CLIENT * COMMANDE : Autre formulation : il y autant de lignes dans le résultat qu’il y a  de clients ?  de clients qui ont passé des commandes ?  de commandes ? II. Utilisation des bases de données

 TB 3.1 Les jointures - Interprétation du résultat d'une jointure 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.1 Les jointures - Interprétation du résultat d'une jointure select * from TA, TB where TA.IA = TB.RA;  TB Le résultat d'une jointure FK/Id représente les entités de la table de la clé étrangère II. Utilisation des bases de données

3.1 Les jointures - Interprétation du résultat d'une jointure 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.1 Les jointures - Interprétation du résultat d'une jointure select COMMANDE.NCOM,DATECOM,NCLI from COMMANDE,DETAIL where COMMANDE.NCOM = DETAIL.NCOM; select D.NCOM,D.NPRO,LOCALITE,LIBELLE from CLIENT CLI,COMMANDE COM,DETAIL D,PRODUIT P where CLI.NCLI = COM.NCLI and COM.NCOM = D.NCOM and D.NPRO = P.NPRO; II. Utilisation des bases de données

3.2 Opérations ensemblistes 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.2 Opérations ensemblistes union () intersection () différence (-) Pas de problèmes pour deux ensembles. Mais qu'en est-il pour deux tables ? II. Utilisation des bases de données

3.2 Opérations ensemblistes - Les ensembles 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.2 Opérations ensemblistes - Les ensembles Opérateurs ensemblistes entre 2 tables sans doublons T1 T2 GILLET AVRON MERCIER PONCELET NEUMAN MONTI JACOB T1 T2 NOM NOM GILLET AVRON MERCIER PONCELET NEUMAN MONTI NEUMAN JACOB MERCIER AVRON select NOM from T1 union from T2 NOM GILLET AVRON MERCIER PONCELET NEUMAN MONTI JACOB select NOM from T1 intersect from T2 NOM AVRON MERCIER NEUMAN select NOM from T1 except from T2 NOM GILLET PONCELET II. Utilisation des bases de données

3.2 Opérations ensemblistes - Les multi-ensembles 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.2 Opérations ensemblistes - Les multi-ensembles Opérateurs ensemblistes entre 2 tables avec doublons T1 T2 T1 T2 NUM NUM 34 34 12 93 12 34 27 93 12 34 49 12 12 27 12 12 49 select NUM from T1 union from T2 select NUM from T1 intersect from T2 NUM 34 12 select NUM from T1 except from T2 NUM 27 select NUM from T2 except from T1 NUM 93 49 NUM 12 34 27 93 49 II. Utilisation des bases de données

3.2 Opérations ensemblistes - Les multi-ensembles 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.2 Opérations ensemblistes - Les multi-ensembles Opérateurs multi-ensemblistes entre 2 tables avec doublons T1 T2 T1 T2 NUM NUM 34 34 12 93 12 34 27 93 12 34 49 12 12 27 12 12 49 select NUM from T1 union all from T2 select NUM from T1 intersect all from T2 select NUM from T1 except all from T2 select NUM from T2 except all from T1 NUM NUM NUM NUM 12 34 27 93 49 34 12 12 27 93 49 II. Utilisation des bases de données

3.2 Opérations ensemblistes - Expressions complexes 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.2 Opérations ensemblistes - Expressions complexes Les opérateurs peuvent être combinés (ex. différence symétrique) T1 T2 T1 T2 NOM NOM AVRON GILLET JACOB GILLET AVRON MERCIER PONCELET NEUMAN MONTI NEUMAN JACOB MERCIER AVRON MERCIER PONCELET NEUMAN MONTI (select NOM from T1 except select NOM from T2) union from T2 from T1) NOM GILLET PONCELET JACOB MONTI  II. Utilisation des bases de données

3.2 Opérations ensemblistes - Jointure externe 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.2 Opérations ensemblistes - Jointure externe Exemple pratique : la jointure externe select NCOM, CLIENT.NCLI, DATECOM, NOM, LOCALITE from COMMANDE, CLIENT where COMMANDE.NCLI = CLIENT.NCLI union select null as NCOM, NCLI, null as DATECOM, NOM, LOCALITE from CLIENT where not exists (select * from COMMANDE where NCLI = CLIENT.NCLI); En SQL3, il existe un opérateur spécifique (left | right outer join) II. Utilisation des bases de données

3.3 Les structures cycliques 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.3 Les structures cycliques Une table peut-elle se référencer elle-même ? Comment utiliser une telle table ? II. Utilisation des bases de données

3.3 Les structures cycliques - Structure directe 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.3 Les structures cycliques - Structure directe p1 p2 p8 p3 p4 p5 p6 p7 create table PERSONNE ( NPERS char (4) not null, NOM char(25) not null, RESPONSABLE char (4), primary key (NPERS), foreign key (RESPONSABLE) references PERSONNE); II. Utilisation des bases de données

3.3 Les structures cycliques - Structure directe 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.3 Les structures cycliques - Structure directe Associer à chaque subordonné le numéro et le nom de son responsable : 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, PERSONNE R where S.RESPONSABLE = R.NPERS and S.NOM = 'Dupont' union select NPERS, '--', '--' from PERSONNE where RESPONSABLE is null and NOM = 'Dupont'; Associer à chaque personne de nom 'Dupont' le numéro et le nom de son responsable : II. Utilisation des bases de données

3.3 Les structures cycliques - Structure directe 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.3 Les structures cycliques - Structure directe En SQL2, il n'est pas possible de retrouver en une seule requête tous les responsables (ou les subordonnés) directs et indirects d'une personne. En SQL3 : on pourra utiliser une requête récursive. II. Utilisation des bases de données

3.3 Les structures cycliques - Structure indirecte 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.3 Les structures cycliques - Structure indirecte II. Utilisation des bases de données

3.3 Les structures cycliques - Structure indirecte 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.3 Les structures cycliques - Structure indirecte create table PRODUIT ( NPRO char(4) not null primary key, LIBELLE char(25) not null, PRIX_U char(4), POIDS_U char(4)); create table COMPOSITION ( COMPOSE char(4) not null references PRODUIT, COMPOSANT char(4) not null references PRODUIT, QTE decimal(4) not null, primary key (COMPOSE,COMPOSANT)); II. Utilisation des bases de données

3.3 Les structures cycliques - Structure indirecte 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.3 Les structures cycliques - Structure indirecte table PRODUIT P1 P4 P2 P3 P7 8 P9 P8 5 P10 P12 1.7 P11 0.5 P6 3.5 P5 2 1 4 7 3 PRIX_U table COMPOSITION Structure typique d'une nomenclature de produits ou Bill of material (BoM) II. Utilisation des bases de données

3.3 Les structures cycliques - Structure indirecte 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.3 Les structures cycliques - Structure indirecte Donner la composition du produit 'p4' 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'; H.NPRO H.LIBELLE C.QTE B.NPRO B.LIBELLE p4 4 5 B-122 p8 p9 p10 G-993 F-016 J-500 PRODUIT composé (Haut) PRODUIT composant (Bas) II. Utilisation des bases de données

3.4 Les données groupées 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.4 Les données groupées II. Utilisation des bases de données

3.4 Les données groupées - Principe 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.4 Les données groupées - Principe le groupe des clients de Namur le groupe des clients de Poitiers le groupe des clients de Genève II. Utilisation des bases de données

On s'intéresse aux localités et non plus aux clients 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.4 Les données groupées - Principe select LOCALITE, count(*) as NOMBRE_CLIENTS, avg(COMPTE) as MOYENNE_COMPTE from CLIENT group by LOCALITE; LOCALITE NOMBRE_CLIENTS MOYENNE_COMPTE Bruxelles Geneve Lille Namur Paris Poitiers Toulouse 1 4 3 5 0.00 720.00 -2520.00 533.33 -2530.00 le groupe des clients de Namur le groupe des clients de Poitiers le groupe des clients de Genève On s'intéresse aux localités et non plus aux clients II. Utilisation des bases de données

3.4 Les données groupées - Sélection de groupes 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.4 Les données groupées - Sélection de groupes select LOCALITE, count(*), avg(COMPTE) from CLIENT group by LOCALITE having count(*) >= 3; LOCALITE count(*) avg(COMPTE) Namur Poitiers Toulouse 4 3 5 -2520.00 533.33 -2530.00 select NCLI, count(*) from COMMANDE group by NCLI having count(*) >= 2; II. Utilisation des bases de données

3.4 Les données groupées - Sélection de lignes et de groupes 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.4 Les données groupées - Sélection de lignes et de groupes select NCLI, count(*) from COMMANDE where NCOM in ( select NCOM from DETAIL where NPRO = 'PA45') group by NCLI having count(*) >= 2; sélection des lignes sélection des groupes II. Utilisation des bases de données

3.4 Les données groupées - Groupes dans une jointure 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.4 Les données groupées - Groupes dans une jointure 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) from CLIENT 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; II. Utilisation des bases de données

[*] sauf en MySQL, mais il n'y a pas de quoi en être fier ! 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.4 Les données groupées - Liste select et critère de groupement [*] select P.NPRO, QSTOCK - sum(D.QCOM) as SOLDE from DETAIL D, PRODUIT P where D.NPRO = P.NPRO group by P.NPRO; requête invalide ! select P.NPRO, QSTOCK - sum(D.QCOM) as SOLDE from DETAIL D, PRODUIT P where D.NPRO = P.NPRO group by P.NPRO, QSTOCK; NPRO SOLDE CS262 CS464 PA45 PA60 PH222 PS222 -15 -135 535 -1 690 620 [*] sauf en MySQL, mais il n'y a pas de quoi en être fier ! II. Utilisation des bases de données

3.4 Les données groupées - Composition du critère de groupement 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.4 Les données groupées - Composition du critère de groupement select LOCALITE,P.NPRO,sum(QCOM*PRIX) as Montant from CLIENT C, COMMANDE M, DETAIL D, PRODUIT P where M.NCLI = C.NCLI and M.NCOM = D.NCOM and D.NPRO = P.NPRO group by LOCALITE, P.NPRO; 2 colonnes CAT N null B C 2 8 6 select substring(CAT from 1 for 1) as CAT, count(*) as N from CLIENT group by substring(CAT from 1 for 1); expression II. Utilisation des bases de données

3.4 Les données groupées - Composition du critère de groupement 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.4 Les données groupées - Composition du critère de groupement select "de ", int(COMPTE/1000)*1000 as Min, " à ", int(COMPTE/1000)*1000 + 999 as Max, count(*) as N from CLIENT C group by int(COMPTE/1000); expression de Min à Max N de à -9000 -5000 -4000 -3000 -2000 1000 -8001 -4001 -3001 -2001 -1001 999 1999 1 2 9 II. Utilisation des bases de données

En SQL2, impossible en une seule requête 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.4 Les données groupées - Groupements multiniveaux select LOCALITE, sum(COMPTE), count(*) from CLIENT C, COMMANDE M where C.NCLI = M.NCLI group by LOCALITE; LOCALITE sum(COMPTE) count(*) Lille Namur Poitiers Toulouse 720.00 -4580.00 1050.00 -8700.00 1 3 2 FAUX (=350) LOCALITE sum(COMPTE) count(*) Lille Namur Poitiers Toulouse 720.00 -4580.00 1050.00 -8700.00 1 3 2 En SQL2, impossible en une seule requête II. Utilisation des bases de données

3.5 Ordre et interprétation 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.5 Ordre et interprétation II. Utilisation des bases de données

3.5 Ordre et interprétation - Ordre des lignes du résultat 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.5 Ordre et interprétation - Ordre des lignes du résultat select NCLI, NOM, LOCALITE from CLIENT where CAT in ('C1','C2') order by LOCALITE; ordonné par LOCALITE select * from CLIENT order by LOCALITE, CAT; ordonné par LOCALITE puis par CAT select LOCALITE, count(*) as POPULATION, sum(COMPTE) from CLIENT group by LOCALITE order by POPULATION desc; ordonné par une expression du select select NCOM, NPRO, QCOM from DETAIL D, PRODUIT P where D.NPRO = P.NPRO order by NCOM, QCOM*PRIX desc; ordonné par une expression explicite II. Utilisation des bases de données

3.5 Ordre et interprétation - Comment lire (écrire) une requête ? 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.5 Ordre et interprétation - Comment lire (écrire) 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 II. Utilisation des bases de données

3.6 Modification des données 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.6 Modification des données Trois opérateurs :  Insérer des lignes  Supprimer des lignes  Modifier des lignes II. Utilisation des bases de données

Insérer plusieurs lignes (dans une table) 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.6 Modification des données - Insertion de lignes Insérer une ligne insert into DETAIL values ('30185','PA45',12); insert into CLIENT (NCLI,NOM,ADRESSE,COMPTE,LOCALITE) values ('C402','BERNIER','avenue de France, 28',-2500,'Lausanne'); colonnes facultatives, valeurs par défaut Insérer plusieurs lignes (dans une table) insert into CLIENT_TOULOUSE select NCLI, NOM, ADRESSE from CLIENT where LOCALITE = 'Toulouse'; II. Utilisation des bases de données

3.6 Modification des données - Suppression de lignes 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.6 Modification des données - Suppression de lignes delete from CLIENT where NCLI = 'K111'; delete from DETAIL where NPRO in (select NPRO from PRODUIT where QSTOCK <= 0); delete from CLIENT where CAT is null; II. Utilisation des bases de données

3.6 Modification des données - Modification de lignes 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.6 Modification des données - 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%'; II. Utilisation des bases de données

! 3.6 Modification des données - Modification de lignes 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.6 Modification des données - Modification de lignes update PRODUIT P set QSTOCK = QSTOCK - (select sum(QCOM) from DETAIL where NPRO = P.NPRO); prévoir une TRES bonne assurance ! ! update PRODUIT P set QSTOCK = QSTOCK - (select sum(QCOM) from DETAIL where NPRO = P.NPRO) where exists (select * from DETAIL where NPRO = P.NPRO); En réalité, le problème sera autre : la modification échouera par violation de la contrainte not null associée à QSTOCK. L’intégrité des données ne sera pas vraiment mise en danger ! II. Utilisation des bases de données

Rappel 3.6 Modification des données - Intégrité référentielle 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.6 Modification des données - Intégrité référentielle Rappel {NCLI} clé étrangère de COMMANDE vers CLIENT insérer une ligne de COMMANDE la valeur de NCLI doit être présente dans la colonne NCLI d'une ligne de CLIENT modifier valeur de NCLI de COMMANDE la nouvelle valeur de NCLI doit être présente dans la colonne NCLI d'une ligne de CLIENT supprimer une ligne de CLIENT l'intégrité référentielle doit être satisfaite après l'opération plusieurs comportements possibles modifier valeur de NCLI de CLIENT l'intégrité référentielle doit être satisfaite après l'opération plusieurs comportements possibles II. Utilisation des bases de données

{NCLI} clé étrangère de COMMANDE vers CLIENT 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.6 Modification des données - Intégrité référentielle Rappel Comportement {NCLI} clé étrangère de COMMANDE vers CLIENT supprimer une ligne de CLIENT 1. mode no action opération refusée si lignes de COMMANDE dépendantes 2. mode cascade ligne supprimée mais aussi les lignes de COMMANDE dépendantes 3. mode set null (si NCLI de COMMANDE facultative) la colonne NCLI des lignes dépendantes de COMMANDE est mise à null 4. mode set default (si default pour NCLI de COMMANDE) la colonne NCLI des lignes dépendantes de COMMANDE est mises à la valeur par défaut II. Utilisation des bases de données

3.6 Modification des données - Intégrité référentielle 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.6 Modification des données - Intégrité référentielle Mode bloquant (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 no action); create table COMMANDE ( NCOM char(12) not null, NCLI char(10) not null, ..., primary key (NCOM), foreign key (NCLI) references CLIENT on update no action); II. Utilisation des bases de données

3.6 Modification des données - Intégrité référentielle 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.6 Modification des données - Intégrité référentielle Mode propagation (cascade) 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 COMMANDE ( NCOM char(12) not null, NCLI char(10) not null, ..., primary key (NCOM), foreign key (NCLI) references CLIENT on update cascade); II. Utilisation des bases de données

3.6 Modification des données - Intégrité référentielle 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.6 Modification des données - Intégrité référentielle Mode découplage (set null, set default) create table COMMANDE ( NCOM char(12) not null, NCLI char(10), ..., primary key (NCOM), foreign key (NCLI) references CLIENT on delete set null); NCLI facultative create table COMMANDE ( NCOM char(12) not null, NCLI char(10), ..., primary key (NCOM), foreign key (NCLI) references CLIENT on update set null); NCLI facultative II. Utilisation des bases de données

1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.6 Modification des données - Attention aux hiérarchies de clés étrangères 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); N'y a-t-il pas contradiction ? II. Utilisation des bases de données

3.7 Modification des structures de données 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.7 Modification des structures de données Si la base de données n'est pas vide, la modification des structures peut être soumise à des contraintes. II. Utilisation des bases de données

3.7 Modification des structures de données 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 3.1 Jointures 3.5 Ordre et interprétation 3.2 Opérateurs ensemblistes 3.6 Modification des données 3.3 Structures cycliques 3.7 Modification des structures 3.4 Données groupées 3.7 Modification des structures de données Ajout d'une colonne : si facultative : OK si default : OK sinon : la table doit être vide Suppression d'une colonne : si pas composant d'un identifiant : OK si pas composant d'une clé étrangère : OK sinon : d'abord supprimer l'identifiant ou clé étrangère Suppression d'une table : si pas cible d'une clé étrangère : OK sinon : d'abord supprimer la clé étrangère Ajout d'un identifiant : si table vide : OK sinon : d'abord vérifier l'unicité des données Ajout d'un clé étrangère : si table vide : OK sinon : d'abord vérifier l'intégrité référentielle des données II. Utilisation des bases de données

Fin du module 3 Module suivant : 4. Le langage SQL avancé 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé Fin du module 3 Module suivant : 4. Le langage SQL avancé II. Utilisation des bases de données

II. Utilisation des bases de données