création et alimentation de bases de données sql · cours 4 sql* est un langage standardisé,...

37
Création et alimentation de bases de données SQL Stéphane Crozat stph.scenari-community.org/bdd sql1.pdf 12 janvier 2018 Paternité - Partage des Conditions Initiales à l'Identique : http://creativecommons.org /licenses/by-sa/4.0/fr/

Upload: ngohanh

Post on 12-Sep-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

  • Cration et alimentation de bases

    de donnes SQL

    Stphane Crozat

    stph.scenari-community.org/bddsql1.pdf

    12 janvier 2018Paternit - Partage des Conditions Initiales l'Identique : http://creativecommons.org/licenses/by-sa/4.0/fr/

  • Table des matires

    I - Cours 4

    1. Le langage SQL .............................................................................................................................................. 5

    1.1. Le langage SQL ........................................................................................................................................................................... 51.2. Conseils pour l'apprentissage du SQL ........................................................................................................................................... 6

    2. Crer des tables en SQL (Langage de Dfinition de Donnes) ....................................................................... 6

    2.1. Exercice: Lab I++ ...................................................................................................................................................................... 72.2. Cration de tables ........................................................................................................................................................................ 82.3. Domaines de donnes ................................................................................................................................................................... 82.4. La valeur NULL ........................................................................................................................................................................ 102.5. Contraintes d'intgrit ................................................................................................................................................................ 102.6. Exemple de contraintes d'intgrit ............................................................................................................................................... 12

    3. Insrer, modifier et supprimer des donnes en SQL (Langage de Manipulation de Donnes) ..................... 13

    3.1. Exercice ..................................................................................................................................................................................... 133.2. Insertion de donnes par entre explicite des valeurs .................................................................................................................. 133.3. Insertion de valeurs par l'intermdiaire d'une slection ............................................................................................................... 143.4. Mise jour de donnes .............................................................................................................................................................. 153.5. Suppression de donnes .............................................................................................................................................................. 15

    4. Supprimer et modifier des tables en SQL (Langage de Dfinition de Donnes) .......................................... 16

    4.1. Suppression d'objets ................................................................................................................................................................... 164.2. Modification de tables ............................................................................................................................................................... 164.3. Exemple de modifications de tables ............................................................................................................................................ 17

    II - Exercices 19

    1. The show ....................................................................................................................................................... 19

    1.1. Exercice : tude du schma ........................................................................................................................................................ 201.2. Exercice: ................................................................................................................................................................................... 21

    2. Exercice: Du producteur au consommateur ................................................................................................. 21

    III - Devoir 23

    1. Exercice: Jeanne et Serge ............................................................................................................................. 23

    Contenus annexes 24

    Questions de synthse 26

    Solutions des exercices 27

    Glossaire 33

    Abrviations 34

  • Rfrences 35

    Bibliographie 36

    Webographie 37

  • Cours

    4

    est un langage standardis, implment par tous les , qui permet, indpendamment de la plate-SQL* SGBDR*

    forme technologique et de faon dclarative, de dfinir le modle de donnes, de le contrler et enfin de le manipuler.

    CoursI

  • Le langage SQL

    5

    - - - -

    -

    -

    -

    -

    1. Le langage SQL1.1. Le langage SQL

    (pour langage de requtes structur) est un langage dclaratif destin la manipulation de bases de SQL*

    donnes au sein des et plus particulirement des .SGBD* SGBDR*

    SQL est un langage dclaratif, il n'est donc pas a proprement parl un langage de programmation, mais plutt une interface standard pour accder aux bases de donnes.

    Il est compos de quatre sous ensembles :

    Le Langage de Dfinition de Donnes ( , ou en anglais DDL, ) pour crer LDD* Data Definition Languageet supprimer des objets dans la base de donnes (tables, contraintes d'intgrit, vues, etc.).Exemple de commandes: CREATE DROP ALTER

    Le Langage de Contrle de Donnes ( , ou en anglais DCL, ) pour grer les LCD* Data Control Languagedroits sur les objets de la base (cration des utilisateurs et affectation de leurs droits).Exemple de commandes: GRANT REVOKE

    Le Langage de Manipulation de Donnes ( , ou en anglais DML, ) pour LMD* Data Manipulation Languagela recherche, l'insertion, la mise jour et la suppression de donnes. Le LMD est bas sur les oprateurs relationnels, auxquels sont ajouts des fonctions de calcul d'agrgats et des instructions pour raliser les oprations d'insertion, mise jour et suppression.Exemple de commandes: INSERT UPDATE DELETE SELECTLe Langage de Contrle de Transaction (LCT, ou en anglais TCL, ) pour la Transaction Control Languagegestion des transactions (validation ou annulation de modifications de donnes dans la BD)Exemple de commandes: COMMIT ROLLBACK

    Gulutzan and Pelzer, 1999*

    Le modle relationnel a t invent par E.F. Codd (Directeur de recherche du centre IBM de San Jos) en 1970, suite quoi de nombreux langages ont fait leur apparition :

    IBM Sequel (Structured English Query Language) en 1977IBM Sequel/2IBM System/RIBM DB2

    Ce sont ces langages qui ont donn naissance au standard SQL, normalis en 1986 au tats-Unis par l' ANSI*

    pour donner SQL/86 (puis au niveau international par l' en 1987).ISO*

    Dfinition: SQL

    SQL: LDD, LCD, LMD, LCT

    Fondamental : Rfrence SQL: SQL-99 complete, really

    Complment : Origine du SQL

  • Conseils pour l'apprentissage du SQL

    6

    - -

    - -

    -

    -

    - - - SQL-86 (ou SQL-87): Version d'origine

    SQL-89 (ou SQL-1): Amliorations mineuresSQL-92 (ou SQL-2): Extensions fonctionnelles majeures (types de donnes, oprations relationnelles, instruction LDD, transactions, etc.

    SQL-99 (ou SQL-3): Introduction du (couche procdurale sous forme de procdure stockes) et du PSM*

    RO*

    SQL-2003: Extensions XML*

    SQL-2006: Amliorations mineures (pour XML notamment)SQL-2008: Amliorations mineures (pour le RO notamment)

    Selon leur niveau d'implmentation de SQL, les SGBD acceptent ou non certaines fonctions.

    Certains SGBD ayant entam certaines implmentations avant leur standardisation dfinitive, ces implmentations peuvent diffrer de la norme.

    1.2. Conseils pour l'apprentissage du SQL

    dbdisco.crzt.fr*

    Pour tester une base de donnes et voir si elle fonctionne, il faut l'alimenter avec des donnes, pour vrifier qu'elle permet effectivement de faire ce que l'on souhaite.

    Une base de donnes sans donnes, c'est au mieux une base, mais a n'est pas suffisant!

    Utiliser une rfrence correspondant son SGBDR.Dans le doute PostgreSQL est un des SGBDR les plus proches du standard et dont la documentation est la mieux faite: https://docs.postgresql.fr

    2. Crer des tables en SQL (Langage de Dfinition de Donnes)Objectifs

    Matriser les bases du SQL pour crer et modifier des tables et des vues.

    Le est la partie du langage SQL qui permet de crer de faon dclarative les objets composant une . LDD* BD*

    Il permet notamment la dfinition des schmas, des relations, des contraintes d'intgrit, des vues.

    Complment : Versions de SQL

    Remarque : Version SQL et implmentations SGBD

    Conseil : Le SQL, c'est du code informatique, il faut le faire fonctionner

    Conseil : Alimenter vos bases de donnes

    Conseil : Utiliser une rfrence en ligne

    https://docs.postgresql.fr

  • Exercice: Lab I++

    7

    -

    -

    - -

    -

    -

    -

    Rappel: Le code SQL peut tre test avec Db Disco*

    2.1. Exercice: Lab I++Description du problme

    [20 min]

    Un laboratoire souhaite grer les mdicaments qu'il conoit.

    Un mdicament est dcrit par un nom, qui permet de l'identifier. En effet il n'existe pas deux mdicaments avec le mme nom. Un mdicament comporte une description courte en franais, ainsi qu'une description longue en latin. On gre aussi le conditionnement du mdicament, c'est dire le nombre de pilules par bote (qui est un nombre entier). chaque mdicament on associe une liste de contre-indications, gnralement plusieurs, parfois aucune. Une contre-indication comporte un code unique qui lidentifie, ainsi qu'une description. Une contre-indication est toujours associe un et un seul mdicament.

    Exemple de donnes

    Afin de matrialiser notre base de donnes, nous obtenons les descriptions suivantes:

    Le a pour description courte et pour description longueChourix Mdicament contre la chute des choux Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique vitae, sagittis vel odio.

    . Il est conditionn en bote de 13.Maecenas convallis ullamcorper ultricies. Curabitur ornare.Ses contre-indications sont:

    CI1: Ne jamais prendre aprs minuit.CI2: Ne jamais mettre en contact avec de l'eau.

    Le a pour description courte et pour Tropas Mdicament contre les dysfonctionnements intellectuels description longue Suspendisse lectus leo, consectetur in tempor sit amet, placerat quis neque. Etiam

    . Il est conditionn en bote de 42.luctus porttitor lorem, sed suscipit est rutrum non.Ses contre-indications sont:

    CI3: Garder l'abri de la lumire du soleil

    Question 1

    Question 2

    Question 3

    Question 4

    Raliser le modle conceptuel de donnes en UML du problme.[ ]solution n1 *[ ] p.27

    En mobilisant les rgles adquates, proposer un modle logique de donnes correspondant en relationnel. Le reprage des domaines et des cls est obligatoire.

    [ ]solution n2 *[ ] p.27

    Crer une base de donnes en SQL correspondant au modle relationnel.[ ]solution n3 *[ ] p.27

    Insrer les donnes fournies en exemple dans la base de donnes.[ ]solution n4 *[ ] p.27

  • Cration de tables

    8

    - -

    2.2. Cration de tables

    Qu'est ce que le SQL ? (cf. p.5)

    La cration de table est le fondement de la cration d'une base de donnes en SQL.

    La cration de table est la dfinition d'un schma de relation en , par la spcification de tous les intension*

    attributs le composant avec leurs domaines respectifs.

    1 nom_table (2 nom_colonne1 domaine1,3 nom_colonne2 domaine2,4 ...5 nom_colonneN domaineN6 );

    1 Personne (2 Nom ( ),3 Prenom ( ),4 Age ( )5 );

    La dfinition des types n'est pas suffisante pour dfinir un schma relationnel, il faut lui adjoindre la dfinition de , qui permette de poser les notions de cl, d'intgrit rfrentielle, de restriction de contraintes d'intgritdomaines, etc.

    2.3. Domaines de donnes

    Un attribut d'une relation est dfini pour un certain domaine ou type. Les types de donnes disponibles en SQL

    varient d'un l'autre, on peut nanmoins citer un certain nombre de types standards que l'on retrouve SGBD*

    dans tous les SGBD.

    INTEGER ou INT, SMALLINTNUMERIC(X)

    Rappel

    Introduction

    Dfinition: Cration de table

    Syntaxe

    Exemple

    Attention : Contrainte d'intgrit

    Introduction

    Fondamental : Les types standard

    nom_table (CREATE TABLE

    nom_colonne1 domaine1,

    nom_colonne2 domaine2,

    ...

    nom_colonneN domaineN

    );

    Personne (CREATE TABLE

    Nom ( ),VARCHAR 25

    Prenom ( ),VARCHAR 25

    Age ( )NUMERIC 3

    );

  • Domaines de donnes

    9

    - -

    -

    -

    -

    -

    -

    -

    - -

    - -

    - - DECIMAL(X,Y) ou NUMERIC(X,Y)

    FLOAT(X), REAL

    CHAR(X)VARCHAR(X)

    DATE (AAAA-MM-JJ)DATETIME (AAAA-MM-JJ HH:MM:SS)

    Les nombres entiersINTEGER (ou INT) et SMALLINT, permettent de coder des entiers sur 4 octets (-2.147.483.648 2.147.483.647) ou 2 octets (-32.768 32.767).Les nombres entiersNUMERIC(X) dsigne un entier de X chiffres au maximum.Les nombres dcimauxDECIMAL(X,Y), o X et Y sont optionnels et dsignent respectivement le nombre de chiffres maximum pouvant composer le nombre, et le nombre de chiffres aprs la virgule.NUMERIC(X,Y) est un synonyme standard.Les nombres virgule flottanteFLOAT(X), avec X dfinissant la prcision (nombre de bits de codage de la mantisse).REAL est un synonyme standard de FLOAT(24).

    Il est conseill d'utiliser DECIMAL qui est un nombre exact, plutt que FLOAT qui est un nombre approximatif, si la prcision requise est suffisante. FLOAT sera rserv typiquement des calculs scientifiques ncessitant un degr de prcision suprieur.

    On distingue principalement les types CHAR(X) et VARCHAR(X), o X est obligatoire et dsigne la longueur de la chane.

    CHAR dfinit des chanes de longueur fixe (complte droites par des espaces, si la longueur est infrieure X);et VARCHAR des chanes de longueurs variables.

    CHAR et VARCHAR sont gnralement limits 255 caractres. La plupart des SGBD proposent des types, tels que TEXT ou CLOB (Character Long Object), pour reprsenter des chanes de caractres longues, jusqu' 65000 caractres par exemple.

    Les types date dont introduits avec la norme SQL2. On distingue:

    DATE qui reprsente une date selon un format de type "AAAA-MM-JJ";et DATETIME qui reprsente une date plus une heure, dans un format tel que "AAAA-MM-JJ HH:MM:SS".

    Les types numriques standard

    Conseil : FLOAT versus DECIMAL

    Les types chane de caractres standard

    Les types date standard

  • La valeur NULL

    10

    - -

    - - - -

    -

    - - -

    En fonction du SGBD, il peut exister de nombreux autres types. On peut citer par exemple:

    MONEY pour reprsenter des dcimaux associs une monnaie,BOOLEAN pour reprsenter des boolens,BLOB (pour Binary Long Oject) pour reprsenter des donnes binaires tels que des documents multimdia (images bitmap, vido, etc.)...

    2.4. La valeur NULL

    L'absence de valeur, reprsente par la valeur , est une information fondamentale en SQL, qu'il ne faut NULLpas confondre avec la chane de caractre ou bien la valeur 0. Il ne s'agit pas d'un type, ni d'une espacecontrainte, mais d'une valeur possible dans tous les types.

    Par dfaut en SQL fait partie du domaine, il faut l'exclure explicitement par la clause aprs NULL NOT NULLla dfinition de type, si on ne le souhaite pas.

    1 nom de (2 nom_table (3 nom_colonne1 domaine1 ,4 nom_colonne2 domaine2,5 ...6 nom_colonneN domaineN 7 );

    2.5. Contraintes d'intgrit

    PRIMARY KEY ()FOREIGN KEY (

  • Contraintes d'intgrit

    11

    -

    -

    - -

    -

    - - -

    Les contraintes d'intgrit sur une colonne sont :

    PRIMARY KEY : dfinit l'attribut comme la cl primaireUNIQUE : interdit que deux tuples de la relation aient la mme valeur pour l'attribut.REFERENCES () : contrle l'intgrit rfrentielle entre l'attribut et la table et ses colonnes spcifiesCHECK () : contrle la validit de la valeur de l'attribut spcifi dans la condition dans le cadre d'une restriction de domaine

    Les contraintes d'intgrit sur une table sont :

    PRIMARY KEY () : interdit que deux tuples de la relation aient les mmes valeurs pour l'ensemble des attributs de la liste.FOREIGN KEY (

  • Exemple de contraintes d'intgrit

    12

    -

    - - -

    Une contrainte sur une colonne peut toujours tre remplace par une contrainte sur une table.

    2.6. Exemple de contraintes d'intgrit

    1 Personne (2 NSS ( ) PRIMARY KEY,3 Nom ( ) ,4 Prenom ( ) ,5 Age ( ) CHECK (Age ),6 Mariage ( ) REFERENCES Personne(NSS),7 Codepostal ( ),8 Pays ( ),9 UNIQUE (Nom, Prenom),

    10 FOREIGN KEY (Codepostal, Pays) REFERENCES Adresse (CP, Pays)11 );1213 Adresse (14 CP ( ) ,15 Pays ( ) ,16 Initiale ( ) CHECK (Initiale = LEFT(Pays, )),17 PRIMARY KEY (CP, Pays)18 );

    Dans la dfinition de schma prcdente on a pos les contraintes suivantes :

    La cl primaire de Personne est NSS et la cl primaire de Adresse est (CP, Pays).Nom, Prnom ne peuvent pas tre null et (Nom, Prnom) est une cl.Age doit tre compris entre 18 et 65 et Initiale doit tre la premire lettre de Pays (avec la fonction LEFT qui renvoie la sous chane gauche de la chane passe en premier argument, sur le nombre de caractres passs en second argument)Mariage est cl trangre vers Personne et (Codepostal, Pays) est une cl trangre vers Adresse.

    1 Personne (2 NSS ( ) ,3 Nom ( ) ,4 Prenom ( ) ,5 Age ( ) ,6 Mariage ( ),7 Codepostal ( ),8 Pays ( ),9 PRIMARY KEY (NSS),

    10 UNIQUE (Nom, Prenom),11 CHECK (Age ),12 FOREIGN KEY (Mariage) REFERENCES Personne(NSS),13 FOREIGN KEY (Codepostal, Pays) REFERENCES Adresse (CP, Pays)14 );1516 Adresse (17 CP ( ) ,

    Remarque

    Exemple

    Exemple : Rcriture avec uniquement des contraintes de table

    Personne (CREATE TABLE

    NSS ( ) PRIMARY KEY,CHAR 13

    Nom ( ) ,VARCHAR 25 NOT NULL

    Prenom ( ) ,VARCHAR 25 NOT NULL

    Age ( ) CHECK (Age ),INTEGER 3 BETWEEN 18 AND 65

    Mariage ( ) REFERENCES Personne(NSS),CHAR 13

    Codepostal ( ),INTEGER 5

    Pays ( ),VARCHAR 50

    UNIQUE (Nom, Prenom),

    FOREIGN KEY (Codepostal, Pays) REFERENCES Adresse (CP, Pays)

    );

    Adresse (CREATE TABLE

    CP ( ) ,INTEGER 5 NOT NULL

    Pays ( ) ,VARCHAR 50 NOT NULL

    Initiale ( ) CHECK (Initiale = LEFT(Pays, )),CHAR 1 1

    PRIMARY KEY (CP, Pays)

    );

    Personne (CREATE TABLE

    NSS ( ) ,CHAR 13

    Nom ( ) ,VARCHAR 25 NOT NULL

    Prenom ( ) ,VARCHAR 25 NOT NULL

    Age ( ) ,INTEGER 3

    Mariage ( ),CHAR 13

    Codepostal ( ),INTEGER 5

    Pays ( ),VARCHAR 50

    PRIMARY KEY (NSS),

    UNIQUE (Nom, Prenom),

    CHECK (Age ),BETWEEN 18 AND 65

    FOREIGN KEY (Mariage) REFERENCES Personne(NSS),

    FOREIGN KEY (Codepostal, Pays) REFERENCES Adresse (CP, Pays)

    );

    Adresse (CREATE TABLE

    CP ( ) ,INTEGER 5 NOT NULL

  • Insrer, modifier et supprimer des donnes en SQL (Langage de Manipulation de Donnes)

    13

    18 Pays ( ) ,19 Initiale ( ),20 PRIMARY KEY (CP, Pays),21 CHECK (Initiale = LEFT(Pays, ))22 );

    Ce schma est strictement le mme que le prcdent, simplement les contraintes ont toutes t rcrites comme des contraintes de table.

    3. Insrer, modifier et supprimer des donnes en SQL (Langage de Manipulation de Donnes)

    Objectifs

    Matriser les bases du SQL pour entrer, modifier et effacer des donnes dans les tables.

    3.1. Exercice

    3.2. Insertion de donnes par entre explicite des valeurs

    Le langage SQL fournit des instructions pour ajouter des nouveaux tuples une relation. Il offre ainsi une interface standard pour ajouter des information dans une base de donnes.

    Il existe deux moyens d'ajouter des donnes, soit par fourniture directe des valeurs des proprits du tuple ajouter, soit par slection des tuples ajouter depuis une autre relation.

    1 ()2 ()

    1 Virement ( , Montant, Objet)2 ( - - , , );

    Quelle valeur renvoie la dernire instruction SQL de la liste ci-dessous :

    1 t (2 a ,3 b ,4 c );56 t ( , , );78 t ( , , );9

    10 sum(a) + (b) t;

    [ ]solution n5 *[ ] p.28

    Syntaxe : Insertion directe de valeurs

    Exemple

    Pays ( ) ,VARCHAR 50 NOT NULLInitiale ( ),CHAR 1

    PRIMARY KEY (CP, Pays),

    CHECK (Initiale = LEFT(Pays, ))1

    );

    ()INSERT INTO

    ()

    Virement ( , Montant, Objet)INSERT INTO Date

    ( - - , , );VALUES 14 07 1975 1000 'Prime de naissance'

    t (CREATE TABLE

    a ,integer

    b ,integer

    c );integer

    t ( , , );INSERT INTO VALUES 0 0 0

    t ( , , );INSERT INTO VALUES 1 0 0

    sum(a) + (b) t;SELECT count FROM

  • Insertion de valeurs par l'intermdiaire d'une slection

    14

    - -

    - - Les proprits non valorises sont affectes la valeur NULL.

    Il est possible de ne pas spcifier les proprits valoriser, dans ce cas, toutes les proprits de la relation seront considres, dans leur ordre de dfinition dans la relation ( n'utiliser que dans les cas les plus simples).

    Les chanes de caractre doivent tre protges par des apostrophes: 'Pour insrer une apostrophe, doubler le caractre: ''

    1 livre (titre) ( )

    La saisie des dates peut se faire de plusieurs faons dpendante du SGBD, la mthode la plus systmatique consiste utiliser la fonction o la chane de caractre respecte le format.TO_DATE(chane,format)

    Par exemple ou TO_DATE('20170330','YYYYMMDD') TO_DATE('30-03-2017','DD-MM- dsignent tous les deux le 30 mars 2017.YYYY')

    1 livre (pubdate) (TO_DATE( , ))

    Fonctions SQL * (cf. p.24)

    https://www.postgresql.org/docs/current/static/functions-formatting.html

    3.3. Insertion de valeurs par l'intermdiaire d'une slection

    1 ()2 ...

    L'instruction SELECT projetant un nombre de proprits identiques aux proprits valoriser.

    1 Credit ( , Montant, Objet)2 , Montant, 3 Debit4 Debit = - - ;

    Remarque

    Attention : Chanes de caractres

    Exemple

    Attention : Dates

    Exemple

    Complment

    Complment

    Syntaxe : Insertion de donnes par slection de valeurs existantes dans la base

    Exemple

    livre (titre) ( )INSERT INTO VALUES 'L''Attrape-curs'

    livre (pubdate) (TO_DATE( , ))INSERT INTO VALUES '20170330' 'YYYYMMDD'

    ()INSERT INTO

    ...SELECT

    Credit ( , Montant, Objet)INSERT INTO Date

    , Montant, SELECT Date 'Annulation de dbit'

    DebitFROM

    Debit = - - ;WHERE .Date 25 12 2001

    https://www.postgresql.org/docs/current/static/functions-formatting.html

  • Mise jour de donnes

    15

    - -

    Dans cet exemple tous les dbits effectus le 25 dcembre 2001, sont re-crdits pour le mme montant (et la mme date), avec la mention annulation dans l'objet du crdit. Ceci pourrait typiquement ralis en cas de dbits errons ce jour l.

    Les proprits non valorises sont affectes la valeur NULL.Il est possible de ne pas spcifier les proprits valoriser, dans ce cas, toutes les proprits de la relation seront considres, dans leur ordre de dfinition dans la relation ( n'utiliser que dans les cas les plus simples).

    3.4. Mise jour de donnes

    Le langage SQL fournit une instruction pour modifier des tuples existants dans une relation.

    1 2

  • Supprimer et modifier des tables en SQL (Langage de Dfinition de Donnes)

    16

    1 FaussesFactures2 Auteur=

    4. Supprimer et modifier des tables en SQL (Langage de Dfinition de Donnes)

    Objectifs

    Matriser les bases du SQL pour crer et modifier des tables et des vues.

    Le permet de crer les objets composant une de faon dclarative. Il permet notamment la LDD* BD*

    dfinition des schmas des relations, la dfinition des contraintes d'intgrit, la dfinition de vues relationnelles.

    4.1. Suppression d'objets

    Il est possible de supprimer des objets de la , tels que les tables ou les vues.BD*

    1

    1 Personne;2 VIEW Employe;

    4.2. Modification de tables

    L'instruction ALTER TABLE permet de modifier la dfinition d'une table (colonnes ou contraintes) pralablement cre.

    Cette commande absente de SQL-89 est normalise dans SQL-92

    1 2 ADD

    1

    Exemple : Suppression slective

    Syntaxe

    Exemple

    Introduction

    Syntaxe : Ajout de colonne

    Syntaxe : Suppression de colonne

    FaussesFacturesDELETE FROM

    Auteur=WHERE 'Moi'

    DROP

    Personne;DROP TABLE

    VIEW Employe;DROP

    ALTER TABLE table

    ADD

    ALTER TABLE table

  • Exemple de modifications de tables

    17

    1. 2. 3.

    2

    1 2 ADD

    Pour modifier une table ne contenant pas encore de donne, la commande ALTER n'est pas indispensable, l'on peut supprimer la table modifier (DROP) et la recrer telle qu'on la souhaite. Notons nanmoins que si la table est rfrence par des clauses FOREIGN KEY, cette suppression sera plus complique, car il faudra galement supprimer et recrer les tables rfrenantes (ce qui ce complique encore si ces dernires contiennent des donnes).

    Pour modifier une table contenant des donnes, la commande ALTER n'est pas indispensable. On peut en effet :

    Copier les donnes dans une table temporaire de mme schma que la table modifierSupprimer et recrer la table modifier avec le nouveau schmaCopier les donnes depuis la table temporaire vers la table modifie

    4.3. Exemple de modifications de tables

    Soit une table initiale telle que dfinie ci-aprs.

    1 Personne (2 pk_n ( ), 3 nom ( ),4 prenom ( ),5 PRIMARY KEY (pk_n)6 );

    On dcide d'apporter les amnagements suivants la table : on dfinit "nom" comme UNIQUE et on supprime le champ "prenom".

    1 Personne2 ADD UNIQUE (nom);34 Personne5 prenom;

    La table obtenue aprs modification est identique la table qui aurait t dfinie directement telle que ci-aprs.

    1 Personne (

    Syntaxe : Ajout de contrainte

    Remarque : Modification de table sans donne sans la commande ALTER

    Remarque : Modification de table avec donnes sans la commande ALTER

    Table initiale

    Modifications

    Table finale

    DROP

    ALTER TABLE table

    ADD table

    Personne (CREATE TABLE

    pk_n ( ), NUMERIC 4

    nom ( ),VARCHAR 50

    prenom ( ),VARCHAR 50

    PRIMARY KEY (pk_n)

    );

    PersonneALTER TABLE

    ADD UNIQUE (nom);

    PersonneALTER TABLE

    prenom;DROP

    Personne (CREATE TABLE

  • Exemple de modifications de tables

    18

    2 pk_n ( ), 3 nom ( ),4 PRIMARY KEY (pk_n),5 UNIQUE (nom)6 );

    pk_n ( ), NUMERIC 4 nom ( ),VARCHAR 50

    PRIMARY KEY (pk_n),

    UNIQUE (nom)

    );

  • Exercices

    19

    1. The show

    [30 minutes]

    Soit le schma relationnel suivant dcrivant un systme de rservations de places de spectacles :

    1 SPECTACLE (#nospectacle:int, nom:str, dure:minutes, type:{thtre|danse|concert})

    2 SALLE (#nosalle:int, nbplaces:int)3 REPRESENTATION (#date:timestamp, #nospectacle=>SPECTACLE, #nosalle=>SALLE, prix:decimal)

    ExercicesII

    SPECTACLE (#nospectacle:int, nom:str, dure:minutes, type:

    {thtre|danse|concert})SALLE (#nosalle:int, nbplaces:int)

    REPRESENTATION (#date:timestamp, #nospectacle=>SPECTACLE, #nosalle=>SALLE, prix:

    decimal)

  • Exercice

    20

    1.1. Exercice : tude du schma1.1.1. Exercice

    1.1.2. Exercice

    1.1.3. Exercice

    1.1.4. Exercice

    1.1.5. Exercice

    1.1.6. Exercice

    [ ]solution n6 *[ ] p.28

    Le schma permet de grer un espace de spectacles composs d'un ensemble de salles.

    Vrai

    Faux

    La dure du spectacle est donne en minutes.

    Vrai

    Faux

    Le type SQL dsigne un instant la seconde prs, par exemple: .TIMESTAMP 20/03/2017 10:37:22

    Vrai

    Faux

    On peut supposer que le champ dsigne le dbut d'une reprsentation.date

    Vrai

    Faux

    Deux spectacles identiques peuvent tre jous en mme temps dans deux salles diffrentes.

    Vrai

    Faux

    Deux spectacles diffrents peuvent tre jous en mme temps dans la mme salle.

    Vrai

    Faux

  • Exercice: Du producteur au consommateur

    21

    - - -

    1.2. Exercice:

    Question 1

    Question 2

    Question 3

    Question 4

    2. Exercice: Du producteur au consommateur[30 min]

    Soit le modle relationnel suivant:

    1 Producteur(#raison_sociale:chane(25), ville:chane(255))2 Consommateur(#login:chane(10), #email:chane(50), nom:chane(50),prenom:chane(50), ville:chane(255))

    3 Produit(#id:entier, description:chane(100), produit-par=>Producteur, consomme-par-login=>Consommateur, consomme-par-email=>Consommateur)

    On ajoute que:

    est une cl candidate de (nom,prenom,ville) ConsommateurTous les produits sont produitsTous les produits ne sont pas consomms

    Question 1

    Question 2

    Retro-concevoir le MCD en UML.[ ]solution n7 *[ ] p.29

    Proposer des contraintes d'intgrit ralistes pour ce schma (en franais).[ ]solution n8 *[ ] p.29

    Proposer une dfinition du schma en SQL qui prenne en compte certaines de ces contraintes.[ ]solution n9 *[ ] p.30

    Insrer des donnes ralistes dans votre schma afin de vrifier son bon fonctionnement.

    Rtro-concevez le modle conceptuel sous-jacent ce modle relationnel.[ ]solution n10 *[ ] p.30

    tablissez le code LDD standard permettant d'implmenter ce modle en SQL.[ ]solution n11 *[ ] p.31

    Producteur(#raison_sociale:chane(25), ville:chane(255))

    Consommateur(#login:chane(10), #email:chane(50), nom:chane(50),prenom:chane

    (50), ville:chane(255))Produit(#id:entier, description:chane(100), produit-par=>Producteur, consomme-

    par-login=>Consommateur, consomme-par-email=>Consommateur)

  • Exercice: Du producteur au consommateur

    22

    Question 3

    Question 4

    Question 5

    - -

    Insrez les donnes dans votre base de donnes correspondant aux assertions suivantes:

    L'entreprise de Compigne "Pommes Picardes SARL" a produit 4 lots de pommes, et 2 lots de cidre.Il existe trois utilisateurs consommateurs dans la base, donc les adresses mails sont:[email protected] - [email protected] - [email protected] sont des employs de la ville de Compigne qui habitent cette ville. Leur mail est construit sur le modle [email protected]. Leur login est leur prnom.

    [ ]solution n12 *[ ] p.31

    - - -

    Modifiez les donnes de votre base de donnes pour intgrer les assertions suivantes:

    1 lots de pommes a t consomms par Al Un.2 lots de pomme ont t consomm par Bob Deux.Tous les lots de cidre ont t consomms par Al Un.

    [ ]solution n13 *[ ] p.32

    Charlie Trois n'ayant rien consomm, modifiez votre base de donnes afin de le supprimer de la base.[ ]solution n14 *[ ] p.32

  • Devoir

    23

    1. Exercice: Jeanne et Serge[30 min]

    Vous avez en charge la ralisation d'une base de donnes pour grer un tournoi de Volley-Ball. Les quipes, identifies par un nom, sont composes de deux six joueurs dont on gre le nom et le prnom. Un match oppose deux quipes, une date donne et toujours renseigne, dont une est gagnante, et sont jous en deux sets gagnants (le score est donc toujours de 2 pour le gagnant et 0 ou 1 pour le perdant, on dcide donc de ne grer que le score du perdant). On notera que deux quipes se rencontrent au plus une fois.

    Question 1

    Question 2

    Question 3

    DevoirIII

    Raliser le modle conceptuel de la BD en utilisant le formalisme UML. noncer les ventuelles contraintes non reprsentes sur le schma.

    Traduire le MCD en modle logique relationnel. noncer les ventuelles contraintes non reprsentables en relationnel.

    Proposer une implmentation SQL du modle relationnel, en intgrant le maximum de contraintes. noncer les ventuelles contraintes non reprsentables en SQL.

  • Contenus annexes

    24Stphane Crozat (Contributions: Benjamin Lussier, Antoine Vincent)

    - -

    -

    - -

    -

    - - -

    -

    - - -

    -

    - -

    -

    - - - - -

    > Fonctions SQL

    Par opposition aux fonctions de calcul SQL qui s'appliquent sur toute la table pour raliser des agrgats (en ne renvoyant qu'une seule valeur par regroupement), les fonctions "mono-ligne" sont des fonctions au sens classique, qui s'appliquent une ou plusieurs valeurs et renvoient une valeur en retour.

    Les fonctions "mono-ligne" :

    Manipulent des lments de donnesAcceptent des arguments en entre et retournent des valeurs en sortieAgissent sur chaque ligneRetournent un seul rsultat par lignePeuvent modifier les types de donnes

    Traitement de chane

    CONCAT, SUBSTR, LENGTH, INSRT, LPAD, TRIMLOWER, UPPER, INITCAP

    Traitement de date

    MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY, LAST_DAYSELECT sysdate FROM dual

    Oprations mathmatiques sur les dates : SELECT sysdate + 10 FROM dual

    Traitement numrique

    ROUND, TRUNCFLOOR, CEILMOD

    Conversion

    Conversion impliciteConversion explicite : TO_DATE, TO_NUMBER, TO_CHAR

    Gnrales

    NVL (par exemple NVL(X,0) renvoie 0 si X vaut Null)CASE WHEN condition1 THEN valeur1 WHEN condition2 THEN valeur2 ELSE valeur3 END

    Contenus annexes

    Rappel

    Exemple

  • Contenus annexes

    25Stphane Crozat (Contributions: Benjamin Lussier, Antoine Vincent)

    - -

    - - - -

    - Imbrication de fonctions : F3(F2(F1(col,arg1),arg2),arg3)

    Les fonctions mono-ligne sont utilises pour :

    Transformer les donnesFormater des dates et des nombres pour l'affichageConvertir des types de donnes de colonnes...

    La fonction renvoie les B caractres partir du caractre A dans la chane X.SUBSTR(X, A, B)

    Fonctions SQL

    Vous pouvez consulter , page 9 12, pour avoir une description plus dtaille des Oracle : SQL*

    fonctions disponibles sous Oracle.

    1 tIntervenant (#pknom:varchar, prenom:varchar, poste:integer)2 tCours (#pkannee:2000..2100, #pknum:integer, titre:varchar, type:C|TD|TP, fkintervenant=>tIntervenant, debut:date)

    1 pknum cours,2 CASE 3 WHEN type= THEN 4 WHEN type= THEN 5 WHEN type= THEN 6 END type_label7 tCours

    1 COURS TYPE_LABEL 2 ----- -----------------3 1 Cours 4 2 Travaux dirigs

    Mthode

    Exemple : Extraction de chane

    Complment

    Rappel : BD "Gestion des intervenants": Schma relationnel

    Exemple : BD "Gestion des intervenants": Question avec CASE

    tIntervenant (#pknom:varchar, prenom:varchar, poste:integer)

    tCours (#pkannee:2000..2100, #pknum:integer, titre:varchar, type:C|TD|TP,

    fkintervenant=>tIntervenant, debut:date)

    pknum cours,SELECT AS

    CASE

    WHEN type= THEN 'C' 'Cours'

    WHEN type= THEN 'TD' 'Travaux dirigs'

    WHEN type= THEN 'TP' 'Travaux pratiques'

    END type_labelAS

    tCoursFROM

    COURS TYPE_LABEL

    ----- -----------------

    1 Cours

    2 Travaux dirigs

    http://docs.oracle.com/cd/B19188_01/doc/B15917/sqfunc.htm

  • Questions de synthse

    26Stphane Crozat (Contributions: Benjamin Lussier, Antoine Vincent)

    A quoi sert le LDD ?

    .........................................................................................................................................................................................................................................................

    .........................................................................................................................................................................................................................................................

    .........................................................................................................................................................................................................................................................

    .........................................................................................................................................................................................................................................................

    .........................................................................................................................................................................................................................................................

    .........................................................................................................................................................................................................................................................

    .........................................................................................................................................................................................................................................................

    En quoi le LDD est il un langage dclaratif ?

    .........................................................................................................................................................................................................................................................

    .........................................................................................................................................................................................................................................................

    .........................................................................................................................................................................................................................................................

    .........................................................................................................................................................................................................................................................

    .........................................................................................................................................................................................................................................................

    .........................................................................................................................................................................................................................................................

    .........................................................................................................................................................................................................................................................

    Quel rapport y-a-t il entre le LDD et le concept de relation ?

    .........................................................................................................................................................................................................................................................

    .........................................................................................................................................................................................................................................................

    .........................................................................................................................................................................................................................................................

    .........................................................................................................................................................................................................................................................

    .........................................................................................................................................................................................................................................................

    .........................................................................................................................................................................................................................................................

    .........................................................................................................................................................................................................................................................

    Questions de synthse

  • Solutions des exercices

    27Stphane Crozat (Contributions: Benjamin Lussier, Antoine Vincent)

    Exercice p. 7> Solution n4

    Exercice p. 7> Solution n3

    Exercice p. 7> Solution n2

    Exercice p. 7> Solution n1

    1 Medicament (#nom:varchar, description:varchar, description_longue:varchar, conditionnement:number)

    2 Contre_indication(#code:varchar, description:varchar, medicament=>Medicament)

    1 Medicament (2 nom , 3 description , 4 description_longue , 5 conditionnement ,6 PRIMARY KEY (nom)7 );89 Contre_indication (

    10 code , 11 description , 12 medicament ,13 PRIMARY KEY (code),14 FOREIGN KEY (medicament) REFERENCES Medicament (nom)15 );

    1 Medicament (nom,description,description_longue,conditionnement)2 ( , , , );3 Contre_indication (code,description,medicament)4 ( , , );5 Contre_indication (code,description,medicament)6 ( , , );

    Solutions des exercices

    Medicament (#nom:varchar, description:varchar, description_longue:varchar,

    conditionnement:number)Contre_indication(#code:varchar, description:varchar, medicament=>Medicament)

    Medicament (CREATE TABLE

    nom , varchar

    description , varchar

    description_longue , varchar

    conditionnement ,integer

    PRIMARY KEY (nom)

    );

    Contre_indication (CREATE TABLE

    code , varchar

    description , varchar

    medicament ,varchar

    PRIMARY KEY (code),

    FOREIGN KEY (medicament) REFERENCES Medicament (nom)

    );

    Medicament (nom,description,description_longue,conditionnement)INSERT INTO

    ( , , , );VALUES 'Chourix' 'Mdicament contre la chute des choux' 'Vivamus...' 13

    Contre_indication (code,description,medicament)INSERT INTO

    ( , , );VALUES 'CI1' 'Ne jamais prendre aprs minuit' 'Chourix'

    Contre_indication (code,description,medicament)INSERT INTO

    ( , , );VALUES 'CI2' 'Ne jamais mettre en contact avec de l''eau' 'Chourix'

  • Solutions des exercices

    28Stphane Crozat (Contributions: Benjamin Lussier, Antoine Vincent)

    Exercice p. 20> Solution n6

    -

    - -

    Exercice p. 13> Solution n5

    78 Medicament (nom,description,description_longue,conditionnement)9 ( , ,

    , );'Suspendisse...' 4210 Contre_indication (code,description,medicament)11 ( , , );

    Quelle valeur renvoie la dernire instruction SQL de la liste ci-dessous :

    1 t (2 a ,3 b ,4 c );56 t ( , , );78 t ( , , );9

    10 sum(a) + (b) t;

    6

    Contenus de la table :

    Aprs Create : Aprs Insert n1 :

    0 0 0

    Aprs Insert n2 :

    0 0 0

    1 0 0

    On a sum(a) = 1 et count(b) = 2 donc La requte renvoie .3

    Exercice

    Le schma permet de grer un espace de spectacles composs d'un ensemble de salles.

    Vrai

    Faux

    Exercice

    La dure du spectacle est donne en minutes.

    Vrai

    Faux

    Medicament (nom,description,description_longue,conditionnement)INSERT INTO

    ( , ,VALUES 'Tropas' 'Mdicament contre les dysfonctionnements intellectuels'

    , );'Suspendisse...' 42 Contre_indication (code,description,medicament)INSERT INTO

    ( , , );VALUES 'CI3' 'Garder l''abri de la lumire du soleil' 'Tropas'

    t (CREATE TABLE

    a ,integer

    b ,integer

    c );integer

    t ( , , );INSERT INTO VALUES 0 0 0

    t ( , , );INSERT INTO VALUES 1 0 0

    sum(a) + (b) t;SELECT count FROM

  • Solutions des exercices

    29Stphane Crozat (Contributions: Benjamin Lussier, Antoine Vincent)

    - -

    Exercice p. 21> Solution n7

    Exercice

    Le type SQL dsigne un instant la seconde prs, par exemple: .TIMESTAMP 20/03/2017 10:37:22

    Vrai

    Faux

    Exercice

    On peut supposer que le champ dsigne le dbut d'une reprsentation.date

    Vrai

    Faux

    Exercice

    Deux spectacles identiques peuvent tre jous en mme temps dans deux salles diffrentes.

    Vrai

    Faux

    Exercice

    Deux spectacles diffrents peuvent tre jous en mme temps dans la mme salle.

    Vrai

    Faux

    Classe d'association (cf. p.)Transformation des classes d'association (cf. p.)

    Complment : Classe d'association

  • Solutions des exercices

    30Stphane Crozat (Contributions: Benjamin Lussier, Antoine Vincent)

    Exercice p. 21> Solution n9

    - -

    -

    -

    -

    - -

    -

    Exercice p. 21> Solution n8

    sur SPECTACLES :

    le nom d'un spectacle est non nul,la dure d'un spectacle est comprise entre 60 minutes et 240 minutes,

    sur SALLES :

    la capacit d'une salle est comprise entre 100 et 500 places.

    sur REPRESENTATION :

    le prix d'une reprsentation est compris entre 10 et 50 ,certaines dates peuvent tre interdites (le premier mai par exemple).

    1 SPECTACLE (2 nospectacle ,3 nom ( ) ,4 duree ,5 type ( ),6 PRIMARY KEY (nospectacle),7 CHECK (duree> duree< ),8 CHECK (type ( , , ))9 );

    1 SALLE (2 nosalle ,3 nbplaces ,4 PRIMARY KEY (nosalle),5 CHECK (nbplaces> nbplaces< )6 );

    1 REPRESENTATION (2 nospectacle ,3 nosalle ,4 rdate ,5 prix ( , ),6 PRIMARY KEY (nosalle, , nospectacle),7 FOREIGN KEY (nospectacle) REFERENCES SPECTACLE(nospectacle),8 FOREIGN KEY (nosalle) REFERENCES SALLE(nosalle),9 CHECK (prix> prix< )

    10 );

    Exemple

    SPECTACLE (CREATE TABLE

    nospectacle ,integer

    nom ( ) ,varchar 30 NOT NULL

    duree ,integer

    type ( ),char 7

    PRIMARY KEY (nospectacle),

    CHECK (duree> duree< ),1 and 4

    CHECK (type ( , , ))in 'thtre' 'danse' 'concert'

    );

    SALLE (CREATE TABLE

    nosalle ,integer

    nbplaces ,integer

    PRIMARY KEY (nosalle),

    CHECK (nbplaces> nbplaces< )100 and 500

    );

    REPRESENTATION (CREATE TABLE

    nospectacle ,integer

    nosalle ,integer

    rdate ,date

    prix ( , ),decimal 3 2

    PRIMARY KEY (nosalle, , nospectacle),date

    FOREIGN KEY (nospectacle) REFERENCES SPECTACLE(nospectacle),

    FOREIGN KEY (nosalle) REFERENCES SALLE(nosalle),

    CHECK (prix> prix< )10 and 50

    );

  • Solutions des exercices

    31Stphane Crozat (Contributions: Benjamin Lussier, Antoine Vincent)

    Exercice p. 22> Solution n12

    Exercice p. 21> Solution n11

    Exercice p. 21> Solution n10

    Produits

    1 Producteur (2 raison_sociale ( ),3 ville ( ),4 PRIMARY KEY (raison_sociale)5 );67 Consommateur (8 login ( ),9 email ( ),

    10 nom ( ) ,11 prenom ( ) ,12 ville ( ) ,13 PRIMARY KEY (login,email),14 UNIQUE (nom,prenom,ville)15 );1617 Produit (18 id ,19 description ( ),20 produit_par ( ) ,21 consomme_par_login ( ),22 consomme_par_email ( ),23 PRIMARY KEY (id),24 FOREIGN KEY (produit_par) REFERENCES Producteur(raison_sociale),25 FOREIGN KEY (consomme_par_login,consomme_par_email) REFERENCES Consommateur(login,

    email)26 );

    1 -- Insertion du producteur2

    Producteur (CREATE TABLE

    raison_sociale ( ),VARCHAR 25

    ville ( ),VARCHAR 255

    PRIMARY KEY (raison_sociale)

    );

    Consommateur (CREATE TABLE

    login ( ),VARCHAR 10

    email ( ),VARCHAR 50

    nom ( ) ,VARCHAR 50 NOT NULL

    prenom ( ) ,VARCHAR 50 NOT NULL

    ville ( ) ,VARCHAR 255 NOT NULL

    PRIMARY KEY (login,email),

    UNIQUE (nom,prenom,ville)

    );

    Produit (CREATE TABLE

    id ,INTEGER

    description ( ),VARCHAR 100

    produit_par ( ) ,VARCHAR 25 NOT NULL

    consomme_par_login ( ),VARCHAR 10

    consomme_par_email ( ),VARCHAR 50

    PRIMARY KEY (id),

    FOREIGN KEY (produit_par) REFERENCES Producteur(raison_sociale),

    FOREIGN KEY (consomme_par_login,consomme_par_email) REFERENCES Consommateur(login,

    email));

    -- Insertion du producteur

  • Solutions des exercices

    32Stphane Crozat (Contributions: Benjamin Lussier, Antoine Vincent)

    Exercice p. 22> Solution n14

    Exercice p. 22> Solution n13

    3 INSERT INTO Producteur (raison_sociale, ville) 4 VALUES ('Pommes Picardes SARL', 'Compigne');56 -- Insertion des produits78 INSERT INTO Produit (id, description, produit_par) 9 VALUES (1, 'Lot de pommes', 'Pommes Picardes SARL');

    1011 INSERT INTO Produit (id, description, produit_par) 12 VALUES (2, 'Lot de pommes', 'Pommes Picardes SARL');1314 INSERT INTO Produit (id, description, produit_par) 15 VALUES (3, 'Lot de pommes', 'Pommes Picardes SARL');1617 INSERT INTO Produit (id, description, produit_par) 18 VALUES (4, 'Lot de pommes', 'Pommes Picardes SARL');1920 INSERT INTO Produit (id, description, produit_par) 21 VALUES (5, 'Lot de cidre', 'Pommes Picardes SARL');2223 INSERT INTO Produit (id, description, produit_par) 24 VALUES (6, 'Lot de cidre', 'Pommes Picardes SARL');2526 -- Insertion des consommateurs2728 INSERT INTO Consommateur (login, email, nom, prenom, ville)29 VALUES ('Al', '[email protected]', 'Un', 'Al', 'Compigne');3031 INSERT INTO Consommateur (login, email, nom, prenom, ville)32 VALUES ('Bob', '[email protected]', 'Deux', 'Bob', 'Compigne');3334 INSERT INTO Consommateur (login, email, nom, prenom, ville)35 VALUES ('Charlie', '[email protected]', 'Trois', 'Charlie', 'Compigne');

    1 UPDATE produit 2 SET consomme_par_login='Al', consomme_par_email='[email protected]'3 WHERE id=1;45 UPDATE produit 6 SET consomme_par_login='Bob', consomme_par_email='[email protected]'7 WHERE id=2 OR id=3;89 UPDATE produit

    10 SET consomme_par_login='Al', consomme_par_email='[email protected]'11 WHERE description='Lot de cidre';1213

    1 DELETE FROM consommateur2 WHERE login='Charlie' AND email='[email protected]';

    INSERT INTO Producteur (raison_sociale, ville)

    VALUES ('Pommes Picardes SARL', 'Compigne');

    -- Insertion des produits

    INSERT INTO Produit (id, description, produit_par)

    VALUES (1, 'Lot de pommes', 'Pommes Picardes SARL');

    INSERT INTO Produit (id, description, produit_par)

    VALUES (2, 'Lot de pommes', 'Pommes Picardes SARL');

    INSERT INTO Produit (id, description, produit_par)

    VALUES (3, 'Lot de pommes', 'Pommes Picardes SARL');

    INSERT INTO Produit (id, description, produit_par)

    VALUES (4, 'Lot de pommes', 'Pommes Picardes SARL');

    INSERT INTO Produit (id, description, produit_par)

    VALUES (5, 'Lot de cidre', 'Pommes Picardes SARL');

    INSERT INTO Produit (id, description, produit_par)

    VALUES (6, 'Lot de cidre', 'Pommes Picardes SARL');

    -- Insertion des consommateurs

    INSERT INTO Consommateur (login, email, nom, prenom, ville)

    VALUES ('Al', '[email protected]', 'Un', 'Al', 'Compigne');

    INSERT INTO Consommateur (login, email, nom, prenom, ville)

    VALUES ('Bob', '[email protected]', 'Deux', 'Bob', 'Compigne');

    INSERT INTO Consommateur (login, email, nom, prenom, ville)

    VALUES ('Charlie', '[email protected]', 'Trois', 'Charlie', 'Compigne');

    UPDATE produit

    SET consomme_par_login='Al', consomme_par_email='[email protected]'

    WHERE id=1;

    UPDATE produit

    SET consomme_par_login='Bob', consomme_par_email='[email protected]'

    WHERE id=2 OR id=3;

    UPDATE produit

    SET consomme_par_login='Al', consomme_par_email='[email protected]'

    WHERE description='Lot de cidre';

    DELETE FROM consommateur

    WHERE login='Charlie' AND email='[email protected]';

  • Glossaire

    33Stphane Crozat (Contributions: Benjamin Lussier, Antoine Vincent)

    Intension

    L'intension est l'explicitation d'un domaine par la description de ses caractristiques (en vue de sa comprhension abstraite, gnrale).

    Elle s'oppose l'extension qui est l'nonciation exhaustive de l'ensemble des objets du domaine.

    Exemple: Le domaine des couleursContre-exemple: {bleu, rouge, vert}

    Glossaire

  • Signification des abrviations

    34Stphane Crozat (Contributions: Benjamin Lussier, Antoine Vincent)

    ANSI : American National Standards Institute

    BD : Base de Donnes

    ISO : International Standardization Organization

    LCD : Langage de Contrle de Donnes

    LDD : Langage de Dfinition de Donnes

    LMD : Langage de Manipulation de Donnes

    PSM : Persistent Stored Modules

    RO : Relationnel-Objet

    SGBD : Systme de Gestion de Bases de Donnes

    SGBDR : Systme de Gestion de Bases de Donnes Relationnelles

    SQL : Structured Query Language

    XML : eXtensible Markup Language

    Abrviations

  • Rfrences

    35Stphane Crozat (Contributions: Benjamin Lussier, Antoine Vincent)

    dbdisco.crzt.frDB Disco est une application web permettant de crer une base de donnes temporaire (les donnes sont effaces la dconnexion).http://dbdisco.crzt.fr

    Rfrences

    http://dbdisco.crzt.fr

  • Bibliographie

    36Stphane Crozat (Contributions: Benjamin Lussier, Antoine Vincent)

    Gulutzan Peter, Pelzer Trudy. . . 1999 SQL-99 complete, really CMP books.

    Bibliographie

  • Webographie

    37Stphane Crozat (Contributions: Benjamin Lussier, Antoine Vincent)

    , , , Roegel Denis Oracle : SQL http://www.loria.fr/~roegel/cours/iut/oracle-sql.pdf 1999.

    Webographie

    http://www.loria.fr/~roegel/cours/iut/oracle-sql.pdf

    CoursLe langage SQLLe langage SQLConseils pour l'apprentissage du SQL

    Crer des tables en SQL (Langage de Dfinition de Donnes)Exercice: Lab I++Cration de tablesDomaines de donnesLa valeur NULLContraintes d'intgritExemple de contraintes d'intgrit

    Insrer, modifier et supprimer des donnes en SQL (Langage de Manipulation de Donnes)ExerciceInsertion de donnes par entre explicite des valeursInsertion de valeurs par l'intermdiaire d'une slectionMise jour de donnesSuppression de donnes

    Supprimer et modifier des tables en SQL (Langage de Dfinition de Donnes)Suppression d'objetsModification de tablesExemple de modifications de tables

    ExercicesThe showExercice : tude du schmaExercice:

    Exercice: Du producteur au consommateur

    DevoirExercice: Jeanne et Serge

    Contenus annexesQuestions de synthseSolutions des exercicesGlossaireAbrviationsRfrencesBibliographieWebographie