1. LE LANGAGE SQL DDL 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é 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1. LE LANGAGE SQL DDL Version 2 - Janvier 2012 Support du chapitre 6, Le langage SQL DDL de l'ouvrage Bases de données, J-L Hainaut, Dunod 2009. II. Utilisation des bases de données
1. LE LANGAGE SQL DDL 1.1 Introduction 1.2 Création d'un schéma 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1. LE LANGAGE SQL DDL 1.1 Introduction 1.2 Création d'un schéma 1.3 Création d'une table 1.4 Modification d'une table 1.5 Les structures physiques 1.6 Exemple Contenu 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é 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.1 INTRODUCTION Le sous-langage DDL de SQL permet de créer des structures de données et de les modifier. Etude de SQL92 ou SQL2 (pour SQL3, voir chapitre 4) Langage standardisé mais les éditeurs de SGBD ont pris beaucoup de libertés : concepts non repris concept additionnels non standard interprétation personnelle de certains concepts Certains concepts sont ignorés par le standard II. Utilisation des bases de données
1.1 Introduction Les opérations du DDL : Création d’un schéma 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.1 Introduction Les opérations du DDL : Création d’un schéma Création d’une table colonnes (obligatoire) domaine identifiants primaire et secondaire clé étrangère Suppression d’une table Ajout, suppression, modification d’une colonne Ajout, suppression d’une contrainte Ajout, suppression d’un index Création d’un espace de stockage autres (voir chapitre 4) II. Utilisation des bases de données
1.2 CREATION D'UN SCHEMA create schema CLICOM; 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.2 CREATION D'UN SCHEMA Création d'un schéma create schema CLICOM; Connexion à une base de données connect to ADMIN\SERV01 as CON_21Dec2009_002 user 'jlh' password 'jlhclicom'; Déconnexion disconnect CON_21Dec2009_002; II. Utilisation des bases de données
1.3 CREATION D'UNE TABLE a) Tables, colonnes et domaines 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.3 CREATION D'UNE TABLE a) Tables, colonnes et domaines b) Les identifiants c) Les clés étrangères d) Suppression d'une table Contenu II. Utilisation des bases de données
Création d'une table et de ses colonnes 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.3 Création d'une table - Tables, colonnes et domaines Création d'une table et de ses colonnes create table CLIENT ( NCLI char(10), NOM char(32), ADRESSE char(60), LOCALITE char(30), CAT char(2), COMPTE decimal(9,2) ); 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é 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.3 Création d'une table - Tables, colonnes et domaines Les types de base numérique exact smallint, integer, decimal, numeric approché real, float, double chaîne de bits longueur fixe bit longueur variable bit varying longueur indéfinie BLOB caractères longueur fixe char longueur variable character varying longueur indéfinie CLOB temps date date instant time instant daté timestamp intervalle interval booléen boolean II. Utilisation des bases de données
Les domaines 1.3 Création d'une table - Tables, colonnes et domaines 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.3 Création d'une table - Tables, colonnes et domaines Les domaines Définition d'un domaine : create domain MONTANT decimal(9,2); create domain MATRICULE char(10); create domain LIBELLE char(32); Utilisation d'un domaine : create table CLIENT ( NCLI MATRICULE, NOM LIBELLE, ADRESSE char(60), LOCALITE LIBELLE, CAT char(2), COMPTE MONTANT ); II. Utilisation des bases de données
Les colonnes obligatoires 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.3 Création d'une table - Tables, colonnes et domaines Les colonnes obligatoires Une colonne est facultative par défaut. Il faut déclarer explicitement les colonnes obligatoires create table CLIENT ( NCLI char(10) not null, NOM char(32) not null, ADRESSE char(60) not null, LOCALITE char(30) not null, CAT char(2), COMPTE decimal(9,2) not null ); II. Utilisation des bases de données
Valeur par défaut d'une colonne 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.3 Création d'une table - Tables, colonnes et domaines Valeur par défaut d'une colonne Sera assignée à la colonne si on ne spécifie pas de valeur lors de la création d'une ligne create table CLIENT ( NCLI char(10) not null, NOM char(32) not null, ADRESSE char(60) not null, LOCALITE char(30) not null default 'Paris', CAT char(2) default 'B1', COMPTE decimal(9,2) not null default 0.0 ); create domain MONTANT decimal(9,2) default 0.0; II. Utilisation des bases de données
Les identifiants primaires (primary key) 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.3 Création d'une table - Les identifiants Les identifiants primaires (primary key) create table CLIENT ( NCLI char(10) not null, NOM char(32) not null, ADRESSE char(60) not null, LOCALITE char(30) not null, CAT char(2), COMPTE decimal(9,2) not null, primary key (NCLI) ); II. Utilisation des bases de données
Les identifiants secondaires (candidate key) 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.3 Création d'une table - Les identifiants Les identifiants secondaires (candidate key) create table CLIENT ( NCLI char(10) not null, NOM char(32) not null, ADRESSE char(60) not null, LOCALITE char(30) not null, CAT char(2), COMPTE decimal(9,2) not null, primary key (NCLI), unique (NOM) ); II. Utilisation des bases de données
Les clés étrangères (foreign key) 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.3 Création d'une table - Les clés étrangères Les clés étrangères (foreign key) create table COMMANDE (NCOM char(12) not null, NCLI char(10) not null, DATECOM date not null, primary key (NCOM), foreign key (NCLI) references CLIENT); Si l'identifiant cible est secondaire (possible mais déconseillé) : foreign key (NOM) references CLIENT(NOM) II. Utilisation des bases de données
Les clés étrangères mixtes 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.3 Création d'une table - Les clés étrangères Les clés étrangères mixtes Cas délicat : clé étrangère multi-composants dont certains composants sont facultatifs. create table ETUDIANT (NINSCR char(12) not null, ANNEE date not null, TITRE char(48), primary key (NINSCR), foreign key (ANNEE, TITRE) references MEMOIRE); Comment gérer les valeurs null ? II. Utilisation des bases de données
Les clés étrangères mixtes 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.3 Création d'une table - Les clés étrangères Les clés étrangères mixtes foreign key (ANNEE, TITRE) references MEMOIRE match simple match simple : si toutes les colonnes de la clé étrangère possèdent une valeur, la contrainte référentielle est évaluée, sinon elle est ignorée. foreign key (ANNEE, TITRE) references MEMOIRE match full match full : si les colonnes sont toutes null, la contrainte est ignorée. Si elles sont toutes non null, elle est évaluée. Dans les autres cas, elle n’est pas satisfaite. foreign key (ANNEE, TITRE) references MEMOIRE match partial match partial : la contrainte est évaluée pour les colonnes non null. La table cible doit contenir au moins une ligne dont l’identifiant comporte les valeurs non null de la clé étrangère. II. Utilisation des bases de données
Variante : contraintes de colonne 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.3 Création d'une table - Les clés étrangères Variante : contraintes de colonne create table CLIENT ( NCLI char(10) not null primary key, . . . ); create table CLIENT ( NCLI char(10) not null, NOM char(32) not null unique, . . . ); create table COMMANDE ( NCOM char(12) not null, NCLI char(10) not null references CLIENT, . . . ); II. Utilisation des bases de données
Variante : contraintes nommées 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.3 Création d'une table - Les clés étrangères Variante : contraintes nommées create table COMMANDE (NCOM char(12) not null, NCLI char(10) not null, DATECOM date not null, constraint COMPK primary key (NCOM), constraint COMFK foreign key (NCLI) references CLIENT); create table COMMANDE ( NCOM char(12) constraint COMPK not null, NCLI char(10) not null constraint COMFK references CLIENT, . . . ); II. Utilisation des bases de données
Suppression d'une table 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.3 Création d'une table - Suppression d'une table Suppression d'une table drop table COMMANDE; Attention, opération sous haute surveillance ! la table ne doit plus être référencée par une clé étrangère; la table DETAIL (ou sa clé étrangère vers COMMANDE) doit avoir été supprimée II. Utilisation des bases de données
1.4 MODIFICATION D'UNE TABLE 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.4 MODIFICATION D'UNE TABLE a) Ajout, retrait et modification d'une colonne b) Ajout et retrait d'une contrainte Contenu II. Utilisation des bases de données
Ajout, retrait et modification d'une colonne 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.4 Modification d'une table - Colonnes Ajout, retrait et modification d'une colonne alter table PRODUIT add column POIDS smallint; ajouter alter table PRODUIT drop column PRIX; supprimer alter table CLIENT modify column CAT set '00'; modifier valeur par défaut alter table CLIENT modify column CAT drop default; supprimer valeur par défaut II. Utilisation des bases de données
Ajout et retrait d'une contrainte 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.4 Modification d'une table - Contraintes Ajout et retrait d'une contrainte alter table PROSPECT add primary key (NCLI); alter table CLIENT add unique (NOM,ADRESSE,LOCALITE); alter table CLIENT modify CAT not null; alter table CLIENT modify ADRESSE null; alter table CLIENT add foreign key (CAT) references CATEGORIE ; II. Utilisation des bases de données
Variantes : contraintes nommées 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.4 Modification d'une table - Contraintes Variantes : contraintes nommées alter table PROSPECT add constraint PROPK primary key (NCLI); alter table CLIENT add constraint CLIUN unique (NOM,ADRESSE,LOCALITE); alter table CLIENT add constraint CLIFK1 foreign key (CAT) references CATEGORIE ; II. Utilisation des bases de données
Suppression d'une contrainte nommée 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.4 Modification d'une table - Contraintes Suppression d'une contrainte nommée alter table PROSPECT drop constraint PROPK; II. Utilisation des bases de données
1.5 LES STRUCTURES PHYSIQUES 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.5 LES STRUCTURES PHYSIQUES a) Les index b) Les espaces de stockage Contenu II. Utilisation des bases de données
Les index 1.5 Les structures physiques - Les index 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.5 Les structures physiques - Les index create unique index XCLI_NCLI on CLIENT(NCLI); Les index create index XCLI_LOC on CLIENT (LOCALITE); create index XCLI_LOC on CLIENT (LOCALITE asc); si index ordonné drop index XCLI_LOC; II. Utilisation des bases de données
Les espaces de stockage 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.5 Les structures physiques - Les espaces de stockage Les espaces de stockage create dbspace CLI_PRO_DAT; create table CLIENT ( . . . ) in CLI_PRO_DAT; drop dbspace CLI_PRO_DAT; si espace vide II. Utilisation des bases de données
1.6 EXEMPLE 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.6 EXEMPLE II. Utilisation des bases de données
Traduire ce schéma en SQL 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.6 Exemple - Le schéma Traduire ce schéma en SQL II. Utilisation des bases de données
1.6 Exemple - Le schéma et les espaces de stockage 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.6 Exemple - Le schéma et les espaces de stockage create schema CLICOM; create dbspace CLI_PRO_DAT; create dbspace COM_DAT; II. Utilisation des bases de données
1.6 Exemple - Les tables create table CLIENT ( NCLI char(10) not null, 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.6 Exemple - Les tables create table CLIENT ( NCLI char(10) not null, NOM char(32) not null, ADRESSE char(60) not null, LOCALITE char(30) not null, CAT char(2), COMPTE decimal(9,2) not null, primary key (NCLI) ) in CLI_PRO_DAT; create table PRODUIT ( NPRO char(15) not null, LIBELLE char(60) not null, PRIX decimal(6) not null, QSTOCK decimal(8) not null, primary key (NPRO) ) in CLI_PRO_DAT; create table COMMANDE (NCOM char(12) not null, NCLI char(10) not null, DATECOM date not null, primary key (NCOM), foreign key (NCLI) references CLIENT) in COM_DAT; create table DETAIL ( NCOM char(12) not null, NPRO char(15) not null, QCOM decimal(8) not null, primary key (NCOM,NPRO), foreign key (NCOM) references COMMANDE, foreign key (NPRO) references PRODUIT) in COM_DAT; II. Utilisation des bases de données
1.6 Exemple - Les index create index CLINCLI on CLIENT (NCLI); 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé 1.1 Introduction 1.5 Les structures physiques 1.2 Création d'un schéma 1.6 Exemple 1.3 Création d'une table 1.4 Modification d'une table 1.6 Exemple - Les index create index CLINCLI on CLIENT (NCLI); create index CLINOM on CLIENT (NOM); create index CLILOC on CLIENT (LOCALITE); create index COMNCOM on COMMANDE (NCOM); create index COMNOM on COMMANDE (NCLI); create index PRONPRO on PRODUIT (NPRO); create index DETCOMPRO on DETAIL (NCOM,NPRO); create index DETPRO on DETAIL (NPRO); II. Utilisation des bases de données
Fin du chapitre 1 Chapitre suivant : 2. Le langage SQL DML (1) 1. Le langage SQL-DDL 2. Le langage SQL DML (1) 3. Le langage SQL DML (2) 4. Le langage SQL avancé Fin du chapitre 1 Chapitre suivant : 2. Le langage SQL DML (1) II. Utilisation des bases de données