Académique Documents
Professionnel Documents
Culture Documents
USE BD_ACHAT;
categorie varchar(10),
compte decimal(9,2)
);
typepro varchar(25),
nompro varchar(30),
prix decimal(9,2),
qstock int(4),
-- Clé primaire :
);
datecom date,
-- Clé primaire :
-- Clé étrangere :
numcom int,
numpro int(12),
qcom int(4),
-- Clé primaire :
-- Clés étrangères :
);
('AMINE','RABAT','A',11250.00),
('DRISS','CASABLANCA','A',12300.00),
('IMANE','MARRAKECH','D',20.00),
('YASSINE','TANGER','C',100.00),
('ZINEB','CASABLANCA','B',1000.00),
('MAROUANE','KENITRA','D',15.00),
('HOUDA','RABAT','A',15000.00),
('ALI','TANGER',NULL,0.00),
('IMANE','RABAT','B',1500.00),
('DRISS','CASABLANCA',NULL,0.00);
('Audio','Casques-micros',750,35),
('Informatique','Ordinateurs fixes',5400,960),
('Mobilité','Tablettes',105,830),
('Informatique','PC portables',9500,134),
('Audio','Casques Hi-Fi',1500,82),
('Mobilité','Smartphones',220,540);
(3,'2015-01-01'),
(9,'2015-05-10'),
(3,'2015-07-19'),
(1,'2015-09-17'),
(3,'2015-10-09'),
(6,'2015-10,09'),
(2,'2015-02-02'),
(8,'2015-05-10'),
(5,'2015-07-19'),
(2,'2015-09-17'),
(6,'2015-10-27'),
(10,'2015-10-09');
(1,1,'33'),
(2,2,'25'),
(2,3,'70'),
(3,2,'40'),
(4,1,'133'),
(4,4,'20'),
(5,1,'26'),
(5,2,'10'),
(5,5,'60'),
(6,4,'157'),
(7,1,'18'),
(7,2,'75'),
(7,4,'2'),
(7,6,'920');
-- 1.2.4 Manipulation des données :
UPDATE customer set compte= ( compte - (compte * 0.1)) WHERE compte >= 5000;
-- 2. Afficher le numéro , le nom et la ville des clients de catégorie B n'habitant pas à Rabat :
SELECT numcli,nomcli,ville FROM customer WHERE ( (cat = 'B') AND (ville <> 'Rabat') );
-- ou :
SELECT numcli,nomcli,ville FROM customer WHERE ( (cat LIKE 'B') AND (ville NOT LIKE 'Rabat') );
-- 3. Afficher les caractéristiques des produits Informatiques :
-- 5. Donner le numéro , le nom et le compte des clients de Tanger et de Kenitra dont le compte est
positif :
-- 7. Afficher le numéro, le nom et la ville des clients dont le nom précède alphabétiquement la
ville ou ils résident :
-- 8. Afficher les noms des clients qui ont un compte supérieur à 10 000 DHS tout en les triant par
odre lexicographique :
SELECT nomcli,compte FROM CUSTOMER WHERE (compte > 10000) order by nomcli asc;
SELECT* FROM customer WHERE cat <> 'C' OR ville ='CASABLANCA' OR cat = NULL;
-- 7. qui soit sont de catégorie B ou C , soit habitent à Rabat ou à Kenitra ( ou les deux conditions ).
-- 8. qui soit sont de catégorie B ou C , soit habitent à Rabat ou à Kenitra (mais pas les deux
conditions) .
SELECT*
FROM customer
SELECT* FROM customer WHERE cat NOT in ('B','C') OR ville NOT in ('Tanger','Casablanca');
-- 11. qui n'ont pas de catégorie ou dont le compte est négatif ( mais pas les deux ) :
-- 12. Afficher le numéro et la date des commandes qui sont réalisées entre les dates : 05/06/2015
et 15/09/2015 :
SELECT numcli
FROM COMMANDE
WHERE numcom in (
SELECT numcom
FROM DETAIL
SELECT ville
FROM customer
WHERE numcli in (
SELECT numcli
FROM COMMANDE
WHERE numcom in (
SELECT numcom
FROM DETAIL
WHERE numpro = 6 ) );
SELECT*
FROM PRODUIT
WHERE numpro in (
SELECT numpro
FROM DETAIL
SELECT ville
FROM customer
WHERE numcli in (
SELECT numcli
FROM COMMANDE
-- 5. Afficher les commandes qui spécifient une quantité du produit 1 inférieure à celle
SELECT*
FROM commande
WHERE numcom in (
SELECT numcom
FROM detail
SELECT qcom
FROM detail
SELECT*
FROM commande
WHERE numcom in (
SELECT numcom
FROM detail as D1
SELECT qcom
FROM detail as D2
FROM commande
SELECT numcom
FROM detail
SELECT*
FROM commande
SELECT numcom
FROM detail
-- 1. Afficher le numéro et le nom du produit dont le prix est inférieur à n'importe quel prix
FROM produit
SELECT prix
FROM produit
WHERE numpro in (
SELECT numpro
FROM detail
FROM detail
-- 2. Afficher le numéro et le nom du produit dont le prix est inférieur à tous les prix
FROM produit
SELECT prix
FROM produit
WHERE numpro in (
SELECT numpro
FROM detail
-- 1.Afficher la valeur totale des stocks (compte non tenu des commandes actuelles) :
sum()
min()
max()
avg
FROM produit;
FROM customer
WHERE cat='D';
FROM customer;
-- 1.4.2 Jointures :
SELECT numcli
AND numpro = 4;
SELECT numcli
WHERE numpro = 4;
SELECT ville
WHERE numpro = 6;
-- 5. Afficher le nom et villes des clients triés par ordre alphabétique, qui ont achetés des casques :
FROM customer natural join commande natural join detail natural join produit
-- 1. Donner le numéro et le nom des clients de Rabat qui n'ont pas passé de commandes :
FROM customer,commande
-- 2. Afficher le numéro et le nom des clients qui n'ont pas commandé des casques :
SELECT customer.
SELECT DISTINCT(ville)
FROM customer
SELECT qcom*prix
WHERE numcli = 2;
SELECT numpro,nompro
FROM produit
FROM detail
FROM commande
FROM produit
-- 1.5.1 Regroupements :
FROM customer
GROUP BY ville;
-- 2. Afficher le total et la moyenne des comptes des clients , ainsi que le nombre de clients ,
FROM customer
GROUP BY cat;
FROM customer
GROUP BY ville,cat;
GROUP BY datecom;
-- 2. Afficher pour chaque ville, les noms des produits qui y sont commandés tout en triant les villes
FROM customer natural join commande natural join detail natural join produit
GROUP BY ville,nompro
order by ville,nompro;
FROM customer natural join commande natural join detail natural join produit
GROUP BY ville,cat;
FROM customer natural join commande natural join detail natural join produit
GROUP BY ville
FROM customer natural join commande natural join detail natural join produit
GROUP BY ville,cat;
GROUP BY cat;
SELECT cat,sum(qcom)
-- 1. Donner pour chaque ville dans laquelle se trouve au moins un client de catégorie 'B'
SELECT ville,numcli,nompro,typepro,cat
FROM customer natural join commande natural join detail natural join produit
FROM customer
GROUP BY ville;
SELECT*
FROM customer
-- 1. Donner pour chaque produit la liste des villes dans lesquelles ce produit est commandé
SELECT nompro,ville
FROM customer natural join commande natural join detail natural join produit
GROUP BY nompro;
-- 2. Afficher, pour chaque localité, les produits qu'on y commande et qui sont aussi dans au moins
FROM customer natural join commande natural join detail natural join produit
GROUP BY numpro
GROUP BY ville,numpro;
-- TP 6 :
USE BD_ENTREPRISE;
-- 3- Ajouter les clés primaires et les clés étrangères lors de la création des tables :
Nomdept VARCHAR(25),
Lieu VARCHAR(25)
);
nomE varchar(25),
Poste varchar(15),
Sup int(3) ,
DatEmb date ,
Salaire decimal(10,2),
Commission decimal(10,2),
NumDept int ,
);
values
(369,"amine","sectretaire",902,"1980-12-02",6400.00,NULL,2),
(499,"houda","commercial",698,"1981-02-20",12800.00,2400.00,3),
(521,"karim","commercial",698,"1981-10-22",10000.00,4000.00,3),
(566,"ali","directeur",839,"1981-03-02",23000.00,NULL,2),
(654,"zakaria","commercial",698,"1981-05-28",10000.00,11200.00,3),
(698,"meryem","directeur",839,"1981-05-01",22800.00,NULL,3),
(782,"zineb","directeur",839,"1981-06-09",19600.00,NULL,1),
(788,"khalid","ingenieur",566,"1985-04-14",24000.00,NULL,2),
(839,"abdellah","president",NULL,"1981-11-17",40000.00,NULL,1),
(844,"mohamed","commercial",698,"1981-05-08",12000.00,0.00,3),
(876,"sarah","secretaire",788,"1985-05-10",8800.00,NULL,2),
(900,"sanae","secretaire",698,"1981-12-03",7600.00,NULL,3),
(902,"imane","ingenieur",566,"1981-12-17",24000.00,NULL,2),
(934,"mehdi","sectretaire",782,"1982-08-23",10400.00,NULL,1);
VALUES
(1,"finances","rabat"),
(2,"recherches","casablanca"),
(3,"ventes","fes"),
(4,"fabrication","kenitra");
SELECT nomE FROM employe WHERE Salaire + commission between 12000 AND 18000;
WHERE employe.numdept=departement.numdept;
-- f- Lieu des départements dans lesquels des emplyés touchent une commission :
WHERE employe.numdept=departement.numdept
FROM employe s
WHERE s.matr in (SELECT e.sup
group by numdept
having count(poste)>=2;
FROM departement
FROM employe
WHERE poste='ingenieur'
group by numdept
group by matr;
FROM employe
FROM departement
WHERE numdept NOT in (SELECT numdept FROM employe WHERE poste = 'INGENIEUR');
-- j- Noms des emplyés qui gagnent plus que tous les commerciaux :
SELECT nomE
FROM employe
WHERE Salaire > ALL (SELECT Salaire FROM employe WHERE poste ='COMMERCIAL');
-- k- Noms des employés qui gagnent plus que tous les commerciaux de leur département :
SELECT nomE
FROM employe e
WHERE Salaire > ALL (SELECT Salaire FROM employe WHERE poste='COMMERCIAL' AND numdept
=e.numdept );
SELECT nomE,Salaire
FROM employe
FROM employe
WHERE poste='COMMERCIAL')
FROM employe
WHERE poste='COMMERCIAL');
FROM employe
GROUP BY numdept ;
-- m- Total des salaires des employés qui ont le meme superieur direct que Zakaria :
FROM employe
WHERE nomE='Zakaria');
FROM employe
FROM employe) ;