0% ont trouvé ce document utile (0 vote)
55 vues32 pages

Introduction au langage SQL et commandes

Transféré par

HABOU CHAIMAA
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)
55 vues32 pages

Introduction au langage SQL et commandes

Transféré par

HABOU CHAIMAA
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

06/03/2018

Le langage SQL
 SQL est un langage de manipulation de
données qui est devenu un standard dans le
monde des bases de données.
 SQL simplifie la manipulation des tables en
autorisant la recherche d'informations et la
mise à jour des relations par l'intermédiaire de
requêtes:

Le langage SQL
 Une requête est une interrogation d’une
base de données afin:
 Créer des tables

 Extraire des données

 Mettre à jour des données

 Supprimer des données

1
06/03/2018

Création d’une table

 La commande CREATE TABLE permet de créer


une table dans la base de données courante.
 Sa syntaxe est la suivante :

CREATE TABLE nom_table


(champ type propriétés, .. );

Type(CREATE)
 Char(x) ou VARCHAR(x): chaîne de caractères, x est
le nombre maximum de caractères autorisés dans le
champ.
 Integer ou INT: Nombre entier, positif ou négatif
 Decimal (x,y) : Nombre décimal, x est le nombre
maximum de chiffres et y le nombre maximum de
chiffres après la virgule.
 Date : Une date
 Datetime: date avec l’heure
 Float
4

2
06/03/2018

Propriétés du champ :

 NULL ou NOT NULL : autorise ou non que le


champ puisse être vide.
 UNIQUE : indique que deux enregistrements ne
pourront avoir la même valeur dans ce champ.
 DEFAULT ‘valeur’: place une valeur par défaut
dans le champ
 PRIMARY KEY : indique que ce champ est la clé
primaire
 Foreign key :clé étrangère.

 Une clé étrangère fait référence à une clé primaire d’une


autre table, sa syntaxe est la suivante:
constraint nomContrainte foreign key( nomCléEtrangère)
references nomTable2(cléPrimaire)
 Exemple:

- Commande(num_cmd ,date_cmd,#num_clt)
- La requête de création de la table commande avec les
contraintes de clé primaire et étrangère est la suivante:
Create table commande( num_cmd int not null,date_cmd
date not null, num_clt int not null,primary key(num_cmd),
foreign key(num_clt) references client(num_clt));
Num_clt est une clé primaire dans la table client

3
06/03/2018

Clé étrangère :
Ajouter la contrainte de clé étrangère à une table
 Exemple:

alter table commande add constraint fk


foreign key(num_clt) references client(num_clt);
ou

alter table commande add foreign key(num_clt)


references client(num_clt);

Propriétés du champ(suite)

 CHECK (condition) : équivaut à la propriété


"ValideSi" d'Access, va forcer SQL à faire une
vérification de la condition avant de valider la saisie,
 Exemple : CHECK (prix > 100) interdira la saisie
dans ce champ si la valeur contenue dans le champ
prix est inférieure à 100.

4
06/03/2018

Exemple

CREATE TABLE films (idFilm INT not null


AUTO_INCREMENT,
Titre VARCHAR (20) not null , Réalisateur VARCHAR
(20) not null , PRIMARY KEY (idFilm))

Exercice
 Créer la nouvelle table "table_test" contenant deux
champs : un champ avec un entier qui doit toujours être
saisi et un champ contenant une chaîne de 5
caractères :
CREATE TABLE table_test (champ1 integer NOT
NULL, champ2 char(5));

10

5
06/03/2018

La commande ALTER TABLE


 La commande ALTER TABLE permet de
modifier la structure d'une table, sa syntaxe
est la suivante :

ALTER TABLE nom_table


Action (spécifications du champ);

11

La commande ALTER TABLE

 ALTER TABLE permet trois actions, ces actions sont:


 ADD Ajoute un champ à une table.
 DROP Supprime un champ d'une table.
 CHANGE/MODIFY Modifie les caractéristiques d'un
champ.

12

6
06/03/2018

La commande ALTER TABLE


 Après l'action, on indique, entre parenthèses, les

spécifications du champ de la même façon que pour

la commande CREATE TABLE.

13

Exemple
- Ajout d'un champ Date :
ALTER TABLE table_test ADD champ3
Date;
- Suppression du champ2 :

ALTER TABLE table_test DROP champ2;

- Modification d’un champ2 :

ALTER TABLE table_test CHANGE champ2


champ2 char(3); 14

7
06/03/2018

Supprimer une table


 La commande DROP TABLE permet de
supprimer une table, sa syntaxe est la
suivante :
 DROP TABLE nom_table ;
 La table nom_table est alors supprimée. La
définition de la table ainsi que son contenu
sont détruits, et l'espace occupé par la table
est libéré.

15

Renommer une table


 On a la possibilité de changer le nom d'une
table par la commande RENAME, la syntaxe
est la suivante :
 RENAME TABLE ancien_nom TO
nouveau_nom ;

16

8
06/03/2018

INSERT
 La commande INSERT est utilisée pour ajouter des
enregistrements ou des parties d'enregistrements
dans des tables.
 La syntaxe de la commande INSERT:
INSERT
INTO table (champ1,champ2,...)
VALUES ('valeur1','valeur2',...);
ou
INSERT
INTO table
VALUES ('valeur1','valeur2',...);
17

INSERT(Exemple)
 Si on veut ajouter un enregistrement dans la table
étudiant (id_etud,nom,prenom,age):
Le champ « Id_etud » s’incrémente automatiquement.
INSERT
INTO etudiant
VALUES ('','amrani','manal',22);
 Si on veut ajouter une partie d’enregistrement
(nom,prénom) dans la table étudiant:
INSERT
INTO etudiant (nom,prenom)
VALUES ('amrani','manal');
18

9
06/03/2018

UPDATE
 La commande UPDATE est utilisée pour changer
des valeurs dans des champs d'une table.
 Sa syntaxe est :

UPDATE nom_table
SET champ1 = nouvelle_valeur1,
champ2 = nouvelle_valeur2,
champ3 = nouvelle_valeur3
WHERE condition;

19

UPDATE(suite)
 La clause SET indique quels champs de la table

vont être mis à jour et avec quelles valeurs ils vont

l'être.

 Les champs non spécifiés après la clause SET ne

seront pas modifiés.

20

10
06/03/2018

UPDATE(Exemple)
 modifier le prix d'un produit dont le libellé est
« produit1 » :

UPDATE produits
SET prix_unitaire = 1000
WHERE libelle = 'produit1';

21

DELETE
 Pour supprimer des enregistrements d'une table,
on utilise la commande DELETE.
 La syntaxe est la suivante :

DELETE
FROM nom_table
WHERE condition;
 Remarque:
 On ne peut pas supprimer seulement le contenu de
quelques champs des enregistrements.
22

11
06/03/2018

DELETE

 Remarque:
La commande DELETE supprime des
enregistrements entiers, c'est pour cela qu'il n'est
pas nécessaire d'indiquer ici des noms de champs.

23

DELETE (Exemple)
 pour vider la table « Etudiant »:

DELETE
FROM etudiant;

24

12
06/03/2018

SELECT
Syntaxe de la commande SELECT

 Cette commande va servir à faire des requêtes pour


récupérer des données d’une table ou plusieurs tables.
 La commande SELECT permet de sélectionner des
données de plusieurs tables.

 Sa syntaxe est la suivante :

SELECT « liste des noms de colonnes »


FROM « Liste des tables »
WHERE « condition logique »
25

SELECT
 SELECT indique la liste des attributs
constituant le résultat.
 FROM indique la (ou les) tables dans
lesquelles on trouve les
attributs(informations) utiles à la requête.
 WHERE indique les conditions que doivent
satisfaire les n-uplets (enregistrements) de la
base pour faire partie du résultat.

26

13
06/03/2018

SELECT
 La liste des noms de colonnes: indique la
liste des colonnes choisies, séparées par des
virgules.
 Lorsque l'on désire sélectionner l'ensemble
des colonnes d'une table il n'est pas
nécessaire de saisir la liste de ses colonnes,
l'option * permet de réaliser cette tâche.

27

SELECT
 La liste des tables indique l'ensemble des
tables (séparées par des virgules) sur
lesquelles on opère
 La condition logique permet d'exprimer des
qualifications complexes à l'aide d'opérateurs
logiques et de comparateurs arithmétiques

28

14
06/03/2018

Exemple
 Pour sélectionner juste les noms et les prénoms
des étudiants, la syntaxe est la suivante:

SELECTnom, prénom FROM etudiant;

 Pour sélectionner les enregistrements de la


table « etudiant » dont l'âge est 20 ans, la
syntaxe est la suivante:
SELECT * FROM etudiant WHERE age=20;

29

SELECT
On peut utiliser les opérateurs suivants dans les
conditions c’est-à-dire dans la clause WHERE:
Opérateur Signification
= Egal
<> Différent
(parfois noté aussi != )
< Inférieur
> Supérieur
<= Inférieur ou égal
>= Supérieur ou égal

30

15
06/03/2018

Exemple
 Pour sélectionner les enregistrements de la
table « etudiant » dont l'âge est supérieur ou
égale à 20 ans:

SELECT * FROM etudiant WHERE age>=20;

31

SELECT
Opérateurs logiques
Il est possible de combiner plusieurs conditions
avec des opérateurs logiques :
 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
 Toutes les conditions séparées par AND sont
vraies.
32

16
06/03/2018

Exemple (AND)
Pour sélectionner les étudiants qui ont
l’âge 20 ans ,et habitent à « Meknès » la
syntaxe est la suivante:

SELECT * FROM etudiant WHERE age=20


AND ville=‘Meknès’;

33

SELECT
 L'opérateur OR réunit deux conditions mais
sélectionne un enregistrement si une des
conditions listées est satisfaite.
 Par exemple, pour sélectionner tous les
étudiants nommés ‘Amrani' ou ‘Salhi' :

SELECT * FROM etudiant WHERE


nom=‘Amrani’ OR nom=‘Salhi’;

34

17
06/03/2018

SELECT
 L'option DISTINCT permet de ne conserver
que des lignes distinctes, en éliminant les
doublons
SELECT DISTINCT age, ville FROM etudiant;

 L'option ALL est, par opposition à l'option


DISTINCT, l'option par défaut. Elle permet de
sélectionner l'ensemble des lignes
satisfaisant à la condition logique
35

Clauses IN et NOT IN
 Pour sélectionner des enregistrements dont la
valeur d'un champ peut être comprise dans
une liste on utilise la clause IN

 NOT IN sélectionne les enregistrements


exclus de la liste spécifiée après IN.

36

18
06/03/2018

Exemple
SELECT *
FROM etudiant
WHERE age IN (18, 20,22,24);

SELECT *
FROM etudiant
WHERE age NOT IN (16,17,18);

37

Clause BETWEEN
 Pour sélectionner des enregistrements dont
la valeur d'un champ peut être comprise
entre deux valeurs, on utilise la clause
BETWEEN.

SELECT *
FROM etudiant
WHERE age BETWEEN 18 AND 24;

38

19
06/03/2018

La clause LIKE
 La clause LIKE permet de faire des recherches sur
le contenu d'un champ.
 Par exemple: pour sélectionner les étudiants dont
le nom commence par la lettre D :

SELECT *
FROM etudiant
WHERE nom LIKE ‘D%';
 Remarque:
 % remplace un ensemble de caractères

 Le symbole ? remplace un seul caractère.


39

Les fonctions d'ensemble


 SQL a cinq fonctions importantes :
 SUM (): Donne le total d'un champ de tous les
enregistrements satisfaisant la condition de la
requête. Le champ doit bien sur être de type
numérique
 AVG (): donne la moyenne d'un champ de tous les
enregistrements satisfaisant la condition de la
requête

40

20
06/03/2018

Les fonctions d'ensemble


 MAX (): Donne la valeur la plus élevée d'un champ
de tous les enregistrements satisfaisant la condition
de la requête
 MIN (): Donne la valeur la plus petite d'un champ de
tous les enregistrements satisfaisant la condition de
la requête.
 COUNT (*) :Renvoie le nombre d'enregistrements
satisfaisant la requête.
41

Exemple
 Pour retourner le prix le plus petit de la table
Produit, le prix le plus élevé et le prix moyen.

SELECT
MIN(prix_unitaire),MAX(prix_unitaire),
AVG(prix_unitaire) FROM Produits;

 Pour retourner le nombre de produits dont


le libellé commence par la lettre 'P'.
SELECT COUNT (*)
FROM Produits
WHERE libelle LIKE 'P%';
42

21
06/03/2018

SELECT
 Il existe d'autres options pour la commande
SELECT :
 GROUP BY

 HAVING

 ORDER BY

43

GROUP BY
 Une des utilisations les plus courantes de la
clause GROUP BY est son association avec
une fonction d'ensemble (le plus souvent
COUNT, pour compter le nombre
d'enregistrements dans chaque groupe).

44

22
06/03/2018

Exemple
 Si on veut afficher pour chaque étudiant le
nombre d’emprunts qu'il a effectué:

SELECT num_etudiant,COUNT(*)
FROM emprunt
GROUP BY num_etudiant;

45

HAVING
 La clause HAVING est utilisé avec la clause
GROUP BY, elle permet d'appliquer une
restriction sur les groupes créés grâce à la
clause GROUP BY.
SELECT ville,COUNT(*)
FROM etudiant
GROUP BY ville HAVING ville IN("fes","meknes" );

46

23
06/03/2018

ORDER BY
 La clause ORDER BY suivie des mots clés
ASC ou DESC, permet de Trier les résultats
d’une requête en ordre croissant ou bien
décroissant
 Le classement se fait sur des nombres ou
des chaînes de caractères.

47

Exemple

 Pour trier les noms des étudiants par ordre


croissant (alphabétique):

SELECT * FROM etudiant


ORDER BY nom ASC;

48

24
06/03/2018

Jointure
 La jointure permet de sélectionner des
informations dans plusieurs tables grâce aux
relations existant entre ces tables.
 Par exemple :
Pour récupérer le nom et le prénom du client
ayant passé la commande n°1 :
SELECT nom, prénom
FROM Clients, Commande
WHERE Commande.num_client = Client.num_client
AND num_commande = 1;
49

Explication:
 La clause WHERE indique que le numéro de
commande doit être égal à 1 et que la jointure va se
faire sur le numéro de client
 une fois que SQL va trouver la commande n° 1 dans
la table commande, il va prendre le numéro de client
contenu dans l'enregistrement et avec ce numéro, il
va chercher dans la table Clients le nom et le
prénom.
50

25
06/03/2018

Jointure
 Remarque:
 lorsqu'on utilise plusieurs tables, il faut faire
attention que deux tables n'aient pas de champs
ayant le même nom, si c'est le cas, et pour les
différencier, on utilise, comme dans l'exemple, la
notation: table.nom_du_champ.

 Si on est sur que le nom ne se retrouvera pas


dans plusieurs tables, on peut l'utiliser sans le
préfixer avec le nom de la table.
51

Jointure externe à gauche


SELECT * FROM table1 LEFT JOIN table2
ON [Link] = table2.fk_id

ou
SELECT * FROM table1 LEFT OUTER JOIN table2
ON [Link] = table2.fk_id

 id: est la clé primaire de la première table.


 fk_id: est une clé étrangère de deuxième table

26
06/03/2018

Jointure externe à droite


SELECT * FROM table1 RIGHT JOIN table2
ON [Link] = table2.fk_id

ou
SELECT * FROM table1 RIGHTOUTER JOIN table2
ON [Link] = table2.fk_id

 id: est la clé primaire de la première table.


 fk_id: est une clé étrangère dans la deuxième table

Jointure externe (FULL JOIN)


SELECT * FROM table1 FULL JOIN table2
ON [Link] = table2.fk_id

 id: est la clé primaire de la première table.


 fk_id: est une clé étrangère dans la deuxième table
 FULL JOIN (LEFT JOIN + RIGHT JOIN) :
 Permet de retourner les enregistrements de table1 et
table 2, même s’il n’y a pas de correspondance.

27
06/03/2018

Requêtes imbriquées(Sous requêtes)


 Effectuer une sous-requête consiste à
effectuer une requête à l'intérieur d'une autre,
ou utiliser une requête afin d'en réaliser une
autre.
 Une sous-requête doit être placée à la suite
d'une clause WHERE ou HAVING.

55

Requêtes imbriquées(Sous requêtes)


 lorsque la sous-requête remplace une constante
utilisée avec des opérateurs classiques, elle doit
obligatoirement renvoyer une seule réponse (une
table d'une ligne et une colonne).
 Par exemple: SELECT … FROM … WHERE … <
(SELECT …FROM …)

56

28
06/03/2018

Requêtes imbriquées(Sous requêtes)


 lorsque la sous-requête remplace une constante
utilisée dans une expression avec l’opérateur IN,
elle doit obligatoirement renvoyer une ou
plusieurs valeurs(une liste).
 SELECT … FROM … WHERE … IN (SELECT
… FROM …)

57

ALL/ANY
 Les opérateurs ANY et ALL permettent de
comparer des ensembles de valeurs de
manière globale.
 ALL demande une comparaison à toutes les
valeurs pour que le prédicat soit vrai
 ANY est vrai si, au moins une valeur de
l'ensemble répond vrai à la comparaison.
 Le critère de comparaison devant être, de
préférence, une inégalité (>, >=, <, <=, <>).
58

29
06/03/2018

ALL
 Exemple: trouver le nom et le prénom du
dernier employé embauché?
 Select nom,prénom from employé where
date_embauche >= all(select date_embauche
from employé)

EXISTS
 Le prédicat EXISTS permet de tester
l'existence ou l'absence de données dans
la sous-requête.
 Le prédicat EXISTS peut être combinés
avec l'opérateur de négation NOT.

60

30
06/03/2018

Exemple
 Nom et prénom des clients ayant
commandé au moins une fois.
SELECT nom, prenom FROM client clt WHERE
EXISTS (SELECT * FROM commande cmd
WHERE clt.num_clt = cmd.num_clt) ;
ou
SELECT nom, prenom FROM client clt
WHERE
num_clt IN (SELECT num_clt FROM commande cmd ) ;

Exemple( EXISTS)
 Nom et prénom des clients qui n'ont pas
encore commandé?
SELECT nom, prenom FROM client clt WHERE
NOT EXISTS (SELECT * FROM commande cmd
WHERE clt.num_clt = cmd.num_clt) ;

 OU
SELECT nom, prenom FROM client clt
WHERE
num_clt NOT IN (SELECT num_clt FROM commande cmd ) ;

31
06/03/2018

Fonctions de chaînes de caractères


Fonction Signification
Concat() Permet de concaténer deux chaînes de
caractère ou plus,
Ex: select concat(nom,’ ‘,prénom) from
client;

LOWER() ou Permet de transformer tous les caractères


LCASE() en minuscules
UPPER() ou Permet de transformer tous les caractères
UCASE() en majuscules.
LENGHT() Permet de retourner la longueur d’une
chaîne de caractères

Fonctions de dates
Fonction Signification
YEAR() permet d’extraire une année à partir d’une
date au format AAAA-MM-JJ.
MONTH() permet d’extraire le numéro de mois à
partir d’une date au format AAAA-MM-JJ
NOW() permet de retourner la date et l’heure du
système.
DATEDIFF() prend deux dates en paramètres et
retourne le nombre de jours entre les deux
dates

32

Vous aimerez peut-être aussi