100% ont trouvé ce document utile (1 vote)
260 vues2 pages

Commandes SQL pour gestion de base de données

La requête crée une table commandes avec les champs clés et étrangères appropriés. D'autres requêtes mettent à jour des tables, affichent des données avec des jointures et des fonctions d'agrégation, et créent une procédure stockée et un trigger.

Transféré par

Rouçadi Wafaa
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
260 vues2 pages

Commandes SQL pour gestion de base de données

La requête crée une table commandes avec les champs clés et étrangères appropriés. D'autres requêtes mettent à jour des tables, affichent des données avec des jointures et des fonctions d'agrégation, et créent une procédure stockée et un trigger.

Transféré par

Rouçadi Wafaa
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

1.

Écrivez une commande SQL pour créer une table commandes avec les champs suivants : NumCommande
(clé primaire, auto-incrément), DateCommande, Montant, NumClient (étrangère clé référençant NumClient
dans la table clients), et Statut (VARCHAR 20). Assurez-vous de gérer correctement les suppressions en
cascade.

create table commandes(NumCommande int primary key auto_increment, DateCommande date, Montant
float,NumClient int,statut varchar(20),constraint fk_c foreign key(NumClient) references fournisseur(id) on
delete cascade);

2. Ajoutez une contrainte à la table produits pour s'assurer que le prix est toujours supérieur à 0.

ALTER TABLE produits

ADD CONSTRAINT CHK_Prix CHECK (prix > 0);

3. Mettez à jour la table employes pour augmenter le salaire de 10% pour les employés qui travaillent dans le
département avec le code 'IT' et qui ont un salaire inférieur à 3000.

update employes set salaire = salaire + (salaire * 0.1) where id_depart = ‘IT’ and salaire < 3000;

4. Écrivez une requête pour trouver le nom et le prénom des employés qui n'ont pas de commission ou qui ont
une commission inférieure à 5%.

select nom,prenom from employes where commission is null or commission < 5;

5. En utilisant une jointure, sélectionnez tous les employés avec le nom de leur service et la date de la dernière
commande pour chaque employé (supposez qu'il existe une table commandes liée aux employés).

Select [Link],nom_service,max(date_commande) from employes e inner join service s on e.id_service = [Link]

Inner join commandes c on [Link] = [Link] group by [Link], nom_service;

6. Calculez le salaire moyen par service et affichez seulement ceux qui ont un salaire moyen supérieur à 5000.

Select id_service,avg(salaire) as salaireMoyen from employes group by id_service having salaireMoyen >
5000 ;

7. Écrivez une requête pour afficher les trois produits les plus chers qui ont été commandés cette semaine, en
incluant le nom du client qui a passé la commande.

SELECT [Link], [Link], [Link]

FROM produits p

JOIN commandes co ON [Link] = [Link]

JOIN clients c ON [Link] = [Link]

WHERE YEARWEEK([Link]) = YEARWEEK(CURDATE())

ORDER BY [Link] DESC

LIMIT 3;

8. Sélectionnez le nom et le prénom des employés qui ont un anniversaire ce mois-ci.

Select nom,prenom from employes where month(date_naissance) = month(curdate());

9. Écrivez une procédure stockée qui prend un ID de produit et retourne la quantité en stock pour ce produit.

Délimiter //

Create procedure ps1(IN id int)

Begin
Select qte from produit where id = id;

END//

Delimiter ;

10. Créez un trigger qui vérifie, avant l'insertion d'un nouvel employé, si le salaire proposé respecte la moyenne
des salaires du département auquel l'employé sera affecté.

DELIMITER //

CREATE TRIGGER CheckSalaireMoyenAvantInsertion

BEFORE INSERT ON employes FOR EACH ROW

BEGIN

DECLARE salaireMoyen DECIMAL(10, 2);

SELECT AVG(SalaireEmp) INTO salaireMoyen

FROM employes

WHERE CodeService = [Link];

IF [Link] < salaireMoyen THEN

SIGNAL SQLSTATE '45000'

SET MESSAGE_TEXT = 'Le salaire proposé est inférieur à la moyenne du département.';

END IF;

END //

DELIMITER ;

Vous aimerez peut-être aussi