Sunteți pe pagina 1din 45

Bases de Données

 Cours
• Langage algébrique (SQL)
• Méthode Merise (MCD)
• Création des tables et CI
• Langage PL/SQL
 Séances
• 12 séances de cours
• 11 séances de TD
• 8 séances de TP
• 8 séances de TPNE

1
CG
BASE DE DONNEES EXEMPLE

Formation (Numfor, Libelle, Durée )

Personne (Numpers, Nom, Prenom )

Inscrit (Numpers, Numfor )

2
CG
Bases de données

 SQL
Projection : SELECT liste d'attributs FROM nomTable;

Sélection : SELECT * FROM nomTable WHERE Condition;

Jointure : SELECT * FROM nomTable,nomTable


WHERE Condition de jointure;
ou
SELECT * FROM Nomtable
INNER JOIN Nomtable ON condition de jointure;

3
CG
Bases de données

 JOINTURE
• Jointure avec égalité
• Jointure externe
• Auto jointure

4
CL
Bases de données

SQL Permet également d'exprimer l'UNION, l'INTERSECTION et la


DIFFERENCE sur des ensembles

UNION : UNION
INTERSECTION : INTERSECT
DIFFERENCE : MINUS

5
CG
Bases de données

Les fonctions d'agrégat


•COUNT (*) : compte le nombre d’enregistrements
•COUNT (Col): compte le nombre de valeurs renseignées
dans cette colonne
•COUNT (distinct col) : compte le nombre de valeurs
renseignées et distinctes dans cette colonne
•SUM( col) : somme d’une colonne
•AVG (col) : moyenne d’une colonne
•MIN (col) : valeur minimum d’une colonne
•MAX (col) : valeur maximum d’une colonne

EX : Select max(duree) from formation;


EX : Select libelle from formation
where duree =(select max(duree) from formation;
6
CG
Bases de données

 LMD - SQL

Groupements de Données
• GROUP BY liste d'attributs
• GROUP BY liste HAVING Conditions
EX : select libelle,count(*)
from formation f, inscrit I
where f.numfor=i.numfor
group by libelle
having count(*) >=3;

7
CG
Bases de données

 Mises à Jour des données

 INSERT Insérer des tuples


 DELETE Supprimer des tuples
 UPDATE Modifier des valeurs dans les tuples

 Commit Validation des modifications


 Rollback Annulation des modifications

8
CG
BDD - Merise

 MODELE CONCEPTUEL DE DONNEES

Le modèle conceptuel des données (MCD) a pour but


d'écrire de façon formelle les données qui seront utilisées
par le système d'information. Il s'agit donc d'une
représentation des données, facilement compréhensible,
permettant de décrire le système d'information à l'aide
d'entités.

9
CG
BDD - Merise

 La propriété (ou attribut ou rubrique)


 Information élémentaire
• Nom, prenom d’un individu

 L’entité ou individu-type

10
CG
BDD - Merise

 Identifiant
Un identifiant est un ensemble de propriétés (une ou
plusieurs) permettant de désigner une et une seule entité.
La définition originale est la suivante : L'identifiant est une
propriété particulière d'un objet telle qu'il n'existe pas
deux occurrences de cet objet pour lesquelles cette
propriété pourrait prendre une même valeur.

11
CG
BDD - Merise

 L’association (ou relation-type)

• Réflexive, Binaire, Tertiaire, N-aire


• Porteuse de données

12
CG
BDD - Merise

 Cardinalités
Les cardinalités permettent de caractériser le lien qui existe
entre une entité et la relation à laquelle elle est reliée
 Cardinalité minimum 0 ou 1
 Cardinalité maximum 1 ou n

dans certaines situations, la lettre n peut être remplacée


par une valeur.

13
CG
BDD - Merise

 Cardinalités

0,1 0,1

14
CG
BDD - Merise

 Cardinalités

0,1 0,n

15
CG
BDD - Merise

 Cardinalités

0,n 0,n

16
CG
BDD - Merise

 Cardinalités CE2
CE1
Lien

CE3

17
CG
BDD - Merise

 CIF CE2
CE1
Lien

CE3

18
CG
BDD - Merise

 Exemples :
 Un salarie habite dans une ville et travaille dans une
ville

 Un joueur de tennis joue un match contre un autre


joueur.

 Un élève emprunte un livre à une date donné.

19
CG
BDD - Merise

 MLD :
Le MCD ne peut pas être directement manipulée et
acceptée par un système informatique. Il est donc
nécessaire de passer du niveau conceptuel à un niveau plus
proche des capacités des systèmes informatiques. Ce
niveau, appelé niveau logique, consiste à choisir l’un des
trois modèles suivants :
• - modèle hiérarchique (années 80),
• - modèle réseau,
• - ou modèle relationnel

20
CG
BDD - Merise

Règles de passage du MCD au modèle relationnel

 Toute entité devient une relation.


 L’identifiant de l’entité devient clé primaire de la
relation.

Exemple : ELEVE(NUMERO, NOM, PRENOM)

21
CG
BDD - Merise

 Associations :
 binaire de type (1-n) ou (1-1) :
• entraîne l’intégration de l’identifiant de l’entité dans
la relation associée à l’entité source.
 de type (m-n) :
• devient une relation qui hérite des identifiants des
entités participants à la relation. Si l’association est
porteuse, la relation sera complétée par la liste des
propriétés portées.

22
CG
Bases de données

 Création des tables


Create table nomtable (
Col1 type [constraint nomcontrainte Deflacontrainte],
Col2 type [constraint nomcontrainte Deflacontrainte],
……
Coln type [constraint nomcontrainte Deflacontrainte],
[constraint nomcontrainte Deflacontrainte]
);

23
CG
Bases de données

Types de données
 Char(N) N<=2000
 Varchar2(N) ou Varchar(N) N <=4000
 Number(p,s)
 Long 2 Go maxi
 Date : JJ/MM/AAAA HH:MM:SS
 BLOB Données Binaires non structurées 128 To
 CLOB Chaine de caractères 128 To
 BFILE Données binaires stockées dans des fichiers
exterieures
24
CG
Bases de données

 Contrainte d’intégrité

 NULL ou NOT NULL


 PRIMARY KEY
 UNIQUE
 CHECK
 REFERENCES

25
CG
Bases de données

 Triggers
Create or replace trigger nomtrigger
Before/After insert or update or delete on nomtable
For each row
Declare

Begin
Instruction
End;
/
26
CG
Bases de données

 DROP TABLE Nom

 CASCADE CONSTRAINTS permet de supprimer les


contraintes d’intégrité référentielles dans les tables
enfants

 PURGE permet de libérer l’espace physique occupée


par cette table.

27
CG
Bases de données

 ALTER TABLE nom


 ADD / MODIFY Colonne ou une contrainte
 DROP Colonne ou une contrainte
 ENABLE VALIDATE / NOVALIDATE contrainte
 DISABLE contrainte
 RENAME anciennomTable TO nouveaunomtable
 FLASHBACK TABLE nomtable
 TO BEFORE DROP
 TO TIMESTAMP dateheure

28
CG
Bases de données

INDEX

 CREATE INDEX nom ON table(Col1, Col2)

 DROP INDEX nom

29
CG
Chapitre 2
PL/SQL

Le PL/SQL est un langage qui intègre SQL et permet de


programmer de manière procédurale.
 Syntaxes
 Séquences
 Curseurs
 Procédures Indépendantes Stockées
 Fonctions stockées
 Packages

30
CG
Chapitre 2
PL/SQL

 Type de variable
 Char
 Varchar2 ou Varchar
 Number
 Date
 Table.col%type
 Table%rowtype

31
CG
Chapitre 2
PL/SQL

 Boucles
 WHILE condition LOOP
 End LOOP;

 FOR in IN 1 .. 30 Loop
 End LOOP;

 LOOP
 EXIT WHEN condition ;
 End LOOP;
32
CG
Chapitre 2
PL/SQL

 CASE
 Case
 when condition then
 When condition then
 ………….
else
End case;

33
CG
Chapitre 2
PL/SQL

 TEST
 IF condition then
 else
 End IF;

 IF condition then
 Elsif condition then
 Else
 End IF;

34
CG
Chapitre 2
PL/SQL

 Les Séquences

Create sequence num_seq


Increment by n
Start with v;
Avec n>=1 et v>=1
Si increment by est omis, la séquence sera incrémentée de
1 (n=1)
Si Start with est omis, la séquence commencera à 1 (v=1)

35
CG
Chapitre 2
PL/SQL

 Utilisation des séquences

Nexval et Currval sont des Pseudo colonnes de la séquence

Nextval : prochaine valeur de la séquence


Currval : Dernière valeur utilisée de la séquence dans la
session.

36
CG
Chapitre 2
PL/SQL

 Les curseurs
PL/SQL utilise des curseurs pour tout accès à des
informations de la BD.
Déclaration : CURSOR nom IS SELECT …..
Ouverture : OPEN nom
Fermeture : CLOSE nom
Extraction d’une ligne : FETCH nom INTO Var1,Var2,…

37
CG
Chapitre 2
PL/SQL

 Les curseurs
Il y a quatre attributs associés aux curseurs PL/SQL

 %NOTFOUND
 %FOUND
 %ROWCOUNT
 %ISOPEN

38
CG
Chapitre 2
PL/SQL

 Les curseurs de boucles FOR …LOOP


declare
CURSOR curs_liste IS select nom from client;
begin
For enreg in curs_liste loop
dbms_output.put_line('Nom : '|| enreg.nom);
end loop;
end;

39
CG
Chapitre 2
PL/SQL
Gestion des exceptions
 Exceptions prédéfinies
 NO DATA FOUND
 TOO MANY ROWS
 CURSOR ALREADY OPEN
 INVALID CURSOR
 ……
 Exceptions définies par utilisateur
 Nomexceptiont EXCEPTION (dans la partie déclarative)
 RAISE nomexception (dans le corps du programme)
 EXCEPTION (à la fin du block)
• WHEN nomexception THEN <instructions>
• WHEN no data found THEN <instructions>
• WHEN OTHERS THEN <instructions>

• SQLERRM contient le message d’erreur


• SQLCODE contient le numéro de l’erreur

40
CG
Chapitre 2
PL/SQL

Les procédures indépendantes

CREATE [OR REPLACE] PROCEDURE nom_procedure


[ (argument1 type ….[, argumentN type)]
IS
[ déclaration_variables_locales]
BEGIN
Section_executable
[section exception]
END [nom_procedure] ;

41
CG
Chapitre 2
PL/SQL

 Procédure indépendantes
Pour exécuter une procédure indépendante
 Sous SQLPLUS, On tape la commande suivante :
SQL > execute NOMPROCEDURE(Arg1,Arg2, ….)
 Dans un bloc PLSQL
BEGIN
NOMPROCEDURE(Arg1,Arg2, ….);
END;

42
CG
Chapitre 2
PL/SQL

 Fonctions stockées

CREATE [OR REPLACE] FUNCTION nom_fonction


[ (argument1 ….[, argumentN)]
RETURN type_données_fonction IS
[ déclaration_variables_locales]
BEGIN
Section_executable
[section exception]
RETURN valeur_fonction
END [nom_fonction] ;

43
CG
Chapitre 2
PL/SQL

Fonctions stockées

Pour exécuter une fonction, on utilise la commande


SELECT

44
CG
Chapitre 2
PL/SQL

 Les Packages
CREATE [OR REPLACE] PACKAGE nom_package IS
Section_declaration
END nom_package ;
/

CREATE PACKAGE BODY nom_package IS


Section_declaration
Corps_procédure ;
Corps_fonction ;
END nom_package ;
/

45
CG

S-ar putea să vă placă și