0% ont trouvé ce document utile (0 vote)
112 vues15 pages

BDD Mémo-SQL

Transféré par

Ahmed Brhili
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)
112 vues15 pages

BDD Mémo-SQL

Transféré par

Ahmed Brhili
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

TP BDD - SQL

Mémo - SQL

I. La commande SELECT 2
1. Les options du SELECT 2
2. Les pseudonymes ou Alias 3
3. Les fonctions de calcul 3
4. Les fonctions de dates 4
II. Le TRI : ORDER BY 4
III. SELECTION 5
1. Les opérateurs logiques 5
2. Les opérateurs mathématiques 5
3. Les mots réservés 5
IV. JOINTURES 7
V. Les requêtes imbriquées 9
VI. Les fonctions de regroupement : GROUP
BY...HAVING 9
Les fonctions de calcul de regroupement : 10
VII. Les modifications d’une table et de son contenu ________
1. Modification d'une table : ALTER TABLE 11
2. Suppression d'une table 11
3. Suppression d'enregistrements d’une table : DELETE 11
4. Mise à jour d'enregistrement : UPDATE 12
5. Insertion d'enregistrement : INSERT INTO 12
6. Insertion à partir d'une autre table 12
VIII. Les opérations ensemblistes 13
1. Union de 2 tables 13
2. L'intersection de 2 tables 14
3. La différence de 2 tables 15

C. Bouby

1
TP BDD - SQL

I. La commande SELECT

SELECT <Champ>, <Champ2>,...,... FROM <Table> WHERE


<Condition>

1. Les options du SELECT


SELECT ALL / DISTINCT / DISTINCTROW/TOP/PERCENT <
Champ>, <Champ2>
FROM <Table>
WHERE <Condition>

SELECT prenom, nom FROM client;

Ces attributs se plaçant avant l'énumération des champs, portent


sur les enregistrements (tuples) eux mêmes. Ils permettent d'opérer
une sélection sur les enregistrements qui vont faire l'objet de la
clause WHERE.

ALL : sélectionne tous les enregistrements (commande par défaut si


omission).

DISTINCT : sélectionne les enregistrements pour lesquels il n'y a


pas de doublon dans la projection réalisée (champs choisis).

LIMIT : sélectionne un certain nombre d'enregistrements qui se


trouvent en haut ou en bas d'une plage déterminée par une clause
ORDER BY.

SELECT DISTINCT Nom


FROM Personne;

SELECT Nom
FROM Personne
LIMIT 3;

C. Bouby

2
TP BDD - SQL

2. Les pseudonymes ou Alias


AS : permet d’utiliser un Alias pour les tables ou les champs.

SELECT *
FROM nom_table AS t1;

SELECT colonne1 AS c1, colonne2


FROM table;

3. Les fonctions de calcul


• AVG() pour calculer la moyenne sur un ensemble
d’enregistrement
• COUNT() pour compter le nombre d’enregistrement sur une
table ou une colonne distincte
• MAX() pour récupérer la valeur maximum d’une colonne sur
un ensemble de ligne. Cela s’applique à la fois pour des
données numériques ou alphanumérique
• MIN() pour récupérer la valeur minimum de la même manière
que MAX()
• SUM() pour calculer la somme sur un ensemble
d’enregistrement

SELECT Count(*) AS Comptage


FROM Resultats;

C. Bouby

3
TP BDD - SQL

4. Les fonctions de dates


La fonction NOW() permet de retourner la date et l’heure du
système.
La fonction YEAR() permet d’extraire une année à partir d’une date.
La fonction MONTH() permet d’extraire le numéro de mois à partir
d’une date.

SELECT Nom, Prenom, DateP


FROM Personne
WHERE Year(DateP)=2012;

II. Le TRI : ORDER BY

SELECT <Champ>, ...,... FROM <Table> WHERE <Condition>


ORDER BY champ1 ASC /DESC , champ2 ASC /DESC ...

Elle sert à classer sur un ou plusieurs champs


ASC = Croissant ; DESC = Décroissant > par défaut ASC.

SELECT Nom,Prenom
FROM Personne
ORDER BY Nom,Prenom DESC;

C. Bouby

4
TP BDD - SQL

III. SELECTION

SELECT <Champ>, <Champ2> FROM <Relation> WHERE


<Condition>
Cette clause WHERE permet une restriction suivant une ou
plusieurs critères.

1. Les opérateurs logiques


AND : <Expr1> AND <Expr2> -> les deux expressions doivent être
vérifiées.
OR : <Expr1> OR <Expr2> -> ou inclusif, au moins une des deux
expressions doit être vérifiée (et/ou).
NOT : <Expr1> -opérateur- NOT <Expr2> -> effectue la négation
d'un opérateur ( AND Not, OR Not...).

2. Les opérateurs mathématiques


= > < >= <= <>

SELECT Nom, Prenom, Date


FROM Personne
WHERE Date>’2010-12-31’
And Date>’2010-01-01’;

3. Les mots réservés


BETWEEN : sélectionne plusieurs valeurs comprises entre deux
valeurs.
WHERE val BETWEEN n1 And n2;

SELECT Note
FROM Notes
WHERE Note BETWEEN 12 And 15;

C. Bouby

5
TP BDD - SQL

IN : sélectionne des valeurs qui appartiennent à une liste . Il peut


se combiner avec NOT pour exclure des valeurs
WHERE Champ1 In ("Nom1", "Mom2");

SELECT Nom, Prenom


FROM Eleve
WHERE Nom IN (‘Marc’, ‘Maxime’);

LIKE permet de chercher une valeur dans les champs d'une table.
%= n'importe quelle chaîne de caractères
_ = n'importe quel caractère

SELECT Nom, Prenom


FROM Personne
WHERE Nom LIKE ‘c%’;

C. Bouby

6
TP BDD - SQL

IV. JOINTURES

SELECT <Champ1>, <Champ2>,...,... FROM <Table1>


INNER JOIN/ LEFT JOIN / RIGHT JOIN <Table2> ON <Condition
jointure>

INNER JOIN <Table> ON <Champ1>=<Champ2> : permet de


sélectionner les enregistrements de deux tables jointes en
n'affichant pour les deux tables que les enregistrements qui ont une
correspondance pour leur champ commun (clé primaire et clé
étrangère).

LEFT JOIN <Table> ON <Champ1>=<Champ2> : permet de


sélectionner les enregistrements de deux tables jointes en affichant
pour la table de gauche (clé primaire) tous les enregistrements
même s'ils n'ont pas de correspondance dans la table de droite (clé
étrangère).

RIGHT JOIN <Table> ON <Champ1>=<Champ2> : permet de


sélectionner les enregistrements de deux tables jointes en affichant
pour la table de droite (clé étrangère) tous les enregistrements
même s'ils n'ont pas de correspondance dans la table de gauche (clé
primaire).

C. Bouby

7
TP BDD - SQL

SELECT Nom, Prenom, Adresse, ville,


code_postal
FROM Commune
INNER JOIN Personne
ON Commune.code_commune =
Personne.Code_commune;
Nom des personnes pour lequel on dispose du nom de leur
commune

SELECT Nom, Prenom, Adresse, ville,


code_postal
FROM Personne
LEFT JOIN Commune
ON Commune.code_commune =
Personne.Code_commune;
Nom de toutes les personnes même si l’on ne dispose pas du nom
de leur commune

SELECT Nom, Prenom, Adresse, ville,


code_postal
FROM Personne
RIGHT JOIN Commune
ON Commune.code_commune =
Personne.Code_commune;
Nom des personnes pour lesquelles on dispose du nom de leur
commune, plus ajout des lignes pour les communes sans personne
(avec nom, prenom, adresse vide de personne)

C. Bouby

8
TP BDD - SQL

V. Les requêtes imbriquées

Le principe des requêtes imbriquées consiste à exécuter une requête


à l’intérieur d’une autre requête. Une requête imbriquée est souvent
utilisée au sein d’une clause WHERE ou de HAVING pour remplacer
une ou plusieurs constantes

SELECT nom, prenom


FROM Table1
WHERE [Link] NOT IN
(SELECT nom
FROM Table2)
AND [Link] NOT IN
(SELECT prenom
FROM Table2);

VI. Les fonctions de regroupement : GROUP


BY...HAVING

Cette Clause est permet d'effectuer un calcul sur un champ donné


sur un groupe .
Ce regroupement est possible par la clause GROUP BY. Une fois le
regroupement réalisé, il ne reste plus qu'indiquer qu'elle opération
l'on veut réaliser après la clause SELECT.

SELECT <Champ1>, <Champ2>, COUNT(<Champ3>)...,... FROM


<Table1>
GROUP BY <Champ1>,<Champ2>

SELECT DateCA, Sum(CA) AS CA_total


FROM Resultats
GROUP BY DateCA;

C. Bouby

9
TP BDD - SQL

La clause HAVING est similaire à WHERE, elle supporte des


expressions de regroupement (moyenne, compte....). HAVING peut
sélectionner les enregistrements dont la projection réalisée par
SELECT dépend d'un regroupement GROUP BY.

SELECT <Champ1>, <Champ2>, COUNT(<Champ3>)...,... FROM


<Table1>
GROUP BY <Champ1>,<Champ2>
HAVING condition;

SELECT DateCA, Sum(CA) AS CA_total


FROM Resultats
WHERE Agence NOT LIKE ‘Est’
GROUP BY DateCA
HAVING Sum(CA)>2500;

La clause GROUP BY doit comporter au moins un champ précisé


dans le SELECT (si le champ est un calcul de regroupement, il n'est
pas mentionné).

Les fonctions de calcul de regroupement :


Avg : Moyenne
Count : Compte
First,Last : Premier et dernier
Min, Max : Minimum et maximum
Sum : Somme

C. Bouby

10
TP BDD - SQL

VII. Les modifications d’une table et de son


contenu

1. Modification d'une table : ALTER TABLE


ALTER TABLE <NomTable> [ADD [COLUMN <champ type
(taille)>]
DROP [COLUMN <champ> ]]

ALTER TABLE Personne


ADD COLUMN Naissance DATE;

ALTER TABLE Personne


DROP COLUMN Naissance;

2. Suppression d'une table


DROP TABLE <NomTable>
ou INDEX <index> ON <NomTable>

DROP TABLE Personne;

3. Suppression d'enregistrements d’une table :


DELETE
L'instruction DELETE supprime les enregistrements d’une table
répondant à la clause WHERE.

DELETE <NomTableSource> FROM <NomTable> WHERE


<critère>

DELETE FROM Personne


WHERE Nom=‘Truc‘;

C. Bouby

11
TP BDD - SQL

Mise à jour d'enregistrement : UPDATE


L'instruction UPDATE permet de modifier les valeurs des
champs d'une table spécifiée en fonction des critères définis.
UPDATE <NomTable> SET <Nouvelle_valeur> WHERE
condition

UPDATE Personne
SET Prenom=’Henri’
WHERE Nom=’Truc’;

4. Insertion d'enregistrement : INSERT INTO


INSERT INTO <NomTable> (<Champ>, <Champ2>…..)
VALUES (<Valeur1>, <Valeur2>….)

INSERT INTO Personne (Nom)


VALUES (‘Truc’);

5. Insertion à partir d'une autre table


INSERT INTO <NomTableDestination>
SELECT <Champ1>, <Champ2>….FROM
<NomTableSource>
WHERE <condition>

Pour que l'insertion soit valide il faut que les champs de la


table source aient le même type et la même longueur que la
table destination.

INSERT INTO Essai (Nom, Prenom)


SELECT Nom, Prenom
FROM Personne;

INSERT INTO Table3 ( Col1, Col2 )


SELECT Nom, Prenom
FROM Table1
WHERE Nom<’d’;

C. Bouby

12
TP BDD - SQL

VIII. Les opérations ensemblistes

1. Union de 2 tables
L'union de deux tables est une relation contenant chaque ligne de la
première table et chaque ligne de la seconde table. Elle rassemble le
contenu des deux tables, et en élimine les doublons.
Les champs mis en correspondance n'ont pas besoin de porter le
même nom

requete1 UNION [ALL] requete2

UNION ajoute effectivement le résultat de requete2 au résultat de


requete1 (bien qu'il n'y ait pas de garantie qu'il s'agisse de l'ordre
dans lequel les lignes sont réellement renvoyées). De plus, il élimine
les lignes dupliquées du résultat, de la même façon que DISTINCT,
sauf si UNION ALL est utilisée.

SELECT nom, prenom


FROM COPAIN
UNION
SELECT PersNom, PersPrenom
FROM PERS;

Pour que la requête union n'élimine pas les doublons, rajouter


l'opérateur ALL après UNION
SELECT nom, prenom
FROM COPAIN
UNION ALL
SELECT PersNom, PersPrenom
FROM PERS;

C. Bouby

13
TP BDD - SQL

2. L'intersection de 2 tables
L'intersection de deux tables est une relation contenant seulement
les lignes communes aux deux tables.

requete1 INTERSECT [ALL] requete2

INTERSECT renvoie toutes les lignes qui sont à la fois dans le


résultat de requete1 et dans le résultat de requete2. Les
lignes dupliquées sont éliminées sauf si INTERSECT ALL est utilisé.

2 autres méthodes : requêtes imbriquées , produit sélection :

• requêtes imbriquées

SELECT nom, prenom FROM Table1


WHERE [Link] IN
(SELECT nom
FROM Table2)
AND [Link]énom IN
(SELECT prenom
FROM Table2);
Cette syntaxe, qui fait appel à autant de sous requêtes qu'il
y a de colonnes.

• produit sélection :

SELECT DISTINCT [Link], [Link]


FROM Table1, Table2
WHERE [Link]=[Link]
AND [Link]=[Link];
L'opérateur DISTINCT est indispensable.

La commande INTERSECT de SQL2 n’existe pas en MySql

C. Bouby

14
TP BDD - SQL

3. La différence de 2 tables
La différence de deux tables est une relation contenant les
enregistrements de la première table qu'on ne retrouve pas dans la
seconde.

requete1 EXCEPT [ALL] requete2

EXCEPT renvoie toutes les lignes qui sont dans le résultat de


requete1 mais pas dans le résultat de requete2.
Les lignes dupliquées sont éliminées sauf si EXCEPT ALL est utilisé.

2 autres méthodes : requêtes imbriquées , jointure externe :

• requêtes imbriquées
En faisant appel à NOT IN ou NOT EXISTS

• Jointure externe

SELECT [Link], [Link]


FROM Table1
LEFT JOIN Table2
ON [Link] = [Link]
AND [Link] = [Link]
WHERE [Link] IsNull
AND [Link] IsNull;

La commande EXCEPT de SQL2 n’existe pas en MySQL

C. Bouby

15

Vous aimerez peut-être aussi