0% ont trouvé ce document utile (0 vote)
29 vues48 pages

Chapitre 3: Le Langage SQL

Le chapitre 3 présente le langage SQL, qui est un langage de requêtes structuré développé par IBM dans les années 70, et aborde ses types de données, ainsi que les requêtes d'action et de sélection. Il explique comment créer, modifier et supprimer des tables, ainsi que l'insertion, la mise à jour et la suppression d'enregistrements. Enfin, il détaille les requêtes de sélection, les opérateurs de comparaison et logiques, ainsi que les jointures entre tables.

Transféré par

nadaabdelkain2004
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 PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
29 vues48 pages

Chapitre 3: Le Langage SQL

Le chapitre 3 présente le langage SQL, qui est un langage de requêtes structuré développé par IBM dans les années 70, et aborde ses types de données, ainsi que les requêtes d'action et de sélection. Il explique comment créer, modifier et supprimer des tables, ainsi que l'insertion, la mise à jour et la suppression d'enregistrements. Enfin, il détaille les requêtes de sélection, les opérateurs de comparaison et logiques, ainsi que les jointures entre tables.

Transféré par

nadaabdelkain2004
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 PDF, TXT ou lisez en ligne sur Scribd

Chapitre 3: Le langage SQL

1. Présentation du langage SQL;

2. Types de données;

3. Requêtes d’action;

4. Requêtes de sélection;

105
Présentation du langage SQL
• Le sigle SQL signifie "Structured Query Language", soit en français
"Langage de requêtes structuré".
• Il a été développé par IBM au cours des années 70 et son nom était
SEQUEL, abréviation de Structured English QUEry Language.
• SQL : langage proche de l’utilisateur et de sa façon de poser les requêtes
(formulation proche du langage naturel).
• SQL : langage facile à apprendre pour rédiger les requêtes, les lire et les
comprendre. 106
Présentation du langage SQL
Utilisation de SQL :

• En mode interactif : l’utilisateur écrit textuellement une commande


SQL et récupère le résultat immédiatement.

• En mode intégré : une commande SQL est mélangée avec les


instructions d’un programme en langage de haut niveau tel que C,
C++, Visual basic, Pascal...

107
Types de données
• INTEGER ou INT : entiers signés.
• TEXT(p) ou CHAR(p) : chaîne de caractères de longueur fixe de p caractères.
• VARCHAR (p): chaîne de caractères de longueur variable de p caractères
maximum.
• DATE, TIME, DATETIME: dates et/ou heures.
• LOGICAL : valeur logique « oui » ou « non ».
• DECIMAL(p, q) : nombres décimaux de p chiffres dont q après le point décimal
(par défaut, q = 0).
• FLOAT : nombre réel en virgule flottante(il y a aussi Single pour simple et Double
pour réel double).
• … 108
Types de données
Quelques propriétés des attributs en SQL :
• PRIMARY KEY : clé primaire.
• FOREIGN KEY : clé étrangère.
• NULL / NOT NULL : valeurs non obligatoires/obligatoires.
• DEFAULT = Valeur : pour définir une valeur par défaut.
• UNIQUE : permet de vérifier que la valeur saisie pour un champ
n'existe pas déjà dans la table.
• CONSTRAINT : permet de donner un nom à une contrainte ce qui
permet de la manipuler. 109
Conventions
Les conventions relatives aux noms des tables et des champs varient
quelque peu d'un SGBD à l'autre:
• Le nombre de caractères ne doit pas être trop grand (64 dans Access,
18 à 30 dans d'autres SGBD) ;
• Seuls les lettres, les chiffres et le caractère de soulignement sont
autorisés.
• Certains SGBD requièrent que le nom d'un champ commence par une
lettre, mais ce n'est pas le cas d'Access ;
• Les termes faisant partie du vocabulaire du langage SQL sont interdits
("date » par exemple). Ce sont les mots réservés. 110
Les requêtes dans SQL

On distingue 3 types de requêtes:

• Actions (Création et m.à.j),

• Sélections (Interrogation)

• Contrôle (définir des permissions pour les utilisateurs).

111
Requêtes d’action
• Requêtes d’actions: Sont des requêtes qui permettent de créer des tables,
d’ajouter, de supprimer des enregistrements d’une table, d’ajouter une
colonne…
• Création d’une table : Cette opération donne comme résultat une table
vide ne contenant aucun enregistrement.
➢ Il faut préciser :
✓ Le nom de la table;
✓ La description de ses colonnes : nom, type de données et
contraintes.
➢ L’instruction CREATE TABLE permet de créer une nouvelle table. 112
Création de table
• Syntaxe SQL pour créer une nouvelle table avec une clé primaire :
CREATE TABLE nom_de_la_table (
champ1 type_donnees PRIMARY KEY ,
champ2 type_donnees,
champ3 type_donnees,
champ4 type_donnees,
);

113
Création de table
• Syntaxe SQL pour créer une nouvelle table avec une clé primaire composé :
CREATE TABLE nom_de_la_table (
champ1 type_donnees,
champ2 type_donnees,
champ3 type_donnees,
champ4 type_donnees,
PRIMARY KEY (champ1,champ2)
);
114
Création de table: Exemple

CREATE TABLE Client(


Id INT PRIMARY KEY,
Nom TEXT,
Prenom TEXT,
Email TEXT NOT NULL,
Date_naissance DATE,
Pays TEXT,
Ville TEXT
); 115
Création d’une table: Clé étrangère

• Créez une requête SQL permettant de créer la table Participe (Numadh:


entier, Numact: entier, AnneeParticipe: entier);

• Numadh est la clé primaire de la table Adherent et Numact est la clé


primaire de la table Activite.

116
Création d’une table: Clé étrangère
CREATE TABLE Participe (
Numadh INT,
Numact INT,
anneeParticipe INT,
PRIMARY KEY (Numadh, Numact, AnneeParticipe),
FOREIGN KEY (Numadh) REFERENCES
Adherent(Numadh),
FOREIGN KEY (Numact) REFERENCES Activite(Numact)
);

117
Modification dans une table

• L’instruction ALTER TABLE permet d’ajouter ou de supprimer un seul


champ à une table.

118
Modification dans une table
Il y a trois types d’actions concernant la modification de structure d’une table :
➢ Ajouter une ou plusieurs colonnes.
➢ Supprimer une ou plusieurs colonnes.
➢ Modifier les propriétés d’une ou de plusieurs colonnes.
Les commandes SQL relatives à ces actions :
➢ ADD
➢ DROP
➢ MODIFY
119
Modification dans une table
• Pour modifier la structure d’une table, on précise tout d’abord le nom de
celle-ci en écrivant la commande suivante :

ALTER TABLE Nom_table

• En suite, on spécifie la nature de l’action de modification (ajout, suppression


ou modification).

• Pour cela, il faut utiliser l’une des trois commandes : ADD, DROP ou
MODIFY.
120
Modification dans une table : Exemples d’ajout
• Ajouter une colonne « DATECOMPTE » de type Date dans la table «
COMPTE » :
ALTER TABLE COMPTE
ADD DATECOMPTE DATE;
Ou
ALTER TABLE COMPTE
ADD Column DATECOMPTE DATE;

121
Modification dans une table: Exemples de suppression

• Supprimer la colonne « ADRAGENCE » de la table « AGENCE » :

ALTER TABLE CLIENT

DROP ADRAGENCE;

122
Modification dans une table : Exemples de modification
de propriétés
• Modifier la colonne « AGE » de la table « CLIENT » pour qu’elle soit
obligatoire:
ALTER TABLE CLEINT
MODIFY AGE NOT NULL;
• Modifier le type de la colonne « ADRAGENCE » pour qu’il soit un
CHAR(100) au lieu de CHAR(40) :
ALTER TABLE AGENCE
MODIFY ADRAGENCE CHAR(100);
123
Suppression d’une table

• La syntaxe SQL pour supprimer une table est très simple :


DROP TABLE Nom_table
Exemples :
DROP TABLE CLIENT
DROP TABLE AGENCE
DROP TABLE COMPTE

124
Insertion d’enregistrements

• La commande qui permet d’insérer une ligne dans une table est la suivante:

INSERT INTO Nom_table [(champ1, champ2, …)] VALUES


(valeur1, valeur2, …) ;

• Dans la clause “INTO…”, on spécifie le nom de la table ainsi que les noms
des colonnes.
• Si l’on veut ajouter une ligne contenant les valeurs pour tous les champs,
dans ce cas on peut omettre les noms de colonnes.
125
Insertion d’enregistrements: exemple

• Ajouter l’enregistrement suivant (100, BENALI, Aziz, Ingenieur, 90050)


dans la table EMPLOYES: EMPLOYES (Nemploye, Nom, Prenom,
Fonction, Adresse, Codeville)

INSERT INTO EMPLOYES (Nemploye, Nom, Prenom, Fonction,


Codeville) VALUES (100, "BENALI", "Aziz", "Ingenieur", 90050);

126
Modification d’un enregistrement

• L’instruction UPDATE permet la mise à jour d’une table;


• On modifie la valeur d’un champ d’un enregistrement qui vérifie une
condition précise (critère pour accéder à la ligne qui sera le sujet de la
modification);
• Syntaxe :
UPDATE table SET nouvelles valeurs WHERE critères

127
Modification d’un enregistrement

• Les champs à mettre à jour doivent être écrits dans la clause SET, l’un
après l’autre (avec leurs valeurs) et séparés par des virgules.

• Les champs non spécifiés après la clause SET ne seront pas modifiés.

• Si la clause WHERE est absente, tous les enregistrements de la table


seront affectées.

128
Modification d’un enregistrement: exemples
• Donner une requête SQL pour modifier l’adresse de l'employé numéro 10
par la nouvelle adresse sera "10 Avenue Mohamed VI, Rabat".

UPDATE EMPLOYES SET Adresse = "10 Avenue Mohamed VI,


Rabat" WHERE Nemployé = 10 ;

• Donner une requête SQL pour augmenter de 5% le salaire de tous les


acteurs : ACTEURS (N_act, Nom, Prénom, Nationalité, Salaire, Age, Films)

UPDATE ACTEURS SET Salaire = Salaire * 1.05 ;


129
Suppression d’enregistrements
• L’instruction DELETE permet d’effacer des enregistrements d’une table.

• La syntaxe de la commande est :

DELETE FROM Nom_table WHERE Condition;

• Pour supprimer tous les enregistrements d’une table, il suffit de ne pas


indiquer la clause WHERE.

130
Suppression d’enregistrements: exemples

• Effacez tous les enregistrements de la table ACTEURS;

DELETE FROM ACTEURS ;

• Effacez tous les acteurs de nationalité marocaine;

DELETE FROM ACTEURS WHERE Nationalite= "marocaine";

131
Les requêtes de sélection
• Une requête de type SELECTION permet d'interroger une base de données
en composant les projections, les restrictions, les jointures….

• Le résultat d’une telle requête est renvoyé sous forme d’une table formée
d’un ou plusieurs attributs.

Syntaxe :
SELECT nom_du_champ
FROM nom_de_table ;
132
Exemples
Soit la table ACTEURS :
ACTEURS (N_act, Nom, Prénom, Nationalité, Salaire, Films)

• Donner une requête SQL pour afficher tous les champs et tous les
enregistrements de la table ACTEURS:
SELECT * FROM ACTEURS;
• Requête SQL pour afficher uniquement le Nom, Prénom et le salaire de
chaque Acteur:
SELECT Nom, Prénom, Salaire FROM ACTEURS;
133
DISTINCT
• Cette requête sélectionne le champ « ma_colonne » de la table
« nom_du_table » en évitant de retourner des doublons.

Syntaxe :

SELECT DISTINCT ma_colonne


FROM nom_du_table ;

134
Exemple
SELECT DISTINCT prenom FROM client ;

Table :Client

135
• Avec l’instruction SELECT, il est possible d’utiliser les fonctions suivantes
pour effectuer des calculs:
‒ SUM () renvoie la somme d’un champ
‒ AVG () renvoie la moyenne d’un champ
‒ MAX () renvoie la valeur maximale d’un champ
‒ MIN () renvoie la valeur minimale d’un champ
‒ COUNT (*) renvoie le nombre d’enregistrements de la table

136
Exemples

• Afficher le nombre totale d’enregistrements de la table ACTEURS.


SELECT COUNT(*) FROM ACTEURS;
• Afficher le nombre totale d’enregistrements de la table ACTEURS et
nommer le champ retourné Nombre total.
SELECT COUNT(*) As Nombre_Total FROM ACTEURS;
• Afficher le nombre d’enregistrements de la table ACTEURS qui ont une
entrée dans le champ Nom. Nommer le champ retourné Nombre d’entrée.
SELECT COUNT(Nom) As Nombre_d’entrée FROM ACTEURS;
137
Exemples
• Afficher le total des salaires de la table ACTEURS et nommer le champ
retourné Total des salaires:
SELECT SUM(Salaire) As Total_des_salaires FROM ACTEURS;
• Afficher la moyenne des salaires de la table ACTEURS et nommer le
champ retourné Moyenne des salaires.
SELECT AVG(Salaire) As Moyenne_des_salaires FROM
ACTEURS;
• Afficher le salaire le plus élevé de la table ACTEURS et nommer le champ
retourné Salaire maximal.
SELECT MAX(Salaire) As Salaire_maximal FROM ACTEURS;
138
Les éléments de la clause WHERE
Permet d’extraire les lignes d’une base de données qui respectent une
condition. Cela permet d’obtenir uniquement les informations désirées.

Syntaxe :
SELECT nom_colonnes
FROM nom_table
WHERE condition ;

139
Les opérateurs de comparaison

• On peut utiliser les opérateurs suivants dans les conditions d’une requête :
▪ = : égal
▪ <> : différent
▪ < : inférieur strict
▪ > : supérieur strict
▪ <= : inférieur ou égal
▪ >= : supérieur ou égal

140
Les opérateurs de comparaison
• Comparaison à une valeur (= , < , > , >= , <= , <>)

• Comparaison à une fourchette de valeurs (BETWEEN … AND)

• Comparaison à une liste de valeur ( IN (. , . ,...) )

• Comparaison à un filtre (LIKE)

141
Les opérateurs logiques
• Ils permettent de construire des conditions plus complexes.
• Les opérateurs logiques de SQL sont :
• AND (ET) : conjonction.
• OR (OU) : disjonction
• NOT (NON) : négation
• L'opérateur AND réunit deux ou plusieurs conditions et sélectionne un
enregistrement seulement si cet enregistrement satisfait toutes les
conditions listées.
• L'opérateur OR réunit deux conditions, mais sélectionne un enregistrement
142
si une des conditions listées est satisfaite.
Exemples
• Afficher tous les noms d’acteurs dont le salaire est supérieur ou égal à 4000
SELECT Nom FROM ACTEURS WHERE Salaire >=4000;
• Afficher tous les noms d’acteurs dont la nationalité est américaine et le
salaire est supérieur à 4000
SELECT Nom FROM ACTEURS WHERE
(Nationalité="américaine") AND (Salaire > 4000);
• Afficher tous les noms d’acteurs dont la nationalité est américaine ou Le
salaire est supérieur à 4000
SELECT Nom FROM ACTEURS WHERE
(Nationalité="américaine") OR (Salaire >4000);
143
Exemples

• Afficher les acteurs dont le salaire est entre 3500 et 5000


SELECT * FROM ACTEURS WHERE Salaire BETWEEN 3500 AND
5000;
• Afficher tous les acteurs dont la nationalité est américaine, marocaine ou
égyptienne
SELECT * FROM ACTEURS WHERE Nationalité IN ("Américaine",
"Egyptienne", "marocaine");

144
Exemples

• Afficher tous les noms d’acteurs qui commencent par "D"


SELECT Nom FROM ACTEURS WHERE Nom LIKE "D*";
• Afficher tous les noms d’acteur ne commençant pas par D et ayant 4 lettres
SELECT Nom FROM ACTEURS WHERE Nom NOT LIKE "D*"
AND Nom LIKE "????";

145
Exemple

Soit les tables PRODUITS, COMMANDES, DETAILS et EMPLOYES.


• PRODUITS (Réf , Nompr, Nfournisseur, Pu)
• COMMANDES(Ncommande, Codecli, Nemployé, Date_commande)
• DETAILS(Ncommande, Réf , Quantité, Remise)
• EMPLOYES(Nemployé, Nom, Prénom, Fonction, Adresse, Ville)

146
Les jointures
• Jointure interne: utilise INNER JOIN. Ne sont incluses dans le résultat
final que les lignes qui se correspondent dans les deux tables.
• La jointure externe gauche, dans laquelle INNER JOIN est remplacé par
LEFT JOIN. Toutes les lignes de la première table sont incluses dans le
résultat de la requête, même s'il n'existe pas de ligne correspondante dans
la seconde table ;
• La jointure externe droite, dans laquelle INNER JOIN est remplacé par
RIGHT JOIN. Toutes les lignes de la seconde table sont incluses dans le
résultat de la requête, même s'il n'existe pas de ligne correspondante dans
la première table. 147
Exemple
• Afficher tous les produits (Réf, Nompr) qui ont été vendus.
SELECT PRODUITS.Réf, Nompr FROM PRODUITS INNER JOIN
DETAILS ON PRODUITS.Réf = DETAILS.Réf ;
Ou bien
SELECT PRODUITS.Réf, Nompr FROM PRODUITS, DETAILS
WHERE PRODUITS.Réf = DETAILS.Réf ;

148
ORDER BY
• Afficher tous les produits (Réf, Nompr) qui ont été vendus par ordre
décroissant selon le champ Réf.
SELECT PRODUITS. Réf, Nompr
FROM PRODUITS , DETAILS
WHERE PRODUITS. Réf = DETAILS . Réf
ORDER BY PRODUITS.Réf DESC;

Par défaut, le résultat d’une requête sélection est trié selon l’ordre croissant
(ASC) du premier attribut qui figure dans la clause SELECT.
149
GROUP BY
• En utilisant la table détails, afficher pour chaque commande le total de
quantités des produits vendus.
SELECT Ncommande, SUM(Quantité) AS Totale_quantités_
vendues
FROM DETAILS
GROUP BY Ncommande ;

150
HAVING
• Afficher pour chaque commande le total de quantités des produits vendus
et tel que ce total est > 60
SELECT Ncommande, SUM(Quantité) AS Totale_quantités_
vendues
FROM DETAILS
GROUP BY Ncommande
HAVING SUM(Quantité) > 60 ;

151
Exemple

• Afficher les commandes qui contiennent plus que 3 produits (>=3)


SELECT Ncommande, COUNT(Réf) AS Nombre_de_produits
FROM DETAILS
GROUP BY Ncommande
HAVING COUNT(Réf) >=3 ;

152

Vous aimerez peut-être aussi