Vous êtes sur la page 1sur 3

TP n°1

Concepts fondamentaux des bases de données

1.Créations de tables – Requêtes simples- Modifications simples


Création de tables

Soit le schéma relationnel :

EMP(Matr, NomE, Poste, DatEmb, Sup, Salaire, Commission, NumDept)

DEPT(NumDept, NomDept, Lieu)

PROJET(CodeP, NomP)

PARTICIPATION(Matr, CodeP, Fonction)

Créez les deux tables PROJET et PARTICIPATION pour traduire le schéma relationnel donné en
cours (gestion des employés et des projets).
Comme ces 2 tables seront utilisées par tous les TP suivants, faites valider cet exercice par
l'enseignant avant de continuer.

Donnez les commandes SQL pour traduire les interrogations simples suivantes :

1. Affichez toutes les informations de la table EMP.


2. Affichez seulement la liste des matricules avec les noms.
3. Affichez les noms des employés du département 20.
4. **Trouvez le poste des employés dont le salaire est supérieur à 3000 €.
5. **Affichez le nom des commerciaux (poste = COMMERCIAL) et des ingénieurs
(poste = INGENIEUR), et la somme totale perçue (salaire + commission).

Modifications simples des données

1. Créer un nouveau département : 50, COMPTABILITE, TOULOUSE


2. Créer un nouveau département : 60, DIRECTION
3. Dupliquer l'enregistrement du département 20, en lui donnant le numéro de
département 25 (en utilisant un select pour récupérer les informations sur le
département 20).
4. Le département 60 s'est maintenant établi dans la ville de BORDEAUX. Enregistrer le
fait dans la table DEPT.
5. Promouvoir Mr. MERCIER au poste de PDG, dans le département 60.
6. Éliminer de la table EMP la ligne de Mr. BIRAUD qui prend sa retraite.
7. **Augmenter de 10 % le salaire de tous les employés du département 10.
8. **Mr. SIMON vient d'être embauché comme commercial au salaire de 10000 Frs.
L'enregistrer sous le matricule 7910 dans le département 30.
Corrections

Interrogations

select * from emp;

2. select matr, nome from emp;

3. select nomE from emp where dept = 20;

4. select distinct poste from emp where sal > 3000;

5.
select nomE, sal + nvl(comm, 0) "Rémunération totale" from emp
where poste = 'COMMERCIAL' or poste = 'INGENIEUR';

Variante :

select nomE, sal + nvl(comm, 0) "Rémunération totale" from emp


where poste in ('COMMERCIAL', 'INGENIEUR');

ou si on n'est pas certain que le poste est en majuscule :

select nomE, sal + nvl(comm, 0) "Rémunération totale" from emp


where upper(poste) in ('COMMERCIAL', 'INGENIEUR');

Création de tables
create table projet(
codeP varchar(4) constraint pk_projet primary key,
nomP varchar(15) not null)

create table participation(


matr integer constraint fk_emp_part references emp,
codeP varchar(4) constraint fk_projet_part references projet,
fonctionP varchar(15),
constraint pk_part primary key (matr, codeP))

Modifications:

1.
insert into dept (dept, nomD, lieu)
VALUES (50,'COMPTABILITE','TOULOUSE');
2.
insert into dept (dept, nomD)
VALUES (60,'DIRECTION');

3.
insert into dept (dept, nomD, lieu)
select 25, nomD, lieu from dept where dept=20;

Attention, la dernière commande donne une erreur car il y a une


contrainte UNIQUE sur nomD.

4.
update dept set lieu='BORDEAUX' where dept = 60;

5.
update emp
set poste='PDG', dept = 60
where nomE = 'MERCIER';

6.
delete from emp where nomE='BIRAUD'

7.
update emp set sal=sal*1.1 where dept=10

8.
insert into emp(sal, matr, nomE, dept, poste)
values (10000, 7910, 'SIMON', 30, 'COMMERCIAL')

Vous aimerez peut-être aussi