TP SGBD (COMMANDE SQL)
UCAD
Boubacar DIALLO
L3 TDSI
Al Hassane BAH
MCS
I. Manipulation des données
Commencer par lister les utilisateurs existants:
select user, host from [Link];
Vérifier l’utilisateur actuellement connecter:
select user () ;
Créons un utilisateur avec un mot le passe que vous souhaiter
create user 'BoubacarAlHassane'@'localhost' identified by 'ucad';
Maintenant connectons nous en tant que root , changeons notre mot de
passe et continuer le TP
alter user 'root'@'localhost' identified by 'root1234@UCAD'
Créons une base de données nommée L3TDSI
Créer une table nommée Product et Insérer des données dans cette
dernière et vérifier si l’ insertion est faite par la commande
SELECT * FROM product;
Ajoutons d’autres lignes à la table et vérifier de nouveau l’insertion :
Mise à jour du prix dans la table product, affichons le résultat et faisons
la comparaison avec le résultat précédant
UPDATE product SET price = price - (price * 0.05);
SELECT * FROM product;
Maintenant tapons la commande ROLLBACK;
Qu’elle remarque faite vous ? Expliquer
Nous remarquons que la colonne price reprend ses valeurs initiales .
D’abord nous avons fait la mise à jour du colonne price en modifiant les
prix et ensuite nous avons tape la commande ROLLBACK et enfin on
constate que la colonne price était revenu a l’initial.
En resume nous pouvons dire que la commande ROLLBACK permet
d’annuler une transaction en cours.
Mise à jour avec une condition ’where’
UPDATE product
SET price = price - (price * 0.05)
WHERE p_code = 9;
Supprimons des données dans une table : Tapons les commandes ci-
dessous et expliquons
DELETE FROM product
WHERE p_name = 'Nut';
SELECT * FROM product;
ROLLBACK;
SELECT * FROM product;
Expliquons
DELETE FROM product
WHERE p_name = 'Nut';
SELECT * FROM product;
ROLLBACK;
SELECT * FROM product;
D’abord nous avons supprimer dans la table product la ligne dont le
p_name est ‘Nut’, afficher tout le contenu de la table product et on voit
que cette ligne a été supprimé, ensuite nous avons annulé la transaction
i-e nous avons annulé la suppression que nous avons fait afin de
restaurer cette ligne supprime.
Enfin nous avons fait une mise à jour dans la table product la ligne dont
le p_name est ‘Nut’ en modifiant le price a NULL.
II. Requête basique : expliquons les requêtes suivantes
SELECT * FROM product;
Cette requete permet d’afficher tout le contnu de la table product.
SELECT p_name, price FROM product;
Cette requete affiche le p_name et price de la table product.
SELECT p_name, price FROM product WHERE price = 15;
Cette requete affiche le p_name de la table product dont le price est 15.
SELECT p_name, price FROM product WHERE p_name != 'Nut';
Cette requete affiche le price de la table product dont le p_name est different de
‘Nut’ .
SELECT *
FROM product
WHERE launch_dt >= '2013-03-30'
OR price > 15
AND p_name != 'Nail';
Cette requete affiche tout le contenu de la table product dont le launch_dt est
supperieur ou egal a '2013-03-30' OU le price est supperieur a 15 ET dont le p_name
est different de ‘Nail’ .
SELECT * FROM product WHERE price BETWEEN 15 AND 25;
Cette requête affiche tout le contenu de la table product dont le price est compris
entre 15 et 25 .
SELECT *
FROM product
WHERE (launch_dt >= '2013-03-30'
OR price > 15)
AND NOT (p_name != 'Nail');
Cette requete affiche tout le contenu de la table product dont le launch_dt est
supperieur ou egal a '2013-03-30' OU le price est supperieur a 15 ET dont le p_name
est ‘Nail’ .
SELECT * FROM product WHERE price IN (10, 25, 50);
Cette requete affiche tout le contenu de la table product dont le le price est dans 10,
15 ou 25.
SELECT * FROM product WHERE p_name LIKE 'N__' OR p_name LIKE 'Sc%';
Cette requete affiche tout le contenu de la table product dont le le p_name
commence par N et se terminant par n’importe quels deux autres caracteres OU dont
le p_name commence par ‘Sc’ et se terminant par n’importe quels autres caracteres
(ou chanie de caractere) .
Quelle est la différence entre ces deux commandes :
SELECT * FROM product WHERE p_name LIKE '%_%';
SELECT * FROM product WHERE p_name LIKE '%\_%';
La difference entre ces deux commandes est que la premiere commande permet d’afficher
tout le contenu de la table product avec tous les enregistrements de la colonne p_name.
Tandisque que la deuxieme commande affiche tout le contenu de la table product dont le
p_name commence par n’importe quel caractere ou chaine de caractere suivi du caractere
speciaux undescore(_) et terminant par n’importe quel caractere ou chaine de caractere.
III. Jointure
Créons ces trois tables, insérons les données, et effectuons les requêtes ci-dessous
Exécutons les requêtes ci-dessous et expliquons
SELECT c_name,
p_code,
c_order.qty,
c_order.order_dt
FROM c_order
JOIN customer
ON c_order.c_no = customer.c_no;
Nous avons chercher et afficher le c_name de la table customer , le p_code de la
table c_order, le qty de la table c_order, le order_dt de la table c_order dont le c_no
se trouvant dans la table c_order correspond au c_nom se trouvant dans la table
customer. En bref nous avons effectuer une JOINTURE entre la table c_order et
c_customer dont c_order.c_no=customer.c_no.
SELECT c_name,
p_name,
[Link],
o.order_dt
FROM c_order o
JOIN customer c
ON o.c_no = c.c_no
JOIN product p
ON o.p_code = p.p_code;
Nous avons pris le resultat de la jointure obtenu precedemment en
renommant(alias) les tables c_order a ‘o’ , customer a ‘c’, product a ‘p’ et
maintenant chercher et afficher le c_name de la table customer , le p_name de la
table product, le qty de la table c_order, le order_dt de la table c_order dont le
p_code se trouvant dans la table c_order(obtenu de la jointure precedent)
correspond au p_code se trouvant dans la table product. En bref nous avons
effectuer une JOINTURE entre la table du resultat de la jointure obtenu
precedemment et product dont o.p_code=p.p_code.
IV. Les vues
Pour cette partie du TD, on suppose qu’on a une nouvelle colonne ( margin)
dans notre table product.
Créer la vue ci-dessous et faite une sélection dans cette vue
CREATE VIEW product_v
(p_code , p_name
) AS SELECT p_code, p_name FROM product;
SELECT * FROM product_v WHERE p_name NOT LIKE '%Nut%';
Expliquer le resultat
Nous avons afficher tout le contenu de la vue ( les collonnes p_code et p_name)
selectionner a partir de la table product dont p_name n’a pas une chaine de
caractere contenant ‘Nut’.
Nous voyons que la VUE product_v recupere le contenu des colonnes p_code et
p_name de product pour en créer ses nouvelles colonnes p_code et p_name.
Créons une nouvelle vue product_sell_v et faite une sélection sur cette vue
expliquons le résultat
CREATE VIEW product_sell_v
(p_no , p_name, sell_price
) AS
SELECT p_code, p_name, (price + margin) FROM product ;
Nous avons afficher tout le contenu de la vue ( les collonnes p_no , p_name,
sell_price) selectionner a partir de la table product .
Nous voyons que la VUE product_sell_v recupere le contenu des colonnes p_code ,
p_name et fait la somme de la colonne price et margin de product pour en créer ses
nouvelles colonnes respectivement p_no , p_name et sell_price