Académique Documents
Professionnel Documents
Culture Documents
create table produit3 (id3 int unique auto_increment,marque varchar(10),prix float, idc int,
constraint fk_cat2 foreign key (idc) references categorie2(idcat) on update cascade on delete set
null);
MariaDB [ecole]> alter table categorie modify id_cat int primary key;
MariaDB [ecole]> alter table produit add constraint key_cat foreign key (id_cat) references
categorie(id_cat);
Le résultat de cette requête nous indique tous les champs et les contraintes créées.
MariaDB [ecole]> Alter table produit2 drop constraint fk_cat ; | pour Foreign key : Alter table
produit2 drop foreign key fk_cat;
MariaDB [ecole]> alter table produit2 add constraint fk_cat2 foreign key(idc) references
categorie2(idcat) on delete restrict on update cascade;
Fonction permettant de combiner les informations de plusieurs champs en une seule chaine.
Exemple : select concat(‘’L’employé ‘’, Nom , ‘’ ‘’,prenom, ‘’ touche ‘’, salaire) from emp ;
La fonction Concat_ws :
Même principe que contact, c’est juste que ws permet de mettre un caractère séparateur prédéfini :
Substring permet de couper une chaine de caractères et de renvoyer les caractères qui nous
intéresse :
Renvoi les caractères à partir du 3éme caractère du nom à compter de la fin du nom.
Exercices :
+-------------------------------------------------------------------------------+
| concat(substring(prenom,1,1),".",nom,"@Estem.ma") |
+-------------------------------------------------------------------------------+
| W.ROUCADI@Estem.ma |
+-------------------------------------------------------------------------------+
La fonction Locate :
La fonction Replace :
On veut afficher “Long” quand le nom de l’employé dépasse 5 caractères et ‘’Court’’ quand c’est le
contraire.
Avec Case :
MariaDB [ecole]> select nom,case when length(nom) >= 5 then "Long" when length(nom) < 5 then
"Court" END as longueur from etudiant;
OR select nom,case when length(nom) >= 5 then "Long" else "Court" END as longueur from
etudiant;
+---------+--------------+
| nom | longueur |
+---------+--------------+
| Roucadi | Long |
| MAN | Court |
+---------+-------------+
Avec IF :
1- Fonctions de Date :
La fonction Now() :
La fonction Curdate() :
La fonction Curtime() :
Exercice :
Ecrivez une requête qui permet de renvoyer le nombre de jour que vous avez vécu ?
Select datediff(now(),’1992-04-08’);
Combien de mois,de semaine, et d’heure avez-vous vécu ?
Select TimeStampDiff(month,’1992-04-08’,now()), TimeStampDiff(week,’1992-04-
08’,now()),TimeStampDiff(hour,’1992-04-08’,now());
Afficher au format Samedi 13 Decembre 2023 la date de votre premier anniversaire.
Select date_format(date_add(‘1992-04-08’,interval 1 year),’%W%d%M%Y’)
Même chose que la question 3, on veut connaitre la date de votre 100éme anniversaire.
Select date_format(date_add(‘1992-04-08’,interval 100 year),’%W%d%M%Y’)
2- Fonctions numériques :
Les fonctions numériques sont créées pour nous aider à faire des traitements sur des champs
numériques avec un minimum d’effort.
Count : permet de renvoyer le nombre de lignes que nous avons dans une table ou une
sélection.
Exemple 1 : Renvoyer le nombre de produit que nous avons en stock
Select count(*) from produit ;
Exemple 2 : Renvoyer le nombre de marque hp que nous avons en stock
Select count(*) from produit where marque = ‘hp’;
Max/Min : Renvoie la valeur max ou min d’un champ numérique
Exemple 1: select Max(prix) from produit;
Exemple 2: select Min(prix) from produit;
Groupement :
L’utilisation des fonctions sera plus significative quand on arrive à grouper les résultats en fonction
d’un ou plusieurs critères.
Exemple 2 : On veut calculer la somme des salaires par services et par type de contrat (cdi, cdd...) :
30/12/2023
Ce filtre permettra de cibler les valeurs souhaitées après calcul de la somme, moyenne ,etc…
Exemple : on veut afficher la somme des salaires par services, on veut garder uniquement les
supérieures à 10000.
Exemple :
On veut calculer la somme des salaires par service, ce calcul doit inclure seulement ceux qui ont un
salaire supérieur à 3000.
Select sum(salaire), id_depart from employes where salaire > 3000 group by id_depart;
Exemple : On veut calculer la somme des salaires par service, ce calcul doit inclure uniquement ceux
qui ont un salaire supérieur à 3000 et afficher uniquement les sommes inférieures à 10000.
Select sum(salaire), id_depart from employes where salaire > 3000 group by id_depart
having sum(salaire) < 10000;
- Fonctions de calcul et valeurs Nulle
Exemple : Dans votre table des employes, affecter à l’un de vos salariés un salaire null
- Le calcul de la somme n’est pas impacté par les valeurs nulles, le système les traites
automatiquement.
- Mais pour la moyenne le résultat est erroné, donc, il faut utiliser ifnull.
Correction DS:
Stocked procedure :
MariaDB [ecole]> create procedure get_employes() begin select * from employes; end //
delimiter //
Begin
select nb_lignes;
END//
delimiter ;
call ps(1);
delimiter //
create procedure ps(in code int,out p2 int) Begin select count(*) into p2 from produit where id_cat =
code; END//
delimiter ;
call ps(1,@nbr);
select @nbr;
Function :