Cours de Base de Données
Cours n.4 :
Introduction à SQL
Cheikhou THIAM – cthiam@[Link]
UFR Sciences Economique et Sociales
2015-2016
Université de THIES
INTRODUCTION
• Créer la structure de la base de données et de ses table
• Exécuter les taches de base de la gestion des données, telle que
l’insertion, la modification et la suppression de données des tables
• Effectuer des requêtes simples ou complexes
• Langage oriente transformation
LDD
• CREATE TABLE nomtable (col1 type, col2 type )
• CREATE DATABASE scolarite
• Drop scolarite
• ALTER TABLE NOMTABLE SET NOMANCIENNECOL NOMNOUVEL COL
LMD –INSERT INTO
• INSERT INTO `NOMTABLE`(`COL1`, `COL1`,
`COL3`) VALUES ([value-1],[value-2],[value-3])
• INSERT INTO `produit` (`CODE`, `NOM`, `QTE`) VALU
ES ('P1', 'RIZ', '10');
LMD - UPDATE
• UPDATE nomtable set col1=val1, col2=val2
• UPDATE `produit` SET `CODE`=[value-1],`NOM`=[value-
2],`QTE`=[value-3] WHERE 1
Lmd- DELETE
• DELETE FROM nomtable (WHERE condition)
• DELETE FROM `produit` WHERE 0
Requêtes : ordre SELECT
SELECT Colonnes à “Projeter”
FROM Tables Sources
WHERE Conditions sur les Lignes
GROUP BY Colonnes de Groupage
HAVING Condition sur les groupes
ORDER BY Colonnes du tri
• Requêtes Mono-Tables
1 seule table source
• Requêtes Multi-Tables
N tables sources
Condition testée sur chaque ligne issu de leur produit cartesien
10
Compagnie Aerienne (1)
Compagnie Aerienne (2)
Projection, Restriction
Le principe
SELECT [Link]
FROM AVION
WHERE [Link]é > 200
Projection seule: Restriction seule:
SELECT [Link] SELECT AVION.*
FROM AVION FROM AVION
WHERE [Link]é > 200
Exercices
Exercice n° 1: Quel est l'âge du pilote de matricule 15 ?
Exercice n° 2: Quels sont les pilotes de cette compagnie aérienne ?
(leur matricule, leur nom, leur ville, leur âge et leur salaire).
Correction de l'exercice n° 1
xercice n° 1: Quel est l'âge du pilote de matricule 15 ?
ELECT [Link]
ROM PILOTE
HERE MATRICULE = 15
Correction de l'exercice n° 2
Exercice n° 2: Quels sont les pilotes de cette compagnie aérienne (leur matricule,
eur nom, leur ville, leur âge et leur salaire).
SELECT *
FROM PILOTE
Langage d’interrogation
Fonctionnalités diverses
Tri, doublons, et alias
Tri (c) Omission du préfixe
SELECT [Link] SELECT numav
FROM AVION FROM AVION
WHERE [Link] > 200 WHERE CAPACITE > 200
ORDER BY [Link] DESC
ou ASC)
Suppression des doublons (d) Emploi d ’alias
SELECT DISTINCT [Link] SELECT [Link]
FROM AVION FROM AVION A
WHERE [Link] > 200 WHERE [Link] > 200
(ou ALL)
Exercices
Exercice n° 3: Quels sont les types d'avions entreposés à Tarascon, avec leur capacité, pa
ordre de capacités croissantes ?
Correction de l'exercices n° 3
Exercice n° 3: Quels sont les types d'avions entreposés à Tarascon, avec leur capacité, p
ordre de capacités croissantes ?
SELECT DISTINCT TYPE, CAPACITE
FROM AVION
WHERE ENTREPOT = 'Tarascon'
ORDER BY CAPACITE ASC
Prédicats dans le critère de sélection
= != > < >= <= NOT OR AND IN BETWEEN x AND y LIKE
ECT NUMAV
OM AVION
ERE CAPACITE > 200
AND ((ENTREPOT= 'Saint nom la Bretèche') OR (ENTREPOT= 'Mantes la Jolie'))
AND NUMAV != 300
ECT NUMAV
OM AVION
ERE ENTREPOT IN ('Saint nom la Bretèche' , 'Mantes la Jolie')
AND CAPACITE BETWEEN 200 AND 210
AND TYPE LIKE 'B_EING%'
Opérateurs logiques et valeurs nulles
NOT TRUE FALSE NULL
FALSE TRUE NULL
AND TRUE FALSE NULL
TRUE TRUE FALSE NULL
FALSE FALSE FALSE FALSE
NULL NULL FALSE NULL
OR TRUE FALSE NULL
TRUE TRUE TRUE TRUE
FALSE TRUE FALSE NULL
NULL TRUE NULL NULL
Exercices
Exercice n° 4: Quelles sont les villes ayant un nom commençant par 'L' et où un pilote
de moins de 20 ans gagne plus de 200000F ?
Exercice n° 5: Quels sont les numéros d'avions, avec leur entrepôt, ne résidant pas à
Marolles-en-Hurepoix, ayant une capacité supérieure à 200 ?
(donnés par ordre de numéros décroissants).
Correction de l'exercice n° 4
Exercice n° 4: Quelles sont les villes ayant un nom commençant par 'L' et où un pilote d
moins de 20 ans gagne plus de 200000F ?
SELECT DISTINCT VILLE
FROM PILOTE
WHERE AGE < 20
AND SALAIRE > 200000
AND VILLE LIKE 'L%'
Correction de l'exercice n° 5
xercice n° 5: Quels sont les numéros d'avions, avec leur entrepôt, ne résidant pas
Marolles-en-Hurepoix, ayant une capacité supérieure à 200 ?
onnés par ordre de numéros décroissants).
LECT NUMAV, ENTREPOT
OM AVION
HERE ENTREPOT != 'Marolles-en-Hurepoix'
AND CAPACITE > 200
RDER BY NUMAV DESC
es fonctions de date
nction Desc Norme Access MySQL Sql Srv Orac
rrent_date Date courante O N O N N
rrent_time Heure courante O N O N N
tdate Heure et date courante N N N O N
w Heure et date courante N O O O O
sdate Date et heure courante N N O N O
y/month/year Sélectionne le jour/mois/an N O O O N
Conversion de date ou numérique
_char(f1,f2) N N N N O
en string
es fonctions sur chaînes de caractères
nction Desc Norme Access MySQL Sql Srv Oracl
wer/Upper Mise en minuscules/majusc O N O O O
bstring Extraction sous-chaîne O N O N N
bstr Extraction sous-chaîne N N N N O
Position d’une chaîne dans une
sition O N O N N
autre
Position d’une chaîne dans une
cate N O O O O
autre
es fonctions numériques
nction Desc Norme Access MySQL Sql Srv Oracl
s Valeur absolue N O O O O
ling Valeur approchée haute N O O O N
l Valeur approchée haute N N N N O
or Valeur approchée basse N O O O O
s, sin, tan, exp,
Opérations diverses N O O O O
,mod, power, sqrt
Les fonctions
Lower(a), Soundex (a), Abs(a), Sqrt(n), Length(a), etc...
SELECT NUMAV
FROM AVION
WHERE LOWER (ENTREPOT) = 'le vésiney'
SELECT MATRICULE, NOM
FROM PILOTE
WHERE SOUNDEX (NOM) = SOUNDEX ('SINTEXUPERI')
SELECT UPPER (NOM)
FROM PILOTE
WHERE ADRESSE = 'Cordillère des Andes'
Exercices
ercice n° 6: Quelles sont les villes d'où part un vol pour Ajaccio?
onner les résultats en majuscule).
Correction de l'exercice n° 6
xercice n° 6: Quelles sont les villes d'où part un vol pour Ajaccio?
onner les résultats en majuscule).
LECT DISTINCT UPPER (VILLE_DEPART)
OM VOL
HERE VILLE_ARRIVEE = 'Ajaccio'
Valeurs nulles
La valeur de certains attributs peut ne pas être connue, on parle alors de
valeurs nulles (mot-clé NULL)
NULL n’est pas une valeur mais une absence de valeur! Les opérations ou le
comparaisons ne peuvent lui être appliqué
Toute opération appliquée à NULL donne NULL
Toute comparaison avec NULL donne ni vrai ni faux, mais UNKNOW
Valeurs nulles
On associe à TRUE la valeur 1, à FALSE la valeur 0 et à UNKNOW la valeur ½
x AND y = min ( x , y )
x OR y = max ( x , y )
NOT x = 1 – x
es conditions dans la clause WHERE sont évaluées pour chaque tuple et
euls ceux pour lesquels on obtient 1 (TRUE) sont gardés.
Valeurs nulles
PILOTE Matricule Nom Ville Age Salaire
1 Figue Cannes 28004
2 Lavande Touquet 24
ELECT Nom SELECT Nom SELECT Nom
om PILOTE From PILOTE From PILOTE
Where Age < 40 Where Age < 40 Where Age < 40
AND Salaire > 10000 OR Salaire < 10000
SELECT Nom From PILOTE
Where Age ≤ 40 OR Age ≥ 40
Agrégations
usqu’à présent on a vu des requêtes comme suite d’opérations tuple à tupl
es fonctions d’agrégation permettent d’exprimer des conditions/faire des
opérations sur des groupes de tuples
Avec SQL nous pouvons:
• Partitionner une relation en groupes
• Exprimer des relations sur des groupes
• Agréger des valeurs sur les groupes
l existe un groupe par défaut: la relation entière
Fonctions d’agrégation
S’appliquent en générale à des valeurs numériques
5 principales, appliquées sur chaque groupe
• COUNT qui compte le nombre de valeurs non nulles
• AVG qui calcule la moyenne des valeurs sur une colonne choisie
• SUM idem mais fait la somme
• MIN/MAX retourne la valeur MIN/MAX des valeurs d’une colonne choisie
es opérateurs d’agrégation ne peuvent être utilisé que dans un SELECT (ou
HAVING, voir plus loin)
Ne peuvent être utilisé dans un SELECT avec d’autres attributs (sauf si GROU
BY, voir plus loin)
Les agrégats
Avg, Count, Max, Min, Sum, Stddev, Variance
Exemple:
Quel est le nombre d'avions ayant une capacité supérieure à 200?
SELECT COUNT (NUMAV)
FROM AVION
WHERE CAPACITE > 200
SELECT COUNT (DISTINCT NUMAV)
FROM AVION
WHERE CAPACITE > 200
(ou ALL)
Exercices
ercice n° 7: Quel est le nombre d'avions en services (i.e. dans la relation DEPART), le 19
cembre 1995 ?
ercice n° 8: Quelle est la capacité moyenne des avions entreposés à Pogo Togo ?
Correction de l'exercice n° 7
Exercice n° 7: Quel est le nombre d'avions en services (i.e. dans la relation DEPART), le
19 décembre 1995 ?
SELECT COUNT (DISTINCT NUMAV)
FROM DEPART
WHERE DATE_DEP = '19-12-95'
Correction de l'exercice n° 8
Exercice n° 8 : Quelle est la capacité moyenne des avions entreposés à Pogo Togo ?
SELECT AVG (ALL CAPACITE)
FROM AVION
WHERE [Link] = 'Pogo Togo'
Langage d’interrogation
Requêtes imbriquées
Prédicat d’existence
SELECT
FROM
WHERE EXISTS ( SELECT
FROM
WHERE );
mple:
ls sont les pilotes qui habitent dans une ville où n'est basé aucun avion ?
ECT [Link], [Link]
M PILOTE
ERE NOT EXISTS ( SELECT AVION.*
FROM AVION
WHERE [Link] = [Link])
Requête à l'intérieur de IN
Exemple: Quels sont les noms des pilotes (avec leurs matricules) qui habitent dans une ville où sont localisés des
avions de capacité supérieure à 250 ?
SELECT [Link], [Link]
FROM PILOTE
WHERE VILLE IN ( SELECT ENTREPOT
FROM AVION
WHERE CAPACITE > 250)
Exercices
ercice n° 9: Exprimer la requête suivante avec un "EXISTS":
uels sont les noms des pilotes (avec leur matricule) qui habitent dans une ville où so
calisés des avions de capacité supérieure à 250 ?
ercice n° 10:
primer la requête suivante avec un "IN":
uels sont les noms des passagers (avec leur numéro d'abonné) ayant réservé pour le 1
ril 1996 ?
Correction de l'exercice n° 9
ercice n° 9: Exprimer la requête suivante avec un "EXISTS":
uels sont les noms des pilotes (avec leur matricule) qui habitent dans une ville où sont
alisés des avions de capacité supérieure à 250 ?
ECT [Link], [Link]
OM PILOTE
HERE EXISTS ( SELECT *
FROM AVION
WHERE CAPACITE > 250
AND [Link] = [Link])
Correction de l'exercice n° 10
xercice n° 10: Quels sont les noms des passagers (avec leur numéro d'abonné) ayant
éservé pour le 1er avril 1996 ?
avec un "IN").
SELECT PASSAGER. NUMAB, PASSAGER. NOMAB
FROM PASSAGER
WHERE NUMAB IN (SELECT [Link]
FROM RESERVATION
WHERE RESERVATION.DATE_DEP = '01-04-96')
Langage d’interrogation
La jointure
Exemple
els sont les noms des pilotes (avec leur matricule) qui assurent un vol le vendredi 13 octobre 1995 ?
ELECT DISTINCT [Link], [Link]
ROM PILOTE, DEPART
WHERE [Link] = [Link]
AND DEPART.DATE_DEP = '13-10-95'
Expression d'une jointure à l'aide de requêtes
imbriquées
c EXISTS SELECT [Link], [Link]
FROM PILOTE
WHERE EXISTS ( SELECT *
FROM DEPART
WHERE [Link] = [Link]
AND DEPART.DATE_DEP = '13-10-95')
c IN SELECT [Link], [Link]
FROM PILOTE
WHERE MATRICULE IN ( SELECT [Link]
FROM DEPART
WHERE DATE_DEP ='13-10-95')
Exercice
ercice n° 11:
uels sont les noms des pilotes (avec leur matricule) qui assurent un vol le vendredi 1
tobre 1995, sur un avion de capacité supérieure à 250 ?
de manière prédicative,
à l'aide de requêtes imbriquées.
Correction de l'exercice n° 11
xercice n° 11:
uels sont les noms des pilotes (avec leur matricule) qui assurent un vol le vendredi
ctobre 1995, sur un avion de capacité supérieure à 250 ?
) de manière prédicative,
SELECT DISTINCT [Link], [Link]
FROM PILOTE, DEPART, AVION
WHERE [Link] = [Link]
AND DEPART.DATE_DEP = '13-10-95'
AND [Link] = [Link]
AND [Link] > 250
Correction de l'exercice n° 11 (suite)
ercice n° 11:
uels sont les noms des pilotes (avec leur matricule) qui assurent un vol le vendredi 1
tobre 1995, sur un avion de capacité supérieure à 250 ?
à l'aide de requêtes imbriquées
SELECT [Link], [Link]
FROM PILOTE
WHERE MATRICULE IN ( SELECT [Link]
FROM DEPART
WHERE DATE_DEP ='13-10-95'
AND NUMAV IN (SELECT [Link]
FROM AVION
WHERE CAPACITE > 250))
Exercices
ercice n° 12: Quelles sont les paires de pilotes (matricules) habitant dans la même ville
ercice n° 13: Quels sont les noms des pilotes (avec leur matricule) qui conduisent
vion de numéro '666' ?
ercice n° 14: Quels sont les noms des pilotes (avec leur matricule) qui habitent dans
e où est entreposé l'avion '666' ?
Correction de l'exercice n° 12
xercice n° 12: Quelles sont les paires de pilotes (matricules) habitant dans la même ville
Il s'agit d'une auto-jointure
ELECT [Link], [Link]
ROM PILOTE P1, PILOTE P2
WHERE [Link] = [Link]
AND [Link] > [Link]
Correction de l'exercice n° 13
Exercice n° 13: Quels sont les noms des pilotes (avec leur matricule) qui conduisent
avion de numéro '666' ?
SELECT DISTINCT [Link], [Link]
FROM PILOTE, DEPART
WHERE [Link] = DEPART. MATRICULE
AND [Link] = '666'
Correction de l'exercice n° 14
ercice n° 14: Quels sont les noms des pilotes (avec leur matricule) qui habitent dans la v
est entreposé l'avion '666' ?
LECT [Link], [Link]
OM PILOTE, AVION
HERE [Link] = [Link]
AND [Link] = '666'
Autres types de jointure
• LEFT/RIGHT OUTER JOIN : retourne le résultat de la jointure plus tous
les enregistrements de la table de gauche/droite n’ayant pas joint
(complétés avec des valeurs NULL)
• FULL OUTER JOIN : fonctionne comme si on faisait à la fois une LEFT
et RIGHT OUTER JOIN
• A INNER JOIN B ON… : équi-jointure (notation explicite)
• A NATURAL JOIN B : jointure naturelle
Langage d’interrogation
Opérateurs ensemblistes
L’union dans SQL
els sont les pilotes (matricule et nom) qui conduisent l'avion de numéro '666' OU qui habitent dans la ville ou est
reposé l'avion '666' ?
SELECT DISTINCT [Link], [Link]
FROM PILOTE, DEPART
WHERE [Link] = DEPART. MATRICULE
AND [Link] = '666'
UNION
SELECT [Link], [Link]
FROM PILOTE, AVION
WHERE [Link] = [Link]
AND [Link] = '666'
L’intersection dans SQL
els sont les pilotes (matricule et nom) qui conduisent l'avion de numéro '666' ET qui habitent dans la ville ou est
reposé l'avion '666' ?
SELECT DISTINCT [Link], [Link]
FROM PILOTE, DEPART
WHERE [Link] = DEPART. MATRICULE
AND [Link] = '666'
INTERSECT
SELECT [Link], [Link]
FROM PILOTE, AVION
WHERE [Link] = [Link]
AND [Link] = '666'
La différence dans SQL
els sont les pilotes (matricule et nom) qui conduisent l'avion de numéro '666' SAUF ceux qui habitent
ns la ville ou est entreposé l'avion '666' ?
SELECT DISTINCT [Link], [Link]
FROM PILOTE, DEPART
WHERE [Link] = DEPART. MATRICULE
AND [Link] = '666'
MINUS
SELECT [Link], [Link]
FROM PILOTE, AVION
WHERE [Link] = [Link]
AND [Link] = '666'
Langage d’interrogation
La division
Expression de la division dans SQL
els sont les pilotes (leur matricule et leur nom) qui conduisent tous les avions?
Quels sont les pilotes tels que, quel que soit l'avion, ils le conduisent ?
Quels sont les pilotes tels que, quel que soit l'avion, il existe un départ assuré par ce pilote sur cet avion ?
Quels sont les pilotes tels qu'il n'existe pas d'avion tel qu'il n'existe pas de départ de ce pilote sur cet avion ?
CT MATRICULE
M PILOTE
RE NOT EXISTS( SELECT *
FROM AVION
WHERE NOT EXISTS ( SELECT *
FROM DEPART
WHERE [Link] = [Link]
AND [Link] = [Link]))
Exercices
ercice n° 15: Quels sont les passagers qui ont réservé sur tous les vols ?
ercice n° 16: Quel est le nombre de pilotes qui conduisent des avions en service
e. dans la relation départ)?
Correction de l'exercice n° 15
xercice n° 15: Quels sont les passagers qui ont réservé sur tous les vols ?
ECT NUMAB
OM PASSAGER P
ERE NOT EXISTS ( SELECT *
FROM VOL V
WHERE NOT EXISTS (SELECT *
FROM RESERVATION R
WHERE [Link] = [Link]
AND [Link] = [Link]))
Correction de l'exercice n° 16
Exercice n° 16: Quel est le nombre de pilotes qui conduisent des avions en service
(i.e. dans la relation départ)?
SELECT COUNT (DISTINCT [Link])
FROM DEPART;
Langage d’interrogation
Groupement (GROUP BY)
GROUP BY
L'opérateur "GROUP BY" partitionne la table
on construit les groupes en associant les tuples partageant la même
valeur pour un ou plusieurs attributs
On effectue le SELECT…FROM…WHERE, puis on partitionne le résultat,
puis on effectue les fonctions d’agrégation
Dans le select on ne peut avoir que des fonctions d’agrégation ou des
attributs du GROUP BY
GROUP BY
XEMPLE: Quel est le nombre de pilotes qui conduisent des avions en service,
ar avion ?
SELECT NUMAV, COUNT (DISTINCT [Link])
FROM DEPART
GROUP BY NUMAV;
MPLE: Quel est l’heure maximale des vols commençant par la lettre ‘A’ par
jet ?
SELECT MAX (Heure_départ)
FROM VOL
WHERE Numvol LIKE ‘A%’
GROUP BY Ville_départ, Ville_arrivée
Exercice
ercice n° 17: Quelle est la capacité moyenne des avions, par entrepôt et par type ?
Correction de l'exercice n° 17
Exercice n° 17: Quelle est la capacité moyenne des avions, par entrepôt et par type ?
SELECT ENTREPOT, TYPE, AVG (CAPACITE)
FROM AVION
GROUP BY ENTREPOT,TYPE;
GROUP BY ... HAVING
L'opérateur HAVING permet d'introduire une qualification sur les sous-tables issues
u GROUP BY:
Le HAVING est au GROUP BY ce que le WHERE est au FROM.
EXEMPLE: SELECT [Link]
Quels sont les avions qui assurent
plus de 3 départs ? FROM DEPART
GROUP BY NUMAV
HAVING COUNT (*) > 3;
Exercice
xercice n° 18: Quelles sont les villes où sont entreposés plus de 2 avions de type 'ICBM'
Correction de l'exercice n° 18
xercice n° 18: Quelles sont les villes où sont entreposés plus de 2 avions de type ''ICBM
ELECT DISTINCT ENTREPOT
ROM AVION
WHERE TYPE = 'ICBM'
ROUP BY ENTREPOT
AVING COUNT (*) > 2;
CONCLUSION
SQL est un langage d'interrogation
très lisible, par tous les utilisateurs
SQL est un langage dans lequel il est
relativement facile d'écrire, pour un (1) From
programmeur, à condition de bien
(2) Where
visualiser l'ordre d' application des
instructions: (3) Group by
(4) Having
(5) Select
(6) Order by
BIBLIOGRAPHIE
: "Comprendre et évaluer SQL"
art des bases de données", tome 3:
ge Miranda. Editions Eyrolles.
Exercices supplémentaires
Quels sont les noms des pilotes (avec leur matricule) âgés de moins de
ans avec un salaire supérieur à celui d’un pilote quelconque ayant plus q
40 ans?
Quels sont les noms des pilotes (avec leur matricule) ayant moins de 30 a
avec un salaire supérieur à ceux de tous les pilotes ayant plus de 40 ans?
Proposer une requête capable de donner les tuples qui sont en doublons p
rapport aux deux colonnes de la table Pilote : Nom et Ville
Proposer une requête capable de supprimer les tuples qui sont en doublo
par rapport aux deux colonnes Nom, Ville de la table Pilote en laissant
seul tuple par ensemble de doublons
Correction exercice S1
Quels sont les noms des pilotes (avec leur matricule) ayant moins de 30 ans avec
salaire supérieur à celui d’un pilote quelconque ayant plus de 40 ans?
LECT Matricule
OM Pilote
HERE Age < 30
AND Salaire >= ANY ( SELECT Salaire
FROM Pilote
WHERE Age > 40)
Correction exercice S2
Quels sont les matricules des pilotes ayant moins de 30 ans avec un salaire supérieu
celui de tous les pilotes ayant plus de 40 ans?
LECT Matricule
OM Pilote
HERE Age < 30
AND Salaire >= ALL (SELECT Salaire
FROM Pilote
WHERE Age > 40)
Correction exercice S3
Proposer une requête capable de donner les tuples qui sont en doublons par rapp
aux deux colonnes de la table Pilote : Nom et Ville
SELECT Nom, Ville
FROM Pilote
GROUP BY Nom, Ville
HAVING COUNT(*) > 1
Correction exercice S4
Proposer une requête capable de supprimer les tuples qui sont en doublons par rapp
aux deux colonnes Nom, Ville de la table Pilote tout en laissant un seul tuple
ensemble de doublons
DELETE Pilote P1
WHERE EXISTS
( SELECT *
FROM Pilote P2
WHERE [Link] = [Link]
AND [Link] = [Link]
AND [Link] > [Link])
SQL comme Langage de
Définition des Données
Types SQL
• 2 types d’attributs numériques:
• Numériques exacts (INTEGER, DECIMAL, …)
• Numériques flottants (FLOAT, DOUBLE, …)
• INTEGER stocke des entiers sur 4 octets (en général) avec 2 variantes
suivant la taille (SMALLINT et BIGINT)
• DECIMAL(M,D) (ou NUMERIC) est un numérique de taille max. M,
avec un nombre de décimales fixé à D
• Numériques exacts servent aux valeurs dont la précision est connue
Types SQL
• Types flottants:
• Utilisation semblable à celle des langages de programmation
• S’appuie sur la représentation des num. flottants propre à la
machine
• FLOAT correspond aux flottants en simple précision
• DOUBLE PRECISION (ou DOUBLE ou REAL) est un flottant en double
précision
ypes SQL
ype Description Taille
TEGER Entier relatif 4 octets
MALLINT Idem 2 octets
GINT Idem 8 octets
OAT Flottant simple précision 4 octets
OUBLE PRECISION Flottant double précision 8 octets
OUBLE/REAL
UMERIC(M,D) Numérique avec D décimales M octets
ECIMAL Numérique avec D décimales M octets
Types SQL
• Chaînes de caractères:
• CHAR(M) chaîne d’exactement M caractères (complète avec des
blancs si besoin)
• VARCHAR(M) chaîne de taille variable, au plus M
• Pour des chaînes très longues, type BIT VARYING (ou BLOB, ou
LONG)
• Dates
• DATE stocke le jour, mois, année (sur 4 chiffres)
• TIME stocke heure, minute et seconde (HH:MM:SS)
• DATETIME combine les 2 (AAAA-MM-JJ HH:MM:SS)
ypes SQL
pe Description Taille
HAR(M) Chaîne de longueur fixe M octets
RCHAR(M) Chaîne de longueur variable m+1, m≤M
T VARYING(ou BLOB) Chaîne d’octets Longueur de la
chaîne
ATE Date (jour, mois, année) 4 octets
ME Heure (heure, minute, seconde) 4 octets
ATETIME Date et heure 8 octets
AR Année 2 octets
Types SQL
Exercice 1: Proposer les types associés aux attributs de la table PILOTE. Que
erait alors la taille d’un enregistrement?
Exercice 2: Idem avec la table VOL
Fin chapitre