SLSQL
SLSQL
SLSQL
Sommaire
Notions de base sur les bases de donnes relationnelles et SQL: quest-ce quune base de donnes, un SGBD; comment crer une base; comment y stocker des donnes; comment interroger une base de donnes avec SQL, une dmonstration Sujet trs vaste: ceci est juste un aperu....
Terminologie: SGBD
Nous avons dj vu comment crire des programmes pour accder des chiers: lourd et peu pratique! on fait toujours appel des logiciels spcialiss pour accder une BD: Les Systmes de Gestion de Bases de Donnes (SGBD) ils se chargent de tout: stockage, accs, recherche, scurit, ... on communique avec eux par un langage spcialis: SQL Exemples de SGBD: ORACLE, MySQL, PostgreSQL, ...
Exemple: MySQL
Fonctionne en client/serveur: le serveur gre la base, les clients communiquent avec le serveur.
Client mysql Connexion Connexion Connexion Client mysqlimport Connexion Client Apache/PHP Base de donnes Serveur mysqld
Client mysqldump
Notre architecture
En plus du serveur Web, nous avons maintenant un serveur MySQL.
Prog. client (navigateur) Client HTTP requtes Internet requtes document(s) HTML programme SQL serveur donnes Serveur mysqld
Fichiers PHP
Base de donnes
Les donnes
MySQL nous prsente les donnes sous forme de table. titre Alien Vertigo Psychose Kagemusha Volte-face Pulp Fiction
anne nom_realisateur prnom_realisate 1979 1958 1960 1980 1997 1995 Scott Hitchcock Hitchcock Kurosawa Woo Tarantino Ridley Alfred Alfred Akira John Quentin
Cration de tables
NB : lemploi des majuscules et minuscules est indiffrent, sauf pour le nom des tables.
CREATE TABLE Film (titre VARCHAR (50) NOT NULL annee INTEGER NOT NULL, id_realisateur INTEGER NOT NULL, genre VARCHAR(30), resume TEXT, code_pays VARCHAR (4), PRIMARY KEY (titre) )
Important : la colonne id_realisateur contient, pour chaque ligne, lidentiant du metteur en scne du lm (cest un lien).
1 2 3 4 5 6 7
Kurosawa Akira
Attention: le contenu est perdu, dnitivement Pour ajouter une colonne une table:
ATER TABLE nom_table ADD nom_colonne type_colonne
Insertions, recherches
La commande INSERT
INSERT INTO nom_table (nom_col1, nom_cl2. VALUES (val1, val2, ...)
....
Pour insrer un lm
INSERT INTO Film (titre, anne, id_ralisateur) VALUES (Match Point, 2005, 8)
Quelques prcautions
Toujours respecter les rgles suivantes, sous peine de voir la commande rejete par MySQL. les valeurs sont entre guillemets simples (sinon on ne sait pas les distinguer des noms de colonnes), il faut toujours indiquer une valeur pour les colonnes NOT NULL on ne peut pas mettre deux fois la mme valeur dans une colonne qui est cl primaire.
La commande SELECT
SELECT nom_col1, nom_col2, [, ...] FROM nom_table WHERE critres_slection
on recherche dans toutes les lignes de la table nom_table (FROM), pour chaque ligne on vrie les critres si oui on place dans le rsultat les valeurs de nom_col1, nom_col2, ... Important: on peut combiner de recherches sur plusieurs tables non prsent dans ce cours
20 29 68 20
68 Kurosawa Akira
1910
Calculs et renommages
On peut des calculs arithmtiques, ou appliquer des fonctions aux valeurs ramenes.
SELECT nom, 2006 - annee_naissance FROM Artiste
On obtient 2 fois 1930 (Eastwood et Hackman). Avec la clause DISTINCT on limine ces doublons.
Valeurs nulles
Certaines valeurs sont absentes (lanne de naissance de J. Dutronc): on ne peut rien en dire, et rien en tirer. Pas de comparaison possible avec une valeur NULL Pas de calcul possible avec une valeur NULL Pour rechercher les valeurs absentes on ne peut pas faire:
SELECT * FROM Artiste WHERE annee_naissance = NULL
La clause WHERE
On fait une combinaison boolenne de comparaisons. Les comparateurs: =, <, <=, >, >=, ! =. Les connecteurs boolens: AND, OR, NOT Pour les chanes: le comparateur LIKE permet de faire des recherches partielles.
SELECT * FROM Artiste WHERE nom LIKE S%
Les lignes slectionnes = celles pour lesquelles lvaluation du WHERE renvoie vrai.