Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Exercice Oracle

Télécharger au format doc, pdf ou txt
Télécharger au format doc, pdf ou txt
Vous êtes sur la page 1sur 6

Objectifs : - Créer une base de données Oracle avec SQL PLUS.

- Mise à jour des données.


- Créer des requêtes a l'aide du langage SQL PLUS d'Oracle.

Aide-mémoire SQL*Plus

Base de données exemple

Considérons la base de données dont le schéma et l'extension sont donnés ci-dessous.

EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)


DEPT (DEPTNO, DNAME, LOC)

Clés primaires
Clés étrangères

EMP

DEPT
Création de la base de données, contraintes
d’intégrité
1) Créer la table DEPT. Ne pas oublier de définir ne numéro de département DEPTNO comme
clé primaire. Intégrer également la contrainte de domaine suivante : le nom d'un
département (DNAME) ne peut être que ACCOUNTING, RESEARCH, SALES ou OPERATIONS.

2) Remplir la table DEPT.

3) Recopier la table EMP en passant la commande suivante :

CREATE TABLE EMP AS SELECT * FROM SCOTT.EMP;


(création de la table EMP par copie de la table EMP de l’utilisateur SCOTT).

4) Insérer le tuple (7369, ‘Bidon’, NULL, NULL, NULL, NULL, NULL, NULL) dans la table EMP.
Ça fonctionne. Est-ce normal ?

5) Annuler l’insertion précédente.

6) Ajouter les contraintes d’intégrité nécessaires à la table EMP (clé primaire et clés étrangères)
à l’aide de la commande ALTER TABLE EMP ADD CONSTRAINT…

7) Dans EMP, ajouter les nouveaux employés :

(7369, 'WILSON', 'MANAGER', 7839, '17/11/91', 3500.00, 600.00, 10) ; (7657, 'WILSON',
'MANAGER', 7839, '17/11/91', 3500.00, 600.00, 50) ; (7657, 'WILSON', 'MANAGER', 7000,
'17/11/91', 3500.00, 600.00, 10) ; (7657, 'WILSON', 'MANAGER', 7839, '17/11/91', 3500.00,
600.00, 10). Remarques ?

8) Valider l’insertion précédente.

Mise à jour de la base de données


1) Changer la localisation (LOC) du département SALES de CHICAGO à PITTSBURGH.

2) Dans EMP, augmenter de 10 % le salaire (SAL) des vendeurs dont la commission (COMM)
est supérieure à 50 % du salaire.

3) Dans EMP, attribuer aux employés en poste avant le 01/01/82 (HIREDATE) et ayant une
commission non spécifiée (NULL) une commission égale à la moyenne des commissions.

4) Annuler les trois mises à jour précédentes.

5) Dans DEPT, supprimer le département n° 20 (DEPTNO). Remarque ?

Interrogation de la base de données


Exprimer en SQL*Plus les requêtes suivantes.
1) Nom (ENAME), salaire, commission, salaire+commission de tous les vendeurs (SALESMAN).
2) Nom des vendeurs par ordre décroissant du ratio commission/salaire.
3) Nom des vendeurs dont la commission est inférieure à 25% de leur salaire.
4) Nombre d'employés du département n° 10.
5) Nombre d'employés ayant une commission.
6) Nombre de fonctions (JOB) différentes.
7) Salaire moyen par fonction (sans tenir compte des commissions).
8) Total des salaires du département SALES.
9) Nom des employés avec le nom de leur département.
10) Nom, fonction et salaire de l'employé ayant le salaire le plus élevé.
11) Nom des employés gagnant plus que JONES.
12) Nom des employés occupant la même fonction que JONES.
13) Nom des employés ayant même manager (MGR) que CLARK.
14) Nom et fonction des employés ayant même fonction et même manager que TURNER.
15) Nom des employés embauchés avant tous les employés du département n° 10.
16) Liste des employés en indiquant pour chacun son nom et celui de son manager.
17) Nom des employés ne travaillant pas dans le même département que leur manager.

CORRECTION

Création de la base de données, contraintes


d’intégrité
1) CREATE TABLE DEPT( DEPTNO NUMBER(2),
DNAME CHAR(20),
LOC CHAR(20),
CONSTRAINT D_CLEP PRIMARY KEY (DEPTNO),
CONSTRAINT D_DOM CHECK (DNAME IN
('ACCOUNTING','RESEARCH','SALES','OPERATIONS')));

2) INSERT INTO DEPT VALUES (10, ‘ACCOUNTING’, ‘NEW-YORK’);


INSERT INTO DEPT VALUES (20, ‘RESEARCH’, ‘DALLAS’);
INSERT INTO DEPT VALUES (30, ‘SALES’, ‘CHICAGO’);
INSERT INTO DEPT VALUES (40, ‘OPERATIONS’, ‘BOSTON’);

3) CREATE TABLE EMP AS SELECT * FROM SCOTT.EMP;

4) INSERT INTO EMP VALUES (7369, 'Bidon', NULL, NULL, NULL, NULL, NULL, NULL);

5) ROLLBACK;

6) ALTER TABLE EMP ADD CONSTRAINT E_CLEP PRIMARY KEY(EMPNO);


ALTER TABLE EMP ADD CONSTRAINT E_CLET1 FOREIGN KEY(DEPTNO)
REFERENCES
DEPT(DEPTNO);
ALTER TABLE EMP ADD CONSTRAINT E_CLET2 FOREIGN KEY(MGR) REFERENCES
EMP(EMPNO);

7) INSERT INTO EMP VALUES


(7657, 'WILSON', 'MANAGER', 7839, '17/11/91', 3500.00, 600.00, 10);

8) COMMIT;
Mise à jour de la base de données

1) UPDATE DEPT SET LOC=’PITTSBURGH’ WHERE DNAME=’SALES’;

2) UPDATE EMP SET SAL=SAL*1.1 WHERE COMM>0.5*SAL;

3) UPDATE EMP
SET COMM=(SELECT AVG(COMM) FROM EMP)
WHERE HIREDATE<'01/01/82'
AND COMM IS NULL;

4) ROLLBACK;

5) DELETE FROM DEPT WHERE DEPTNO=20;

Interrogation de la base de données

1) SELECT ENAME, SAL, COMM, SAL+COMM FROM EMP WHERE JOB='SALESMAN';

2) SELECT ENAME FROM EMP ORDER BY COMM/SAL DESC;

3) SELECT ENAME FROM EMP WHERE COMM<.25*SAL;

4) SELECT COUNT(EMPNO) FROM EMP WHERE DEPTNO=10;

5) SELECT COUNT(EMPNO) FROM EMP WHERE COMM IS NOT NULL;

6) SELECT COUNT(DISTINCT JOB) FROM EMP;

7) SELECT JOB, AVG(SAL) FROM EMP GROUP BY JOB;

8) SELECT SUM(SAL) FROM EMP, DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO AND


DNAME='SALES';

9) SELECT ENAME, DNAME FROM EMP, DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO;

10) SELECT ENAME, JOB, SAL FROM EMP WHERE SAL>=ALL(SELECT SAL FROM EMP);

11) SELECT ENAME FROM EMP WHERE SAL>(SELECT SAL FROM EMP WHERE
ENAME='JONES');

12) SELECT ENAME FROM EMP WHERE JOB=(SELECT JOB FROM EMP WHERE
ENAME='JONES') AND ENAME<>’JONES’;

13) SELECT ENAME FROM EMP WHERE MGR=(SELECT MGR FROM EMP WHERE
ENAME='CLARK') AND ENAME<>'CLARK';

14) SELECT ENAME FROM EMP WHERE (JOB, MGR) IN


(SELECT JOB, MGR FROM EMP WHERE ENAME='TURNER')
AND ENAME<>'TURNER';
15) SELECT ENAME FROM EMP WHERE HIREDATE<ALL
(SELECT HIREDATE FROM EMP WHERE DEPTNO=10);

16) SELECT SUBALTERNE.ENAME, SUPERIEUR.ENAME FROM EMP SUBALTERNE, EMP


SUPERIEUR WHERE SUBALTERNE.MGR=SUPERIEUR.EMPNO;

17) SELECT SUB.ENAME FROM EMP SUB, EMP SUP WHERE SUB.MGR=SUP.EMPNO
AND SUB.DEPTNO<>SUP.DEPTNO;

http://mrproof.blogspot.com/2010/11/exercice-sgbd-oracle-sql-et-algebre.html

Pour chacune des relations suivantes :

- identifier les redondances éventuelles ainsi que les anomalies


- déterminer la ou les clés
- déterminer la forme normale
- proposer une décomposition en BCNF si possible sans perte d'information ni perte de
dépendances fonctionnelles.Sinon, justifier.

Exercice 1 : Pièce
Description des pièces employées dans un atelier de montage.

Pièce(numPièce, prix, TVA, libellé, catégorie)

Exercice 2 : Primes
Liste des primes attribuées au personnel technique en fonction du type de machine sur lequel il
travaille.

Prime(numTypeMachine, nomMachine, numTechnicien, montantPrime, nomTechnicien)

Exercice 3 : Auteurs
Liste des auteurs d'une publication avec leur position dans la liste des auteurs.

Auteurs(publication, auteur, position)


Exercice 4 : Commandes
Ensemble de commandes de produits par des clients.

Commande(numCommande, numClient, nomClient, date, numProduit, nomProduit)

Exercice 5 : Employés
Liste d'employés travaillant sur des projets d'un laboratoire.

Employé(numEmployé, numLaboratoire, numProjet, nomEmployé, nomProjet, adresse)

Exercice 6 : Cinéma
Liste de fi lms projetés dans des salles de cinéma.

Cinéma (film, ville, salle, distributeur, délégué)

Vous aimerez peut-être aussi