You are on page 1of 2

Jaidene Hachemi

Revision SQL

INFO1-1

Exercice 2 :

Partie 1 :

a)CREATE TABLE enseignants (ensno NUMBER CONSTRAINT ck_num CHECK (ensno between 1 and
100) PRIMARY KEY,ensnom VARCHAR2(25) NOT NULL CONSTRAINT ck_nom CHECK (ensnom LIKE('_
%')),ensprenom VARCHAR2(25) NOT NULL);

CREATE TABLE modules (codemodule NUMBER PRIMARY KEY,module Varchar2(50) NOT NULL,pl
NUMBER DEFAULT 0,p2 NUMBER DEFAULT 0);

CREATE TABLE classes (classe varchar2(20) PRIMARY KEY CONSTRAINT check_classe CHECK
(SUBSTR(classe, 1, 1) BETWEEN 1 AND 5));

CREATE TABLE programmes (nbh number not null,ensno number constraint fk_ens_prog references
enseignants(ensno),classe varchar2(20) constraint fk_prog_class references
classes(classe),codemodule number constraint fk_prog_mod references modules(codemodule));

b)alter table programmes modify ensno default 100;

alter table programmes add p1 number default 0;

alter table programmes add constraint ck_p1 check (p1 IN(0,21,42,63,84));

alter table programmes add p2 number default 0;

alter table programmes add constraint ck_p2 check (p2 IN(0,21,42,63,84));

insert into modules values(10,'Bases De données',NULL,NULL);

insert into modules values(20,'Systèmes d''exploitation',NULL,NULL);

Partie 2 :

a)insert into classes values('2A1');

insert into classes values('3M1');

insert into classes values('4TELB3');

insert into enseignants values(58,'N1','P1');

insert into programmes values(42,58,'2A1',10,21,21);

insert into enseignants values(100,'Non affecté','Non affecté');

insert into programmes values(42,NULL,'3M1',20,42,NULL);

b)UPDATE enseignants SET ensnom = UPPER(ensnom), ensprenom = LOWER(SUBSTR(ensprenom, 1,


1)) || SUBSTR(ensprenom, 2);

c)UPDATE programmes SET classe='3M1' WHERE codemodule=20;

d)DELETE FROM modules WHERE module='Systèmes d''exploitation';


Partie 3:

a)select classe,codemodule,ensno,nbh from programmes order by classe,codemodule;

b)select * from programmes where nbh=42;

c) select * from programmes where p1=21 and classe='2A1';

d) select classe from programmes where codemodule=10;

e) select p.classe,p.codemodule,m.module,p.ensno,ensnom,ensprenom,p.nbh from programmes p


inner join modules m on(p.codemodule=m.codemodule) right join enseignants e on
(e.ensno=p.ensno) where p.ensno=58;

f) select count(m.module) as nbr_modules from programmes p inner join modules m


on(m.codemodule=p.codemodule) group by p.classe;

select max(p.p1) as chrg_tot from programmes p inner join modules m


on(m.codemodule=p.codemodule) group by p.classe;

g) select classe from programmes p inner join modules m on(m.codemodule=p.codemodule) where


m.codemodule>10 and p.nbh>28 group by p.classe;

You might also like