TD1 SQL cor
SQL
Exercice 1 – Type de données
Définissez le type de donnée le mieux approprié pour spécifier :
a) un nom de jour de la semaine
b) un nom de mois de l’année
c) un numéro de semaine
d) un trigramme
e) un code postal
Correction :
a) CHAR(8) est suffisant car aucun nom de jour n’a plus de 8 caractères. On peut aussi utiliser un VARCHAR(8).
b) CHAR(9) est suffisant car aucun nom de mois n’a plus de 9 caractères. On peut aussi utiliser un VARCHAR(9).
c) SMALLINT paraît suffisant car la numérotation des semaines va de 1 à 53.
d) CHAR(3) est parfait car un trigramme est composé de trois lettres.
e) INT(5). Mais mieux vaut un CHAR(5) car sinon le tri sur le code postal remonterait le code postal 09800 sera enregistré comme 9800, le zéro en tête est ignoré lors de l’enregistrement en base car considéré non significatif.
Exercice 2 – Syntaxe des types de données
Quelles sont les définitions de type syntaxiquement incorrectes ?
a)
b)
c)
d)
e)
f)
g)
CHAR(16, 2)
VARCHAR(16)
FLOAT
DECIMAL
DECIMAL(16,2)
DATE (10)
TIME (3)
Correction :
Sont incorrects :
a) Un seul paramètre doit spécifier la longueur.
a) Une date ne contient pas de paramètre de spécification de taille.
1
Exercice 3 – Syntaxe des types de données
Quelles sont les spécifications de valeurs syntaxiquement incorrectes ?
a) DATE '18/11/2004'
b) DATE '2002-11-18'
c) TIME '11:16'
d) DATE '2004-11-18 20:20:30 000'
e) 123,55
f) 1E-10
g) 3.145 E-1
h) '456,78'
Correction
Sont incorrects :
a) Une date doit être spécifiée au format ISO 'AAAA-MM-JJ'.
d) Une date ne peut pas contenir de spécification horaire.
e) Le séparateur d’un réel ou d’un décimal est le point.
g) Il ne doit pas y avoir d’espace dans la définition d’un réel.
Exercice 4 – Création et manipulation de tables
Ecrivez les requêtes suivantes :
1. Créez la table FILM
CREATE TABLE film ( idFilm INT(2), idRealisateur INT(2), titre VARCHAR(50), genre VARCHAR(10), annee INT(5)UNSIGNED);
2
2. Sélectionnez dans la table FILM les films qui