Vous êtes sur la page 1sur 29

Introduction aux bases de donnes

Introduction aux bases de donnes p.1/??

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....

Introduction aux bases de donnes p.2/??

Terminologie: bases de donnes


Nous avons dj vu comment accder des donnes stockes dans un chier (les lms). Ctait une base de donnes! BD = ensemble dinformations places dans un ou plusieurs chiers chier = persistance = les donnes survivent larrt des programmes une base de donnes a une structure prcise (on ne met pas tout en vrac)

Introduction aux bases de donnes p.3/??

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, ...

Introduction aux bases de donnes p.4/??

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

Introduction aux bases de donnes p.5/??

Utilisation dun SGBD


En pratique on ne se soucie pas de ce que fait le serveur. On doit: choisir une application cliente qui permet de dialoguer avec un serveur MySQL. se connecter en dsignant le serveur, et en donnant un login et un mot de passe; envoyer des ordres en langage SQL. Dans notre contexte: les applications clientes seront des scripts PHP.

Introduction aux bases de donnes p.6/??

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

Site web avec scripts PHP et MySQL

Introduction aux bases de donnes p.7/??

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

Introduction aux bases de donnes p.8/??

Les tables dune base de donnes


Base de donnes = un ensemble de tables. chaque table a un nom unique (par exemple Film); une table comprend une ou plusieurs colonnes ayant chacune un nom; une table comprend une ou plusieurs lignes, chacune constitue dune valeur pour chaque colonne. les noms de table et de colonne constituent le schma de la base; les lignes constituent le contenu de la base.

Introduction aux bases de donnes p.9/??

Ce quil faut savoir faire


Crer des tables:
CREATE TABLE Personne (nom VARCHAR(30), prnom VARCHAR(30))

Y placer des donnes:


INSERT INTO Personne (nom, prnom) VALUES (Rigaux, Philippe)

Rechercher des donnes:


SELECT * FROM Personne WHERE nom=Rigaux

cet le langage SQL.

Introduction aux bases de donnes p.10/??

Cration de tables

Introduction aux bases de donnes p.11/??

La commande CREATE TABLE


Voici la syntaxe:
CREATE TABLE nom_table ( nom_colonne1 type_colonne1 [NOT NULL], nom_colonne2 type_colonne2 [NOT NULL], [...] PRIMARY KEY (cl) )

NB : lemploi des majuscules et minuscules est indiffrent, sauf pour le nom des tables.

Introduction aux bases de donnes p.12/??

Ce quil faut retenir


on ne peut pas avoir deux colonnes avec le mme nom; choisir des noms simples et signicatifs; les types SQL sont simples: on peut se contenter de 1. INTEGER: les entiers 2. VARCHAR(n): chanes de longueur infrieure n 3. DECIMAL(n,d): les numriques avec d dcimales un des attributs doit identier une ligne de manire unique: cest la cl primaire. loption NOT NULL indique quon force un attribut prendre une valeur (impratif pour la cl primaire).

Introduction aux bases de donnes p.13/??

Exemple de cration de table


On veut crer une table pour les artistes (acteurs, ralisateurs):
CREATE TABLE Artiste (id INTEGER NOT NULL, nom VARCHAR (30) NOT NULL, prenom VARCHAR (30) NOT NULL, annee_naissance INTEGER, PRIMARY KEY (id) )

La colonne id est lidentiant: on lindique avec la commande PRIMARY KEY.

Introduction aux bases de donnes p.14/??

Autre exemple: les lms

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).

Introduction aux bases de donnes p.15/??

Contenu: la table des artistes


id

nom Scott Hitchcock Woo Tarantino Cameron Tarkovski

prnom Ridley Alfred John Quentin James Andrei

anne_naissance 1943 1899 1910 1946 1963 1954 1932

1 2 3 4 5 6 7

Kurosawa Akira

Introduction aux bases de donnes p.16/??

La table des lms (3 colonnes)


titre Alien Vertigo Psychose Kagemusha Volte-face Pulp Fiction Titanic Sacrice anne id_realisateur 1979 1958 1960 1980 1997 1995 1997 1986 1 2 2 3 4 5 6 7

Introduction aux bases de donnes p.17/??

Autres commandes utiles


Pour dtruire une table (bien rchir...):
DROP TABLE nom_table

Attention: le contenu est perdu, dnitivement Pour ajouter une colonne une table:
ATER TABLE nom_table ADD nom_colonne type_colonne

Pour renommer une table:


ATER TABLE nom_table RENAME AS nouvau_nom

Introduction aux bases de donnes p.18/??

Insertions, recherches

Introduction aux bases de donnes p.19/??

La commande INSERT
INSERT INTO nom_table (nom_col1, nom_cl2. VALUES (val1, val2, ...)

....

Pour insrer un artiste:


INSERT INTO Artiste (id, nom, prnom, anne_naissance) VALUES (8, Woody, Allen, 1941)

Pour insrer un lm
INSERT INTO Film (titre, anne, id_ralisateur) VALUES (Match Point, 2005, 8)

Introduction aux bases de donnes p.20/??

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.

Introduction aux bases de donnes p.21/??

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

Introduction aux bases de donnes p.22/??

Exemples: la base Films


Des lms, des ralisateurs, des acteurs : voir poly.
titre anne id_realisateur genre

Impitoyable Van Gogh Kagemusha Les pleins pouvoirs

1992 1990 1980 1997

20 29 68 20

Western Drame Drame Policier

Introduction aux bases de donnes p.23/??

Exemples: la base Films


Les artistes: notez une valeur inconnue (ou NULL): lanne de naissance de J. Dutronc.
id nom prnom anne_naissance

20 Eastwood 21 Hackman 29 Pialat 30 Dutronc

Clint Gene Maurice Jacques

1930 1930 1925

68 Kurosawa Akira

1910

Introduction aux bases de donnes p.24/??

Quelques requtes de base


SELECT * FROM Film (le * dsigne tous les nom de colonnes) SELECT titre FROM Film WHERE genre=Drame OR genre=Western SELECT titre FROM Film WHERE genre=Drame AND annee < 1985 SELECT titre FROM Film WHERE (genre=Drame AND annee < 1985) OR genre=Western

SELECT titre FROM Film WHERE genre=Drame

Introduction aux bases de donnes p.25/??

Calculs et renommages
On peut des calculs arithmtiques, ou appliquer des fonctions aux valeurs ramenes.
SELECT nom, 2006 - annee_naissance FROM Artiste

On peut donner un nom aux valeurs obtenues avec la clause AS


SELECT nom, 2006 - annee_naissance AS age FROM Artiste

Introduction aux bases de donnes p.26/??

Elimination des doublons, tri


Le rsultat de certaines requtes peut contenir plusieurs fois la mme ligne.
SELECT annee_naissance FROM Artiste;

On obtient 2 fois 1930 (Eastwood et Hackman). Avec la clause DISTINCT on limine ces doublons.

SELECT DISTINCT annee_naissance FROM Artiste

La clause ORDER BY permet de trier le rsultat.


SELECT titre, genre FROM Film ORDER BY genre, annee

Introduction aux bases de donnes p.27/??

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

Mais on peut utiliser le comparateur spcial IS NULL


SELECT * FROM Artiste WHERE annee_naissance IS NULL

Introduction aux bases de donnes p.28/??

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.

Introduction aux bases de donnes p.29/??