Professional Documents
Culture Documents
jointure
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]
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
Concepts de base
Le rsultat de la conception d'une base de donnes sera une
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'.
SGBD :conclusion
Systmes de Gestion de Bases de Donnes (DataBase
Management Systems - DBMS) :
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)
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)
(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
1. Identificateurs
SQL utilise des identificateurs pour dsigner les objets qu'il manipule :
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.
2.Tables
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
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
dcimales :
DECIMAL(nbChiffres, nbDcimales)
NUMERIC(nbChiffres, nbDcimales)
Prcision
impose
pour les
calculs
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
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
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)
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
colonne)
contrainte de table
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
Contrainte UNIQUE
2 lignes de la table ne pourront avoir la mme
Cl trangre
Si une seule colonne forme la cl trangre, le
Cl trangre
Cl trangre
Option ON DELETE CASCADE
create table emp (
...
dept integer constraint r_dept references dept)
parOracle :
on delete set default
on update cascade
on update set null
on update set default
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;
Exemples
employe
table emp
Alter table employe
modify (situ_famille char(2));
Exemple :
alter
Drop
table emp
column situ_famille;
Langage de
manipulation
des donnes (LMD)
Commandes de
manipulation des donnes
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;
"Salaire Total"
from emp;
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)
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
Clause WHERE
La clause WHERE comporte de nombreuses
possibilits :
oprateurs de comparaison
oprateurs logiques
Jointures
sous-interrogations
Clause WHERE
Oprateurs de comparaison
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,
Clause WHERE
'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);
Les jointures
Lorsque que vous ralisez une jointure de
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 :
Clause WHERE
4
Jointure interne:
Jointure de plus de 2 tables
Clause WHERE
Clause WHERE
Jointure naturelle