Académique Documents
Professionnel Documents
Culture Documents
Standardisation
SQL1 ISO 1989
Fonctions de lalgbre relationnelle, pour la
dfinition, la mise jour, la recherche
Rle de SQL
Outils de
programmation
Gnrateur de
formulaires
SQL
Outil de requtes
interactif
Programme
dapplication
SQL
Frontal de base
de donnes
SQL
SQL
SQL
Autres systmes
informatiques
Passerelle de base
de donnes
BD
SGBD dautres diteurs
Fonctions SQL
Dfinitions de donnes
Mise jour des donnes
Recherche de donnes
Calcul en colonne
Contrle de laccs aux donnes
Application de test
Donnes compagnies ariennes
IDC, Nom, Adresse, Ville, Pays
Donnes passagers
IDP, Nom, Prnom, Adresse, Ville, Age
Donnes vols
IDV, IDC, Dpart, Arrive, Heure
Donnes rservations
IDR, IDV, IDP, Date
Caractres
CHAR [(nbMaxChar)]
VARCHAR, VARCHAR2 (Oracle8)
LONG
Temps
DATE (Oracle)
TIME
Types binaires
RAW, LONG RAW
Cration de table
CREATE TABLE <nom table> ( <lment de table>+ )
<lment de table> ::= <dfinition de colonne> | <contrainte de table>
<dfinition de colonne> ::= <nom de colonne> <type de donnes>
[<clause dfaut>] [<contrainte de colonne>]
Nom Table , Nom Colonne
Contraintes de domaine
NOT NULL
c. de colonne
Clause dfaut : DEFAULT <val>
c. de colonne ou
UNIQUE
de table
CHECK (condition) plage ou liste de valeurs
possibles
Contraintes dentit
De colonne : PRIMARY KEY
De table : PRIMARY KEY (Atr1, , Atrn)
Les attributs dune cl doivent tre NOT NULL
CREATE TABLE Vols (
IDV Int NOT NULL PRIMARY KEY,
IDC Int NOT NULL,
Dpart Char(20), Arrive Char(20), Heure Num(4)
)
CREATE TABLE Rservations (
IDR Int NOT NULL UNIQUE,
IDV Int NOT NULL,
IDP Int NOT NULL,
Date DATE,
Contraintes rfrentielles
De colonne : REFERENCES table [attribut]
De table : FOREIGN KEY (attribut+)
REFERENCES table [(attribut+)]
CREATE TABLE Vols (
IDV Int NOT NULL PRIMARY KEY,
IDC Int NOT NULL,
Dpart Char(20), Arrive Char(20), Heure Num(4) ,
[CONSTRAINT FK_Vols] FOREIGN KEY (IDC) REFERENCES
Compagnies_Arienne
)
CREATE TABLE Rservations (
IDR Int NOT NULL UNIQUE,
IDV Int NOT NULL REFERENCES Vols (IDV),
IDP Int NOT NULL REFERENCES Passagers,
Date DATE,
Autres oprations
Visualisation des schmas
DESCRIBE <nom table>
Modification
UPDATE
Suppression
DELETE
Insertion
INSERT INTO <nom table> [(<nom colonne>+)]
VALUES (<valeurs>+) | <commande recherche>
Exemples :
INSERT INTO Compagnies_Ariennes VALUES
(1, Air France, 45 Rue de Paris, Roissy, France);
INSERT INTO Compagnies_Ariennes (IDC, NomC, PaysC)
VALUES (2, KLM, Netherlands);
INSERT INTO Compagnies_Ariennes SELECT
INSERT INTO Passagers Vols
Modification
UPDATE <nom de table>
SET <nom de colonne> = {<expression > | NULL }
[ WHERE { <condition de recherche> |
CURRENT OF <nom de curseur> } ]
Exemples :
UPDATE Compagnies_Ariennes SET Ville=Amsterdam
WHERE NomC=KLM;
UPDATE Passagers SET Age=Age+1;
UPDATE Passagers SET Adresse=1 Rue X
WHERE NomP=Dupont AND PrnomP=Pierre;
Suppression
DELETE FROM <nom de table> [ WHERE { <condition de
recherche> | CURRENT OF <nom de curseur> } ]
Exemples :
DELETE FROM Vols ;
DELETE FROM Vols WHERE Arrive=Bagdad;
Recherche de donnes
SELECT ... FROM [<condition>]
Permet :
Projection
Slection
Jointures
Tri
Fonction de calcul
Agrgats
Oprations ensemblistes
Imbrication de questions
Projection
SELECT [ALL | DISTINCT] <colonnes>* FROM
<nom table>
Par dfaut
Exemples :
Projection relationnelle
Arrive (Vols)
Slection / Restriction
SELECT [ALL | DISTINCT] <colonnes>* FROM
<nom table> WHERE <condition>
= != <
> <=
>=
Slection relationnelle
Dpart=Paris (Vols)
Exemples :
SELECT * FROM Vols WHERE Dpart=Paris;
SELECT NomP, PrnomP FROM Passagers WHERE Ville=Paris AND
Age<26;
SELECT * FROM Produits WHERE Prix*Quantit<5000;
Comparaison un filtre
Pour chanes de caractres
Condition = colonne [NOT] LIKE <modle de chane>
_ remplace un caractre
% remplace une squence de longueur quelconque
sous Oracle 9 : % toujours la fin
Exemples :
SELECT NomC,AdresseC FROM Compagnies_Ariennes WHERE
Pays LIKE F% ;
SELECT * FROM Passagers WHERE NomP LIKE A%d% AND
PrnomP LIKE J___% AND Adresse LIKE __ Rue M% ;
Jointures (1)
Produit cartsien :
SELECT * FROM Vols, Rservations ;
Inquijointure :
SELECT p.NomP, p.Ville, v.Dpart FROM Passagers p,
Vols v WHERE p.Ville != v.Arrive ;
Jointures (2)
Jointures de plusieurs tables
SELECT p.NomP FROM Passagers p, Rservations r,
Vols v WHERE p.IDP=r.IDP AND r.IDV=v.IDV AND
p.Ville=Paris AND v.Arrive=Londres ;
Autojointure :
SELECT p1.NomP, p1.Age FROM Passagers p1,
Passagers p2 WHERE p1.Age>p2.Age AND
p2.Nom=Pierre ;
Fonctions de group
COUNT, SUM, AVG, MIN, MAX
SELECT COUNT(*) FROM Passagers ;
SELECT MIN(Age) FROM Passagers ;
SELECT AVG(Prix), MAX(Prix) FROM Produits ;
Questions quantifies
En utilisant les oprateurs ANY, ALL, EXISTS
SELECT NomP FROM Passagers WHERE
Age < ANY (SELECT Age FROM Passagers
WHERE Ville=Paris) ;
SELECT NomC FROM Clients WHERE
Montant > ALL (SELECT Prix FROM Produits
WHERE Prod=TV) ;
SELECT NomP FROM Passagers WHERE
Ville=Brest AND EXISTS (SELECT * FROM Vols
WHERE Dpart=Paris AND Arrive=Brest) ;
Oprations ensemblistes
Union : <sous question> UNION <sous question>
SQL2 :
Intersection :
<sous question> INTERSECT <sous question>
Diffrence :
<sous question> EXCEPT <sous question>
(SELECT DISTINCT Ville FROM Passagers
WHERE Age < 35) INTERSECT (SELECT Dpart
FROM Vols WHERE Arrive=Amsterdam);
Assertions (1)
Rappel :
Contrainte dentit
Contrainte de domaine
Contrainte rfrentielle
Assertions (2)
CREATE ASSERTION <nom> CHECK (condition)
Exemple :
CREATE ASSERTION ver_quant_Prod CHECK (
(produits.quant > SUM(commandes.quant) ) AND
(produits.IDP=commandes.IDP) )
CREATE ASSERTION ver_credit CHECK (
clients.limite_credit <= SELECT
SUM(commandes.montant) FROM commandes
WHERE commandes.client=client.num_client )
Vues
Vue : une table virtuelle de la base de donnes
dont le contenu est dfini par une requte
Correspond au niveau externe de larchitecture
dun SGBD (ANSI/SPARC)
Pour lutilisateur, la vue apparat comme un
table relle
Mais elle nexiste pas dans la base comme une
ensemble stock de valeurs
Cration de vue
CREATE VIEW <nom vue> [ (attributs) ]
AS <requte> [WITH CHECK OPTION]
WITH CHECK OPTION : vrifier que les tuples
insrs ou mis jour via la vue doivent satisfaire
aux conditions de la question dfinissant la vue
WITH [CASCADED | LOCAL] CHECK OPTION
SQL2
Quand une vue est base sur plusieurs vues
CASCADED vrifier et appliquer une mise jour
pour toute la hirarchie de vues
Exemple de vues
CREATE VIEW Passager_Paris AS SELECT *
FROM Passagers WHERE Ville=Paris ;
CREATE VIEW Passager_Pour_Londres AS
SELECT p.IDP, p.NomP, r.dateD, v.heure, r.IDR
FROM Passagers p, Rservations r, Vols v
WHERE p.IDP=r.IDP AND r.IDV=v.IDV AND
v.Arrive=Londres
WITH CHECK OPTION ;
Suppression de vue
DROP VIEW <nom vue>
[RESTRICT | CASCADE]
RESTRICT : supprimer la vue seulement
si aucune autre vue ne dpend delle
CASCADE : supprimer la vue et toutes les
vues qui dpendent de sa dfinition
Scurit
Un utilisateur ne peut accder quaux donnes
des vues auxquelles il a droit daccs
Inconvnients
Performances
Le SGBD doit toujours traduire les vues en
requtes (souvent complexes) : temps
important pour excuter une requte sur une
vue
R1
Vue
Rn
Base de donnes
V=F(R1, , Rn)
R=Q(V)
Exemple
Les Vols Air France de Paris Londres
SELECT v.IDV, v.Dpart, v.Arrive, v.Heure FROM Vols v,
Compagnies_Ariennes c, WHERE v.IDC=c.IDC AND c.NomC LIKE
%Air%France% AND v.Arrive=Londres AND v.Dpart=Paris;
Vue
Question V
BD
Vue
Question V
BD
Vues modifiables
Pas toutes les vues dont modifiables
Conditions pour quune vue soit modifiable :
Le SGBD doit tre capable de faire remonter chaque ligne de la
vue sa ligne source
Les doubles ne doivent pas tre limins (SELECT ne doit pas
contenir DISTINCT)
La clause ne doit spcifier quune seule table (ou vue)
susceptible dtre mise jour
Chaque lment de la slection doit tre une rfrence de
colonne; pas dexpressions, colonnes calcules, fonctions
(SUM, COUNT, etc.)
La clause WHERE ne doit pas inclure des sous requtes, JOIN,
UNION, INTERSECT, EXCEPT, GROUP BY ou HAVING
Elments de confidentialit
Plusieurs utilisateurs peuvent utiliser la mme
base
Identification : chaque utilisateur le SGBD
attribue un ID unique
Authentification des utilisateurs (vrification
des mots de passe)
Group dutilisateurs : utilisateurs ayant des
besoins similaires
Objets de scurit : les tables et vues peuvent
tre protges individuellement
Privilges
Lensemble dactions quun utilisateur peut
excuter sur un objet dune base de donnes :
select, insert, delete, update, references
Un utilisateur ne peut pas excuter une action
pour laquelle na pas les droits
Le crateur dune table en est le propritaire ; il
peut accorder aux autres utilisateurs des
permissions pour laccs sa base
Privilges en SQL
GRANT privilges ON table TO utilisateurs [WITH GRANT OPTION]
SELECT
DELETE
INSERT (nom_colonne*)
UPDATE (nom_colonne*)
REFERENCES (nom_colonne*)
ALL PRIVILEGES
nom_utilisateur,
PUBLIC
Permet la transmission
des privilges