Vous êtes sur la page 1sur 29

LE LANGAGE SQL (2)

Présenté par : Mme N. BENMOUSSA

Cycle d’Ingénieurs
PLAN
I. Rappel
II. Clauses et contraintes d’ intégrité SQL
III.Exemples de syntaxes
V. Applications

2
RAPPEL
Interface physique

Implémentation

Maintenance 3
Création avec clé étrangère
CREATE TABLE Employes (Id_Emp INT NOT NULL, Nom_Emp VARCHAR (80) NOT
NULL, Age INT NOT NULL, Salaire Float
);
--Table Service avec clé étrangère 1

CREATE TABLE Services(Id_Sce INT NOT NULL, nom_Sce VARCHAR (30), fk Id_Emp
INT REFERENCES Employes(Id_Emp), PRIMARY KEY (Id_Sce)
);

--Table Service avec clé étrangère 2


CREATE TABLE Services(Id_Sce INT NOT NULL, nom_Sce VARCHAR (30), PRIMARY
KEY (Id_Sce), FOREIGN KEY (ID_Emp) REFERENCES Employes(Id_Emp)
);
4
Création/Ajout clé étrangère
--Table avec clé étrangère 1
CREATE table Cde(IdCde Int NOT NULL, IdClt Int foreign key references Client (IdClt),
dateCde date not null, constraint pkCde primary key (IdCde)
);

--Table avec clé étrangère 2


CREATE table Cde(IdCde Int NOT NULL, IdClt Int, dateCde date not null, constraint
pkCde primary key (IdCde), constraint fkCdeClt foreign key (IdClt) references Client
(IdClt),
);

--Ajout clé étrangère dans 1 table existante


Alter table Cde ADD constraint fkCdeClt foreign key (IdClt) references Client (IdClt);

-- Suppression de la clé étrangère


ALTER TABLE Cde DROP foreign key; 5
Suppression et clé étrangère
CREATE table Vente(
Idarticle Varchar (10) not null,
IdClt Int not null ,
DateVente date not null,
QtéVente int not null,
Constraint foreign key (Idarticle) references Produit(Idarticle),
Constraint foreign key (IdClt) references Client(IdClt)
);

CREATE table Vente(


Idarticle Varchar (10) not null,
IdClt Int not null ,
DateVente date not null,
QtéVente int not null,
constraint foreign key (Idarticle) references Produit(Idarticle) on delete cascade on update cascade,
constraint foreign key (IdClt) references Client(IdClt) on delete cascade on update cascade)
); 6
EXEMPLE «Clé étrangère »
1. Création avec clé étrangère
CREATE TABLE Commande(Id Cde int primary key not null, Date cde datetime, Code_Clt varchar(30), constraint
fk_Clt foreign key (Code_Clt) references Clt(CodeClt)
);

2. Ajout de la clé étrangère

ALTER TABLE Commande, ADD foreign key (Code_Clt) references Clt (Code_Clt);

3. Suppression de la clé étrangère

ALTER TABLE Commande DROP foreign key;

7
EXEMPLES

8
COMMANDES/CLAUSES SQL
(suite)
▪ Exist/not exist
▪ Show
▪ Distinct
▪ Group By
▪ Order By
▪ Where
▪ Having
9
EXIST/NOT EXIST
• Dans le langage SQL, la commande EXIST s’utilise dans une
clause conditionnelle pour savoir s’il y a une présence ou non
de lignes lors de l’utilisation d’une sous-requête.
• Exist < > IN. (IN vérifie la concordance d’une à plusieurs
données).

SELECT nom_colonne1 FROM `table1`


WHERE EXIST ( …,…);

10
SHOW
SHOW TABLES répertorie les tables, séquences et vues
non TEMPORAIRES dans une base de données.

SHOW TABLES WHERE SHOW FULLTABLES;


SHOW TABLES
Tables_in_test LIKE ‘E%';
Tables Test Tables Test Types
Tables Test
Etudiants Etudiants Séquence
Etudiants
Enseignants Enseignants BDD
Enseignants
Départements Départements Test

11
DISTINCT
Pour éviter des redondances dans les résultats, il faut ajouter la
clause DISTINCT après le mot SELECT.

Exemple : SELECT DISTINCT prénom FROM client

12
GROUP BY
La commande GROUP BY sert à grouper plusieurs résultats et
à utiliser une fonction de totaux sur un groupe de résultat.

Exemple : Sur une table qui contient toutes les ventes d’un magasin, il est par
exemple possible :
➢ de regrouper les ventes par clients identiques
➢ d’obtenir le total des achats pour chaque client.

Cette commande est toujours utilisée avec WHERE et avant


HAVING.
SELECT colonne1, fonction(colonne2) FROM
table X
GROUP BY colonne1 21
ORDER BY
La commande ORDER BY permet de trier les lignes dans un résultat d’une requête
SQL. Il est possible de trier les données sur une ou plusieurs colonnes, par ordre
ascendant ou descendant.
Exemple d’une requête pour filtrer l’ordre des résultats :

SELECT colonne1, colonne2 FROM table X


ORDER BY colonne2 ============➔ ascendant par défaut
ou
SELECT colonne1, colonne2 FROM table X
ORDER BY colonne2 descendant
14
COMPARAISON
WHERE HAVING

Implémentation dans les opérations de ligne. dans les opérations de colonne.

Fonctions N’apparaîssent pas dans la clause WHERE.


d’agrégat(MA Apparaîssent dans la clause HAVING.
X(),
MIN(), AVG() …)

SELECT et d’autres instructions telles que


Utilisé avec Avec l’instruction SELECT seulement
UPDATE, DELETE
GROUP BY Vient après WHERE. Vient avant HAVING.
récupère uniquement les données d’une ligne Au début, les données complètes sont
Récupération de
données
particulière en fonction d’une condition. récupérées puis il les sépare en fonction de la
condition.

SELECT COUNT(Id Clt, nom Clt, Pays Clt) FROM Client


GROUP BYPays 25
HAVING COUNT (Id Clt > 5);
EXEMPLE (AS, WHERE, GROUP BY, ORDER BY)
Total de places proposées par voyage (tri par total)
SELECT [Num_voyage] AS [Réf Voy Net_prov], [Nom_voyage] AS [Nom Voy],
Sum([Nombre_de_places_proposées]) AS [Places prop Voy]
FROM [Nombre de places proposées par agence], [Voyages]
WHERE Voyages.Num_voyage=[Nombre de places proposées par agence].[#num_voyage]
GROUP BY [Num_voyage], [Nom_voyage]
ORDER BY Sum([Nombre_de_place_proposées]);
Résultat
Num_voyage Nom_Voyage Nombre Places Réf Voy Net_prov Nom Voy Places prop Voy
proposées
15 METZ 8
15 METZ 3
6 ISTANBUL 16
6 ISTANBUL 6
10 ATHENES 21
10 ATHENES 21
15 METZ 5 16
6 ISTANBUL 10
WHERE vs HAVING
Les clauses WHERE et HAVING permettent de limiter un résultat en
utilisant un prédicat spécifique.
La différence entre WHERE et HAVING est que :

✓ WHERE spécifie les conditions de sélection des tuples (lignes) dans les
tables, y compris les conditions de jointure si nécessaire.
✓ HAVING spécifie une condition sur les groupes sélectionnés.
SELECT colonne A,colonne B
FROM table X
SELECT colonne1, colonne2,…
WHERE condition
FROM table X
GROUP BY colonneA,…
WHERE condition; 24
HAVING condition
ORDER BY colonne A,…;
CONTRAINTES D’INTÉGRITÉ
• Une contrainte d'intégrité est une clause permettant de
contraindre la modification de tables, faite par l'intermédiaire de
requêtes d'utilisateurs, afin que les données saisies dans la base
soient conformes aux données attendues.
• Ces contraintes doivent être exprimées dès la création de la table
grâce aux mots clés suivants:
• CONSTRAINT
• DEFAULT
• NOT NULL
• UNIQUE
• CHECK 26
EXPRESSION
DE CONTRAINTE D’INTEGRITE
• Exemple : syntaxe d'une instruction de création de table avec
contraintes

• CREATE TABLE clients(


Nom char(30) NOT NULL,
Prenom char(30) NOT NULL,
Age integer, check (age < 100),
Email char(50) NOT NULL, check (Email LIKE "%@%") );
27
DROP CONSTRAINT

Toute contrainte définie peut être supprimée à l'aide de la commande


ALTER TABLE avec l'option DROP CONSTRAINT.

Exemple :
ALTER TABLE Nom_table DROP CONSTRAINT nom_contrainte

20
INSERTION DANS CRÉATION DETABLES

• Il est possible de créer une table en insérant directement des lignes lors de la
création.

• Les lignes à insérer peuvent être alors récupérées d'une table existante grâce au
prédicat AS SELECT.

• La syntaxe d'une telle expression est la suivante:

CREATE TABLE Nom_de_la_table (Nom_de_colonne1


Type_de_donnée, Nom_de_colonne2 Type_de_donnée, ...)
AS SELECT Nom_du_champ1, Nom_du_champ2, FROM
Nom_de_la_table2 WHERE Prédicat ; 28
TRAVAUX PRATIQUES

22
TP EXIST
Soient 2 tables : Table Commande et Table Produit.
De la table commande, affichez les données pour lesquels il y a effectivement un produit=Id pdt
de la table produit. (A appliquer sur vos machines )
Id Cde Date Cde P_Id Qté_pdt Table commande
1 2019-01-08 2 1
2 2019-01-24 3 2
3 2019-02-14 8 1
4 2019-03-23 10 1

Id pdt Libellé pdt Date_ajout pdt Prix pdt


Table Produit 2 Ordinateur 2018-11-17 799.9
3 Clavier 2018-11-27 49.9
4 Souris 2018-12-04 15 23
5 Ecran 2018-12-15 250
TP GROUPBy/HAVING
De cette table, on souhaite récupérer les noms des clients qui ont commandé plus
de 400 dhs, toutes commandes confondues. (A appliquer sur vos machines)

client Montant Cde date_achat


NAJAH 402 2019-10-23
ABID 370 2019-10-27
YASSER 280 2019-11-05
NAJAH 160 2019-11-14
YASSER 410 2019-12-03

24
TP COUNT DISTINCT
De cette table, on souhaite récupérer le nombre des différents magasins d’abord
comme 1er résultat. Ensuite, le nombre des différents magasins comme 2e résultat.
Exprimez les 2 syntaxes correspondantes. (A appliquer sur vos machines)

Table Magasin
Id Magasin Nom Magasin Ventes Magasin

1 Casablanca 3020
2 Fès 3700
3 Agadir 2800
4 Tanger 1600
5 Casablanca 2000
25
CREATION + FOREIGN KEY (1)

26
CREATION + FOREIGN KEY (2)

27
APPLICATION INDIVIDUELLE
Soient les deux tables suivantes :
• Départements ( NumDép, NomDép, VilleDép)
• Employés ( IdEmp, NomEmp, DateEmbEmp,
SalaireEmp, ComEmp, #NumDép)

Exprimez en SQL et sous ACCESS les requêtes suivantes :


1. Les départements de la ville de Casablanca
2. Les départements dont le numéro est 1
3. la liste des employés ayant une commission
28
4. les noms des employés ayant un salaire
BON APPRENTISSAGE

36

Vous aimerez peut-être aussi