You are on page 1of 79

Cours:SGBD

jointure

Objectifs des systmes de gestion de bases de


donnes

Les bases de donnes et les systmes de

gestion de bases de donnes ont t crs


pour rpondre un certain nombre de besoins
et pour rsoudre un certain nombre de
problmes.
Des objectifs principaux ont t fixs aux
systmes de gestion de bases de donnes ds
l'origine de ceux-ci et ce, afin de rsoudre les
problmes causs par la dmarche classique.

Objectifs des systmes de gestion de bases de


donnes
Ces objectifs sont les suivants :
[Indpendance physique]

La faon dont les donnes sont dfinies doit tre indpendante


des structures de stockages utilises.
[Indpendance logique]

Un mme ensemble de donnes peut tre vu diffremment par


des utilisateurs diffrents. Toutes ces visions personnelles des
donnes doivent tre intgrs dans une vision globale.
[Manipulations des donnes par des non informaticiens]

Il faut pouvoir accder aux donnes sans savoir programmer ce


qui signifie des langages ``quasi naturels''.

Objectifs des systmes de gestion de bases de


donnes
[Efficacit des accs aux donnes]

Ces langages doivent permettre d'obtenir des rponses aux interrogations en un


temps ``raisonnable''. Ils doivent donc tre optimiss et, entre autres, il faut un
mcanisme permettant de minimiser le nombre d'accs disques. Tout ceci, bien
sur, de faon compltement transparente pour l'utilisateur.
[Administration centralise des donnes]

Des visions diffrentes des donnes (entre autres) se rsolvent plus facilement si
les donnes sont administres de faon centralise.
[Non redondance des donnes]
Afin d'viter les problmes lors des mises jour, chaque donne ne doit tre
prsente qu'une seule fois dans la base.
[Cohrence des donnes]

Les donnes sont soumises un certain nombre de contraintes d'intgrit qui


dfinissent un tat cohrent de la base. Elles doivent pouvoir tre exprimes
simplement et vrifies
automatiquement chaque insertion, modification ou suppression des donnes.

Objectifs des systmes de gestion de bases de


donnes
[Partageabilit des donnes]

Il s'agit de permettre plusieurs utilisateurs d'accder aux mmes donnes au


mme moment. Si ce problme est simple rsoudre quand il s'agit
uniquement 'interrogations et quand on est dans un contexte monoutilisateur, cela n'est plus le cas quand il s'agit de modifications dans un
contexte muti-utilisateurs. Il s'agit alors de pouvoir :
permettre deux (ou plus) utilisateurs de modifier la mme donne
``en mme temps'' ;
assurer un rsultat d'interrogation cohrent pour un utilisateur
consultant une table pendant qu'un autre la modifie.
[Scurit des donnes]
Les donnes doivent pouvoir tre protges contre les accs non autoriss.
Pour cela, il faut pouvoir associer chaque utilisateur des droits d'accs aux
donnes.
.

Objectifs des systmes de


gestion de bases de donnes
[Rsistance aux pannes]

Que se passe-t-il si une panne survient au milieu d'une modification, si


certains fichiers
contenant les donnes deviennent illisibles? Les pannes, bien qu'tant assez
rares, se produisent quand mme de temps en temps. Il faut pouvoir,
lorsque l'une d'elles arrive, rcuprer une base dans un tat ``sain''. Ainsi,
aprs une panne intervenant au milieu d'une modification deux solutions
sont possibles :
soit rcuprer les donnes dans l'tat dans lequel elles taient avant la
modification,
soit terminer l'opration interrompue.

Malheureusement, ces objectifs ne sont pas toujours atteints

Concepts de base
Pour assurer ces objectifs (surtout les deux premiers), trois niveaux de description des
donnes ont t dfinis par la norme ANSI/SPARC.
Niveau interne
Description du stockage des donnes au niveau des units de stockage, des fichiers, ...
On
appelle cette description le schma interne.
Niveau conceptuel

Description de la structure de toutes les donnes qui existent dans la base, description
de leurs proprits (relations qui existent entre elles) c'est--dire de leur smantique
inhrente, sans soucis d'implmentation physique ni de la faon dont chaque groupe
de travail voudra s'en servir. On appelle cette description le schma conceptuel.
Niveau externe

Description pour chaque utilisateur de sa perception des donnes. On appelle cette


description le schma externe ou vue.

Concepts de base
Le rsultat de la conception d'une base de donnes sera une

description des donnes.


description : * dfinir les proprits d'ensembles d'objets

modliss dans la base de donnes


Cette description des donnes sera effectue en utilisant un

modle de donnes. Ce dernier est un outil intellectuel utilis pour


comprendre l'organisation logique des donnes.
Modle des donnes :* C'est un ensemble de concepts et de rgles

pour les utiliser, permettant de construire avec des types de


donnes une reprsentation de la ralit.
Un SGBD est caractris par le modle de description des donnes

qu'il supporte. Les donnes sont dcrites sous la forme de ce


modle, grce un langage de description des donnes. Cette
description est appele schma.

Concepts de base
Une fois la base de donnes spcifie, on peut y :
insrer des donnes,
les rcuprer,
les modifier
et les dtruire.
C'est ce qu'on appelle manipuler les
donnes. Les donnes peuvent tre manipules
non seulement par un langage spcifique de
manipulation des donnes mais aussi par des
langages de programmation ``classiques'.

Composants des systmes de


gestion de bases de donnes
Un systme de gestion de bases de donnes va donc possder un
certain nombre de composants logiciels et ce, quelque soit le
modle de donnes qu'il supporte. On trouve donc des composants
chargs de :
La description des donnes
Cette partie sera constitue des outils (en gros des langages)
permettant de dcrire la vision des donnes de chaque utilisateur
et l'intgration dans une vision globale. On y trouve aussi les outils
permettant de dcrire le stockage physique des donnes.
La rcupration des donnes
Cette partie prend en charge l'interrogation et la modification des
donnes et ce, de faon optimise. Elle est compose de langages
de manipulation de donnes spcifiques et d'extensions de
langages ``classiques''. Elle gre aussi les problmes de scurit.

Composants des systmes de


gestion de bases de donnes
La sauvegarde et la rcupration aprs pannes

Cette partie comporte des outils permettant de sauvegarder


et de restaurer de faon explicite une base de donnes.
Elle comporte aussi des mcanismes permettant, tant
qu'une modification n'est pas finie, de pouvoir revenir
l'tat de la base avant le dbut de cette modification.
Les accs concurrents aux donnes
C'est la partie charge du contrle de la concurrence des
accs aux donnes. Elle doit tre telle que chaque
utilisateur attende le moins possible ses donnes tout en
tant certain d'obtenir des donnes cohrentes en cas de
mises jour simultanes de la base.

SGBD :conclusion
Systmes de Gestion de Bases de Donnes (DataBase
Management Systems - DBMS) :

Ensemble de logiciels systmes permettant aux


utilisateurs d'insrer, de modifier, et de
rechercher efficacement des donnes spcifiques
dans une grande masse d'informations (pouvant
atteindre plusieurs milliards d'octets) partage
par de multiples utilisateurs
Exemples : MySQL, PostgreSQL (utilis en L3), Oracle,
Microsoft SQLServer, etc.

SGBD ( 2/2)
Principales fonctionnalits dun SGBD :
Cration et mises jour de la structure de la base
de donnes (par le concepteur et/ou le DBA DataBase
Administrator)
Administration de la base de donnes : gestion des
utilisateurs, des droits daccs etc. (par ladministrateur
DBA)
Saisie et mises jour des donnes (par le concepteur
et/ou les utilisateurs)
Interrogation des donnes selon diffrents critres
et/ou en effectuant des calculs (par les utilisateurs)

Exemple de SGBD: Oracle


SGBDR (Relationnel) qui utilise:
le langage SQL
Langage procdural PL/SQL (dit L4G)
Nombreux programmes utilitaires
SQL*PLUS : SQL interactif, avec quelques ajouts
SQL*FORMS : saisir/voir des donnes avec des
Formulaires
SQL*REPORTWRITER : rapports imprims
WebDB pour linterface avec le Web

Le Langage SQL

Prsentation de SQL
SQL=Structured Query Language c'est--dire Langage d'interrogation
structur.
Il a t conu par IBM dans les annes 70. Il est devenu le langage
standard des systmes de gestion de bases de donnes (SGBD)
relationnelles (SGBDR).
C'est une Langage complet de gestion de bases de donnes
relationnelles.
Elle permet :
Dinterroger
(LID; Langage dInterrogation des Donnes :ordre
SELECT)
De mettre jour (LMD ; Langage de Manipulation des Donnes :
ordres UPDATE, INSERT, DELETE)
De dfinir les donnes (LDD ; Langage de Dfinition des donnes
gres : ordres CREATE, ALTER, DROP),
De contrler laccs aux donnes (LCD ; Langage de Contrle de
laccs aux Donnes ordres GRANT,REVOKE)

Norme SQL92 (ou SQL2)


Norme adopte en 1992 par l ISO

(International
Organisation for Standardization)
Presque compltement implmente par les
principaux SGBD : Oracle, DB2, Informix,
MySQL, PostsgreSQL, Access, SQL Server,
La norme SQL99 (ou SQL3) est dj l depuis
longtemps mais elle est loin dtre
implmente par tous ces SGBD

Objets manipuls
par SQL

Objets manipuls par SQL

1. Identificateurs
SQL utilise des identificateurs pour dsigner les objets qu'il manipule :

utilisateurs, tables, colonnes, index, fonctions, etc.


Un identificateur est un mot form d'au plus 30 caractres, commenant
obligatoirement par une lettre de l'alphabet. Les caractres suivants
peuvent tre une lettre, un chiffre, ou l'un des symboles # $ et _. SQL ne
fait pas la diffrence entre les lettres minuscules et majuscules. Les voyelles
accentues ne sont pas acceptes.

Un identificateur ne doit pas figurer dans la liste des mot cls rservs (voir

manuel de rfrence Oracle). Voici quelques mots cls que l'on risque d'utiliser
comme identificateurs : ASSERT, ASSIGN, AUDIT, COMMENT, DATE,
DECIMAL, DEFINITION, FILE, FORMAT, INDEX, LIST, MODE, OPTION,
PARTITION, PRIVILEGES, PUBLIC, REF, REFERENCES, SELECT,
SEQUENCE, SESSION, SET, TABLE, TYPE.

Objets manipuls par SQL

2.Tables

Relations stockes sous forme de tables

composes de lignes et de colonnes


SQL92 : le nom dune table est prcd du
nom dun schma (pour runir tous les objets
lis un mme thme)
Sous Oracle, le schma est remplac par le
nom de lutilisateur qui a cr la table :
L2_RSI.DEPT
Par dfaut, le schma est le nom de
lutilisateur connect

Exemple de table ; DEPARTEMENT


Dept

NomD

Lieu

10

Finances

Tunis

20

Recherche

Sousse

30

Ventes

Sfax

Exemple de table ;
EMPLOYE
Matr

Nom

Sal

Com

1780

Imen

2500

2200

Seif

3000

500

1200

Imed

2500

300

Sup

Dept

2200

20
10

2200

10

Objets manipuls par SQL

2.Colonne
Toutes les donnes dune colonne sont dun

mme type
Identificateur unique pour les colonnes dune
table, mais 2 colonnes dans 2 tables
diffrentes peuvent avoir le mme nom
Le nom complet dune colonne comprend le
nom de la table laquelle elle appartient
(obligatoire en cas dambigut) :
DEPARTEMENT.dept, L2_RSI.
DEPARTEMENT.dept

Types de donnes

Types de donnes SQL


Types numriques
Types pour les chanes de caractres
Types temporels (dates, heures, minutes,)
SQL2 na pas de type pour les donnes trs

volumineuses telles que les images et les sons


SQL2 ne permet pas lutilisateur de crer
ses
propres types

Types numriques (1)


Nombres entiers :
SMALLINT sur 2 octets
INTEGER sur 4 octets
virgule flottante :
REAL
DOUBLE PRECISION (ou FLOAT)

Constantes : 253.8, -10, 1.3E-5

Types numriques (2)


Nombres dcimaux nombre fixe de

dcimales :
DECIMAL(nbChiffres, nbDcimales)
NUMERIC(nbChiffres, nbDcimales)
Prcision
impose
pour les
calculs

NUMERIC(8, 2) ou DECIMAL(8, 2) : 6 chiffres

avant la virgule et 2 aprs

Types chanes de caractres


CHAR(longueur)
chanes de caractres avec un nombre fixe de

Caractres
VARCHAR(longueurMaximum)
chanes de caractres avec un nombre variable de
caractres (mais un nombre maximum de
caractres)
CHAR(5) : chane de 5 caractres
VARCHAR(20) : chane de 20 caractres au plus
Constante : 'Comptabilit', 'Aujourdh''ui'

Types temporels
DATE pour les dates
TIME pour les heures, minutes et

secondes
TIMESTAMP pour un moment prcis :
date et
heures, minutes et secondes, avec une
prcision
jusqu la microseconde (un millionime de
seconde

Types numriques d'Oracle


Oracle accepte les types numriques SQL2

mais il les traduit dans ses propres types


NUMBER
nombre virgule flottante avec jusqu' 38
chiffres Significatifs
NUMBER(nbChiffres [, nb-dcimales])
nombre dcimal d'au plus nbChiffres chiffres
dont nbdcimales aprs la virgule

Types chanes de caractres


d'Oracle
CHAR, comme la norme SQL2
VARCHAR est accept mais Oracle conseille

d'utiliser VARCHAR2 qui a les mmes proprits

Types temporels d'Oracle


Le type DATE remplace les types DATE et TIME

de SQL2
DATE correspond une date avec une
prcision jusqu' la seconde
Constantes : '10/05/1998', '10 MAY 1998
le format dpend de la
localisation de la base

Langage de dfinition
des donnes (LDD)

Cration dune
table

Cration
dune
table
CREATE TABLE
table (
colonne1 type1,
colonne2 type2,
. . .) ;
Exemple
create table article (
ref char(5) not null,
Nom varchar(20),
Prix numeric(9,2),
dateMAJ date);

Option not
null
si la colonne
doit
obligatoireme
nt
tre
renseigne

Valeur par dfaut


On peut donner une valeur par dfaut pour une

colonne :
create table departement
(numDept integer not null,
nomDept varchar(20),
ville varchar(30) default Tunis');
On peut aussi donner une fonction comme
valeur
par dfaut ; par exemple, default sysdate

DESCRIBE
Cette commande SQL*PLUS dOracle (pas SQL)

affiche une description des colonnes dune table :


SQL > describe article;
Name
Null ?
REF
Not null
NOM
PRIX
DATEMAJ

Type
CHAR(5)
VARCHAR(20)
NUMBER(9,2)
DATE

Mme si le
type
donn la
cration est
DECIMAL

Contraintes dintgrit
Dfinition
Une contrainte dintgrit est une contrainte

que doivent vrifier les donnes dune table


Une commande est annule par le SGBD si
son
excution viole une des contraintes

Types de contraintes d'intgrit


PRIMARY KEY : cl primaire
FOREIGN KEY REFERENCES : cl trangre
UNIQUE : 2 lignes ne peuvent avoir la mme

valeur pour les colonnes spcifies


CHECK : contrainte de domaine, ou autre ;
porte sur une seule ligne

Types de contraintes d'intgrit


2 types de contraintes :
contrainte de colonne (concerne une seule

colonne)
contrainte de table

Dfinition des contraintes


Les contraintes sont dfinies dans les

commandes
CREATE (ou ALTER) TABLE
l'intrieur des dfinitions de colonnes pour les

contraintes de colonne
au mme niveau que les dfinitions de
colonnes pour les contraintes de table

CONSTRAINT nomContrainte

dfinitionContrainte

Cl
Si laprimaire
cl primaire nest forme que dune seule
colonne, le plus simple est dajouter une contrainte de
colonne :
Aucune
create table emp
des
(
colonnes
matr integer constraint pkemp primary key,
de la cl
. . . );
Sinon, il faut ajouter une contrainte de table : primaire
create table participation
ne peut
(
avoir la
matr integer,
valeur
codeP integer,
null
. . .,
Constraint pkpar
primary key(matr, codeP));
Une erreur ne pas faire
Si une table a une cl primaire forme de 2 colonnes, il ne faut pas

dclarer 2 contraintes de colonne Il faut dclarer une seule


contrainte de table portant sur les 2 colonnes : constraint

Contrainte UNIQUE
2 lignes de la table ne pourront avoir la mme

valeur (sauf NULL)


Correspond un identificateur (cl candidate
si minimal), si on ajoute une contrainte NOT
NULL

Cl trangre
Si une seule colonne forme la cl trangre, le

plus simple est dutiliser une contrainte de


colonne :
create table employe
(. . .,
dept integer constraint
r_dept
references departement (dept)
);
Optionnel si colonne
Rfrence
est cl primaire

Cl trangre

Peut tre une contrainte de table :

FOREIGN KEY (colonne1, colonne2,)


REFERENCES table-ref [(col1, col2,)]
Exemple :
dept doit
tre cl
create table employe (
primaire, ou
. . .,
unique
dept integer,
constraint r_dept
foreign key(dept) references departement
(dept))
Il faut
ajouter

Cl trangre
Option ON DELETE CASCADE
create table emp (
...
dept integer constraint r_dept references dept)

On ne peut supprimer un dpartement s'il est

rfrenc par une ligne de la table employe


create table emp (
...
dept number(2)
constraint r_dept references departement on delete cascade)

La suppression d'un dpartement entrane automatiquement la

suppression de toutes les lignes de la table employe qui


rfrencent au table dpartement

Autres options pour les cls


trangres
on delete set null
4 autres options de SQL2 pas implmentes

parOracle :
on delete set default
on update cascade
on update set null
on update set default

Exemples divers de contraintes


create table employe (
Matr integer constraint pkemp
primary
key,
nomE varchar(30)
constraint nom_unique
unique
Constraint maj check (nomE = upper(nomE)),
Dept smallint constraint r_emp_dept references
departement
constraint ndept check (dept in (10, 20, 30, 40))
);

Cration de table par


copie
CREATE TABLE table (col1 type, )

AS select
create table dept2 (cle integer, nom
varchar(20))
as select dept, nomd
from departement;
Create

table dept10
as select *
from employe
where dept = 10;

Modifier la dfinition d'une table


ALTER TABLE table
ADD (col1 type1, col2 type2,);
ALTER TABLE table

MODIFY (col1 type1, col2 type2,);


ALTER TABLE table

DROP COLUMN colonne;

Modifier la dfinition d'une table


On ne peut modifier une colonne que si la
colonne ne contient que des valeurs null ou si la
nouvelle dfinition est compatible avec les
valeurs dj entres dans cette colonne

Exemples

Ajouter une colonne dans la table

employe

Alter table employe


add (situ_famille char(1),
nb Enfants smallint);
Modifier la taille dune colonne dans la

table emp
Alter table employe
modify (situ_famille char(2));

Supprimer une colonne


Tous les SGBDs ne permettent pas de supprimer

une colonne dune table


Si cest impossible, on peut mettre toutes les
valeurs de la colonne null pour gagner de la place
On peut aussi
utiliser create table as pour transfrer les autres

donnes dans une nouvelle table qui na pas cette


colonne
supprimer la 1re table
renommer la nouvelle table

Supprimer une colonne (Oracle 9i)


ALTER TABLE employe DROP COLUMN
Nom_colonne

nest disponible sous Oracle que depuis la


version 9i
Il nest pas possible de supprimer une colonne
rfrence par une cl trangre
sur laquelle un index a t construit

Exemple :

alter
Drop

table emp
column situ_famille;

Renommer une table


On peut renommer une table :

RENAME ancienNom TO nouveauNom


Commande quivalente :
ALTER
TABLE
ancienNom
RENAME
TO
nouveauNom

Langage de
manipulation
des donnes (LMD)

Commandes de
manipulation des donnes

INSERT pour ajouter des lignes


UPDATE pour modifier des lignes
DELETE pour supprimer des lignes

Insertion
INSERT INTO table [(colonne1, colonne2,)]
VALUES (valeur1, valeur2,)
ou
INSERT INTO table [(colonne1, colonne2,)]
select
La liste des colonnes est optionnelle ; par dfaut,
toutes les colonnes sont dans lordre donn lors de
la cration de la table
Si la commande comporte une liste, les colonnes
qui ne sont pas dans la liste auront la valeur NULL

Exemples
insert into dept
values (10, 'Finance', 'Paris');
insert into dept (lieu, nomD, dept)
values ('Grenoble', 'Recherche', 20);
insert into emp (matr, nomE, dept, sal)
select matr + 100, nomE, 60, sal * 0.15
from emp
where dept = 10;

Modification
UPDATE table
SET colonne1 = expr1, colonne2 = expr2,
Toutes les

lignes
[ WHERE prdicat ]
par dfaut
ou
UPDATE table [ synonyme ]
SET (colonne1, colonne2, ) = (select )
Ne doit
renvoyer
qu'une seule
ligne

Exemples
update emp
set dept = 10
where nomE = ALI';
update emp
set sal = sal * 1.1
Where poste = 'Commercial';

Suppressions
DELETE FROM table
[ WHERE prdicat ]
Attention ! s'il n'y a pas de clause WHERE,
toutes les lignes sont supprimes
Exemple :
delete from employe
where dept = 10;

Interrogation de la
base

Interrogation de la base
Syntaxe gnrale

SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
L'ordre des clauses est impos
SELECT et FROM sont obligatoires

Clause SELECT
select [distinct] expression1 [ [AS] nom1],
expression2 [ [AS] nom2],
...
nom1 :
en-tte de la colonne (entre guillemets si mot-clef ou
si contient plusieurs mots)
alias pour dsigner la colonne dans une autre partie
du select

select *

Toutes les
colonnes

SELECT SIMPLE
SELECT expression1, expression2,

FROM table
WHERE prdicat;
Exemples
select nomE, poste from employe;
select * from departement;
select distinct poste from employe;

select dans une


expression
select nomE, sal + comm
from emp;
select matr, nomE, sal * 1.15 from emp

where sal + comm >= 12500;


select nomE, sal / (select sum(sal) from
emp) * 100
from emp;
Select nomE, sal + coalesce(comm, 0) as

"Salaire Total"
from emp;

select dans une expression


On peut utiliser lalias pour trier par ordre

dcroissant des salaires :


select nomE, sal*12 as salaire_annuel
from emp
order by salaire_annuel desc ;

Clause FROM
FROM table1 [synonyme1], table2
[synonyme2],
Produit cartsien des tables sil y en a
plusieurs
Possible de se restreindre un sousensemble du produit cartsien (voir jointure)

Clause FROM :Exemple


select B.dept, A.nomD
from departement A, departement B

DEPT
NOMD
---------- -----------30
VENTES
20
VENTES
10
VENTES
30
RECHERCHE
20
RECHERCHE
10
RECHERCHE
30
FINANCE

Clause FROM
Certains SGBDs (et la norme SQL-2) permettent

l'utilisation d'un SELECT la place du nom d'une


table :
select nomE, salaire, salaire / total * 100
Pourcentage
from employe, (select sum(salaire) as total fr
employe);

Clause WHERE
La clause WHERE comporte de nombreuses

possibilits :
oprateurs de comparaison
oprateurs logiques
Jointures
sous-interrogations

Clause WHERE

Oprateurs de comparaison

=, !=, <, >, <=, >=, BETWEEN, LIKE,

NOT LIKE,
IN, NOT IN, IS NULL, IS NOT NULL
LIKE permet d'utiliser des jokers :
% pour une chane de caractres de

longueur quelconque
_ pour un seul caractre

Attention,

expression = NULL nest jamais vrai,


il faut utiliser expression IS NULL

Clause WHERE

Oprateurs de comparaison Exemples

select * from emp where poste =

'Secrtaire';
select * from emp;
where sal between 10000 and 15000;
select * from emp where dept in (10,
30);
select * from emp where comm is not
null;
select * from emp where nomE like '%A
%';

Clause WHERE

Oprateurs logiques
AND, OR, NOT
Exemples :
select nomE from emp

where dept = 30
and (sal > 10000 or commission is null);

select * from emp

where not (poste = 'Directeur or


poste ='Secrtaire');
et si on met
and la place
de or ?

Les jointures
Lorsque que vous ralisez une jointure de

tables, le type de cette jointure influe sur les


lignes affiches dans l'ensemble des
rsultats.Voici les diffrents types de jointures
pouvant tre crs:
Jointure interne
Jointure externe

Clause WHERE

Jointure interne
Jointure interneJointure n'affichant que les lignes ayant une correspondance
dans les deux tables jointes.
Exemple , il serait possible de joindre les tablesemploy etdpartement pour obtenir un
ensemble de rsultats montrant, pour chaque nom demploy, le nom de son
dpartement .Dans le cas d'une jointure interne, les noms demploys non
accompagns d'informations sur le dpartement et les dpartement non accompagns
des noms des employs ne seront pas inclus dans l'ensemble des rsultats.
select nomE, nom_Dep
from employe, deptartement
where employe.dept = departement.dept

Autre syntaxe :

select nomE, nom_Dep


from employe INNER JOIN departement
ON employe.dept = departement.dept

Clause WHERE

4
Jointure interne:
Jointure de plus de 2 tables

Exemple , il serait possible de joindre les tablesemploy , projet, participation


pour obtenir un ensemble de rsultats montrant, pour chaque nom demploy,
le nom de projet sur lequel il travaille ..
select nome, nomp
from employe, participation, projet
where employe.matr = participation.matr
and participation.codeP = projet.codeP
Autre syntaxe :

select nome, nomp


from employe
join participation
on employe.matr = participation.matr
join projet
on participation.codep = projet.codep

Clause WHERE

Jointure interne :Jointure d'une table avec elle-mme

Alias indispensable pour le nom de la table

afin de lever lambigut sur les colonnes :

select employe.nomE "Employ", supe.nomE


"Suprieur"
from employe join employe supe
On employe.sup = supe.matr

Clause WHERE

Jointure naturelle

La jointure seffectue sur toutes les colonnes qui


ont le mme nom dans les 2 tables ; ces colonnes
ne sont pas rptes dans la jointure
Les colonnes qui participent la jointure ne doivent
tre prfixes par un nom de table
1. select nomE, nomD, dept
from employe NATURAL JOIN departement;
2. select nome, nomp
from employe
NATURAL JOIN participation
NATURAL JOIN projet

You might also like