Affichage des articles dont le libellé est SGBD1. Afficher tous les articles
Affichage des articles dont le libellé est SGBD1. Afficher tous les articles

dimanche 5 octobre 2014

Correction exercice base de donnée (les requête Serie 1)


Corrigé :

I -

Create database SPDB
go

create table S(
Snum varchar(100) primarykey,
Sname varchar(100),
Statut numeric,
City varchar(100)
)
Create table P(
Pnum varchar(100)primarykey,
Pname varchar(100),
Color varchar(100),
Weighte varchar(5),
City varchar(100)
)

Create table SP(
Snum varchar(100)foreign key references S(Snum),
Pnum varchar(100)foreign key references P(Pnum),
Qty int
)

Insert into s values('S1','Smith',20,'London')
Insert into s values('S2','Jones',10,'Paris')
insert into s values('S3','Blake',30,'Paris')
insert into s values('S4','Clark',20,'London')
insert into s values('S5','Adams',30,'Athens')

insert into P values('P1','Chaise','Red',12.00,'London')
insert into P values('P2','Table','Green',17.00,'Paris')
insert into P values('P3','Télé','Blue',17.00,'Rome')
insert into P values('P4','Chaise','Red',14.00,'London')
insert into P values('P5','Verre','Blue',12.00,'Paris')
insert into P values('P6','Porte','Red',19.00,'London')

insert into SP values('S1','P1',300)
insert into SP values('S1','P2',200)
insert into SP values('S1','P3',400)
insert into SP values('S1','P4',200)
insert into SP values('S1','P5',100)
insert into SP values('S1','P6',100)
insert into SP values('S2','P1',300)
insert into SP values('S2','P2',400)
insert into SP values('S3','P2',200)
insert into SP values('S4','P2',200)
insert into SP values('S4','P4',300)
insert into SP values('S4','P5',400)

II -

1.  Tous les détails sur tous les fournisseur :
SELECT * FROM fournisseurs;

2.   Le nom et le statut des fournisseur de 'Paris' :
SELECT sname, status FROM fournisseurs WHERE city='paris' ;

3.    Idem par ordre décroissant de statut :
SELECT sname, status FROM fournisseurs WHERE  city='paris' order by status

desc;

4.    Les paires de numéro de fournisseur et de produit situés dans la même ville :
SELECT F.snum, P.pnum FROM produits P, Fournisseurs F WHERE P.city = F.city

5.    Le numéro des fournisseurs et le nom des produits qu'ils fournissent :
SELECT  D.snum, P.pname FROM `détail` D, Produits P

WHERE P.pnum = D.pnum

6.     Le nom des fournisseurs et le nom des produits qu'ils fournissent :
SELECT F.sname, P.pname FROM produits P, Fournisseurs F, Détail D
WHERE D.pnum = P.pnum

AND D.snum = F.snum

7.    Les numéros de fournisseurs et numéro de produits fournis et situé dans la même ville :
SELECT F.snum, P.pnum FROM produits P, Fournisseurs F

WHERE F.city = P.city

8.     Les paires numéros de fournisseurs ayant même statut :
SELECT F.snum, FF.snum FROM Fournisseurs F, Fournisseurs FF WHERE 
F.status = FF.status AND F.snum != FF.snum GROUP BY F.status

9.     Il y a combiens d'expéditions du produit de numéro 'P2' :  
SELECT sum( qty ) FROM détail
WHERE pnum = 'P2'; 

10.    Nom des fournisseurs du produit de numéro 'P2'
SELECT F.sname  FROM  détail  D, Fournisseurs F

WHERE F.snum = D.snum and D.pnum =`P2`;

11.    Nom des fournisseurs qui fournissent au moins un produit de couleur rouge ('Red') :
SELECT F.sname FROM détail D, Fournisseurs F, Produits p
WHERE F.snum = D.snum AND D.pnum = P.pnum
AND P.color = 'red' 

Group by F.sname

12.     Nom des fournisseurs qui ne fournissent pas le produit 'P2' :
SELECT F.sname FROM Fournisseurs F WHERE F.snum
NOT  IN (SELECT DD.snum FROM détail dd

WHERE dd.pnum = 'P2')

13.      Ajouter la colonne <<Price>> dans la table des produits Type INT :
ALTER TABLE `produits` ADD `Price` INT NOT NULL

14.     Ajouter la ligne suivante (‘P7’,’PC’,’Blanc’,’15’,’Rome’,’2000’) :
INSERT INTO produits (`pnum`, `pname`, `color`, `weigth`, `city`, `Price`)

VALUES ('P9', 'PC','Blanc', '15', 'Rome', '2000');
  1. Insertion des prix (Table=260,Télé=300,Verre=29,Porte=130, ,Chaise{(P1)=120,(P4)=140})
UPDATE produits SET Price = '260'  where pname ='Table' ;
UPDATE produits SET Price = '300' where pname ='télé' ;
UPDATE produits SET Price = '29'  where pname ='Verre';
UPDATE produits SET Price = '130' where pname ='Porte' ;
UPDATE produits SET Price = '120' where pname ='chaise' and  pnum ='P1';
UPDATE produits SET Price = '140' where pname ='chaise' and pnum ='P4';

  1. Ajouter 100 à la quantité de tous les produits avec une quantité inférieure à 200
UPDATE détail SET qty = qty+100 where qty <200

samedi 4 octobre 2014

Exercice base de donnée (les requête Serie 1)


Enoncé :

Soit la base de donées SPDB, contenant les relations Fournisseurs (S), Produits (P) et Détail (SP)

S
+------+-------+--------+--------+
| snum | sname | status | city   |
+------+-------+--------+--------+
|   S1 | Smith |     20 | London |
|   S2 | Jones |     10 | Paris  |
|   S3 | Blake |     30 | Paris  |
|   S4 | Clark |     20 | London |
|   S5 | Adams |     30 | Athens |
+------+-------+--------+--------+


P
+------+-------+-------+--------+--------+
| pnum | pname | color | weigth | city   |
+------+-------+-------+--------+--------+
|   P1 | Chaise| Red   |  12.00 | London |
|   P2 | Table | Green |  17.00 | Paris  |
|   P3 | Télé  | Blue  |  17.00 | Rome   |
|   P4 | Chaise| Red   |  14.00 | London |
|   P5 | Verre | Blue  |  12.00 | Paris  |
|   P6 | Porte | Red   |  19.00 | London |
+------+-------+-------+--------+--------+

SP
+------+------+------+
| snum | pnum | qty  |
+------+------+------+
|   S1 |   P1 |  300 |
|   S1 |   P2 |  200 |
|   S1 |   P3 |  400 |
|   S1 |   P4 |  200 |
|   S1 |   P5 |  100 |
|   S1 |   P6 |  100 |
|   S2 |   P1 |  300 |
|   S2 |   P2 |  400 |
|   S3 |   P2 |  200 |
|   S4 |   P2 |  200 |
|   S4 |   P4 |  300 |
|   S4 |   P5 |  400 |
+------+------+------+


I- Créer la base de donnée SPDB.

II- Ecrire en SQL les requêtes suivantes:


  1. Tous les détails sur tous les fournisseurs
  2. Le nom et le statut des fournisseurs de 'Paris'
  3. Idem par ordre décroissant de statut
  4. les paires de numéro  de fournisseur et de produit situés dans la même ville
  5. le numéro des fournisseurs et le nom des produits qu'ils fournissent
  6. le nom des fournisseurs et le nom des produits qu'ils fournissent
  7. les numéros de fournisseurs et numéros de produits fournis et situé dans la même ville.
  8. Les paires numéros de fournisseurs ayant même statut
  9. Il y a combiens d'expéditions du produit de numéro 'P2'?
  10. Ecrire de deux façon différentes la requête: "Nom des fournisseurs du produit de numéro 'P2' "
  11. Nom des fournisseurs qui fournissent au moins un produit de couleur rouge ('Red')
  12. Nom des fournisseurs qui ne fournissent pas le produit  'P2'.
  13. Ajouter la colonne « Price » dans la table des produits, type INT.
  14. Ajouter la ligne suivante : (‘P7’,’PC’,’Blanc’,’30’,’Rome’,’2000’).
  1. Insertion des prix : (Table=260,Télé=300,Verre=29,Porte=130, ,Chaise{(P1)=120,(P4)=140}).
  1.  Ajouter 100 à la quantité de tous les produits qui ont une quantité inférieure à 200.

vendredi 3 octobre 2014

Exercices + Corrigés des procedure stockees

Enoncè;


Dans  les exercices suivant, on travaille sur la base de données «GestionCommande »:



Exercice 1 :

Créer une procédure stockée qui affiche les clients dont la quantité commande est supérieur à 75 et les factures sont réalisées entre 2003 et 2004

Corrigé :

create proc E;1
as
select * from Client where exists
(select * from Commande
where IdClient=Client.IdClient and Quntité>75 and exists
(select * from Facture
where datefacture between '01/01/2003'and '31/12/2004'and NumCommande=Commande.NumCommande ))
exec E;1

Exercice 2 :

Créer une procédure stockée qui retourne la somme des prix à payer par tous les clients en utilisant un paramètre de sortie.

Corrigé :

create proc E;2
@somme money output
as       
           
          select @somme = sum(PrixTotal)
            from Commande
if @somme < 1000
            print 'La société va fermer ses portes.'
else
            ---SELECT 'La société a réalisé ' + convert (varchar(20), @somme)+' F' as PrixTotal
select @somme as SommeRéalisé
go
declare @P money


Exercice3 :

Créer une procédure qui affiche les noms et les prénoms des clients dont le nom commence par ‘Al’ en utilisant un cursor qui permet d’extraire les lignes ligne par ligne

Corrigé :

create proc ProcCursor
as
DECLARE Cur CURSOR FOR
SELECT Nom, Prénom FROM Client where Nom like 'Al%'
OPEN Cur
FETCH NEXT FROM Cur
WHILE @@FETCH_STATUS = 0
BEGIN
insert into client values(2056,'toto','titi','Mars')
   FETCH NEXT FROM Cur
END
CLOSE Cur
drop proc ProcCursor
exec ProcCursor


Exercice 4 :

Créer une procédure qui exécute la procédure précédente

Corrigé :

create proc ProcAppelante
@P1 varchar(10)
as
exec @P1
---------
exec ProcAppelante 'ProcCursor'


Exercice 5 :

Créer la procédure stockée qui compte le nombre de commandes d’un client et affiche le résultat

Corrigé :

create proc prc
(@id int,
@var int output)
as   
select @var = count(NumCommande)
from Commande where IdClient=@id
group by IdClient
drop proc prc
declare @P int
Exec prc 1578,@P output
Select @p as NbreCommandes