Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 8

TP MySQL 1 TP MySQL

Mémo - SQL

I. La commande SELECT ______________________________________________________ 3


1. Les options du SELECT _______________________________________________________________ 3
2. Les pseudonymes ou Alias____________________________________________________________ 4
3. Les fonctions de calcul _______________________________________________________________ 4
4. Les fonctions de dates ________________________________________________________________ 5
II. Le TRI : ORDER BY _______________________________________________________ 5
III. SELECTION ________________________________________________________________ 6
1. Les opérateurs logiques ______________________________________________________________ 6
2. Les opérateurs mathématiques _______________________________________________________ 6
3. Les mots réservés ____________________________________________________________________ 6
IV. JOINTURES _______________________________________________________________ 8
V. Les requêtes imbriquées __________________________________________________ 10
VI. Les fonctions de regroupement : GROUP
BY...HAVING____________________________________________________________________ 10
Les fonctions de calcul de regroupement : _______________________________________________ 11
VII. Les modifications d’une table et de son contenu ______________________ 12
1. Modification d'une table : ALTER TABLE _____________________________________________ 12
2. Suppression d'une table _____________________________________________________________ 12
3. Suppression d'enregistrements d’une table : DELETE________________________________ 12
4. Mise à jour d'enregistrement : UPDATE _____________________________________________ 13
5. Insertion d'enregistrement : INSERT INTO __________________________________________ 13
6. Insertion à partir d'une autre table __________________________________________________ 13
VIII. Les opérations ensemblistes _________________________________________ 14
1. Union de 2 tables ____________________________________________________________________ 14
2. L'intersection de 2 tables ____________________________________________________________ 14
3. La différence de 2 tables ____________________________________________________________ 15

C. Bouby C. Bouby

1 2
TP MySQL 3 TP MySQL

2. Les pseudonymes ou Alias


I. La commande SELECT AS : permet d’utiliser un Alias pour les tables ou les champs.

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


<Condition> FROM nom_table AS t1;
1. Les options du SELECT
SELECT colonne1 AS c1, colonne2
SELECT ALL / DISTINCT / DISTINCTROW/TOP/PERCENT <
Champ>, <Champ2>
FROM table;
FROM <Table>
WHERE <Condition>

SELECT prenom, nom FROM client; 3. Les fonctions de calcul


• AVG() pour calculer la moyenne sur un ensemble
Ces attributs se plaçant avant l'énumération des champs, portent d’enregistrement
sur les enregistrements (tuples) eux mêmes. Ils permettent d'opérer • COUNT() pour compter le nombre d’enregistrement sur une
une sélection sur les enregistrements qui vont faire l'objet de la table ou une colonne distincte
clause WHERE. • MAX() pour récupérer la valeur maximum d’une colonne sur
un ensemble de ligne. Cela s’applique à la fois pour des
ALL : sélectionne tous les enregistrements (commande par défaut si données numériques ou alphanumérique
omission). • MIN() pour récupérer la valeur minimum de la même manière
que MAX()
DISTINCT : sélectionne les enregistrements pour lesquels il n'y a • SUM() pour calculer la somme sur un ensemble
pas de doublon dans la projection réalisée (champs choisis). d’enregistrement

LIMIT : sélectionne un certain nombre d'enregistrements qui se SELECT Count(*) AS Comptage


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

SELECT DISTINCT Nom


FROM Personne;

SELECT Nom
FROM Personne
LIMIT 3;

C. Bouby C. Bouby

3 4
TP MySQL 5 TP MySQL

4. Les fonctions de dates


III. SELECTION
La fonction NOW() permet de retourner la date et l’heure du
système.
SELECT <Champ>, <Champ2> FROM <Relation> WHERE
La fonction YEAR() permet d’extraire une année à partir d’une date.
<Condition>
La fonction MONTH() permet d’extraire le numéro de mois à partir Cette clause WHERE permet une restriction suivant une ou
d’une date. plusieurs critères.

SELECT Nom, Prenom, Date 1. Les opérateurs logiques


FROM Personne AND : <Expr1> AND <Expr2> -> les deux expressions doivent être
WHERE Year(DateP)=2012; 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
II. Le TRI : ORDER BY d'un opérateur ( AND Not, OR Not...).

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


ORDER BY champ1 ASC /DESC , champ2 ASC /DESC ... 2. Les opérateurs mathématiques
= > < >= <= <>
Elle sert à classer sur un ou plusieurs champs
ASC = Croissant ; DESC = Décroissant > par défaut ASC. SELECT Nom, Prenom, Date
FROM Personne
SELECT Nom,Prenom WHERE Date>’2010-12-31’ And Date>’2010-01-
FROM Personne 01’;
ORDER BY Nom,Prenom DESC;

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 C. Bouby

5 6
TP MySQL 7 TP MySQL

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


se combiner avec NOT pour exclure des valeurs
WHERE Champ1 In ("Nom1", "Mom2"); IV. JOINTURES
SELECT Nom, Prenom FROM Eleve SELECT <Champ1>, <Champ2>,...,... FROM <Table1>
WHERE Nom IN ("Marc", "Maxime"); INNER JOIN/ LEFT JOIN / RIGHT JOIN <Table2> ON <Condition
jointure>
LIKE permet de chercher une valeur dans les champs d'une table.
%= n'importe quelle chaîne de caractères INNER JOIN <Table> ON <Champ1>=<Champ2> : permet de
_ = n'importe quel caractère sélectionner les enregistrements de deux tables jointes en
n'affichant pour les deux tables que les enregistrements qui ont une
SELECT Nom, Prenom correspondance pour leur champ commun (clé primaire et clé
FROM Personne étrangère).
WHERE Nom LIKE "c%";
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 C. Bouby

7 8
TP MySQL 9 TP MySQL

SELECT Nom, Prenom, Adresse, ville,


code_postal
FROM Commune INNER JOIN Personne V. Les requêtes imbriquées
ON Commune.code_commune =
Personne.Code_commune; 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
Nom des personnes pour lequel on dispose du nom de leur utilisée au sein d’une clause WHERE ou de HAVING pour remplacer
commune une ou plusieurs constantes

SELECT Nom, Prenom, Adresse, ville, SELECT nom, prenom


code_postal FROM Table1
FROM Personne LEFT JOIN Commune WHERE Table1.nom NOT IN
ON Commune.code_commune = (SELECT nom FROM Table2)
Personne.Code_commune; AND Table1.prenom NOT IN
Nom de toutes les personnes même si l’on ne dispose pas du nom (SELECT prenom FROM Table2);
de leur commune

SELECT Nom, Prenom, Adresse, ville,


code_postal VI. Les fonctions de regroupement : GROUP
FROM Personne RIGHT JOIN Commune BY...HAVING
ON Commune.code_commune =
Personne.Code_commune; Cette Clause est permet d'effectuer un calcul sur un champ donné
Nom des personnes pour lesquelles on dispose du nom de leur sur un groupe .
commune, plus ajout des lignes pour les communes sans personne Ce regroupement est possible par la clause GROUP BY. Une fois le
(avec nom, prenom, adresse vide de personne) 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 C. Bouby

9 10
TP MySQL 11 TP MySQL

La clause HAVING est similaire à WHERE, elle supporte des


expressions de regroupement (moyenne, compte....). HAVING peut VII. Les modifications d’une table et de son
sélectionner les enregistrements dont la projection réalisée par contenu
SELECT dépend d'un regroupement GROUP BY.
1. Modification d'une table : ALTER TABLE
SELECT <Champ1>, <Champ2>, COUNT(<Champ3>)...,... FROM
<Table1> ALTER TABLE <NomTable> [ADD [COLUMN <champ type
GROUP BY <Champ1>,<Champ2> (taille)>]
HAVING condition; DROP [COLUMN <champ> ]]

SELECT DateCA, Sum(CA) AS CA_total ALTER TABLE Personne


FROM Resultats ADD COLUMN Naissance DATE;
WHERE Agence NOT LIKE "Est"
GROUP BY DateCA ALTER TABLE Personne
HAVING Sum(CA)>2500; DROP COLUMN Naissance;

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 2. Suppression d'une table
pas mentionné). DROP TABLE <NomTable>
ou INDEX <index> ON <NomTable>
Les fonctions de calcul de regroupement :
Avg : Moyenne DROP TABLE Personne;
Count : Compte
First,Last : Premier et dernier 3. Suppression d'enregistrements d’une table :
Min, Max : Minimum et maximum DELETE
Sum : Somme
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 C. Bouby

11 12
TP MySQL 13 TP MySQL

VIII. Les opérations ensemblistes


4. Mise à jour d'enregistrement : UPDATE
L'instruction UPDATE permet de modifier les valeurs des 1. Union de 2 tables
champs d'une table spécifiée en fonction des critères définis. L'union de deux tables est une relation contenant chaque ligne de la
UPDATE <NomTable> SET <Nouvelle_valeur> WHERE première table et chaque ligne de la seconde table. Elle rassemble le
condition contenu des deux tables, et en élimine les doublons.
Les champs mis en correspondance n'ont pas besoin de porter le
UPDATE Personne même nom
SET Prenom="Henri"
WHERE Nom="Truc"; SELECT nom, prenom
FROM COPAIN
5. Insertion d'enregistrement : INSERT INTO UNION
SELECT PersNom, PersPrenom
INSERT INTO <NomTable> (<Champ>, <Champ2>…..)
VALUES (<Valeur1>, <Valeur2>….) FROM PERS;

INSERT INTO Personne (Nom) Pour que la requête union n'élimine pas les doublons, rajouter
l'opérateur ALL après UNION
VALUES ("Truc");
SELECT nom, prenom
FROM COPAIN
6. Insertion à partir d'une autre table
UNION ALL
INSERT INTO <NomTableDestination> SELECT PersNom, PersPrenom
SELECT <Champ1>, <Champ2>….FROM
FROM PERS;
<NomTableSource>
WHERE <condition>

Pour que l'insertion soit valide il faut que les champs de la 2. L'intersection de 2 tables
table source aient le même type et la même longueur que la L'intersection de deux tables est une relation contenant seulement
table destination. les lignes communes aux deux tables. La commande INTERSECT de
SQL2 n’existe pas en MySql
INSERT INTO Essai (Nom, Prenom)
SELECT Nom, Prenom 2 méthodes : requêtes imbriquées , produit sélection :
FROM Personne;

INSERT INTO Table3 ( Col1, Col2 )


SELECT Nom, Prenom
FROM Table1
WHERE Nom<"d";
C. Bouby C. Bouby

13 14
TP MySQL 15

• requêtes imbriquées

SELECT nom, prenom FROM Table1


WHERE Table1.nom IN (SELECT nom FROM
Table2)
AND Table1.pré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 Table1.nom, Table1.prenom


FROM Table1, Table2
WHERE Table1.nom=Table2.nom AND
Table1.prenom=Table2.prenom;
L'opérateur DISTINCT est indispensable.

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. La commande EXCEPT de SQL2 n’existe pas en Access

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

• Jointure externe

SELECT Table1.nom, Table1.prenom


FROM Table1 LEFT JOIN Table2 ON
Table1.prenom = Table2.prenom AND
Table1.nom = Table2.nom
WHERE Table2.nom Is Null AND Table2.prenom
Is Null;

C. Bouby

15

Vous aimerez peut-être aussi