Académique Documents
Professionnel Documents
Culture Documents
Sommaire
1. Introduction_____________________________________________________________2
1.1. Bref Historique____________________________________________________________2
1.2. Définition_________________________________________________________________2
2. Opération de sélection_____________________________________________________3
2.1. Requêtes de type détail sur une seule table______________________________________3
2.1.1. Utilisation du mot clé DISTINCT__________________________________________________4
2.2. Fonctions de groupe_________________________________________________________5
2.2.1. Quelques exemples pour comprendre :______________________________________________6
2.3. Les opérateurs_____________________________________________________________8
2.3.1. Opérateurs arithmétiques_________________________________________________________8
2.3.2. Opérateurs de comparaison_______________________________________________________9
2.3.3. Opérateurs logiques_____________________________________________________________9
3. Eléments de dialectes_____________________________________________________13
1.Introduction
Ce support a pour but de vous présenter le sous ensemble du langage SQL
utilisé pour manipuler des données au sein d’un Système de Gestion de
Bases de Données Relationnel.
On utilisera le terme de Langage de Manipulation de Données (LMD) pour
qualifier ce sous-ensemble (de DML Data Management Language en
anglais).
Avant d’aborder le langage SQL proprement dit, prenez connaissance du
document sur l’algèbre relationnel qui vous permettra de mieux comprendre
les notions sous-jacentes aux opérations traitées dans ce document.
1.2. Définition
S.Q.L. est un langage relationnel qui permet d’effectuer les tâches
suivantes :
Définition et modification de la structure de la base de données
Interrogation et modification non procédurale (c’est à dire interactive) de
la base de données
Contrôle de sécurité et d’intégrité de la base
Sauvegarde et restauration des bases
Document Millésime Page
OFPPT @ 739174796.doc novembre 08 2 - 28
SQL - Sous Ensemble LMD Opérations de Base
S.Q.L. est un langage interactif, mais il peut aussi être intégré dans un
langage de programmation pour le développement d’applications.
S.Q.L. est un standard qui permet d’assurer une portabilité importante des
bases de données relationnelles.
2.Opération de sélection
L’instruction SELECT permet d’extraire des données et de les présenter
triées et/ou regroupées suivant certains critères.
Les enregistrements doivent vérifier certains critères exprimés dans des
expression conditionnelles.
SELECT *
FROM Vol
WHERE HeureDepart > 16
SELECT vol#,heuredepart,heurearrivee
FROM vol
WHERE heuredepart > 16
AND villedepart LIKE 'Toulou%'
AND villearrivee = 'Grenoble'
Nous avons introduit dans la clause WHERE, une opération logique AND et
un opérateur sur chaîne LIKE.
GROUP BY permet d’exprimer sur quels attributs sont agrégés les données.
HAVING permet de définir une condition sur des valeurs de
regroupement.
SELECT COUNT(AV#)
FROM AVION
Je peux aussi ne pas vouloir conserver dans mon résultat les marques dont
le nombre d’ avions est inférieur à 3. J’introduis alors dans ma requête une
clause HAVING qui exprime une condition sur une opération de
regroupement.
Opérateurs arithmétiques
Opérateurs de comparaison
Opérateurs logiques
Opérateur de traitement de chaînes ;
Opérateur Description
+ (Ajouter) Addition
- (Soustraire) Soustraction
* (Multiplication) Multiplication
/ (Division) Division
% (Modulo) Retourne le reste entier d'une
division.
12 % 5 = 2.
Opérateur Description
= (Égal à) Égal à
> (Supérieur à) Supérieur à
< (Inférieur à) Inférieur à
>= (Supérieur ou égal à) Supérieur ou égal à
<= (Inférieur ou égal à) Inférieur ou égal à
<> (Différent de) Différent de
Opérateur Description
ALL (*) TRUE si tous les éléments d'un jeu de
comparaisons sont TRUE.
AND TRUE les deux expressions booléennes sont
TRUE.
ANY (*) TRUE si n'importe quel élément d'un jeu de
comparaison est TRUE.
BETWEEN TRUE si l'opérande est situé dans une certaine
plage.
EXISTS (*) TRUE si une sous-requête contient des lignes.
IN (*) TRUE si l'opérande est égal à un élément
d'une liste d'expressions.
LIKE TRUE si l'opérande correspond à un modèle.
NOT Inverse la valeur de tout autre opérateur
booléen.
OR TRUE si l'une ou l'autre expression booléenne
est TRUE.
SOME (*) TRUE si certains éléments d'un jeu de
comparaisons sont TRUE.
* Utilisés avec des sous-requêtes
Caractère Description
générique
% Toute chaîne de zéro caractère ou plus
_ N'importe quel caractère à cet emplacement
[] Tout caractère de l'intervalle ([a-f]) ou de l'ensemble
spécifié ([abcdef])
[^] Tout caractère en dehors de l'intervalle ([^a-f]) ou de
l'ensemble spécifié (^abcdef]). ^ représente le NOT
L’opérateur LIKE est extrêmement puissant pour réaliser des recherches sur
des chaînes avec des valeurs approximatives.
A noter , l’utilisation :
des caractères - - pour introduire une ligne de commentaires
des caractère /* …. */ pour un bloc de commentaires
Les opérateurs SOME, ANY et ALL seront vus dans le chapitre suivant
dans le cadre des opérations sur pliusieurs tables.
3.Eléments de dialectes
SQL est une norme. Mais comme toute norme, elle n’est pas toujours strictement respectée. La syntaxe des différents SGBDR s’éloigne
parfois de cette dernière ou apporte des fonctions non implémentées dans la norme.
Le tableau accompagnant ce document vous permettra d’avoir quelques informations sur l’existence ou non de différentes fonctions par
type de SGBDR.
Légende :
O : Oui
N : Non
X : Existe mais syntaxe hors norme
! : Même nom mais fonction différente
Agrégation statistique
Description Norme SQL Paradox Access MySQL Post SQL Oracle Inter
Fonction GreSQL Server Base
AVG Moyenne O O O O O O O O
COUNT Nombre O O X O O O O O
MAX Maximum O O O O O O O O
MIN Minimum O O O O O O O O
SUM Total O O O O O O O O
Fonction "système"
Description Norme Paradox Access MySQL Post SQL Oracle Inter
Fonction SQL GreSQL Server Base
CURRENT_DATE Date courante O N N O O N N O
CURRENT_TIME Heure courante O N N O O N N O
CURRENT_TIMESTAMP Date et heure courante O N N O O O N O
CURRENT_USER Utilisateur courant O N N N O O N N
SESSION_USER Utilisateur autorisé O N N X O O N N
SYSTEM_USER Utilisateur système O N N X O O N N
CURDATE Date du jour N N N O N N N N
CURTIME Heure courante N N N O N N N N
DATABASE Nom de la bases de N N N O N O O N
données courante
GETDATE Heure et date courante N N N N N O N N
NOW Heure et date courante N O O O O O O N
SYSDATE Date et/ou heure N N N O N N O N
courante
TODAY Date du jour N O N N N N N N
USER Utilisateur courant N N N O N O O O
VERSION Version du SGBDR N N N O O N N N
Fonctions générales
Description Norme Paradox Access MySQL Post SQL Oracle Inter
Fonction SQL GreSQL Server Base
CAST Transtypage O O N O O O O O
COALESCE Valeur non NULL O N N O O O N N
NULLIF Valeur NULL O N N O O O N N
OCTET_LENGTH Longueur en octet O N N O O N O N
DATALENGTH Longueur N N N N N O N N
DECODE Fonction conditionnelle N N N N N N O N
GREATEST Plus grande valeur N N N O N N O N
IFNULL Valeur non NULL N N N O O O N N
LEAST Plus petite valeur N N N N O N O N
LENGTH Longueur N N O O O O O N
NVL Valeur non NULL N N N N N N O N
TO_CHAR Conversion de données N N N N N N O N
en chaîne
TO_DATE Conversion en date N N N N O N O N
TO_NUMBER Conversion en nombre N N N N N N O N
Fonction numériques
Description Norme Paradox Access MySQL Post SQL Oracle Inter
Fonction SQL GreSQL Server Base
% Modulo N N N O O O N N
+-*/() Opérateurs et O O O O O O O O
parenthésage
ABS Valeur absolue N N O O O O O N
ACOS Angle de cosinus N N N O O O O N
ASCII Conversion de N N O O O O O N
caractère en code
ASCII
ASIN Angle de sinus N N N O O O O N
ATAN Angle de tangente N N N O O O O N
CEILING Valeur approchée N N O O N O N N
haute
COS Cosinus N N O O O O O N
COT Cotangente N N O O O O N N
EXP Exponentielle N N O O O O O N
FLOOR Valeur approchée N N O O O O O N
basse
LN Logarithme népérien N N N N N N O N
LOG Logarithme népérien N N O O N O O N
LOG(n,m) Logarithme en base n N N N N O N O N
de m
LOG10 Logarithme décimal N N N O N O O N
MOD Modulo N N O O O O O N
PI Pi N N N O O O O N
POWER Elévation à la N N O O N O O N
puissance
RAND Valeur aléatoire N N O O N O N N
ROUND Arrondi N N O O O O N N
Fonctions temporelles
Description Norme Paradox Access MySQL Post SQL Oracle Inter
Fonction SQL GreSQL Server Base
EXTRACT Partie de date O O N O O N O N
INTERVAL (opérations sur) Durée O N N N N N O N
OVERLAPS (prédicat) Recouvrement de O N N N O N N N
période
ADDDATE Ajout d'intervalle à N N N O N N N N
une date
AGE Age N N N N O N N N
DATE_ADD Ajout d'intervalle à N N N O N N N N
une date
DATE_FORMAT Formatage de date N N N O N N N N
DATE_PART Partie de date N N N N O N N N
DATE_SUB Retrait d'intervalle à N N N O N N N N
une date
DATEADD Ajout de date N N N N N O N N
DATEDIFF Retrait de date N N N N N O N N
DATENAME Nom d'une partie de N N N N N O N N
date
DATEPART Partie de date N N N N N O N N
DAY Jour d'une date N N N N N O N N
DAYNAME Nom du mois N N O O N O N N
DAYOFMONTH Jour du mois N N N O N N N N
DAYOFWEEK Jour de la semaine N N N O N N N N
DAYOFYEAR Jour dans l'année N N N O N N N N
HOUR Extraction de l'heure N N O O N O N N
LAST_DAY Dernier jour du mois N N N N N N O N
MINUTE N N O O N O N N
MONTH Mois d'une date N N O O N O O N
Fonctions temporelles
Description Norme Paradox Access MySQL Post SQL Oracle Inter
Fonction SQL GreSQL Server Base
MONTH_BETWEEN Nombre de mois N N N
MONTHNAME Nom du mois N N O O N O N N
NEXT_DAY Prochain premier jour N N N N N N O N
de la semaine
SECOND Extrait les secondes N N O O N O N N
SUBDATE Retrait d'intervalle à N N N O N N N N
une date
WEEK Numéro de la semaine N N O O N O O N
YEAR Année d'une date N N O O N O O N
Sous requêtes
Norme Paradox Access MySQL Post SQL Oracle Inter
SQL GreSQL Server Base
Imbriquées O O O N O O O O
Corrélées O O O N O O O O
Dans la clause SELECT O X O N O O O O
Dans la clause FROM O N N N O O O N
Dans la clause WHERE O O O N O O O O
Dans la clause HAVING O O N N O O O O
Sources de référence
Vincent Bost – formateur AFPA Brive
Frédéric Brouard