master
Pascal Lafourcade 5 years ago
parent a5d7e83c9b
commit 0777f85e74

@ -0,0 +1,46 @@
@2020nba-setup.sql;
DROP TABLE TLIGNE;
CREATE TABLE TLIGNE(LIGNE VARCHAR2(200));
variable vidgame varchar2(10)
prompt Entrer un game
accept vidgame
DECLARE
dnom varchar2(200);
dprenom varchar2(200);
dposte char(2);
didjoueur varchar2(20);
dnbfautes number;
dfautes number;
CURSOR Cnom IS SELECT j.id_joueur, j.Nom, j.Prenom, j.Poste
FROM JOUEUR j, JOUE e
WHERE j.id_joueur = e.id_joueur AND e.id_game = '&vidgame';
CURSOR Cfaute IS SELECT FAUTES, COUNT(ID_game) FROM JOUE WHERE id_joueur = didjoueur GROUP BY FAUTES ORDER BY FAUTES;
BEGIN
INSERT INTO tligne VALUES ('Nom Prenom Poste');
OPEN Cnom;
FETCH Cnom INTO didjoueur, dnom, dprenom, dposte;
WHILE Cnom%found LOOP
INSERT INTO tligne VALUES (dnom||' '||dprenom||' '||dposte);
OPEN Cfaute;
INSERT INTO tligne VALUES ('Faute Nb Matchs');
FETCH Cfaute INTO dfautes, dnbfautes;
WHILE Cfaute%found LOOP
INSERT INTO tligne VALUES (TO_CHAR(dfautes)||' '||TO_CHAR(dnbfautes));
FETCH Cfaute INTO dfautes, dnbfautes;
END LOOP;
CLOSE Cfaute;
FETCH Cnom INTO didjoueur, dnom, dprenom, dposte;
END LOOP;
CLOSE Cnom;
END;
.
/
SELECT * FROM tligne ;

@ -0,0 +1,48 @@
@nba-setup.sql;
DROP TABLE tligne ;
CREATE TABLE tligne (ligne varchar2(100)) ;
set echo off;
set verify off;
set feedback off;
variable vidjoueur char(4)
prompt Entrer la reference du joueur :
accept vidjoueur
DECLARE
dmaxpoint number;
dnbjoueur number;
didjoueur char(4);
BEGIN
SELECT count(Nom) INTO dnbjoueur FROM JOUEUR
WHERE id_joueur ='&vidjoueur';
if dnbjoueur != 0 then
SELECT max(points) INTO dmaxpoint FROM JOUE
WHERE id_joueur ='&vidjoueur';
INSERT INTO tligne VALUES ('Le maximum de point du joueur '||'&vidjoueur'||' est '||to_char(dmaxpoint));
ELSE
INSERT INTO tligne VALUES('AVEC COUNT : Joueur inconnu');
end if;
SELECT id_joueur INTO didjoueur FROM JOUE
WHERE id_joueur ='&vidjoueur';
EXCEPTION
when no_data_found then
INSERT INTO tligne VALUES('AVEC EXCEPTION : Joueur n a pas fait de match');
end ;
.
/
SELECT * FROM tligne ;
set verify on;
set feedback on;
set echo on;

@ -0,0 +1,41 @@
@nba-setup.sql;
DROP TABLE tligne ;
CREATE TABLE tligne (ligne varchar2(100)) ;
set echo off;
set verify off;
set feedback off;
DECLARE
dnom varchar2(20);
dprenom varchar2(20);
ddate date;
dnomequipe varchar2(20);
CURSOR c IS SELECT j.Nom, j.Prenom, j.Date_de_naissance, e.Nom FROM JOUEUR j, APPARTIENT a, EQUIPE e
WHERE a.id_joueur = j.id_joueur and e.id_equipe = a.id_equipe and a.Date_fin is NULL
Order by Date_de_naissance;
BEGIN
OPEN c;
INSERT INTO tligne VALUES ('Nom Prenom Date de naissance Nom Equipe Actuelle');
FETCH c INTO dnom, dprenom, ddate, dnomequipe;
WHILE c%found
LOOP
INSERT INTO tligne VALUES (dnom||' '||dprenom||' '||to_char(ddate)||' '||dnomequipe);
FETCH c INTO dnom, dprenom, ddate, dnomequipe;
END LOOP;
CLOSE C;
END;
.
/
SELECT * FROM tligne ;
set verify on;
set feedback on;
set echo on;

@ -0,0 +1,88 @@
DROP TABLE JOUE;
DROP TABLE GAME;
DROP TABLE APPARTIENT cascade constraints;
DROP TABLE JOUEUR cascade constraints;
DROP TABLE EQUIPE cascade constraints;
CREATE TABLE JOUEUR(id_joueur CHAR(6) PRIMARY KEY,
Nom VARCHAR2(20),
Prenom VARCHAR2(20),
Date_de_naissance DATE,
Taille NUMBER,
Poste char(2) constraint c_poste CHECK (Poste IN('PG','SG','SF','PF','C')));
CREATE TABLE EQUIPE(id_equipe CHAR(6) PRIMARY KEY,
Nom VARCHAR2(20),
Ville VARCHAR2(20),
Conference VARCHAR2(5) constraint c_conf check (Conference in('Est','Ouest')),
Date_creation DATE);
CREATE TABLE GAME(id_game CHAR(6) PRIMARY KEY,
Date_game DATE,
id_equipe_domicile CHAR(6) references EQUIPE,
id_equipe_exterieur CHAR(6) references EQUIPE,
Ville VARCHAR2(20),
Categorie char(7) constraint c_type check (Categorie in('Amical','Saison','Playoff','Allstar')),
Score_domicile NUMBER,
Score_exterieur NUMBER,
Prolongation NUMBER);
CREATE TABLE JOUE(id_joueur CHAR(6) references JOUEUR,
id_game CHAR(6) references GAME,
Points NUMBER,
Rebonds NUMBER,
Interceptions NUMBER,
Contres NUMBER,
Passes NUMBER,
Balles_perdues NUMBER,
Fautes NUMBER,
PRIMARY KEY(id_joueur,id_game));
CREATE TABLE APPARTIENT(id_contrat CHAR(6) PRIMARY KEY,
id_joueur CHAR(6) references JOUEUR,
id_equipe CHAR(6) references EQUIPE,
Date_debut DATE,
Date_fin DATE,
Salaire_jour NUMBER);
insert into JOUEUR values ('J00001','Jordan','Michael','01-Jan-1980','193','SF');
insert into JOUEUR values ('J00002','Bird','Larry','02-Jan-1980','194','SF');
insert into JOUEUR values ('J00003','Johnson','Magic','03-Jan-1980','201','PG');
insert into JOUEUR values ('J00004','Thomas','Isiah','04-Jan-1980','185','PG');
insert into JOUEUR values ('J00005','Oneil','Shaquille','04-Jan-1992','185','C');
insert into JOUEUR values ('J00006','Parker','Tony','04-Jan-1996','185','PG');
insert into EQUIPE values ('E00001','Bulls','Chicago','Est','04-Jan-1970');
insert into EQUIPE values ('E00002','Lakers','LA','Ouest','06-Jan-1970');
insert into EQUIPE values ('E00003','Pistons','Detroit','Est','07-Jan-1970');
insert into EQUIPE values ('E00004','Celtics','Boston','Est','09-Jan-1970');
insert into EQUIPE values ('E00005','Spurs','San Antonio','Ouest','06-Jan-1971');
insert into APPARTIENT values ('C00001','J00001','E00001','04-Jan-1980',NULL,10000);
insert into APPARTIENT values ('C00002','J00002','E00004','04-Jan-1981',NULL,1000);
insert into APPARTIENT values ('C00003','J00003','E00002','04-Jan-1981','04-Jan-2010',3000);
insert into APPARTIENT values ('C00004','J00004','E00003','04-Jan-1982',NULL,5000);
insert into APPARTIENT values ('C00005','J00005','E00002','04-Jan-1990',NULL,5000);
insert into APPARTIENT values ('C00006','J00006','E00005','04-Jan-1990',NULL,5000);
insert into GAME values ('G00001','04-Jan-2001','E00002','E00001','Londres','Saison',100,101,0);
insert into GAME values ('G00002','04-Jan-2001','E00003','E00004','Boston','Saison',102,101,0);
insert into GAME values ('G00003','04-May-2001','E00004','E00003','Detroit','Playoff',107,101,0);
insert into GAME values ('G00004','04-Apr-2001','E00001','E00002','Miami','Allstar',105,101,0);
insert into GAME values ('G00005','04-Apr-2001','E00001','E00003','Miami','Allstar',105,101,0);
insert into GAME values ('G00006','04-Apr-2001','E00001','E00004','Miami','Allstar',105,101,0);
insert into JOUE values ('J00006','G00004',17,18,1,0,1,3,4);
insert into JOUE values ('J00005','G00004',17,18,1,0,1,3,3);
insert into JOUE values ('J00002','G00004',17,18,1,0,1,3,1);
insert into JOUE values ('J00003','G00004',17,18,1,0,1,3,2);
insert into JOUE values ('J00001','G00006',17,18,1,0,1,3,4);
insert into JOUE values ('J00003','G00006',17,18,1,0,1,3,2);
insert into JOUE values ('J00003','G00005',17,18,1,0,1,3,4);
insert into JOUE values ('J00004','G00004',17,18,1,0,1,3,4);
insert into JOUE values ('J00001','G00003',20,10,4,1,2,2,3);
insert into JOUE values ('J00001','G00002',19,11,3,2,2,1,2);
insert into JOUE values ('J00001','G00001',18,12,2,3,1,0,1);

@ -0,0 +1,38 @@
DROP TABLE ETUDIANT2020;
CREATE TABLE ETUDIANT2020(nom varchar2(100), age number);
INSERT INTO ETUDIANT2020 VALUES('Alice', 12);
INSERT INTO ETUDIANT2020 VALUES('Bob', 15);
INSERT INTO ETUDIANT2020 VALUES('Charlie', 18);
INSERT INTO ETUDIANT2020 VALUES('Dave', 21);
INSERT INTO ETUDIANT2020 VALUES('Eve', 11);
DROP TABLE tligne;
CREATE TABLE tligne(DESCRIPTION VARCHAR2(300));
SET echo off;
SET verify off;
SET feedback off;
DECLARE
dnom VARCHAR2(100);
CURSOR C IS SELECT nom from ETUDIANT2020 WHERE (age >= 18);
BEGIN
OPEN C;
FETCH C into dnom;
WHILE C%FOUND
LOOP
INSERT INTO tligne VALUES(dnom);
FETCH C into dnom;
END LOOP;
CLOSE C;
END;
.
/
SET echo on;
SET verify on;
SET feedback on;
SELECT * FROM TLIGNE;

@ -0,0 +1,41 @@
DROP TABLE ETUDIANT2020;
CREATE TABLE ETUDIANT2020(nom varchar2(100), age number);
INSERT INTO ETUDIANT2020 VALUES('Alice', 12);
INSERT INTO ETUDIANT2020 VALUES('Bob', 15);
INSERT INTO ETUDIANT2020 VALUES('Charlie', 18);
INSERT INTO ETUDIANT2020 VALUES('Dave', 21);
INSERT INTO ETUDIANT2020 VALUES('Eve', 11);
DROP TABLE tligne;
CREATE TABLE tligne(DESCRIPTION VARCHAR2(300));
SET echo off;
SET verify off;
SET feedback off;
DECLARE
Dnbmineur number;
MINEUR EXCEPTION;
BEGIN
SELECT count(*) into Dnbmineur
FROM ETUDIANT2020
WHERE AGE < 18;
IF (Dnbmineur > 0) THEN RAISE MINEUR;
END IF;
EXCEPTION
WHEN MINEUR THEN
INSERT INTO tligne VALUES(Dnbmineur);
END;
.
/
SET echo on;
SET verify on;
SET feedback on;
SELECT * FROM TLIGNE;

@ -284,10 +284,10 @@ Poste('PG','SG','SF','PF','C')\\
\node (f) at (8,-5) {\begin{varwidth}{2.5in} \node (f) at (8,-5) {\begin{varwidth}{2.5in}
\begin{tabular}{|l|} \begin{tabular}{|l|}
\hline \hline
\rowcolor{Gray}Match\\ \rowcolor{Gray}Game\\
\hline \hline
\underline{id\_match}\\ \underline{id\_game}\\
Date\_match\\ Date\_game\\
\#id\_equipe\_domicile\\ \#id\_equipe\_domicile\\
\#id\_equipe\_exterieur\\ \#id\_equipe\_exterieur\\
Ville\\ Ville\\
@ -305,7 +305,7 @@ Prolongation\\
\rowcolor{Gray}JOUE\\ \rowcolor{Gray}JOUE\\
\hline \hline
\underline{\#id\_joueur}\\ \underline{\#id\_joueur}\\
\underline{\#id\_match}\\ \underline{\#id\_game}\\
Points\\ Points\\
Rebonds\\ Rebonds\\
Interceptions\\ Interceptions\\
@ -351,14 +351,13 @@ Le MLD ci-dessus stocke les donn\'ees des matchs NBA.
\begin{enumerate} \begin{enumerate}
\item (20 points) Lister dans une table \code{TLIGNES} tous les \item (20 points) Lister dans une table \code{TLIGNES} tous les
joueurs d'un \'equipe donn\'ee par l'utilisateur et d'une ann\'ee joueurs d'un match donn\'e par l'utilisateur, afficher leur nom,
saisie par l'utilisateur, afficher leur nom, pr\'enom, poste et le pr\'enom, poste et le nombres de match o\`u il a fait 0, 1, 2, 3, 4
nombres de match o\`u il a fait 0, 1, 2, 3, 4 ou 5 fautes, durant ou 5 fautes, durant sa carri\`ere :
cette ann\'ee civile :
\begin{center} \begin{center}
\begin{small} \begin{small}
\begin{verbatim} \begin{verbatim}
EQUIPE XXX GAME XXX
Nom Prenom Poste Nom Prenom Poste
XXXXXX XXXXXXX XXXXXX XXXXXX XXXXXXX XXXXXX
Fautes Nb Matchs Fautes Nb Matchs
@ -383,54 +382,47 @@ Le MLD ci-dessus stocke les donn\'ees des matchs NBA.
\begin{SaveVerbatim}{eqpts} \begin{SaveVerbatim}{eqpts}
variable equipe char(4) @2020nba-setup.sql;
prompt Entrer une equipe DROP TABLE TLIGNE;
accept vequipe CREATE TABLE TLIGNE(LIGNE VARCHAR2(200));
variable vannee number variable vidgame varchar2(10)
prompt Entrer une annee prompt Entrer un game
accept vannee accept vidgame
DECLARE DECLARE
dnom varchar2(20); dnom varchar2(200);
dprenom varchar2(20); dprenom varchar2(200);
dposte char(2); dposte char(2);
didjoueur NUMNER; didjoueur varchar2(20);
dnbfautes number; dnbfautes number;
dcpt number; dfautes number;
CURSOR Cnom IS SELECT j.idjoueur, j.Nom, j.Prenom, j.Poste FROM JOUEUR j, CURSOR Cnom IS SELECT j.id_joueur, j.Nom, j.Prenom, j.Poste
JOUE e, MATCH m WHERE j.id_joueur = e.id_joueur and id FROM JOUEUR j, JOUE e
AND ( m.Date_Match > TO_DATE('01/01/'||'&vannee',DD/MM/YYYY) AND WHERE j.id_joueur = e.id_joueur AND e.id_game = '&vidgame';
m.Date_Match < TO_DATE('12/31/'||'&vannee',DD/MM/YYYY) );
CURSOR Cfaute IS SELECT FAUTES, COUNT(ID_game) FROM JOUE WHERE id_joueur = didjoueur GROUP BY FAUTES ORDER BY FAUTES;
CURSOR Cfaute IS SELECT COUNT(ID_match) FROM JOUE
WHERE id_joueur = didjoueur
GROUP BY FAUTES;
BEGIN BEGIN
INSERT INTO tligne VALUES (EQUIPE'||'&vequipe');
INSERT INTO tligne VALUES ('Nom Prenom Poste'); INSERT INTO tligne VALUES ('Nom Prenom Poste');
OPEN Cnom; OPEN Cnom;
FETCH Cnom INTO didjoueur, dnom, dprenom, dposte; FETCH Cnom INTO didjoueur, dnom, dprenom, dposte;
WHILE Cnom%found LOOP WHILE Cnom%found LOOP
INSERT INTO tligne VALUES (dnom||' '||dprenom||' '||dposte); INSERT INTO tligne VALUES (dnom||' '||dprenom||' '||dposte);
OPEN Cfaute; OPEN Cfaute;
INSERT INTO tligne VALUES ('Faute Nb Matchs');
dcpt:=0; FETCH Cfaute INTO dfautes, dnbfautes;
INSERT INTO tligne VALUES (Faute Nn Matchs); WHILE Cfaute%found LOOP
FETCH Cfaute INTO dnbfaute; INSERT INTO tligne VALUES (TO_CHAR(dfautes)||' '||TO_CHAR(dnbfautes));
WHILE Couest%found LOOP FETCH Cfaute INTO dfautes, dnbfautes;
INSERT INTO tligne VALUES (dcpt||' '||dnbfaute);
dcpt:=dcpt+1;
FETCH Cfaute INTO dnbfaute;
END LOOP; END LOOP;
CLOSE Cfaute; CLOSE Cfaute;
FETCH Cnom INTO didjoueur, dnom, dprenom, dposte; FETCH Cnom INTO didjoueur, dnom, dprenom, dposte;
END LOOP; END LOOP;
CLOSE Cnom; CLOSE Cnom;
END; END;
. .
/ /

Loading…
Cancel
Save