1. Trang chủ
  2. » Công Nghệ Thông Tin

Pratique de MySQL et PHP- P83 ppsx

5 217 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 143,36 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Quand il n’y a qu’une table – comme par exemple pour la requête sélectionnant les films dont le genre est « Drame » – l’interprétation est simple : on parcourt les lignes de la table Fil

Trang 1

titre année id_realisateur genre

Les pleins pouvoirs 1997 20 Policier

Film

id nom prénom année_naissance

30 Dutronc Jacques

Artiste

Impitoyable 21 Little Bill Dagget

Les pleins pouvoirs 21 Le président

Rôle

Figure 10.1 — Un échantillon de la baseFilms

10.1 SÉLECTIONS

Les requêtes les plus simples –et les plus courantes– sont celles qui recherchent, dans une table, des lignes satisfaisant un ou plusieurs critères de sélection Par exemple,

on recherche les titres des films du genre « Drame »

mysql> SELECT titre

-> FROM Film

-> WHERE genre = ’Drame’;

+ -+

+ -+

+ -+

2 rows in set (0.02 sec)

La structure de base d’une requête SQL comprend trois clauses SELECT, FROM et WHERE

FROM indique la (ou les) tables dans lesquelles on trouve les attributs utiles à

la requête Un attribut peut être« utile » de deux manières (non exclusives) :

(1) on souhaite afficher son contenu via SELECT, (2) on souhaite qu’il ait une valeur particulière (une constante ou la valeur d’un autre attribut) via WHERE.

SELECT indique la liste des attributs constituant le résultat

Trang 2

WHERE indique les conditions que doivent satisfaire les lignes de la table pour faire partie du résultat

La clause WHERE est optionnelle : toutes les lignes de la tables sont sélectionnées

si elle est omise Voici donc la plus simple des requêtes : elle affiche toute la table mysql> SELECT * FROM Film;

+ -+ -+ -+ -+

| titre | annee | id_realisateur | genre |

+ -+ -+ -+ -+

| Les pleins pouvoirs | 1997 | 20 | Policier |

+ -+ -+ -+ -+

Un des problèmes rencontrés quand on commence à utiliser SQL (et même beaucoup plus tard ) est de bien comprendre ce que signifie une requête, quelle que soit sa complexité Quand il n’y a qu’une table – comme par exemple pour la requête sélectionnant les films dont le genre est « Drame » – l’interprétation est simple : on

parcourt les lignes de la table Film Pour chaque ligne, si l’attribut genre a pour valeur

« Drame », on place l’attribut titre dans le résultat Même si cette interprétation peut paraître élémentaire, elle devient très utile quand on a plusieurs tables dans le

FROM Une remarque en passant : il s’agit d’une manière d’expliquer la requête, ce qui

ne signifie pas du tout que MySQL l’exécute de cette façon.

REMARQUE –Rappelons que, sous Unix, MySQL distingue majuscules et minuscules dans

le nom des tables.

10.1.1 Renommage, fonctions et constantes

Le résultat d’une requête SQL est toujours une table On peut considérer en première

approche que le calcul consiste à « découper », horizontalement et verticalement, la table indiquée dans le FROM On peut aussi :

renommer les attributs ;

appliquer des fonctions aux attributs de chaque ligne ;

introduire des constantes

Fonctions MySQL

Les fonctions applicables aux valeurs des attributs sont par exemple les opérations arithmétiques (+, *, ) pour les attributs numériques, les manipulations de chaînes

de caractères (concaténation, sous-chaînes, mise en majuscules, ) MySQL propose

un ensemble très riche de fonctions (voir annexe B) Nous proposons quelques exemples ci-dessous

Donner la longueur des titres des films

Trang 3

mysql> SELECT LENGTH(titre) FROM Film;

+ -+

| LENGTH(titre) |

+ -+

+ -+

4 rows in set (0.00 sec)

Pour faciliter l’analyse syntaxique d’une requête, MySQL interdit tout blanc entre le nom de la fonction et la parenthèse ouvrante

Donner les 3 premières lettres du titre, concaténées avec l’année

mysql> SELECT CONCAT(SUBSTRING(titre,1,3),annee) FROM Film;

+ -+

| CONCAT(SUBSTRING(titre,1,3),annee) |

+ -+

+ -+

La norme SQL préconise «|| » pour exprimer la concaténation, mais MySQL

a choisi d’utiliser ce symbole pour le « ou » logique

Donner le nom des artistes et leur âge (arrondi grosièrement)

mysql> SELECT nom, YEAR(SYSDATE()) - annee_naissance FROM Artiste; + -+ -+

| nom | YEAR(SYSDATE()) - annee_naissance |

+ -+ -+

+ -+ -+

Les fonctions de manipulation de date constituent (avec celles consacrées aux chaînes de caractères) une large partie des fonctions MySQL SYSDATE() donne la date courante, au format standard AAAA-MM-JJ HH:MM:SS, et YEAR() renvoie l’année

Finalement, on peut utiliser SQL pour exécuter des fonctions, sans sélection-ner des lignes dans une table Dans ce cas, le FROM est inutile (il s’agit d’une spécificité de MySQL) La requête suivante ajoute 3 mois à la date courante,

à l’aide de la fonction DATE_ADD()

Trang 4

mysql> select DATE_ADD(NOW(), INTERVAL 3 MONTH);

+ -+

| DATE_ADD(NOW(), INTERVAL 3 MONTH) |

+ -+

+ -+

Renommage

Les noms des attributs sont par défaut ceux indiqués dans la clause SELECT, même en présence d’expressions complexes L’expression YEAR(SYSDATE()) -annee_naissance peut donc tenir lieu de nom d’attribut pour le résultat, ce qui est peu pratique Pour renommer les attributs, on utilise le mot-clé AS Ce mot-clé est optionnel pour MySQL

mysql> SELECT nom, YEAR(SYSDATE()) - annee_naissance AS age FROM Artiste; + -+ -+

| nom | age |

+ -+ -+

| Eastwood | 70 |

| Hackman | 70 |

| Pialat | 75 |

| Dutronc | NULL |

| Kurosawa | 90 |

+ -+ -+

On remarque que le calcul, appliqué à un NULL, donne un NULL Nous revien-drons sur la gestion des NULL plus loin

Constantes

On peut combiner, dans la clause SELECT, les noms des attributs de la table du FROM

avec des constantes, ou littéraux, dont la valeur sera donc identique sur chaque ligne

du résultat Voici deux exemples, le second créant une ancre HTML à partir du contenu de la table

mysql> SELECT ’Cette ligne correspond au film ’, titre FROM Film;

+ -+ -+

| Cette ligne correspond au film | titre |

+ -+ -+

| Cette ligne correspond au film | Impitoyable |

| Cette ligne correspond au film | Van Gogh |

| Cette ligne correspond au film | Kagemusha |

| Cette ligne correspond au film | Les pleins pouvoirs |

+ -+ -+

Trang 5

mysql> SELECT CONCAT(’<a href="Acteur.php?nom=’,

-> nom, ’">Nom</a>’) AS AncreActeur FROM Artiste;

+ -+

+ -+

| <a href="Acteur.php?nom=Eastwood">Nom</a> |

| <a href="Acteur.php?nom=Hackman">Nom</a> |

| <a href="Acteur.php?nom=Pialat">Nom</a> |

| <a href="Acteur.php?nom=Dutronc">Nom</a> |

| <a href="Acteur.php?nom=Kurosawa">Nom</a> |

+ -+

On peut introduire des apostrophes doubles (") dans une chaỵne de caractères encadrée par des guillemets simples

10.1.2 La clauseDISTINCT

L’utilisation des clés permet d’éviter les doublons dans les tables stockées, mais il peuvent apparaỵtre dans le résultat d’une requête La clause DISTINCT, placée après

le SELECT, permet de supprimer ces doublons Voici deux exemples, avec et sans DISTINCT

mysql> SELECT annee_naissance FROM Artiste;

+ -+

| annee_naissance |

+ -+

+ -+

mysql> SELECT DISTINCT annee_naissance FROM Artiste;

+ -+

| annee_naissance |

+ -+

+ -+

On trouve deux fois la valeur 1930 dans le premier résultat, et une seule fois dans

le second Il est également intéressant de constater que le second résultat est présenté

en ordre croissant De fait, la clause DISTINCT implique un tri préalable des lignes

du résultat qui rassemble les doublons et permet de les éliminer facilement Une conséquence, dont il faut savoir tenir compte, est que l’élimination des doublons peut être une opération cỏteuse si le résultat est de taille importante

Ngày đăng: 06/07/2014, 00:20