Calculer à partir des données.

La règle en matière de base de données consiste à ne pas sauvegarder des éléments calculés, mais qui sont disponibles à chaque fois que l'on en a besoin. On peut donc créer des champs (colonnes) qui contiennent des informations calculées à partir de colonnes disposant de données quantitatives. Il est également possible de disposer d'informations synthétiques concernant une colonne.

Création de colonnes (champs) calculé(e)s

Les prix des ouvrages sont en €; Nous allons les convertir en francs (1€=6.55957 F)

SELECT titre, prix*6.55967 FROM livre

Les Modernes
Les désillusions du progrès
Un plat qui se mange froid
Moon
Statistiques descriptives
Introduction à la philosophie politique
L'étranger
La peste
Au bonheur des dames
Le premier aigle
La peau de chagrin
Eugénie grandet
L'amant
Un barrage contre le pacifique
La vie devant soi
sql
MySQL
La debâcle
Le tourisme à la Martinique : sous la plage, les conflits
Le père Goriot
Nana

Le prix en francs n'est pas sauvegardé, mais est disponible à la demande.

On remarque donc que les champs contenant des valeurs numériques sont concernés par les opérateurs clasiques (+ - * /) soit entre eux, soit en introduisant une constante comme ci-dessus. Des fonctions également très conues peuvent leur être appliquées: ABS() (Valeur absolue) , COS() (Cosinus), SIN() (Sinus), PI() (Renvoie la valeur de pi) , EXP() (Exponentielle), SQRT() (Racine carrée), TAN() (Tangente).

Certains calculs nécessitent la connaissance d'opérateurs; Ainsi l'opérateur CONCAT permet d'effectuer une concaténation du contenu de deux colonnes: nom de l'auteur et le siecle au cours duquel il a écrit.

SELECT CONCAT(nom , siecle) FROM auteur

perry20-21 ème
hillerman20-21 ème
camus20 ème
balzac19 ème
zola19 ème
duras20 ème
aron20 ème
aron20 ème
gary20 ème
py20 ème
grais20 ème
jonquet20-21 ème
forta20-21 ème
dubois20-21 ème
perry20 ème

Opérateurs concernant les éléments calculés

Opérateurs de synthèse sur les champs numériques
AVG() Moyenne
COUNT() Compte le nombre de lignes
MAX() Maximum
MIN() Minimum
MOD() Reste de la division
SUM() Somme
VAR() Variance
STDDEV() Ecart type
SIGN() Renvoie le signe d'un champ
ABSVAL() Valeur absolue
TRUNCATE() Limite le nombre de décimales sans arrondir.
ROUND() Arrondi avec précision demandée

Ces opérateurx nécessitent parfois des instructions de regroupement qui seront abordées plus loin.

Opérateurs concernant les champs textes
CONCAT() Concaténation
LCASE() ou LOWER() Conversion en minuscule
UCASE() ou UPPER() Conversion en MAJUSCULES
LENGHT() Nombre de caractères
LOCATE() Position d'une sous-chaine dans une chaine de caractères
LEFT() n Premiers caractères à gauche d'une chaîne de caractères
RIGHT() n Premiers caractères à droite d'une chaîne de caractères
SUBSTR() Sous_chaîne du contenu d'un champs
LTRIM() Supprime les espaces à gauche d'une chaîne de caractères
RTRIM() Supprime les espaces à droite d'une chaîne de caractères
SOUNDEX() Retourne le SOUNDEX d'un champ

Et vous vous posez la question suivante: qu'est-ce que le soundex? C'est en effet la bonne question! La fonction SOUNDEX() est basée sur un algorithme qui convertit toute chaîne de caractères en un code alphanumérique qui décrit la représentation phonétique de celle-ci. Ce code alphanumérique est alors bien pratique pour comparer les simulitudes et/ou les différences entre deux chaînes de caractères... Voyons cela sur un exempe pratique: nous souhaitons rechercher le nom d'un auteur mais nous ne sommes pas certain de connaître l'orthographe exacte de son nom. Par exemple nous cherchons le nom jonquet mais nous supposons qu'il s'écrit jonket.

SELECT nom, prenom FROM auteur WHERE SOUNDEX(nom) LIKE SOUNDEX('jonket')

jonquetthierry

Utilisons quelques fonctions:

Prix moyen d'un livre:

SELECT AVG(prix) FROM livre

8.6190

L'intitulé de la colonne lors du retour n'est pas terrible, et son interprétaion réservée aux initiés... évitons cela avec un ALIAS de la manière suivante (rofitons en pour arondir à deux décimales):

SELECT ROUND(AVG(prix),2) AS Prix_Moyen FROM livre

C'est de suite plus clair.

Nombre d'auteurs

SELECT COUNT(*) FROM auteur

15

Combinons plusieurs de ces opérateurs: Le résultat fait bien comprendre l'objectif.

SELECT COUNT(*) as Nb_Livres, AVG(prix) AS Prix_Moyen, MAX(prix) AS Prix_Maxi, MIN(prix) AS Prix_Mini From livre

218.6190250

A vous

Rappel du modèle:

auteur (id_auteur, nom, prenom, pseudo, nationalite, siecle)
editeur (id_editeur, nom, adresse, collections)
genre (id_genre, type, precisions)
livre (code, titre, nb_pages, prix, #id_auteur, #id_genre, #id_editeur)

Saisir les requêtes permettant d'obtenir les informations suivantes:

1 - Nombre moyen de pages par livre
2 - Prix en $ de chaque livre
3 - Nombre moyen de pages des ouvrages ayant chacun un nombre de pages supérieur à 200
4 - Prix moyen par page de chaque livre (4 décimales). On affichera le titre, le prix, le nombre de pages et ce prix par page (tri croissant sur ce dernier champ)
5 - Nom et prénoms des auteurs dont le nom ressemble à peri.