SlideShare uma empresa Scribd logo
1 de 48
Baixar para ler offline
Ministère de l’Enseignement Supérieur et de la Recherche Scientifique
Université Dr Tahar Moulay de Saïda
Faculté de Technologie
Département d’Informatique
Master II - Réseaux Informatiques et Systèmes Répartis (RISR)
Administration et Sécurité des Systèmes d’Information Répartis (ASSIR)
Langage de Manipulation Relationnel: SQL
•Le niveau SQL1 : correspond à la norme de base acceptée en 1989. Elle permet
l’expression des requêtes composées d’opérations de l’algèbre relationnelle et
d’agrégats.
•Le niveau SQL2 : norme 1992, est sous divisé en trois niveaux, respectivement
entrée, intermédiaire et complet. Le niveau entrée est une amélioration de SQL1 ,
alors que les niveaux intermédiaire et complet permet de supporter totalement le
modèle relationnel avec des domaine variés, tels date et temps.
Le niveau SQL3 : norme 1999, est constitué d’un ensemble de propositions
nouvelles traitant plus particulièrement des fonctionnalités objets et déductives,
BDD actives.
CREATE TABLE nom-table
{ ( nom-col type-col [DEFAULT valeur]
[ [CONSTRAINT] contrainte-col] )*
[ [CONSTRAINT] contrainte-table ]*
| AS requête-SQL };
Légende :
{a | b} : a ou b
[option]
* : applicable autant de fois que souhaité
mot en capitale : mot clé
1- Création dune table
CREATE TABLE Doctorant
( nom VARCHAR (20),
prénom VARCHAR (15),
année_insc DECIMAL (4)
DEFAULT 2003 ) ;
CREATE TABLE Doctorant
AS
SELECT nom, prénom, année_ins
FROM Etudiant
WHERE statut='Doctorant' ;
Exemple 1
Exemple 2
1- contrainte-col: contrainte sur une colonne
• NOT NULL
• PRIMARY KEY
• UNIQUE
• REFERENCES nom-table [(nom-col)] [ON DELETE CASCADE]
• CHECK ( condition)
2- contrainte-table: contrainte sur une table
•PRIMARY KEY (nom-col*)
• UNIQUE (nom-col*)
• FOREIGN KEY (nom-col*) REFERENCES nom-table [(nom-col*)] [ON DELETE CASCADE |
SET NULL]
• CHECK ( condition)
CREATE TABLE Pays
( nom VARCHAR(20) PRIMARY KEY ,
capitale VARCHAR(20) … )
CREATE TABLE Employé
( nom VARCHAR(30) ,
prénom VARCHAR(30) ,
adresse VARCHAR(60) , …
CONSTRAINT Pk_emp PRIMARY KEY (nom, prénom) )
Exemple 1
Exemple 2
Primary key
DROP TABLE nom_table [CASCADE CONSTRAINTS]
•CASCADE CONSTRAINTS
•Supprime toutes les contraintes de clé externe référençant cette table
•Si on cherche à détruire une table dont certains attributs sont référencés sans spécifier
CASCADE CONSTRAINT refus
2- suppression dune table
2- modification dune table
ALTER TABLE nom-table
{ RENAME TO nouveau-nom-table |
ADD ( [ (nom-col type-col [DEFAULT valeur]
[contrainte-col])* ] |
MODIFY (nom-col [type-col] [DEFAULT valeur]
[contrainte-col])* |
DROP COLUMN nom-col [CASCADE CONSTRAINTS] |
RENAME COLUMN old-name TO new-name
}
1.Insertion de n-uplets : INSERT INTO
INSERT INTO nom_table(nom_col_1, nom_col_2, ...) VALUES (val_1, val_2, ...)
INSERT INTO Sites (lieu, region)
SELECT lieu, region FROM Station
Exemple 1
2. Modification de n-uplets : UPDATE
UPDATE nom_table
SET nom_col_1 = {expression_1 | ( SELECT ...) },
nom_col_2 = {expression_2 | ( SELECT ...) },
...
nom_col_n = {expression_n | ( SELECT ...) }
WHERE predicat
UPDATE Produit
SET couleur = "vert d'eau"
WHERE couleur = "vert"
Exemple 2
2. Suppression de n-uplets : DELETE
DELETE FROM nom_table
WHERE predicat
Toutes les lignes pour lesquelles predicat est évalué à vrai sont supprimées. En
l’absence de clause WHERE, toutes les lignes de la table sont supprimées
1-Syntaxe générale de la commande SELECT
SELECT [ ALL | DISTINCT ] { * | expression [ AS nom_affiché ] } [, ...]
FROM nom_table [ [ AS ] alias ] [, ...]
[ WHERE prédicat ]
[ GROUP BY expression [, ...] ]
[ HAVING condition [, ...] ]
[ {UNION | INTERSECT | EXCEPT [ALL]} requête ]
L’opérateur de projection _(A1, ...An)(relation) se traduit tout simplement en SQL
par la requête :
SELECT DISTINCT A_1, ..., A_n FROM relation
DISTINCT permet de ne retenir qu’une occurrence de n-uplet dans le cas où une
requête produit plusieurs n-uplets identiques.
•Traduction de l’opérateur de sélection
L’opérateur de sélection se traduit tout simplement en SQL par la requête :
SELECT * FROM relation WHERE prédicat
De manière simplifiée, un prédicat est une expression logique sur des
comparaisons.
•Traduction de l’opérateur de produit cartésien
L’opérateur de produit cartésien se traduit en SQL par la requête :
SELECT * FROM relation_1, relation_2
•Traduction de l’opérateur d’équi-jointure
L’opérateur d’équi-jointure se traduit en SQL par la requête :
SELECT * FROM relation_1, relation_2 WHERE relation_1.A_1 = relation_2.A_2
•Projection
- Connectez en tant que utilisateur SYSTEM (mot de passe choisi : assir)
Administration des Bases de Données Réparties sous Oracle
- Créer un utilisateur qui porte votre nom et le mot de passe : assir
- Donnez le privilège CONNECT à ce nouveau utilisateur
- Donnez le privilège Ressource à ce nouveau utilisateur
- Donnez le privilège DBA à ce nouveau utilisateur
SQLPLUS nom_utilisateur/mot_de_passe
SQLPLUS nom_utilisateur/mot_de_passe@chaine_de_connexion
Accès local (Serveur)
Accès distant (Client)
- Déconnectez SYSTEM puis se connectez avec votre username/password
- Création d’un utilisateur
Administration des Bases de Données Réparties sous Oracle
CREATE USER nom_user
IDENTIFIED BY mot_de_passe
DEFAULT TABLESPACE USERS
QUOTA 100M ON USERS
TEMPORARY TABLESPACE temp
PROFILE default;
CREATE USER samir
IDENTIFIED BY assir
DEFAULT TABLESPACE USERS
QUOTA 100M ON USERS
TEMPORARY TABLESPACE temp
PROFILE default;
- Donner un privilège à un utilisateur
Administration des Bases de Données Réparties sous Oracle
GRANT privilège TO nom_user;
- Donner le privilège de connexion à un utilisateur
GRANT CONNECT TO nom_user;
- Donner le privilège DBA à un utilisateur
GRANT DBA TO nom_user;
- Donner le privilège pour exécuter un ordre ORDRE_SQL sur une table à un
utilisateur
GRANT ordre_sql ON nom_table TO nom_user;
- Donner le privilège sur une colonne d’une table à un utilisateur
GRANT UPDATE (nom_colonne) ON nom_table TO nom_user;
- Retirer un privilège d’un utilisateur
Administration des Bases de Données Réparties sous Oracle
REVOKE privilège FROM nom_user;
- Retirer le privilège pour exécuter un ordre ORDRE_SQL sur une table d’un
utilisateur
REVOKE ordre_sql ON nom_table FROM nom_user;
- Créer un synonyme public pour une table
REVOKE UPDATE (nom_colonne) ON nom_table FROM nom_user;
- Retirer le privilège sur une colonne d’une table d’un utilisateur
CREATE PUBLIC SYNONYM nom_synonyme FOR nom_table;
Exercice :
1- Le schéma relationnel :
COMMANDE (num_cmd, date_cmd, num_cli)
CLIENT (num_cli, nom, prenom, ville)
LIGNE_CMD (num_cmd, num_art, qte)
ARTICLE (num_art, designation, prix)
2- Création des tables :
CREATE TABLE client (
num_cli NUMBER(5) PIMARY KEY,
nom VARCHAR2(30),
prenom VARCHAR2(30),
ville VARCHAR2(30)) ;
2- Création des tables :
CREATE TABLE article (
num_art NUMBER(5),
designation VARCHAR2(30),
prix NUMBER(10,2),
PIMARY KEY (num_art));
2- Création des tables :
CREATE TABLE commande (
num_cmd NUMBER(5),
date_cmd DATE,
num_cli NUMBER(5) REFERENCES client(num_cli),
CONSTRAINT PK_cmd PIMARY KEY (num_cmd));
2- Création des tables :
CREATE TABLE ligne_cmd (
num_cmd NUMBER(5),
num_art NUMBER(5),
qte NUMBER(10,2),
CONSTRAINT PK_ligne PIMARY KEY (num_cmd,num_art),
CONSTRAINT FK_cmd FOREIGN KEY (num_cmd)
REFERENCES commande(num_cmd),
FOREIGN KEY (num_art) REFERENCES article(num_art));
3- Insertion des tuples :
INSERT INTO client (num_cli, nom, prenom, ville) VALUES
(1,'SAIDI','Ahmed','saida');
INSERT INTO client VALUES (2,'TABTI','Mohammed','Alger');
…
INSERT INTO article (num_art, designation, prix) VALUES (1,'PC
portable Toshiba',75000);
INSERT INTO article VALUES (2,'PC portable SONY',85000.00);
…
INSERT INTO commande (num_cmd, date_cmd, num_cli) VALUES
(1,'2014/01/01',1);
INSERT INTO commande VALUES (2,'2014/01/01',5);
…
INSERT INTO Ligne_cmd (num_cmd, num_art, qte) VALUES (1,1,1);
INSERT INTO Ligne_cmd VALUES (1,8,1);
…
4- Sélection des tuples:
1- Afficher tous les clients ?
SELECT * FROM client;
SELECT num_cli, nom, prenom, ville FROM client;
SELECT client.* FROM client;
2- Afficher tous les articles ?
SELECT num_art, designation, prix FROM article;
SELECT * FROM article;
3- Les noms et prénoms des clients ?
SELECT nom, prenom FROM client;
4- Sélection des tuples:
4- Les noms des clients ?
SELECT DISTINCT nom FROM client;
5- La liste des clients par ordre alphabétique des noms ?
SELECT nom, prenom FROM client ORDER BY nom;
6- La liste des clients par ordre alphabétique des noms puis les prénoms ?
SELECT nom, prenom FROM client ORDER BY nom, prenom;
4- Sélection des tuples:
7- La liste des articles par ordre descendant des prix ?
SELECT * FROM article ORDER BY prix DESC;
8- Le nom et prénom du client n° 3 ?
SELECT nom, prenom FROM client WHERE num_cli=3;
9- Le nom et prénom des clients n°3 et n°5 ?
SELECT nom, prenom FROM client WHERE num_cli=3 OR
num_cli=5;
4- Sélection des tuples:
10- Afficher le nom et prénom des clients n°3, n°5, n°6 et n°8 ?
SELECT nom, prenom FROM client WHERE num_cli IN
(3, 5, 6, 8);
11- Les clients de la ville de Saida ?
SELECT * FROM client WHERE ville='saida';
SELECT * FROM client WHERE ville LIKE 'saida';
12- Les clients qui ne sont pas de SBA ?
SELECT * FROM client WHERE ville<>'sba';
SELECT * FROM client WHERE ville != 'sba';
4- Sélection des tuples:
13- Les clients dont la ville commence par 's' ?
SELECT * FROM client WHERE UPPER(ville) LIKE ‘S%';
SELECT * FROM client WHERE LOWER(ville) LIKE ‘s%';
14- Les clients dont le nom ne commence pas par 'm' ?
SELECT * FROM client WHERE LOWER(nom) NOT LIKE 'm%';
15- Les clients dont le nom se termine par 'i' ?
SELECT * FROM client WHERE LOWER(nom) LIKE '%i';
4- Sélection des tuples:
16- Les clients dont le nom ne se termine pas par 'i' ?
SELECT * FROM client WHERE LOWER(nom) NOT LIKE '%i';
17- Les clients qui sont de Saida ou de Mascara ?
SELECT * FROM client WHERE lower(ville)='saida' OR
lower(ville) =’mascara’;
SELECT * FROM client WHERE lower(ville) IN ('saida',’mascara’);
18- Les clients qui ne sont ni d'Alger ni d'Oran ?
SELECT * FROM client WHERE lower(ville)<>'alger' AND
lower(ville)!=’oran’;
SELECT * FROM client WHERE lower(ville) NOT IN
('alger',’oran’);
4- Sélection des tuples:
19- Les articles que leur prix dépasse 50000 ?
SELECT * FROM article WHERE prix>50000;
20- Le client qui a fait la commande n°2 ?
SELECT C.num_cli, nom, prenom, ville
FROM client C, commande M
WHERE C.num_cli= M.num_cli AND num_cmd=2;
SELECT num_cli, nom, prenom, ville FROM client NATURAL
JOIN commande WHERE num_cmd=2;
SELECT C.* FROM client C, commande M
WHERE C.num_cli= M.num_cli AND num_cmd=2;
4- Sélection des tuples:
21- Les articles du bon de commande n°1 (numéro de l'article, désignation,
son prix et la quantité commandée) ?
SELECT article.*, qte
FROM article A, ligne_cmd L
WHERE num_cmd=1 AND A.num_art=L.num_art;
SELECT num_art, designation, prix, qte FROM article
NATURAL JOIN ligne_cmd WHERE num_cmd=1;
22- Les clients qui ont fait une commande ?
SELECT DISTINCT C.*
FROM client C, commande M
WHERE C.num_cli=M.num_cli;
SELECT DISTINCT num_cli, nom, preom, ville FROM client
NATURAL JOIN commande;
4- Sélection des tuples:
23- Les articles commandés ?
SELECT DISTINCT A.*
FROM article A, ligne_cmd L
WHERE A.num_art=L.num_art;
SELECT DISTINCT num_art, designation, prix
FROM article NATURAL JOIN ligne_cmd;
4- Sélection des tuples:
24- Total des quantités commandés par article ?
SELECT A.num_art, designation, SUM(qte)
FROM article A, ligne_cmd L
WHERE A.num_art=L.num_art
GROUP BY A.num_art, designation;
SELECT num_art, designation, SUM(qte)
FROM article A NATURAL JOIN ligne_cmd
GROUP BY num_art, designation;
4- Sélection des tuples:
25- Calculer les montants des articles du bon de commande n°7 ?
SELECT A.num_art, designation, prix, qte, qte*prix montant
FROM article A, ligne_cmd L
WHERE A.num_art=L.num_art AND L.num_cmd=7;
SELECT num_art, designation, prix, qte, qte*prix montant
FROM article NATURAL JOIN ligne_cmd
WHERE num_cmd=7;
26- Les clients qui n'ont passé aucune commande ?
SELECT * FROM client
WHERE num_cli NOT IN (SELECT num_cli
FROM commande);
4- Sélection des tuples:
27- Les articles dont les quantités commandés est plus que 2 ?
SELECT A.num_art, designation, SUM(qte) as total
FROM article A, ligne_cmd L
WHERE A.num_art=L.num_art
GROUP BY A.num_art , designation
HAVING SUM(qte)>2;
SELECT num_art, designation, SUM(qte) as total
FROM article NATURAL JOIN ligne_cmd
GROUP BY A.num_art , designation
HAVING SUM(qte)>2;
4- Sélection des tuples:
28- Les clients qui ont acheté une souris ?
SELECT DISTINCT C.* FROM client C, commande M, article
A, ligne_cmd L WHERE C.num_cli=M.num_cli AND
M.num_cmd=L.num_cmd AND A.num_art=L.num_art
AND LOWER(designation) LIKE ’souris%’;
SELECT DISTINCT num_cli, nom, prenom, ville FROM client
NATURAL JOIN commande NATURAL JOIN article
NATURAL JOIN ligne_cmd WHERE LOWER(designation)
LIKE ’souris%’;
4- Sélection des tuples:
29- Les clients qui n’ont pas acheté de clavier ?
SELECT * FROM client WHERE num_cli NOT IN (SELECT
C.num_cli FROM client C, commande M, article A, ligne_cmd
L WHERE C.num_cli=M.num_cli AND
M.num_cmd=L.num_cmd AND A.num_art=L.num_art
AND LOWER(designation) LIKE ’clavier%’);
SELECT * FROM client WHERE num_cli NOT IN (SELECT
num_cli FROM client NATURAL JOIN commande NATURAL
JOIN article NATURAL JOIN ligne_cmd
WHERE LOWER(designation) LIKE ’clavier%’);
4- Sélection des tuples:
30- Les clients qui ont acheté un clavier ou une souris ?
SELECT DISTINCT C.num_cli, nom, prenom, ville FROM
client C, commande M, article A, ligne_cmd L WHERE
C.num_cli=M.num_cli AND M.num_cmd=L.num_cmd AND
A.num_art=L.num_art
AND (LOWER(designation) LIKE ’souris%’ OR
LOWER(designation) LIKE ‘clavier%’);
SELECT DISTINCT num_cli, nom, prenom, ville FROM client
C NATURAL JOIN commande NATURAL JOIN article
NATURAL JOIN ligne_cmd
WHERE LOWER(designation) LIKE ’souris%’
OR LOWER(designation) LIKE ‘clavier%’;
31- Les clients qui ont acheté un clavier et une souris ?
SELECT DISTINCT C.* FROM Client C, Commande M, Article A,
Ligne_cmd L WHERE C.num_cli=M.num_cli AND
M.num_cmd=L.num_cmd AND A.num_art=L.num_art
AND LOWER(designation) LIKE 'souris%‘ AND C.num_cli IN
(SELECT C.num_cli FROM Client C, Commande M, Article A,
Ligne_cmd L WHERE C.num_cli=M.num_cli AND
M.num_cmd=L.num_cmd AND A.num_art=L.num_art AND
LOWER(designation) LIKE 'clavier%‘);
SELECT DISTINCT num_cli, nom, prenom, ville FROM Client
NATURAL JOIN Commande NATURAL JOIN Article NATURAL
JOIN Ligne_cmd WHERE lower(designation) LIKE 'souris%'
AND num_cli IN (SELECT num_cli FROM Client C NATURAL
JOIN Commande NATURAL JOIN Article NATURAL JOIN
Ligne_cmd WHERE lower(designation) LIKE 'clavier%');
31- Les clients qui ont acheté un clavier et une souris ?
SELECT num_cli, nom, prenom, ville
FROM Client NATURAL JOIN Commande NATURAL JOIN
Article NATURAL JOIN Ligne_cmd
WHERE lower(designation) LIKE 'souris%‘
INTERSECT
SELECT num_cli, nom, prenom, ville
FROM Client C NATURAL JOIN Commande NATURAL JOIN
Article NATURAL JOIN Ligne_cmd
WHERE lower(designation) LIKE 'clavier%');
32- Les clients qui ont acheté un clavier et jamais une souris ?
SELECT C.num_cli, nom, prenom, ville FROM Client C,
Commande M, Article A, Ligne_cmd L WHERE
C.num_cli=M.num_cli AND M.num_cmd=L.num_cmd AND
A.num_art=L.num_art AND lower(designation) LIKE 'clavier%'
AND C.num_cli NOT IN (SELECT C.num_cli FROM Client C,
Commande M, Article A, Ligne_cmd L WHERE
C.num_cli=M.num_cli AND M.num_cmd=L.num_cmd AND
A.num_art=L.num_art AND lower(designation) LIKE 'souris%');
SELECT num_cli, nom, prenom, ville FROM Client NATURAL
JOIN Commande NATURAL JOIN Article NATURAL JOIN
Ligne_cmd WHERE lower(designation) LIKE 'clavier%' AND
C.num_cli NOT IN (SELECT num_cli FROM Client NATURAL
JOIN Commande NATURAL JOIN Article NATURAL JOIN
Ligne_cmd WHERE lower(designation) LIKE 'souris%');
SELECT num_cli, nom, prenom, ville
FROM Client NATURAL JOIN Commande NATURAL JOIN
Article NATURAL JOIN Ligne_cmd
WHERE lower(designation) LIKE 'clavier%‘
MINUS
SELECT num_cli, nom, prenom, ville
FROM Client NATURAL JOIN Commande NATURAL JOIN
Article NATURAL JOIN Ligne_cmd
WHERE lower(designation) LIKE 'souris%’;
32- Les clients qui ont acheté un clavier et jamais une souris ?
SELECT C.* FROM Client C, Commande M, Article A,
Ligne_cmd L WHERE C.num_cli=M.num_cli AND
M.num_cmd=L.num_cmd AND A.num_art=L.num_art AND
lower(designation) LIKE 'clavier%' AND C.num_cli NOT IN
(SELECT C.num_cli FROM Client C, Commande M, Article A,
Ligne_cmd L WHERE C.num_cli=M.num_cli AND
M.num_cmd=L.num_cmd AND A.num_art=L.num_art AND
lower(designation) NOT LIKE 'clavier%');
SELECT num_cli, nom, prenom, ville FROM Client NATURAL
JOIN Commande NATURAL JOIN Article NATURAL JOIN
Ligne_cmd WHERE lower(designation) LIKE 'clavier%' AND
num_cli NOT IN (SELECT num_cli FROM Client C NATURAL
JOIN Commande NATURAL JOIN Article NATURAL JOIN
Ligne_cmd WHERE lower(designation) NOT LIKE 'clavier%');
33- Les clients qui ont acheté uniquement le produit clavier ?
SELECT count(num_art) nbre_article FROM ligne_cmd WHERE
num_cmd=5;
SELECT count(*) FROM ligne_cmd WHERE num_cmd=5;
34- Combien d’article il y a dans le bon de commande n°5 ?
SELECT num_cmd, COUNT(num_art) FROM ligne_cmd
GROUP BY num_cmd;
SELECT num_cmd, COUNT(*) FROM ligne_cmd GROUP BY
num_cmd;
35- Combien d’article y-a-il dans chaque bon de commande ?
SELECT count(distinct num_cli) FROM commande M, article A,
ligne_cmd L WHERE M.num_cmd=L.num_cmd AND
A.num_art=L.num_art AND lower(designation) LIKE
’imprimante%’;
SELECT count(distinct num_cli) FROM commande NATURAL
JOIN article NATURAL JOIN ligne_cmd WHERE
lower(designation) LIKE ’imprimante%’;
36- Combien de client ont acheté une imprimante ?
SELECT COUNT(DISTINCT num_art) FROM commande M,
ligne_cmd L WHERE M.num_cmd=L.num_cmd AND
M.num_cli=6;
SELECT COUNT(DISTINCT num_art) FROM commande
NATURAL JOIN ligne_cmd WHERE num_cli=6;
37- Combien de produit différent a acheté le client n°6 ?
SELECT SUM(qte*prix) Total FROM article A, ligne_cmd L
WHERE A.num_art=L.num_art AND num_cmd=7;
SELECT SUM(qte*prix) Total FROM article NATURAL JOIN
ligne_cmd WHERE num_cmd=7;
38- Donner le total du bon de commande n°7 ?
SELECT num_cmd, SUM(qte*prix) Total FROM article A,
ligne_cmd L WHERE A.num_art=L.num_art GROUP BY
num_cmd;
SELECT num_cmd, SUM(qte*prix) Total FROM article
NATURAL JOIN ligne_cmd GROUP BY num_cmd;
39- Donner le total pour chaque bon de commande ?
SELECT SUM(qte*prix) Total FROM article A, commande M,
ligne_cmd L WHERE A.num_art=L.num_art AND
M.num_cmd=L.num_cmd AND num_cli=6;
SELECT SUM(qte*prix) Total FROM article NATURAL JOIN
commande NATURAL JOIN ligne_cmd WHERE num_cli=6;
40- Donner le total des achats du client n°6 ?
SELECT num_cli, SUM(qte*prix) Total FROM article A,
commande M, ligne_cmd L WHERE A.num_art=L.num_art AND
M.num_cmd=L.num_cmd GROUP BY num_cli;
SELECT num_cli, SUM(qte*prix) Total FROM article NATURAL
JOIN commande NATURAL JOIN ligne_cmd GROUP BY
num_cli;
41- Donner le total des achats par clients ?
Est une vision logique des données contenues dans une ou plusieurs
tables. Elle est considérée comme une table virtuelle qui n’a pas
d’existence propre, aucune donnée ne lui est associée et sa description est
stockée sous la forme d’une requête.
1 Définition
• Confidentialité
Les utilisateurs n’ont le droit d’accéder qu’aux vues (Vue sur la table Employé
destinée aux employés ne sélectionne pas la colonne Salaire contrairement à la
vue destinée aux chefs de service.)
• Cacher la complexité des données aux utilisateurs
Vue simplifiée des données
Simplifier les requêtes des utilisateurs non spécialistes
• Présenter différentes perspectives sur les données aux
utilisateurs
Renommage des colonnes
• Requêtes complexes
Qui ne peuvent être faites sans vues
Qui sont fréquemment réalisées
2 Utlité
CREATE OR REPLACE VIEW Petit_pays
AS SELECT * FROM Pays WHERE surface < 100
WITH CHECK OPTION CONSTRAINT CK_Petit_pays;
3 Syntaxe
CREATE [OR REPLACE] VIEW nom_vue [ ( nv_nom_col)*] AS subquery
[WITH CHECK OPTION [CONSTRAINT nom_contrainte] ]
[WITH READ ONLY];
Exemple
Exemple Vue (Confidentialité)
Employe (Numero, Nom, Prenom, Adresse, Num_service, Salaire,
performance)
Create view Information_me_concernant
As select *
From employe
Where upper(nom) = upper (user)
Chaque utilisateur peut
visualiser un seul tuple de
la relation: celui qui le
concerne
GRANT SELECT ON Information_me_concernant
TO public

Mais conteúdo relacionado

Mais procurados

Less06 networking
Less06 networkingLess06 networking
Less06 networkingAmit Bhalla
 
BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQLLilia Sfaxi
 
introduction au SQL et MySQL
introduction au SQL et MySQLintroduction au SQL et MySQL
introduction au SQL et MySQLAbdoulaye Dieng
 
Android-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursAndroid-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursLilia Sfaxi
 
Sous-Interrogations - sql oracle
Sous-Interrogations - sql oracleSous-Interrogations - sql oracle
Sous-Interrogations - sql oraclewebreaker
 
A Brief History of Database Management (SQL, NoSQL, NewSQL)
A Brief History of Database Management (SQL, NoSQL, NewSQL)A Brief History of Database Management (SQL, NoSQL, NewSQL)
A Brief History of Database Management (SQL, NoSQL, NewSQL)Abdelkader OUARED
 
SQL Oracle : Sélection et Tri des Lignes Retournées par un SELECT
SQL Oracle : Sélection et Tri des Lignes Retournées par un SELECTSQL Oracle : Sélection et Tri des Lignes Retournées par un SELECT
SQL Oracle : Sélection et Tri des Lignes Retournées par un SELECTwebreaker
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)Heithem Abbes
 
Tp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-EclipseTp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-EclipseLilia Sfaxi
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfslimyaich3
 
Chp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées ServicesChp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées ServicesLilia Sfaxi
 
Tp2 - WS avec JAXRS
Tp2 - WS avec JAXRSTp2 - WS avec JAXRS
Tp2 - WS avec JAXRSLilia Sfaxi
 

Mais procurados (20)

Less06 networking
Less06 networkingLess06 networking
Less06 networking
 
BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQL
 
Tp n 3 linux
Tp n 3 linuxTp n 3 linux
Tp n 3 linux
 
introduction au SQL et MySQL
introduction au SQL et MySQLintroduction au SQL et MySQL
introduction au SQL et MySQL
 
Android-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursAndroid-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateurs
 
Introduction au langage SQL
Introduction au langage SQLIntroduction au langage SQL
Introduction au langage SQL
 
Plsql
PlsqlPlsql
Plsql
 
Sous-Interrogations - sql oracle
Sous-Interrogations - sql oracleSous-Interrogations - sql oracle
Sous-Interrogations - sql oracle
 
A Brief History of Database Management (SQL, NoSQL, NewSQL)
A Brief History of Database Management (SQL, NoSQL, NewSQL)A Brief History of Database Management (SQL, NoSQL, NewSQL)
A Brief History of Database Management (SQL, NoSQL, NewSQL)
 
SQL Oracle : Sélection et Tri des Lignes Retournées par un SELECT
SQL Oracle : Sélection et Tri des Lignes Retournées par un SELECTSQL Oracle : Sélection et Tri des Lignes Retournées par un SELECT
SQL Oracle : Sélection et Tri des Lignes Retournées par un SELECT
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)
 
Soa & services web
Soa & services webSoa & services web
Soa & services web
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
 
Cours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateurCours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateur
 
Tp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-EclipseTp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-Eclipse
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdf
 
Les BD NoSQL
Les BD NoSQLLes BD NoSQL
Les BD NoSQL
 
Chp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées ServicesChp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées Services
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
 
Tp2 - WS avec JAXRS
Tp2 - WS avec JAXRSTp2 - WS avec JAXRS
Tp2 - WS avec JAXRS
 

Semelhante a SQL-ORACLE.pptx

1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdfImaneZoubir1
 
Telecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlplusTelecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlpluswebreaker
 
Manipulation des Données , cours sql oracle
Manipulation des Données , cours sql oracleManipulation des Données , cours sql oracle
Manipulation des Données , cours sql oraclewebreaker
 
Mise en Forme des Résultats avec SQL*Plus
Mise en Forme des Résultats avec SQL*PlusMise en Forme des Résultats avec SQL*Plus
Mise en Forme des Résultats avec SQL*Pluswebreaker
 
Support_Cours_SQL.ppt
Support_Cours_SQL.pptSupport_Cours_SQL.ppt
Support_Cours_SQL.pptSiwarAbbes1
 
presentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfpresentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfRihabBENLAMINE
 
01 l'ordre select élémentaire
01 l'ordre select élémentaire 01 l'ordre select élémentaire
01 l'ordre select élémentaire ENSAM Casablanca
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : CassandraLilia Sfaxi
 
Création et Gestion de Tables | SQL Oracle
Création et Gestion de Tables | SQL OracleCréation et Gestion de Tables | SQL Oracle
Création et Gestion de Tables | SQL Oraclewebreaker
 
chapitre6_Le_Langage_SQL-2.pdf
chapitre6_Le_Langage_SQL-2.pdfchapitre6_Le_Langage_SQL-2.pdf
chapitre6_Le_Langage_SQL-2.pdfattamatta1234
 

Semelhante a SQL-ORACLE.pptx (20)

SQL partie III
SQL partie IIISQL partie III
SQL partie III
 
1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf
 
Les03.ppt
Les03.pptLes03.ppt
Les03.ppt
 
Telecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlplusTelecharger Exercices corrigés sqlplus
Telecharger Exercices corrigés sqlplus
 
Manipulation des Données , cours sql oracle
Manipulation des Données , cours sql oracleManipulation des Données , cours sql oracle
Manipulation des Données , cours sql oracle
 
Mise en Forme des Résultats avec SQL*Plus
Mise en Forme des Résultats avec SQL*PlusMise en Forme des Résultats avec SQL*Plus
Mise en Forme des Résultats avec SQL*Plus
 
12 fr
12 fr12 fr
12 fr
 
Cours3 gdm sql
Cours3 gdm sqlCours3 gdm sql
Cours3 gdm sql
 
SQL.pdf
SQL.pdfSQL.pdf
SQL.pdf
 
C# 7 - Nouveautés
C# 7 - NouveautésC# 7 - Nouveautés
C# 7 - Nouveautés
 
Support_Cours_SQL.ppt
Support_Cours_SQL.pptSupport_Cours_SQL.ppt
Support_Cours_SQL.ppt
 
presentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfpresentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdf
 
La 2ème partie de la présentation PHP
La 2ème partie de la présentation PHPLa 2ème partie de la présentation PHP
La 2ème partie de la présentation PHP
 
Cours sql-sh-
Cours sql-sh-Cours sql-sh-
Cours sql-sh-
 
MariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQLMariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQL
 
01 l'ordre select élémentaire
01 l'ordre select élémentaire 01 l'ordre select élémentaire
01 l'ordre select élémentaire
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : Cassandra
 
Création et Gestion de Tables | SQL Oracle
Création et Gestion de Tables | SQL OracleCréation et Gestion de Tables | SQL Oracle
Création et Gestion de Tables | SQL Oracle
 
chapitre6_Le_Langage_SQL-2.pdf
chapitre6_Le_Langage_SQL-2.pdfchapitre6_Le_Langage_SQL-2.pdf
chapitre6_Le_Langage_SQL-2.pdf
 
Sql
SqlSql
Sql
 

Mais de SamirAwad14

Etude comparative des classifieurs Naïve Bayes et SVM
Etude comparative des classifieurs Naïve Bayes et SVMEtude comparative des classifieurs Naïve Bayes et SVM
Etude comparative des classifieurs Naïve Bayes et SVMSamirAwad14
 
NS3 - Exploitation.pptx
NS3 - Exploitation.pptxNS3 - Exploitation.pptx
NS3 - Exploitation.pptxSamirAwad14
 
replication.pptx
replication.pptxreplication.pptx
replication.pptxSamirAwad14
 
srep_cours_04.pdf
srep_cours_04.pdfsrep_cours_04.pdf
srep_cours_04.pdfSamirAwad14
 
srep_cours_06.pdf
srep_cours_06.pdfsrep_cours_06.pdf
srep_cours_06.pdfSamirAwad14
 
srep_cours_05.pdf
srep_cours_05.pdfsrep_cours_05.pdf
srep_cours_05.pdfSamirAwad14
 
Introduction.pptx
Introduction.pptxIntroduction.pptx
Introduction.pptxSamirAwad14
 
repartition oracle.pptx
repartition oracle.pptxrepartition oracle.pptx
repartition oracle.pptxSamirAwad14
 
Transaction.pptx
Transaction.pptxTransaction.pptx
Transaction.pptxSamirAwad14
 
controle donnee.pptx
controle donnee.pptxcontrole donnee.pptx
controle donnee.pptxSamirAwad14
 
controle donnee.pdf
controle donnee.pdfcontrole donnee.pdf
controle donnee.pdfSamirAwad14
 
gestion utilisateur.pdf
gestion utilisateur.pdfgestion utilisateur.pdf
gestion utilisateur.pdfSamirAwad14
 
srep_cours_01.pdf
srep_cours_01.pdfsrep_cours_01.pdf
srep_cours_01.pdfSamirAwad14
 
Data Warehousing.pptx
Data Warehousing.pptxData Warehousing.pptx
Data Warehousing.pptxSamirAwad14
 

Mais de SamirAwad14 (20)

Etude comparative des classifieurs Naïve Bayes et SVM
Etude comparative des classifieurs Naïve Bayes et SVMEtude comparative des classifieurs Naïve Bayes et SVM
Etude comparative des classifieurs Naïve Bayes et SVM
 
NS3 - Exploitation.pptx
NS3 - Exploitation.pptxNS3 - Exploitation.pptx
NS3 - Exploitation.pptx
 
replication.pptx
replication.pptxreplication.pptx
replication.pptx
 
srep_cours_04.pdf
srep_cours_04.pdfsrep_cours_04.pdf
srep_cours_04.pdf
 
srep_cours_06.pdf
srep_cours_06.pdfsrep_cours_06.pdf
srep_cours_06.pdf
 
srep_cours_05.pdf
srep_cours_05.pdfsrep_cours_05.pdf
srep_cours_05.pdf
 
trigger.pptx
trigger.pptxtrigger.pptx
trigger.pptx
 
Introduction.pptx
Introduction.pptxIntroduction.pptx
Introduction.pptx
 
repartition oracle.pptx
repartition oracle.pptxrepartition oracle.pptx
repartition oracle.pptx
 
Transaction.pptx
Transaction.pptxTransaction.pptx
Transaction.pptx
 
controle donnee.pptx
controle donnee.pptxcontrole donnee.pptx
controle donnee.pptx
 
SQL-ORACLE.pdf
SQL-ORACLE.pdfSQL-ORACLE.pdf
SQL-ORACLE.pdf
 
TD.pdf
TD.pdfTD.pdf
TD.pdf
 
trigger.pdf
trigger.pdftrigger.pdf
trigger.pdf
 
controle donnee.pdf
controle donnee.pdfcontrole donnee.pdf
controle donnee.pdf
 
Transaction.pdf
Transaction.pdfTransaction.pdf
Transaction.pdf
 
replication.pdf
replication.pdfreplication.pdf
replication.pdf
 
gestion utilisateur.pdf
gestion utilisateur.pdfgestion utilisateur.pdf
gestion utilisateur.pdf
 
srep_cours_01.pdf
srep_cours_01.pdfsrep_cours_01.pdf
srep_cours_01.pdf
 
Data Warehousing.pptx
Data Warehousing.pptxData Warehousing.pptx
Data Warehousing.pptx
 

Último

Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfSylvianeBachy
 
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 37
 
Aux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAmar LAKEL, PhD
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfRiDaHAziz
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfRiDaHAziz
 
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfBibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfBibdoc 37
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film françaisTxaruka
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursStagiaireLearningmat
 
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxMartin M Flynn
 
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24BenotGeorges3
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx      Film   françaisPas de vagues.  pptx      Film   français
Pas de vagues. pptx Film françaisTxaruka
 
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfbdp12
 
Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Gabriel Gay-Para
 
Calendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilCalendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilfrizzole
 
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfBibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfBibdoc 37
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxJCAC
 
Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneTxaruka
 

Último (18)

Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
 
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
 
Aux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècle
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdf
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdf
 
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfBibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film français
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceurs
 
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
 
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx      Film   françaisPas de vagues.  pptx      Film   français
Pas de vagues. pptx Film français
 
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
 
Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)
 
Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024
 
Calendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilCalendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avril
 
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfBibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
 
Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienne
 

SQL-ORACLE.pptx

  • 1. Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Université Dr Tahar Moulay de Saïda Faculté de Technologie Département d’Informatique Master II - Réseaux Informatiques et Systèmes Répartis (RISR) Administration et Sécurité des Systèmes d’Information Répartis (ASSIR) Langage de Manipulation Relationnel: SQL
  • 2. •Le niveau SQL1 : correspond à la norme de base acceptée en 1989. Elle permet l’expression des requêtes composées d’opérations de l’algèbre relationnelle et d’agrégats. •Le niveau SQL2 : norme 1992, est sous divisé en trois niveaux, respectivement entrée, intermédiaire et complet. Le niveau entrée est une amélioration de SQL1 , alors que les niveaux intermédiaire et complet permet de supporter totalement le modèle relationnel avec des domaine variés, tels date et temps. Le niveau SQL3 : norme 1999, est constitué d’un ensemble de propositions nouvelles traitant plus particulièrement des fonctionnalités objets et déductives, BDD actives.
  • 3. CREATE TABLE nom-table { ( nom-col type-col [DEFAULT valeur] [ [CONSTRAINT] contrainte-col] )* [ [CONSTRAINT] contrainte-table ]* | AS requête-SQL }; Légende : {a | b} : a ou b [option] * : applicable autant de fois que souhaité mot en capitale : mot clé 1- Création dune table CREATE TABLE Doctorant ( nom VARCHAR (20), prénom VARCHAR (15), année_insc DECIMAL (4) DEFAULT 2003 ) ; CREATE TABLE Doctorant AS SELECT nom, prénom, année_ins FROM Etudiant WHERE statut='Doctorant' ; Exemple 1 Exemple 2
  • 4. 1- contrainte-col: contrainte sur une colonne • NOT NULL • PRIMARY KEY • UNIQUE • REFERENCES nom-table [(nom-col)] [ON DELETE CASCADE] • CHECK ( condition) 2- contrainte-table: contrainte sur une table •PRIMARY KEY (nom-col*) • UNIQUE (nom-col*) • FOREIGN KEY (nom-col*) REFERENCES nom-table [(nom-col*)] [ON DELETE CASCADE | SET NULL] • CHECK ( condition)
  • 5. CREATE TABLE Pays ( nom VARCHAR(20) PRIMARY KEY , capitale VARCHAR(20) … ) CREATE TABLE Employé ( nom VARCHAR(30) , prénom VARCHAR(30) , adresse VARCHAR(60) , … CONSTRAINT Pk_emp PRIMARY KEY (nom, prénom) ) Exemple 1 Exemple 2 Primary key
  • 6. DROP TABLE nom_table [CASCADE CONSTRAINTS] •CASCADE CONSTRAINTS •Supprime toutes les contraintes de clé externe référençant cette table •Si on cherche à détruire une table dont certains attributs sont référencés sans spécifier CASCADE CONSTRAINT refus 2- suppression dune table 2- modification dune table ALTER TABLE nom-table { RENAME TO nouveau-nom-table | ADD ( [ (nom-col type-col [DEFAULT valeur] [contrainte-col])* ] | MODIFY (nom-col [type-col] [DEFAULT valeur] [contrainte-col])* | DROP COLUMN nom-col [CASCADE CONSTRAINTS] | RENAME COLUMN old-name TO new-name }
  • 7. 1.Insertion de n-uplets : INSERT INTO INSERT INTO nom_table(nom_col_1, nom_col_2, ...) VALUES (val_1, val_2, ...) INSERT INTO Sites (lieu, region) SELECT lieu, region FROM Station Exemple 1 2. Modification de n-uplets : UPDATE UPDATE nom_table SET nom_col_1 = {expression_1 | ( SELECT ...) }, nom_col_2 = {expression_2 | ( SELECT ...) }, ... nom_col_n = {expression_n | ( SELECT ...) } WHERE predicat
  • 8. UPDATE Produit SET couleur = "vert d'eau" WHERE couleur = "vert" Exemple 2 2. Suppression de n-uplets : DELETE DELETE FROM nom_table WHERE predicat Toutes les lignes pour lesquelles predicat est évalué à vrai sont supprimées. En l’absence de clause WHERE, toutes les lignes de la table sont supprimées
  • 9. 1-Syntaxe générale de la commande SELECT SELECT [ ALL | DISTINCT ] { * | expression [ AS nom_affiché ] } [, ...] FROM nom_table [ [ AS ] alias ] [, ...] [ WHERE prédicat ] [ GROUP BY expression [, ...] ] [ HAVING condition [, ...] ] [ {UNION | INTERSECT | EXCEPT [ALL]} requête ]
  • 10. L’opérateur de projection _(A1, ...An)(relation) se traduit tout simplement en SQL par la requête : SELECT DISTINCT A_1, ..., A_n FROM relation DISTINCT permet de ne retenir qu’une occurrence de n-uplet dans le cas où une requête produit plusieurs n-uplets identiques. •Traduction de l’opérateur de sélection L’opérateur de sélection se traduit tout simplement en SQL par la requête : SELECT * FROM relation WHERE prédicat De manière simplifiée, un prédicat est une expression logique sur des comparaisons. •Traduction de l’opérateur de produit cartésien L’opérateur de produit cartésien se traduit en SQL par la requête : SELECT * FROM relation_1, relation_2 •Traduction de l’opérateur d’équi-jointure L’opérateur d’équi-jointure se traduit en SQL par la requête : SELECT * FROM relation_1, relation_2 WHERE relation_1.A_1 = relation_2.A_2 •Projection
  • 11. - Connectez en tant que utilisateur SYSTEM (mot de passe choisi : assir) Administration des Bases de Données Réparties sous Oracle - Créer un utilisateur qui porte votre nom et le mot de passe : assir - Donnez le privilège CONNECT à ce nouveau utilisateur - Donnez le privilège Ressource à ce nouveau utilisateur - Donnez le privilège DBA à ce nouveau utilisateur SQLPLUS nom_utilisateur/mot_de_passe SQLPLUS nom_utilisateur/mot_de_passe@chaine_de_connexion Accès local (Serveur) Accès distant (Client) - Déconnectez SYSTEM puis se connectez avec votre username/password
  • 12. - Création d’un utilisateur Administration des Bases de Données Réparties sous Oracle CREATE USER nom_user IDENTIFIED BY mot_de_passe DEFAULT TABLESPACE USERS QUOTA 100M ON USERS TEMPORARY TABLESPACE temp PROFILE default; CREATE USER samir IDENTIFIED BY assir DEFAULT TABLESPACE USERS QUOTA 100M ON USERS TEMPORARY TABLESPACE temp PROFILE default;
  • 13. - Donner un privilège à un utilisateur Administration des Bases de Données Réparties sous Oracle GRANT privilège TO nom_user; - Donner le privilège de connexion à un utilisateur GRANT CONNECT TO nom_user; - Donner le privilège DBA à un utilisateur GRANT DBA TO nom_user; - Donner le privilège pour exécuter un ordre ORDRE_SQL sur une table à un utilisateur GRANT ordre_sql ON nom_table TO nom_user; - Donner le privilège sur une colonne d’une table à un utilisateur GRANT UPDATE (nom_colonne) ON nom_table TO nom_user;
  • 14. - Retirer un privilège d’un utilisateur Administration des Bases de Données Réparties sous Oracle REVOKE privilège FROM nom_user; - Retirer le privilège pour exécuter un ordre ORDRE_SQL sur une table d’un utilisateur REVOKE ordre_sql ON nom_table FROM nom_user; - Créer un synonyme public pour une table REVOKE UPDATE (nom_colonne) ON nom_table FROM nom_user; - Retirer le privilège sur une colonne d’une table d’un utilisateur CREATE PUBLIC SYNONYM nom_synonyme FOR nom_table;
  • 15. Exercice : 1- Le schéma relationnel : COMMANDE (num_cmd, date_cmd, num_cli) CLIENT (num_cli, nom, prenom, ville) LIGNE_CMD (num_cmd, num_art, qte) ARTICLE (num_art, designation, prix)
  • 16. 2- Création des tables : CREATE TABLE client ( num_cli NUMBER(5) PIMARY KEY, nom VARCHAR2(30), prenom VARCHAR2(30), ville VARCHAR2(30)) ;
  • 17. 2- Création des tables : CREATE TABLE article ( num_art NUMBER(5), designation VARCHAR2(30), prix NUMBER(10,2), PIMARY KEY (num_art));
  • 18. 2- Création des tables : CREATE TABLE commande ( num_cmd NUMBER(5), date_cmd DATE, num_cli NUMBER(5) REFERENCES client(num_cli), CONSTRAINT PK_cmd PIMARY KEY (num_cmd));
  • 19. 2- Création des tables : CREATE TABLE ligne_cmd ( num_cmd NUMBER(5), num_art NUMBER(5), qte NUMBER(10,2), CONSTRAINT PK_ligne PIMARY KEY (num_cmd,num_art), CONSTRAINT FK_cmd FOREIGN KEY (num_cmd) REFERENCES commande(num_cmd), FOREIGN KEY (num_art) REFERENCES article(num_art));
  • 20. 3- Insertion des tuples : INSERT INTO client (num_cli, nom, prenom, ville) VALUES (1,'SAIDI','Ahmed','saida'); INSERT INTO client VALUES (2,'TABTI','Mohammed','Alger'); … INSERT INTO article (num_art, designation, prix) VALUES (1,'PC portable Toshiba',75000); INSERT INTO article VALUES (2,'PC portable SONY',85000.00); … INSERT INTO commande (num_cmd, date_cmd, num_cli) VALUES (1,'2014/01/01',1); INSERT INTO commande VALUES (2,'2014/01/01',5); … INSERT INTO Ligne_cmd (num_cmd, num_art, qte) VALUES (1,1,1); INSERT INTO Ligne_cmd VALUES (1,8,1); …
  • 21. 4- Sélection des tuples: 1- Afficher tous les clients ? SELECT * FROM client; SELECT num_cli, nom, prenom, ville FROM client; SELECT client.* FROM client; 2- Afficher tous les articles ? SELECT num_art, designation, prix FROM article; SELECT * FROM article; 3- Les noms et prénoms des clients ? SELECT nom, prenom FROM client;
  • 22. 4- Sélection des tuples: 4- Les noms des clients ? SELECT DISTINCT nom FROM client; 5- La liste des clients par ordre alphabétique des noms ? SELECT nom, prenom FROM client ORDER BY nom; 6- La liste des clients par ordre alphabétique des noms puis les prénoms ? SELECT nom, prenom FROM client ORDER BY nom, prenom;
  • 23. 4- Sélection des tuples: 7- La liste des articles par ordre descendant des prix ? SELECT * FROM article ORDER BY prix DESC; 8- Le nom et prénom du client n° 3 ? SELECT nom, prenom FROM client WHERE num_cli=3; 9- Le nom et prénom des clients n°3 et n°5 ? SELECT nom, prenom FROM client WHERE num_cli=3 OR num_cli=5;
  • 24. 4- Sélection des tuples: 10- Afficher le nom et prénom des clients n°3, n°5, n°6 et n°8 ? SELECT nom, prenom FROM client WHERE num_cli IN (3, 5, 6, 8); 11- Les clients de la ville de Saida ? SELECT * FROM client WHERE ville='saida'; SELECT * FROM client WHERE ville LIKE 'saida'; 12- Les clients qui ne sont pas de SBA ? SELECT * FROM client WHERE ville<>'sba'; SELECT * FROM client WHERE ville != 'sba';
  • 25. 4- Sélection des tuples: 13- Les clients dont la ville commence par 's' ? SELECT * FROM client WHERE UPPER(ville) LIKE ‘S%'; SELECT * FROM client WHERE LOWER(ville) LIKE ‘s%'; 14- Les clients dont le nom ne commence pas par 'm' ? SELECT * FROM client WHERE LOWER(nom) NOT LIKE 'm%'; 15- Les clients dont le nom se termine par 'i' ? SELECT * FROM client WHERE LOWER(nom) LIKE '%i';
  • 26. 4- Sélection des tuples: 16- Les clients dont le nom ne se termine pas par 'i' ? SELECT * FROM client WHERE LOWER(nom) NOT LIKE '%i'; 17- Les clients qui sont de Saida ou de Mascara ? SELECT * FROM client WHERE lower(ville)='saida' OR lower(ville) =’mascara’; SELECT * FROM client WHERE lower(ville) IN ('saida',’mascara’); 18- Les clients qui ne sont ni d'Alger ni d'Oran ? SELECT * FROM client WHERE lower(ville)<>'alger' AND lower(ville)!=’oran’; SELECT * FROM client WHERE lower(ville) NOT IN ('alger',’oran’);
  • 27. 4- Sélection des tuples: 19- Les articles que leur prix dépasse 50000 ? SELECT * FROM article WHERE prix>50000; 20- Le client qui a fait la commande n°2 ? SELECT C.num_cli, nom, prenom, ville FROM client C, commande M WHERE C.num_cli= M.num_cli AND num_cmd=2; SELECT num_cli, nom, prenom, ville FROM client NATURAL JOIN commande WHERE num_cmd=2; SELECT C.* FROM client C, commande M WHERE C.num_cli= M.num_cli AND num_cmd=2;
  • 28. 4- Sélection des tuples: 21- Les articles du bon de commande n°1 (numéro de l'article, désignation, son prix et la quantité commandée) ? SELECT article.*, qte FROM article A, ligne_cmd L WHERE num_cmd=1 AND A.num_art=L.num_art; SELECT num_art, designation, prix, qte FROM article NATURAL JOIN ligne_cmd WHERE num_cmd=1; 22- Les clients qui ont fait une commande ? SELECT DISTINCT C.* FROM client C, commande M WHERE C.num_cli=M.num_cli; SELECT DISTINCT num_cli, nom, preom, ville FROM client NATURAL JOIN commande;
  • 29. 4- Sélection des tuples: 23- Les articles commandés ? SELECT DISTINCT A.* FROM article A, ligne_cmd L WHERE A.num_art=L.num_art; SELECT DISTINCT num_art, designation, prix FROM article NATURAL JOIN ligne_cmd;
  • 30. 4- Sélection des tuples: 24- Total des quantités commandés par article ? SELECT A.num_art, designation, SUM(qte) FROM article A, ligne_cmd L WHERE A.num_art=L.num_art GROUP BY A.num_art, designation; SELECT num_art, designation, SUM(qte) FROM article A NATURAL JOIN ligne_cmd GROUP BY num_art, designation;
  • 31. 4- Sélection des tuples: 25- Calculer les montants des articles du bon de commande n°7 ? SELECT A.num_art, designation, prix, qte, qte*prix montant FROM article A, ligne_cmd L WHERE A.num_art=L.num_art AND L.num_cmd=7; SELECT num_art, designation, prix, qte, qte*prix montant FROM article NATURAL JOIN ligne_cmd WHERE num_cmd=7; 26- Les clients qui n'ont passé aucune commande ? SELECT * FROM client WHERE num_cli NOT IN (SELECT num_cli FROM commande);
  • 32. 4- Sélection des tuples: 27- Les articles dont les quantités commandés est plus que 2 ? SELECT A.num_art, designation, SUM(qte) as total FROM article A, ligne_cmd L WHERE A.num_art=L.num_art GROUP BY A.num_art , designation HAVING SUM(qte)>2; SELECT num_art, designation, SUM(qte) as total FROM article NATURAL JOIN ligne_cmd GROUP BY A.num_art , designation HAVING SUM(qte)>2;
  • 33. 4- Sélection des tuples: 28- Les clients qui ont acheté une souris ? SELECT DISTINCT C.* FROM client C, commande M, article A, ligne_cmd L WHERE C.num_cli=M.num_cli AND M.num_cmd=L.num_cmd AND A.num_art=L.num_art AND LOWER(designation) LIKE ’souris%’; SELECT DISTINCT num_cli, nom, prenom, ville FROM client NATURAL JOIN commande NATURAL JOIN article NATURAL JOIN ligne_cmd WHERE LOWER(designation) LIKE ’souris%’;
  • 34. 4- Sélection des tuples: 29- Les clients qui n’ont pas acheté de clavier ? SELECT * FROM client WHERE num_cli NOT IN (SELECT C.num_cli FROM client C, commande M, article A, ligne_cmd L WHERE C.num_cli=M.num_cli AND M.num_cmd=L.num_cmd AND A.num_art=L.num_art AND LOWER(designation) LIKE ’clavier%’); SELECT * FROM client WHERE num_cli NOT IN (SELECT num_cli FROM client NATURAL JOIN commande NATURAL JOIN article NATURAL JOIN ligne_cmd WHERE LOWER(designation) LIKE ’clavier%’);
  • 35. 4- Sélection des tuples: 30- Les clients qui ont acheté un clavier ou une souris ? SELECT DISTINCT C.num_cli, nom, prenom, ville FROM client C, commande M, article A, ligne_cmd L WHERE C.num_cli=M.num_cli AND M.num_cmd=L.num_cmd AND A.num_art=L.num_art AND (LOWER(designation) LIKE ’souris%’ OR LOWER(designation) LIKE ‘clavier%’); SELECT DISTINCT num_cli, nom, prenom, ville FROM client C NATURAL JOIN commande NATURAL JOIN article NATURAL JOIN ligne_cmd WHERE LOWER(designation) LIKE ’souris%’ OR LOWER(designation) LIKE ‘clavier%’;
  • 36. 31- Les clients qui ont acheté un clavier et une souris ? SELECT DISTINCT C.* FROM Client C, Commande M, Article A, Ligne_cmd L WHERE C.num_cli=M.num_cli AND M.num_cmd=L.num_cmd AND A.num_art=L.num_art AND LOWER(designation) LIKE 'souris%‘ AND C.num_cli IN (SELECT C.num_cli FROM Client C, Commande M, Article A, Ligne_cmd L WHERE C.num_cli=M.num_cli AND M.num_cmd=L.num_cmd AND A.num_art=L.num_art AND LOWER(designation) LIKE 'clavier%‘); SELECT DISTINCT num_cli, nom, prenom, ville FROM Client NATURAL JOIN Commande NATURAL JOIN Article NATURAL JOIN Ligne_cmd WHERE lower(designation) LIKE 'souris%' AND num_cli IN (SELECT num_cli FROM Client C NATURAL JOIN Commande NATURAL JOIN Article NATURAL JOIN Ligne_cmd WHERE lower(designation) LIKE 'clavier%');
  • 37. 31- Les clients qui ont acheté un clavier et une souris ? SELECT num_cli, nom, prenom, ville FROM Client NATURAL JOIN Commande NATURAL JOIN Article NATURAL JOIN Ligne_cmd WHERE lower(designation) LIKE 'souris%‘ INTERSECT SELECT num_cli, nom, prenom, ville FROM Client C NATURAL JOIN Commande NATURAL JOIN Article NATURAL JOIN Ligne_cmd WHERE lower(designation) LIKE 'clavier%');
  • 38. 32- Les clients qui ont acheté un clavier et jamais une souris ? SELECT C.num_cli, nom, prenom, ville FROM Client C, Commande M, Article A, Ligne_cmd L WHERE C.num_cli=M.num_cli AND M.num_cmd=L.num_cmd AND A.num_art=L.num_art AND lower(designation) LIKE 'clavier%' AND C.num_cli NOT IN (SELECT C.num_cli FROM Client C, Commande M, Article A, Ligne_cmd L WHERE C.num_cli=M.num_cli AND M.num_cmd=L.num_cmd AND A.num_art=L.num_art AND lower(designation) LIKE 'souris%'); SELECT num_cli, nom, prenom, ville FROM Client NATURAL JOIN Commande NATURAL JOIN Article NATURAL JOIN Ligne_cmd WHERE lower(designation) LIKE 'clavier%' AND C.num_cli NOT IN (SELECT num_cli FROM Client NATURAL JOIN Commande NATURAL JOIN Article NATURAL JOIN Ligne_cmd WHERE lower(designation) LIKE 'souris%');
  • 39. SELECT num_cli, nom, prenom, ville FROM Client NATURAL JOIN Commande NATURAL JOIN Article NATURAL JOIN Ligne_cmd WHERE lower(designation) LIKE 'clavier%‘ MINUS SELECT num_cli, nom, prenom, ville FROM Client NATURAL JOIN Commande NATURAL JOIN Article NATURAL JOIN Ligne_cmd WHERE lower(designation) LIKE 'souris%’; 32- Les clients qui ont acheté un clavier et jamais une souris ?
  • 40. SELECT C.* FROM Client C, Commande M, Article A, Ligne_cmd L WHERE C.num_cli=M.num_cli AND M.num_cmd=L.num_cmd AND A.num_art=L.num_art AND lower(designation) LIKE 'clavier%' AND C.num_cli NOT IN (SELECT C.num_cli FROM Client C, Commande M, Article A, Ligne_cmd L WHERE C.num_cli=M.num_cli AND M.num_cmd=L.num_cmd AND A.num_art=L.num_art AND lower(designation) NOT LIKE 'clavier%'); SELECT num_cli, nom, prenom, ville FROM Client NATURAL JOIN Commande NATURAL JOIN Article NATURAL JOIN Ligne_cmd WHERE lower(designation) LIKE 'clavier%' AND num_cli NOT IN (SELECT num_cli FROM Client C NATURAL JOIN Commande NATURAL JOIN Article NATURAL JOIN Ligne_cmd WHERE lower(designation) NOT LIKE 'clavier%'); 33- Les clients qui ont acheté uniquement le produit clavier ?
  • 41. SELECT count(num_art) nbre_article FROM ligne_cmd WHERE num_cmd=5; SELECT count(*) FROM ligne_cmd WHERE num_cmd=5; 34- Combien d’article il y a dans le bon de commande n°5 ? SELECT num_cmd, COUNT(num_art) FROM ligne_cmd GROUP BY num_cmd; SELECT num_cmd, COUNT(*) FROM ligne_cmd GROUP BY num_cmd; 35- Combien d’article y-a-il dans chaque bon de commande ?
  • 42. SELECT count(distinct num_cli) FROM commande M, article A, ligne_cmd L WHERE M.num_cmd=L.num_cmd AND A.num_art=L.num_art AND lower(designation) LIKE ’imprimante%’; SELECT count(distinct num_cli) FROM commande NATURAL JOIN article NATURAL JOIN ligne_cmd WHERE lower(designation) LIKE ’imprimante%’; 36- Combien de client ont acheté une imprimante ? SELECT COUNT(DISTINCT num_art) FROM commande M, ligne_cmd L WHERE M.num_cmd=L.num_cmd AND M.num_cli=6; SELECT COUNT(DISTINCT num_art) FROM commande NATURAL JOIN ligne_cmd WHERE num_cli=6; 37- Combien de produit différent a acheté le client n°6 ?
  • 43. SELECT SUM(qte*prix) Total FROM article A, ligne_cmd L WHERE A.num_art=L.num_art AND num_cmd=7; SELECT SUM(qte*prix) Total FROM article NATURAL JOIN ligne_cmd WHERE num_cmd=7; 38- Donner le total du bon de commande n°7 ? SELECT num_cmd, SUM(qte*prix) Total FROM article A, ligne_cmd L WHERE A.num_art=L.num_art GROUP BY num_cmd; SELECT num_cmd, SUM(qte*prix) Total FROM article NATURAL JOIN ligne_cmd GROUP BY num_cmd; 39- Donner le total pour chaque bon de commande ?
  • 44. SELECT SUM(qte*prix) Total FROM article A, commande M, ligne_cmd L WHERE A.num_art=L.num_art AND M.num_cmd=L.num_cmd AND num_cli=6; SELECT SUM(qte*prix) Total FROM article NATURAL JOIN commande NATURAL JOIN ligne_cmd WHERE num_cli=6; 40- Donner le total des achats du client n°6 ? SELECT num_cli, SUM(qte*prix) Total FROM article A, commande M, ligne_cmd L WHERE A.num_art=L.num_art AND M.num_cmd=L.num_cmd GROUP BY num_cli; SELECT num_cli, SUM(qte*prix) Total FROM article NATURAL JOIN commande NATURAL JOIN ligne_cmd GROUP BY num_cli; 41- Donner le total des achats par clients ?
  • 45. Est une vision logique des données contenues dans une ou plusieurs tables. Elle est considérée comme une table virtuelle qui n’a pas d’existence propre, aucune donnée ne lui est associée et sa description est stockée sous la forme d’une requête. 1 Définition
  • 46. • Confidentialité Les utilisateurs n’ont le droit d’accéder qu’aux vues (Vue sur la table Employé destinée aux employés ne sélectionne pas la colonne Salaire contrairement à la vue destinée aux chefs de service.) • Cacher la complexité des données aux utilisateurs Vue simplifiée des données Simplifier les requêtes des utilisateurs non spécialistes • Présenter différentes perspectives sur les données aux utilisateurs Renommage des colonnes • Requêtes complexes Qui ne peuvent être faites sans vues Qui sont fréquemment réalisées 2 Utlité
  • 47. CREATE OR REPLACE VIEW Petit_pays AS SELECT * FROM Pays WHERE surface < 100 WITH CHECK OPTION CONSTRAINT CK_Petit_pays; 3 Syntaxe CREATE [OR REPLACE] VIEW nom_vue [ ( nv_nom_col)*] AS subquery [WITH CHECK OPTION [CONSTRAINT nom_contrainte] ] [WITH READ ONLY]; Exemple
  • 48. Exemple Vue (Confidentialité) Employe (Numero, Nom, Prenom, Adresse, Num_service, Salaire, performance) Create view Information_me_concernant As select * From employe Where upper(nom) = upper (user) Chaque utilisateur peut visualiser un seul tuple de la relation: celui qui le concerne GRANT SELECT ON Information_me_concernant TO public

Notas do Editor

  1. .