Vous êtes sur la page 1sur 41

Sommaire

Les bases de donnes relationnelles & MySQL y Q


Ivan Madjarov
Mai, 2006, 2007, 2008, 2009

Introduction Concepts du modle relationnel Diagramme entits-associations Les relations et syntaxe de MySQL Fonctions de MySQL Exemples

IUT-R&T

IvMad, Mai, 2006-2008

IUT-R&T

IvMad, Mai, 2006-2008

Introduction
Donne - Information La donne est l code convenu d'un objet, L d le d d' bj d'un phnomne, d'une image, d'un son, d'un p g texte, L information L'information est la signification que l'on l on attache un ensemble de donnes. Exemple : La L page boursire d'un j b i d' journal. l Le bulletin de note d un tudiant d'un

Introduction
Banque de donnes Vaste ensemble de donnes faiblement V bl d d f ibl structures. L'accs aux donnes est indirect. Exemple : Un livre et son index. Schma de donnes Rsultat de la modlisation d'un univers donn. d Exemple : Organigramme d une entreprise d'une
3 4

IUT-R&T

IvMad, Mai, 2006-2008

IUT-R&T

IvMad, Mai, 2006-2008

Introduction
Base de donnes Ensemble des d E bl d donnes i f informatiques i structures suivant un schma de donnes. Donnes directement accessibles par des utilisateurs diffrents, concurrents et diffrents comptiteurs. Systme d gestion d b S t de ti de base d d de donnes (SGBD) Ensemble de programmes qui permet de grer et de manipuler une base de donnes donnes.
IUT-R&T IvMad, Mai, 2006-2008

Introduction
Base de donnes Une ll U collection de d i d donnes Structure intgre
Toute donne nest dfinie quune fois Pas de copies inutiles Ex. le i d' E l prix d'un article est dfi i une f i ti l t dfini fois

Liens smantiques m q Contraintes dintgrit Contraintes de scurit


5
IUT-R&T IvMad, Mai, 2006-2008

Base de donnes

Dfinitions (BD)
Une base de donnes (BD) est un ensemble bien j g structur de donnes relatives un sujet global. Ces donnes peuvent tre de nature et d'origine ff diffrentes.
Une banque peut avoir une BD qui contient les informations

ncessaires sur tous les clients et leurs dpts d'pargne. p p g Une socit d'assurances peut stocker les donnes q relatives aux contrats d'assurances ainsi qu'aux sinistres dans une BD.

Un systme de gestion de bases y m g (SGBD) est un logiciel qui nous permet modifier et d'exploiter des BD. d exploiter constitue donc notre interface pour donnes. donnes
IUT-R&T IvMad, Mai, 2006-2008

de donnes de crer, de Ce systme accder aux


8

IUT-R&T

IvMad, Mai, 2006-2008

Dfinitions (BD)
Une base de donnes (BD) est un ensemble de donnes, organises afin que lon puisse facilement : g q p les manipuler : insrer de nouvelles donnes, modifier pp m ; ou supprimer des donnes existantes; les consulter : poser des questions pour retrouver parmi la masse des donnes celles qui nous intressent intressent. Un moteur de base de donnes relationnel est un logiciel (SGBD-R) dont la fonction principale est de stocker de linformation et de la restituer en tablissant un dialogue avec lapplication cliente Ce dialogue repose sur l application cliente. un langage SQL (Structured Query Language). MySQL est un moteur de BD qui drive directement de SQL. C'est un langage de requte vers les bases de donnes exploitant le modle relationnel relationnel.
IUT-R&T IvMad, Mai, 2006-2008

ANSI-SPARC (intrts)
1. Totalement dclaratif et abstraite 2. Indpendant d'un langage de programmation 3. Indpendant de 3 Indp nd nt d larchitecture 4. Facilitant la conception pp des applications 5. Facilitant l'expression de contraintes 6. Faciliter la gestion de l intgrit l'intgrit de la base
9
IUT-R&T IvMad, Mai, 2006-2008

10

Un peu d'histoire
1. Avant les annes 60 existaient les systmes de gestion de fichiers (SGF) 2. Modle rseau dvelopp par la CODASYL en 1961 3. Modle hirarchique dvelopp par la socit IBM pendant les annes 1965 - 1970 4. 4 En 1976 apparat le modle Entit-Association Entit Association, propos par P.CHEN, qui donnait aux concepteurs des bases de donnes relationnelles une mthode adquate pour modliser n'importe quelles donnes (banques, assuranc s, n ustr assurances, industrie ...) par une structure bien un structur n cohrente de tables relationnelles. 5. 5 Les annes 90 voient apparatre les bases de 90 donnes XML natives. Modle hirarchique qui stocke les donnes dans leur format dorigine. d origine.
IUT-R&T IvMad, Mai, 2006-2008

Dfinitions
SGBD-R Le client se connecte au serveur de la BD L interface Linterface SGBD relie le requte du client avec le contenu de la BD Le l L rsultat est envoy au client

11

IUT-R&T

IvMad, Mai, 2006-2008

12

SGBD
Un SGBD est :
Un outil pour vrifier, modifier et rechercher vrifier efficacement des donnes dans un grand ensemble bl pp Une interface entre les applications "utilisateur" et la mmoire secondaire

SGBD
Objectif d'indpendance d'un SGBD Indpendance physique : L niveau utilisateur I d d h si Le i tilis t est transparent un changement de support, de mthode d'accs, de codage des donnes ' Indpendance logique : Le niveau utilisateur est transparent une modification de l l'organisation l i is ti logique d s d des donnes, grce l s la dfinition de sous schma de donnes qui lui sont propres. Indpendance vis vis des stratgies d'accs : d accs Le niveau utilisateur est transparent l'ajout de d nouveaux chemins d accs aux donnes. h i s d' s d s
13
IUT-R&T IvMad, Mai, 2006-2008

Un SGBD comprend : c mprend


Un systme de gestion de fichiers (gestion du y g f (g stockage physique) Un systme interne (placement et accs aux donnes) Un systme externe (langage de requte labor)
IUT-R&T IvMad, Mai, 2006-2008

14

SGBDR
SGBDs populaire aujourdhui :
MsAccess SQL Server Oracle MySQL DB2 Postgres Sybase SQL Anywhere Etc.
IUT-R&T IvMad, Mai, 2006-2008

SGBDR

15

IUT-R&T

IvMad, Mai, 2006-2008

16

SGBD (les principes)


Les grands principes :
Les 3 niveaux: physique logique externe physique, logique, Indpendance entre reprsentation physique et l logique Offre diffrentes vues de la mme structure

SGBD (architecture)
Architecture d'un BDMS (SGBD)

Modle logique (modle de donnes)


Langage de dfinition des donnes (LDD) Langage de manipulation des donnes (LMD) Accs des langages externes C, C++, Java travers d i des interfaces : ODBC JDBC f ODBC,
IUT-R&T IvMad, Mai, 2006-2008

17

IUT-R&T

IvMad, Mai, 2006-2008

18

Modle entit association (EA)


Dmarche de construction dune BD.
Pour construire une base de donnes il faut donnes, 1.Construire un schma conceptuel, modlis sous forme dentits et d f d dassociations; 2.Transformer le schma E/A en schma relationnel; 3.Mettre 3 M tt en uvre via un SGBD. i SGBD p p Les tapes de la conception :

Modle entit association (Entits)


Une entit est un objet, un vnement, un , p , , , f lieu, une personne, , une chose, identifiable sans ambigut Exemple : le cinma le GAUMONT la voiture GAUMONT, Peugeot, le film "Bienvenue chez les Ch'tis". Classe dentits : cest un regroupement d entits dentits de mme nature. Un ensemble dentits Exemple : Cinmas, Acteurs, Films etc. Cinmas Acteurs Films, etc Formalisme de classe d entit : reprsentation graphique
19
IUT-R&T IvMad, Mai, 2006-2008

IUT-R&T

IvMad, Mai, 2006-2008

20

Modle entit association (Associations)


Une Association : Cest un lien entre 2 ou p plusieurs entits Exemple : Dany Boon a jou dans " Bienvenue chez les Ch'tis"; Tannenbaum a crit louvrage Ch tis ; l ouvrage "Rseaux Informatique" Classe dassociation : Cest un lien entre 2 ou plusieurs classes dentits. d entits. Exemple :Affiche (entre CINEMA et FILMS), REALISE (entre REALISATEURS et FILMS) Chaque Entit joue un rle q j dans une Association;
IvMad, Mai, 2006-2008

Modle entit association (Proprits)


Proprits = Attributs on Proprit est une donne lmentaire que l on peroit sur une entit ou une association Exemple : Pour les entits E l P l i Nom, prnom pour lentit ACTEURS l ent t AC EURS Titre et Metteur en scne pour FILMS Nom et Adresse pour CINEMA N d CINEM

IUT-R&T

21

IUT-R&T

IvMad, Mai, 2006-2008

22

Modle entit association (Proprits)


Pour les associations : FAIRE ATTENTION, p p q m les proprits que lon met dans une association doivent obligatoirement relier les entits. entits Par exemple le Rle dun acteur. Le rle relie, un acteur et l film dans lequel il a jou. le fil d l l j Reprsentation graphique :

Modle entit association (Identifiant)


Objectif : chaque occurrence doit pouvoir p m q tre repre de manire unique et sans ambigut pour tre identifie. Identifiant : proprit ou groupe de proprits dont la valeur identifie sans ambigut une entit ou une li i bi i liaison d dune classe (identifiant=cl primaire). p Identifiant d une classe dentits : Un seul identifiant invariable dans le temps temps. Identifiant dune association : implicite, obtenu en juxtaposant l identifiants d b les d f des entits qui p q participent la liaison p
IvMad, Mai, 2006-2008

IUT-R&T

IvMad, Mai, 2006-2008

23

IUT-R&T

24

Modle entit association (cardinalits)


Une association permet de relier, une ou p plusieurs entits. 3 types dassociation : De 0 1 D 0,1 : une entit de A peut tre relie i d li aucune ou une seule entit de B;

Modle entit association (cardinalits)


De 0 plusieurs (0,N) : une entit de A peut p tre relie aucune ou plusieurs entits de B

De 1 plusieurs (1,N) : une entit de A peut tre relie une ou plusieurs entits de B; De 1,1 : une entit de A est relie une seule entit de B;

IUT-R&T

IvMad, Mai, 2006-2008

25

IUT-R&T

IvMad, Mai, 2006-2008

26

Modle entit association (cardinalits)


Schma global

Modle entit association (relationnel)


Toute classe dentits et dassociation du g mm diagramme entit/association est reprsente par une relation dans un schma relationnel quivalent : ACTEURS(NumActeur, Nom, Prnom) FILMS(NumFilm, Titre, MetteurEnScne) CINEMA(NumCinma, Nom, CINEMA(NumCinma Nom Adresse) REALISATEURS(NumReal,Nom, Prnom) JOUE(NumACteur, NumFilm, Rle) AFFICHE(NumFilm, NumCinema,Date) AFFICHE(NumFilm NumCinema Date) REALISE(NumFilm,NumRal)
IvMad, Mai, 2006-2008

IUT-R&T

IvMad, Mai, 2006-2008

27

IUT-R&T

28

Modle entit association (relationnel)


Optimisation : La table REALISE (1,1) est g rduite en cl trangre.

Concepts du modle relationnel


Champ - Plus petit lment inscable dinformation. Il peut tre aussi petit quun bit et aussi grand quune image. Enregistrement Collection de champs dont l unit repose Enr istr m nt - C ll cti n d ch mps d nt lunit r p s sur un une ou plusieurs relations. Les champs sont les colonnes, les enregistrements les lignes dans un tableau. g g Table - Collection denregistrements ayant la mme structure (mme dcoupage de champs). Base de donnes - Collection de tables. Cl primaire - Un champ ou un ensemble de champs permettant didentifier sans ambigut t t enregistrement d did tifi bi t tout i t t dune t bl P table. Par essence les cls primaires sont uniques. Cl trangre - Un champ ou un ensemble de champs lintrieur l intrieur dune table qui se trouve tre la cl primaire dune autre table. Cl secondaire - Une table peu possder dautres cls dites p p secondaires. Elles sont concrtises par des index (secondaires). Les cls secondaires sont eux aussi uniques. Index Une table d' d bl d'association d' d d'adresses d' d'enregistrements.
29
IUT-R&T IvMad, Mai, 2006-2008

IUT-R&T

IvMad, Mai, 2006-2008

30

Concepts du modle relationnel


Les types de relations :

Concepts du modle relationnel


Les types de relations :

1. 1 Relation Un-vers-Un (1:1) Un vers Un


Une relation 1:1 existe quand pour chaque cl primaire il y a zro ou une valeur correspondante pour un autre champ ou un autre enregistrement. Ce cas permet la reprsentation de p p p y p hirarchies (par exemple lentit "employ" peut avoir une relation vers une autre entit "employ" avec la dfinition "a pour chef").

3. Relation N-vers-Un (N:1)


Plusieurs enregistrements dune mme table font rfrence de faon non ambigu un seul enregistrement dune autre table. Une relation N:1 impli l ti impliquant d s cls t t des ls trangres p t gnralement t s peut l m t tre renverse (en 1:N), alors quune relation 1:N impliquant que des cls p primaires ne peut pas tre renverse en N:1. p p

4. Relation N-vers-N (N:N)

2. Relation Un-vers-N (1:N)


Une relation 1:N (un vers plusieurs) existe quand, pour chaque relat on N plus eurs) ex ste enregistrement dans une table il existe zro ou plusieurs enregistrements lis dans une autre table (exemple : un client a plusieurs commandes).

Plusieurs enregistrements dune mme table sont lis plusieurs g p autres enregistrements dune autre table. Un exemple : plusieurs commandes peuvent faire rfrences au mme article et plusieurs articles peuvent tre utiliss dans une article, mme commande. Les BDR ne peuvent pas reprsenter directement les relations Np p p vers-N, le concepteur de la base doit crer une table intermdiaire (contenant des couples forms des cls primaires des deux tables en relation plus dventuelles proprits spcifiques la relation) d ventuelles relation).
IUT-R&T IvMad, Mai, 2006-2008

IUT-R&T

IvMad, Mai, 2006-2008

31

32

Concepts du modle relationnel


Les 12 Rgles dintgrit de Dr.Codd (1970)
1 - Rgle dinformation
Toutes les informations de la BD doivent tre reprsentes dune seule et mme manire, notamment par des valeurs dans les colonnes lintrieur de lignes l intrieur lignes.

Concepts du modle relationnel


Les 12 Rgles dintgrit de Dr.Codd (1970)
4 - Catalogue systme
La description de la BD au niveau logique doit tre reprsente dynamiquement par un ensemble de donnes normalis de telle sorte que ce catalogue soit accessible aux utilisateurs autoriss depuis leur langage de requte (MS Access).

2 - Rgle de garantie daccs

Chaque information stocke dans une BDR doit pouvoir tre accessible en prcisant uniquement le nom de la table, le nom de la colonne et la valeur de la cl primaire. p

5 - Rgle de sous-langage sous langage

3 - Rgle des informations manquantes

Il doit y avoir un moyen dexprimer des valeurs manquantes dans la base de donnes dune faon homogne non dpendante du type de donne, expression qui doit tre supporte dans les oprations logiques. logiques La rgle originale prcise quil faut diffrencier valeur qu il manquante et valeur inapplicable, lheure actuelle les SGBD-R ne proposent majoritairement que le NULL pour marquer une valeur manquante.
IUT-R&T IvMad, Mai, 2006-2008

Le systme doit mettre la disposition au moins un langage relationnel qui : q (1) a une syntaxe linaire, (2) peut tre utilis la fois de manire interactive et dans des programmes dapplication, (3) supporte les oprations de dfinition de donnes (dont les vues), vues) celles de manipulation de donnes (mise jour et accs) les accs), contraintes de scurit et dintgrit, ainsi que les oprations de p pilotage de transactions (dbut, validation, annulation). (SQL) g ( , , ) ( Q )
IUT-R&T IvMad, Mai, 2006-2008

33

34

Concepts du modle relationnel


Les 12 Rgles dintgrit de Dr.Codd (1970) 6 - Rgle de mise jour des vues g j
Le systme doit supporter la dfinition des vues et les informations des tables sous-jacentes doivent pouvoir tre mises jour directement depuis la vue.

Concepts du modle relationnel


Les 12 Rgles dintgrit de Dr.Codd (1970) 9 - Indpendance des donnes logiques p gq
Les programmes dapplication et les oprations interactives nont pas tre modifis si la BD est restructure.

7 - Insertion, mise jour et suppression

10 - Indpendance par rapport aux contraintes dintgrit

Le systme doit permettre aux oprateurs INSERT, UPDATE et DELETE dtre actifs en mme temps. Le SQL standard supporte cette contrainte. d d i

Les contraintes dintgrit doivent tre spcifies g p sparment des programmes dapplication et ranges dans le catalogue. On doit pouvoir les modifier comme on le souhaite.

8 - Indpendance des donnes physiques

11 - Indpendance par rapport la distribution des donnes


Les applications existantes se drouleront normalement (1) quand une version distribue du SGBD est introduite pour la premire f is et (2) quand l s d i fois t d les donnes dist ib s s t s distribues sont redistribues dans le systme.
IUT-R&T IvMad, Mai, 2006-2008

Les programmes dapplication et les oprations interactives ne doivent pas avoir tre modifis si la structure physique de la base st d l b s est modifie. E ce s s SQL est un l difi En sens st langage beaucoup plus portable que la majorit des langages classiques. classiques
IUT-R&T IvMad, Mai, 2006-2008

35

36

Concepts du modle relationnel


Les 12 Rgles dintgrit de Dr.Codd (1970)
12 - Rgle de non-subversion
Si le systme dispose dune interface de bas niveau (traitement dun enregistrement la fois), celle-ci na pas la possibilit de pervertir le systme cest dire de passer outre une directive de systme, c est scurit relationnelle ou une contrainte dintgrit. SQL-92 rpond ces conditions.

Diagramme entits-associations

IUT-R&T

IvMad, Mai, 2006-2008

37

IUT-R&T

IvMad, Mai, 2006-2008

38

Diagramme entits-associations

Diagramme entits-associations
Le schma relationnel et le diagramme EA suivants sont quivalents :
PILOTE (PLNUM, PLNOM, PLPRENOM, VILLE, SALAIRE) AVION (AVNUM, AVNOM, CAPACI E, LOCALISATION) CAPACITE, LOCALISA ION) VOL (VOLNUM, PLNUM, AVNUM, VILLEDEP, VILLEARR, HEUREDEP, HEUREARR) avec en soulign = cls primaires en italique = cls trangres

IUT-R&T

IvMad, Mai, 2006-2008

39

IUT-R&T

IvMad, Mai, 2006-2008

40

Sommaire

Les bases de donnes relationnelles & MySQL y Q


Ivan Madjarov
Mai, 2006, 2007, 2008, 2009

Introduction Concepts du modle relationnel Diagramme entits-associations Algbre relationnelle Les relations et syntaxe de MySQL Fonctions de MySQL Exemples

IUT-R&T

IvMad, Mai, 2006-2008

IUT-R&T

IvMad, Mai, 2006-2008

Diagramme entits-associations
Le cas de la gestion simplifie d'un htel: Chambres : Caractrise les chambres de l'htel. Clients : Caractrise les clients de l'htel. Rservations : Reprsente la rservation des chambres par un client. Le modle relationnel des donnes :
Chambres (Num_Chambre, Prix, lits, pers, Conf, Equipe) Cli t (N Clients (Num_Client, N Cli t Nom, P Prenom, Tl h Tlphone) ) Reservations (Num_Client, Num_Chambre, Date_Arr, Date_Dep) D t D )

Diagramme entits-associations
NumChambre Prix NbLits NbLi NbPers Confort quipement

0:N

Num_Client Num_Chambre N Ch b
Date_Arr Date_Dep Date Dep

1:N

NumClient Nom N Prenom Tlphone

avec en soulign = cls primaires en italique = cls trangres q g


IUT-R&T IvMad, Mai, 2006-2008

IUT-R&T

IvMad, Mai, 2006-2008

Le SQL (Structured Query Language)


SQL est un langage structur de requtes, standard et normalis, destin interroger ou manipuler une base de donnes relationnelle avec et par les moyens de sous-langages :
dfinition de donnes (Data definition language), manipulation de d l d donnes (D (Data manipulation l language), contrle de donnes (Data control language), contrle des transactions (Transaction control ( language), et d'autres modules destins notamment crire m mm des routines (procdures, fonctions ou dclencheurs) et interagir avec des langages ) g g g externes.
IvMad, Mai, 2006-2008

La Base de donnes par SQL


Les tapes incontournables : 1.Cration 1 Cration de bases de donnes 2.Activer l base d d 2 A ti la b de donnes :
USE < nom_de_la_base >; CREATE DATABASE < nom_de_la_base >;

3.Cration des tables de la base de donnes :

CREATE TABLE "nom de table" nom table ("colonne 1" "type de donnes pour la colonne 1", colonne 2 type 2" ); "colonne 2" "type de donnes pour la colonne 2 , ..);

4.Insrer des donnes dans la BD :

INSERT INTO " "nom d t bl " (" l de table" ("colonne 1" " l 1", "colonne 2" 2", ...) VALUES ("valeur 1", "valeur 2", ...);
5
IUT-R&T IvMad, Mai, 2006-2008

IUT-R&T

La base de donnes "Htel"


Crer la base de donnes:
>CREATE DATABASE hotel; CREATE >USE hotel;

La base de donnes "Htel"


Insrer des donnes quand la cl primaire est auto incrmente: incrmente
INSERT INTO clients (nom, prenom, telephone) VALUES ("Jean", "Paul", 12345678) ( Jean Paul 12345678),
("Gaston", "Yves", 23456789), ( ("Zoro", "Zoro", 13579860), , , ), ("Paul", "Jean", 987654321), ("Jerome", "Jean", 87654321);

Crer les t bl C l tables:

CREATE TABLE clients (num_client int not null auto_increment, nom varchar(25), prenom varchar(20), t i t h (25) h (20) telephone bigint, PRIMARY KEY (num_client));

Rsultat de la requte :
+------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+----------------+ | num client | int(11) num_client | NO | PRI | NULL | auto increment | auto_increment | nom | varchar(25) | YES | | NULL | | | prenom | varchar(20) | YES | | NULL | | | telephone | bigint(20) | YES | | NULL | | +------------+-------------+------+-----+---------+----------------+
IUT-R&T IvMad, Mai, 2006-2008

+------------+--------+--------+-----------+ | num_client | nom | prenom | telephone | +------------+--------+--------+-----------+ | 1 | Jean | Paul | 12345678 | | 2 | Gaston | Yves | 23456789 | | 3 | Marie | Marie | 34567890 | | 4 | Zoro | Zoro | 13579860 | | 5 | Paul | Jean | 987654321 | | 6 | Jerome | Jean | 87654321 | +------------+--------+--------+-----------+
7
IUT-R&T IvMad, Mai, 2006-2008

Les relations - rappel


Une relation est une table comportant des colonnes dont le nom et le type caractrisent le contenu qui sera insr dans la table. On va crer la relation (table) Personne qui aura pour attributs (colonnes) : nom, prnom, adresse, tlphone. Les lignes que contiendra cette table seront appeles enregistrements ou tuples.
Personnes
nom Dupond
IUT-R&T

Algbre relationnelle (Projection)


Opration unaire essentielle

relation R liste d'attributs A -> relation

Prnom Marc

adresse 8 rue de loctet


IvMad, Mai, 2006-2008

tlphone 0423456789
9

IUT-R&T

La projection gnre une relation regroupant exclusivement toutes les occurrences de la relation R rduites aux attributs de la liste d attributs A d'attributs A. La projection permet de choisir des colonnes dans le tableau. Le rsultat de la projection est d l t bl L lt t d l j ti t une nouvelle relation dont les attributs sont ceux prsents d dans A. Si R est vide, l relation qui A id la l i i rsulte de la projection est vide. Notation : AR ( est la lettre grecque pi.)
IvMad, Mai, 2006-2008

10

Projection
Personnes nom Martin Dupond Dupond p prnom Pierre Jean Marc adresse 32 all Poivrot 8 rue de loctet tlphone p 0526389152 0123456789 7 alle des vers 0258941236

Algbre relationnelle (Slection)


Opration unaire essentielle :

SELECT nom, prnom FROM Personnes


nom Martin Dupond p Dupond
IUT-R&T IvMad, Mai, 2006-2008

On projette la table Personnes sur les colonnes nom et prnom prnom.

prnom Pierre Jean Marc


11

exclusivement toutes les occurrences de la relation R qui satisfont l'expression logique E. L slection permet d ch isir des li n s d ns le La sl cti n p rm t de choisir d s lignes dans l tableau. Le rsultat de la slection est une nouvelle relation qui a l mmes attributs que R ll l ti i les tt ib t R. Si R est vide (c'est--dire ne contient aucune occurrence), l relation qui rsulte d la ) la l i i l de l slection est vide. Notation : ER ( est la lettre grecque sigma.)
IUT-R&T IvMad, Mai, 2006-2008

relation R expression logique E -> relation p gq La slection gnre une relation regroupant

12

Slection
Personnes nom Martin Dupond Dupond prnom Pierre Jean Marc adresse 32 all Poivrot 8 rue de loctet tlphone 0526389152 0123456789 7 alle des vers 0258941236

Algbre relationnelle (Jointure)


Opration binaire commutative essentielle

relation R1 relation R2 attribut A -> relation relation R1 relation R2 attribut A1 attribut A2 -> relation

On ne slectionne que les tuples dont lattribut nom est gale Dupond. l D d

SELECT * FROM Personnes WHERE nom = Dupond

nom Dupond Dupond D d


IUT-R&T

prnom Jean Marc M

adresse 32 all Poivrot 8 rue d l t t de loctet

tlphone 0526389152 0123456789


13

La jointure gnre une relation regroupant exclusivement toutes les possibilits de combinaison des occurrences des relations R1 et R2 pour lesquelles il y a galit entre l attribut A l'attribut (ou A1) de la relation R1 et l'attribut A (ou A2) de la relation R2. L attribut A (ou A2) de la R2 L'attribut relation R2 est ensuite limin. R1 et R2 ne peuvent pas avoir plus d'un attribut ' commun. Si elles en ont un, ce ne peut tre que celui sur lequel est ralise la jointure (A).
IvMad, Mai, 2006-2008

IvMad, Mai, 2006-2008

IUT-R&T

14

Algbre relationnelle (Jointure) suite


Le rsultat de la jointure est une nouvelle q relation qui a tous les attributs de R1 et tous ceux de R2 sauf A (ou A2). Il est en fait indiffrent d'liminer l attribut A d liminer l'attribut (ou A1) de la relation R1 ou l'attribut A (ou A2) de la relation R2 R2. Si R1 ou R2 ou les deux sont vides, la relation qui rsulte d l jointure est vide. lt de la j i t t id Notation : R1 ><A R2 si A est l'attribut commun ou R1 ><A1,A2 R2 Une proprit remarquable (non exhaustif) : R1 A1,A2 R2 est identique R1 A1=A2 R2 suivi du retrait de A2 par projection projection.
IvMad, Mai, 2006-2008

Jointure
Personnes nom Martin Dupond prnom Pierre Jean adresse 32 all Poivrot tlphone 0526389152 nom Dupond Jospin Martin 7 alle des vers 0258941236 Bibliothque dernier livre Robinson Faust Misre

SELECT Personnes.prnom, dernierlivre p FROM Personnes, Bibliothque WHERE Personnes.nom = Bibliothque.nom

On j i t les deux t bl O joint l d tables, grce la colonne nom. Et on combine cette jointure une projection sur les attributs nom et dernierlivre. Attention lever toute ambigut sur les noms dattribut dans le cas o deux tables possdent des colonnes de mme nom.

prnom Jean Pierre


IUT-R&T

Dernier livre Robinson Misre


IvMad, Mai, 2006-2008

IUT-R&T

15

16

Algbre relationnelle (Union)


Opration binaire ensembliste commutative

Union
P_1
Nom Durand Dupond Prnom Paul Caroline Nom Jenny Dupond Blanc Prnom Carole Caroline Michel

relation R1 relation R2 -> relation

P_2


IUT-R&T

L'union gnre une relation regroupant toutes les occurrences de la relation R1 et toutes les occurrences de la relation R2. Si une mme occurrence existe dans R1 et d ns un mm ccurr nc xist d ns t dans R2, elle n'apparat qu'une seule fois dans le rsultat de l' i lt t d l'union. Contrainte : R1 et R2 doivent avoir les mmes attributs. Le rsultat de l union est une nouvelle relation l'union qui a les mmes attributs que R1 et R2. Notation : R1 U R2 R2.
IvMad, Mai, 2006-2008

SELECT Nom, Prnom FROM P_1 P 1 UNION SELECT Nom, Prnom FROM P_2

P_1 U P_2
Nom Durand Dupond D d Jenny Blanc Bl Prnom Paul Caroline C li Carole Michel Mi h l
18

17

IUT-R&T

IvMad, Mai, 2006-2008

Algbre relationnelle (Intersection)


Opration binaire ensembliste commutative

Intersection (INTERSECT)
P_1
Nom Durand Dupond Prnom Paul Caroline Nom Jenny Dupond Blanc Prnom Carole Caroline Michel

relation R1 relation R2 -> Relation

P_2


IUT-R&T

L'intersection gnre une relation regroupant exclusivement toutes les occurrences qui existent la fois dans la relation R1 et dans la relation R2 R2. Contrainte : R1 et R2 doivent avoir les mmes attributs. tt ib t Le rsultat de l'intersection est une nouvelle relation qui a les mmes attributs que R1 et R2. Si R1 ou R2 ou les deux sont vides la relation qui vides, rsulte de l'intersection est vide. Notation : R1 /\ R2
IvMad, Mai, 2006-2008

SELECT Nom, Prnom FROM P_1 P 1 INTERSECT SELECT Nom, Prnom FROM P_2
Nom Dupond
IUT-R&T IvMad, Mai, 2006-2008

P_1 /\ P_2
Prnom Caroline
20

19

Algbre relationnelle (Diffrence)


Opration binaire ensembliste non commutative

Diffrence (MINUS ou EXCEPT)


P_1
Nom Durand Dupond Prnom Paul Caroline Nom Jenny Dupond Blanc Prnom Carole Caroline Michel

relation R1 relation R2 -> relation

P_2

IUT-R&T

La diffrence gnre une relation regroupant toutes les occurrences de la relation R1 qui n'existent pas dans la relation R2. Contrainte C ntr int : R1 et R2 d iv nt avoir l s mm s t doivent v ir les mmes attributs. Le rsultat de la diffrence est une nouvelle q q relation qui a les mmes attributs que R1 et R2. Si R1 est vide, la relation qui rsulte de la diffrence est vide. Si R2 est vide la relation qui vide, rsulte de la diffrence est identique R1. Notation : R1 - R2
IvMad, Mai, 2006-2008

SELECT Nom, Prnom FROM P_1 P 1 MINUS SELECT Nom, Prnom FROM P_2
Nom Durand
IUT-R&T IvMad, Mai, 2006-2008

P_1 - P_2
Prnom Paul
22

21

Algbre relationnelle (Division)


Opration binaire non commutative

Algbre relationnelle (Produit cartsien)


Opration binaire commutative

relation R1 relation R2 -> relation

relation R1 relation R2 -> relation

IUT-R&T

La division gnre une relation regroupant toutes les parties d'occurrence de la relation R1 qui d occurrence sont associes toutes les occurrences de la relation R2 R2. Contraintes : R2 ne peut pas tre vide. Tous les attributs d R2 d i tt ib t de doivent t prsents d t tre t dans R1 R1. R1 doit possder au moins un attribut de plus que R2. Le l R2 L rsultat d l division est une nouvelle de la di i i ll relation qui a tous les attributs de R1 sans aucun de ceux de R2. Notation : R1 R2
IvMad, Mai, 2006-2008

Le produit cartsien gnre une relation regroupant toutes les possibilits de combinaison des occurrences des relations R1 et R2. Contrainte C ntr int : R1 et R2 n d iv nt avoir aucun t ne doivent v ir ucun attribut commun. Le rsultat du produit cartsien est une nouvelle q relation qui a tous les attributs de R1 et tous ceux de R2. Notation : R1 R2

23

IUT-R&T

IvMad, Mai, 2006-2008

24

Algbre relationnelle (Complment)


Opration unaire

SQL SELECT
SELECT [ALL] | [DISTINCT] <liste des noms de colonnes> | * FROM <Liste des tables> [WHERE <condition logique>] GROUP BY HAVING ORDER BY

25
IUT-R&T

relation R -> relation

Le complment gnre une relation regroupant toutes les occurrences possibles cres partir des valeurs d'attributs prsentes dans la relation R, l'exception des occurrences de R R l exception R. Le rsultat du complment est une nouvelle relation qui a l mmes attributs que R l ti i les tt ib t R. Si R est vide, la relation qui rsulte du q complment est vide. Notation : -R R

ALL permet de slectionner l'ensemble des lignes satisfaisant la condition logique logique. DISTINCT permet de ne conserver que des lignes distinctes, distinctes en liminant les doublons doublons. La liste des noms de colonnes indique la liste des colonnes choisies spares par des virgules. choisies, virgules * signifie toutes les colonnes. liste des tables sur lesquelles on opre. condition logique de filtrage. gq g
IvMad, Mai, 2006-2008

IUT-R&T

IvMad, Mai, 2006-2008

26

Types des attributs en MySQL


Les proprits des objets peuvent tre de types trs diffrents : Nombre entier sign ou non (temprature, quantit, ge) Nombre virgule (prix, taille) g p Chane de caractres (nom, adresse, article de presse) Date et heure (date de naissance,, heure de parution) p numration (une couleur parmi une liste prdfinie) Ensemble (une ou des monnaies parmi une liste prdfinie) Il sagit de choisir le plus adapt vos besoins. Ces types requirent une plus ou moins grande quantit de donnes stocker. Par exemple, ne pas choisir un LONGTEXT pour stocker un prnom mais plutt un VARCHAR(40) !
IUT-R&T IvMad, Mai, 2006-2008

Types des attributs (II) entiers


nom TINYINT TINYINT UNSIGNED SMALLINT SMALLINT UNSIGNED MEDIUMINT MEDIUMINT UNSIGNED INT* INT* UNSIGNED BIGINT BIGINT UNSIGNED (*) : INTEGER est un synonyme de INT INT. UNSIGNED permet davoir un type non sign. ZEROFILL : remplissage des zros non significatifs significatifs.
27
IUT-R&T IvMad, Mai, 2006-2008

borne infrieure -128 0 -32768 32768 0 -8388608 8388608 0 -2147483648 0 -9223372036854775808 0

borne suprieure 127 255 32767 65535 8388607 16777215 2147483647 4294967295 9223372036854775807 18446744073709551615

28

Types des attributs (III) flottants


Les flottants dits aussi nombres rels sont des nombres virgule. Contrairement aux entiers, leur domaine nest pas continu du fait de l impossibilit limpossibilit de les reprsenter avec une prcision absolue absolue. Exemple du type FLOAT :
-1.175494351E-38 3 402823466E 38 -3.402823466E+38 nom 0 1.175494351E-38 1 175494351E 38 Domaine positif : borne infrieure borne suprieure 1.175494351E-38 3.402823466E+38 2.2250738585072014E 308 2 2250738585072014E-308 1.7976931348623157E+308 3.402823466E+3 8

Types des attributs (IV) chanes


nom
CHAR(M) CHAR(M) BINARY VARCHAR(M) VARCHAR(M) BINARY TINYTEXT TEXT MEDIUMTEXT LONGTEXT DECIMAL(M,D)*

longueur
Chane de taille fixe M, o 1<M<255, complte avec p des espaces si ncessaire. Idem, mais insensible la casse lors des tris et recherches. recherches Chane de taille variable, de taille maximum M, o 1<M<255, complt avec des espaces si ncessaire. Idem, mais insensible la casse lors des tris et recherches. g m m Longueur maximale de 255 caractres. Longueur maximale de 65535 caractres. Longueur maximale de 16777215 caractres. Longueur maximale de 4294967295 caractres. Simule un nombre flottant de D chiffres aprs la virgule et de M chiffres au maximum Chaque chiffre maximum. ainsi que la virgule et le signe moins (pas le plus) occupe un caractre.

domaine ngatif : borne infrieure borne suprieure -3.402823466E+38 -1.175494351E-38 -1 7976931348623157E+308 1.7976931348623157E+308 -2.2250738585072014E-308

FLOAT DOUBLE DOUBLE*

(*) : REAL est un synonyme de DOUBLE t d DOUBLE.


IUT-R&T IvMad, Mai, 2006-2008

(*) : NUMERIC est un synonyme de DECIMAL d DECIMAL.


29
IUT-R&T IvMad, Mai, 2006-2008

30

Types des attributs (V) chanes


Les types TINYTEXT, TEXT, MEDIUMTEXT et LONGTEXT peuvent tre judicieusement remplacs respectivement par d l TINYBLOB, BLOB, MEDIUMBLOB et LONGBLOB. Ils ne diffrent que par la sensibilit la casse qui caractrise la famille des BLOB. Alors que la f ill d t i l f ill d BLOB Al l famille des TEXT sont insensibles la casse lors des tris et recherches. Les BLOB peuvent tre utiliss pour stocker des donnes binaires. binaires Les VARCHAR L VARCHAR, TEXT et BLOB sont d t ill variable. Al t t de taille i bl Alors que les CHAR et DECIMAL sont de taille fixe.
IUT-R&T IvMad, Mai, 2006-2008

Types des attributs (VI) dates et heures


nom DATE DATETIME TIMESTAMP TIMESTAMP(M) TIME YEAR
nom TIMESTAMP(2) TIMESTAMP(4) TIMESTAMP(6) TIMESTAMP(8) ( ) TIMESTAMP(10) TIMESTAMP(12) TIMESTAMP(14) AA AAMM AAMMJJ AAAAMMJJ AAMMJJHHMM AAMMJJHHMMSS AAAAMMJJHHMMSS

description Date au format anglophone AAAA-MM-JJ. Date et heure au format anglophone AAAA-MM-JJ HH:MM:SS. Affiche la date et lheure sans sparateur : AAAAMMJJHHMMSS. Idem mais M vaut un entier pair entre 2 et 14 Affiche les M premiers 14. caractres de TIMESTAMP. Heure au format HH:MM:SS. Anne au format AAAA.
description

En cas dinsertion dun enregistrement en d insertion d un laissant vide un attribut de type TIMESTAMP, celui-ci prendra automatiquement la date et heure d li h de linsertion. C t i ti Contrairement U i ( t Unix (o le timestamp est le nombre de secondes coules depuis le 1er janvier 1970), en MySQL, il est une chane de format comme indiqu ci-contre.

31

IUT-R&T

IvMad, Mai, 2006-2008

32

Types des attributs (VII) dates et heures


nom DATE DATETIME TIMESTAMP TIMESTAMP(M) TIME YEAR description Date au format anglophone AAAA-MM-JJ. Date et heure au format anglophone AAAA-MM-JJ HH:MM:SS. Affiche la date et lheure sans sparateur : AAAAMMJJHHMMSS. Idem mais M vaut un entier pair entre 2 et 14 Affiche les M 14. premiers caractres de TIMESTAMP. Heure au format HH:MM:SS. Anne au format AAAA.

Types des attributs (VIII) numrations


Un attribut de type ENUM peut prendre une valeur parmi celles dfinies lors de la cration de la table plus la chane vide ainsi que NULL si la dfinition le permet. Ces valeurs sont exclusivement des chanes de caractres. Une numration peut contenir 65535 lments au maximum. Dfinition dun tel attribut : f d l b nom_attribut ENUM(valeur 1,valeur 2) nom_attribut ENUM( valeur 1 valeur 2 ) nom attribut ENUM(valeur 1,valeur 2) NULL A chaque valeur est associe un index allant de 0 N si N valeurs ont t q dfinies. Lindex 0 est associ la chane nulle, lindex 1 la premire valeur Lindex NULL est associ la valeur NULL. Si une slection (SELECT ou WHERE) est faite dans un contexte numrique, lindex est renvoy. Sinon, cest la valeur qui est retourne. Il peut tre dfini jusqu 65535 valeurs distinctes insensibles la casse.
33
IUT-R&T IvMad, Mai, 2006-2008

Le format de date AAAA-MM-JJ signifie : anne sur 4 chiffre, mois sur 2 f g f ff , chiffres et jour sur 2 chiffres avec pour sparateur le tiret. Le format dheure HH:MM:SS signifie : heure, minute et seconde chacune sur 2 chiffres, chiffres avec pour sparateur les deux points points. Dans le format tendu qui comprend la date et lheure, des deux dernires p p p p sont spares par un espace. Les formats de date sont assez permissifs car des variantes sont tolres. Il est possible de mettre nimporte quel caractre qui ne soit pas un chiffre en guise de sparateur, il est aussi possible de ne pas en mettre, comme cela est affich par TIMESTAMP mettre TIMESTAMP.
IUT-R&T IvMad, Mai, 2006-2008

34

Types des attributs (IX) ensembles


Un attribut de type SET peut prendre pour valeur la chane vide, NULL ou une chane contenant une liste de valeurs qui doivent tre dclares lors de la dfinition de lattribut lors de la cration de la relation. l attribut Par exemple, un attribut dclar comme ci : SET(voiture, moto, vlo) NOT NULL peut prendre les valeurs suivantes : ( h vide) (chane id ) voiture,moto vlo,voiture,moto vlo voiture moto et autres combinaisons de listes des trois valeurs dfinie plus haut. Un attribut dclar comme suit : SET(voiture, moto, vlo) NULL peut prendre, en plus ce celles prcdentes, la valeur NULL t d l ll d t l l NULL. Il ne peut tre dfini que 64 lments maximum maximum.
IUT-R&T IvMad, Mai, 2006-2008

Identificateurs
Les noms des bases, relations, attributs, index et alias sont constitus de caractres alphanumriques et des caractres _ et $ $. Un nom comporte au maximum 64 caractres. Comme les bases de donnes et les relations sont codes directement dans le systme de fichiers, la sensibilit la casse de MySQL dpend de celle du systme dexploitation sur lequel il repose. Sous Windows, la casse na pas dimportance ; alors que sous Unix, elle en a ! Le point . est un caractre rserv utilis comme sparateur entre le nom dune base et celui dune relation, entre le nom dune relation et celui dun attribut. Exemple : SELECT base1.table25.attribut5 FROM base1.table25

35

IUT-R&T

IvMad, Mai, 2006-2008

36

Sommaire

Les bases de donnes relationnelles & MySQL y Q


Ivan Madjarov
Mai, 2006, 2007, 2008, 2009

Introduction Concepts du modle relationnel Diagramme entits-associations Algbre relationnelle Les relations et syntaxe de MySQL Fonctions de MySQL Exemples

IUT-R&T

IvMad, Mai, 2006-2008

IUT-R&T

IvMad, Mai, 2006-2008

Index
Lors de la recherche dinformations dans une relation, MySQL parcours toute la (les) table(s) correspondante(s) dans nimporte quel ordre. D d i t l d Dans l cas d grand nombre d le dun d b de lignes cette recherche est trs longue. Pour y remdier, une optimisation possible et FORTEMENT P mdi timis ti ssibl t recommande, est dutiliser des indexes. La cration dun index associ un attribut ou un ensemble d un ordonn dattributs va crer une liste ordonne des valeurs de ces attributs et de ladresse de la ligne associe Cest sur l adresse associe. C est les valeurs de cette liste que se fera les recherches. Ainsi, dune recherche cot prohibitif, on passe une d une recherche sur un ensemble dj tri. On gagne donc normment en temps daccs aux informations. Bien que cela ralentisse les mises jour (insertion, suppression, ). On choisira de crer des indexes sur les attributs qui seront les plus sollicits par les recherches.
IUT-R&T IvMad, Mai, 2006-2008

Administration d' d'une b base d de donnes


IUT-R&T IvMad, Mai, 2006-2008

Index
Syntaxe : INDEX index (liste des attributs) Exemple, pour crer un index sur les 3 premiers caractres p p p seulement de lattribut nom :

Optimisation
Aprs la suppression de grandes parties dune table contenant des index, les index des tuples supprims sont conservs, rallongeant dautant les slections. Pour supprimer ces index obsoltes et vider les "trous", il faut l f loptimiser.

INDEX idx_nom (nom(3))

Exemple, pour crer un index sur le couple (nom,prnom) : p ,p p ,p )

Syntaxe :

INDEX idx_nom_prenom (nom,prnom)

OPTIMIZE TABLE Relation

Un index peut porter sur 15 colonnes maximum. Une table peut possder au maximum 16 indexes indexes. Un index peut avoir une taille dau maximum 256 octets et ne doit porter que sur des attributs NOT NULL NULL.
IUT-R&T IvMad, Mai, 2006-2008

Exemple :

OPTIMIZE TABLE Personnes;

IUT-R&T

IvMad, Mai, 2006-2008

Supprimer une relation


La commande DROP TABLE prend en paramtre le nom de la table supprimer. Toutes les donnes quelle contient sont supprimes et sa dfi iti aussi. i t dfinition i Syntaxe : DROP TABLE relation Exemple : DROP TABLE Personnes; Si une relation a t mal dfinie au dpart, plutt que de la supprimer et de la reconstruire comme il faut, on peut la modifier trs simplement. Cela vite de perdre les donnes quelle contient.
IUT-R&T IvMad, Mai, 2006-2008

Modifier une relation


La cration dune relation par CREATE TABLE ne rend pas dfinitives les spcifications. Il est possible de modifier la dfinition par l suite par l commande ALTER TABLE. df la la d L ER BLE Les modifications possibles apportes sont : ajouter/supprimer un attribut crer/supprimer une cl primaire j ajouter une contrainte dunicit (interdire les doublons) changer la valeur par dfaut dun attribut changer totalement la dfinition dun attribut g f changer le nom de la relation ajouter/supprimer un index

IUT-R&T

IvMad, Mai, 2006-2008

Ajouter un attribut
Syntaxe : ALTER TABLE relation ADD dfi iti dfinition [ FIRST | AFTER attribut ] tt ib t Pour ajouter l tt ib t f P j t lattribut fax qui est une chane d caractres i t h de t reprsentant un nombre de 10 chiffres: ALTER TABLE Personnes ADD fax DECIMAL(10 0); DECIMAL(10,0); L emplacement L'emplacement du nouvel attribut peut tre gr par les options FIRST et AFTER attribut. Pour le mettre en tte de la liste des attributs de la relation, il faut ajouter loption FIRST en fin de commande.

Supprimer un attribut
Attention, supprimer un attribut implique la suppression des valeurs qui se trouvent dans la colonne qui correspond cet attribut. Syntaxe : S t ALTER TABLE relation DROP attribute; Exemple : ALTER TABLE Personnes DROP prnom; prnom ;

tlphone.

p p j Pour le mettre aprs lattribut tlphone, il faut ajouter AFTER

A l'absence de ces options l'ajout se fait la fin de liste.


IUT-R&T IvMad, Mai, 2006-2008

IUT-R&T

IvMad, Mai, 2006-2008

10

Supprimer un attribut
La suppression dun attribut peut incidemment provoquer des erreurs sur les contraintes cl primaire (PRIMARY KEY) et unique (UNIQUE). (UNIQUE)
CREATE TABLE Personne ( id INT PRIMARY KEY AUTO_INCREMENT, nom VARCHAR(40), prnom VARCHAR(40), adresse TINYTEXT TINYTEXT, tlphone DECIMAL(10,0), UNIQUE(nom,prnom) ); ALTER TABLE Personnes DROP prnom;

Crer une cl primaire


La cration dune cl primaire nest possible quen labsence de cl primaire dans la relation. Syntaxe : ALTER TABLE relation ADD PRIMARY KEY (attribut) Exemple : ALTER TABLE Personnes ADD PRIMARY KEY (nom,prnom);
Refus doprer la suppression, car cela contredirait la contrainte dunicit qui resterait sur l attribut lattribut nom.

nom Dupond Martin Martin M ti


IUT-R&T

prnom Marc Marc Pierre Pi

nom Dupond Martin Martin


IvMad, Mai, 2006-2008

11

IUT-R&T

IvMad, Mai, 2006-2008

12

Supprimer une cl primaire


Comme une cl primaire est unique, il ny a aucune ambigut lors de la suppression. Syntaxe : ALTER TABLE relation DROP PRIMARY KEY Exemple : ALTER TABLE Personnes ADD PRIMARY KEY; Sil ny a aucune cl primaire lorsque cette commande est excute, aucun message derreur ne sera gnr, le commande sera g g , simplement ignore.

Ajout dune contrainte dunicit


Il est possible (facultatif) de donner un nom la contrainte. Cette contrainte peut sappliquer plusieurs attributs. Si l valeurs dj prsentes d les l t dans l relation sont en contradiction la l ti t t di ti avec cette nouvelle contrainte, alors cette dernire ne sera pas appl que applique et une erreur sera gnre. Syntaxe : y ALTER TABLE relation ADD UNIQUE [contrainte] (attributs) Exemple pour interdire tout doublon sur lattribut fax de la relation Personnes : ALTER TABLE Personnes ADD UNIQUE u_fax (fax) Autre exemple fi if : A l fictif ALTER TABLE Moto ADD UNIQUE u_coul_vitre (couleur,vitre)

IUT-R&T

IvMad, Mai, 2006-2008

13

IUT-R&T

IvMad, Mai, 2006-2008

14

Changer la valeur par dfaut dun attribut


Pour changer ou supprimer la valeur par dfaut dun attribut. (les familles BLOB et TEXT nacceptent pas de valeur par dfaut). Syntaxe : ALTER TABLE relation l ti ALTER attribut { SET DEFAULT valeur | DROP DEFAULT } Changer sa valeur par dfaut : ALTER TABLE Personnes ALTER tlphone SET DEFAULT tlphone 999999999 Supprimer sa valeur par dfaut : ALTER TABLE Personnes ALTER tlphone DROP DEFAULT Le changement ou la suppression naffecte pas les enregistrements qui ont eu recours cette valeur lors de leur insertion. i l l d l i i
IUT-R&T IvMad, Mai, 2006-2008

Changer la dfinition dun attribut


Pour changer la dfinition de lattribut sans le renommer : ALTER TABLE relation MODIFY attribut definition_relative Exemple 1 :

ALTER TABLE Personnes MODIFY f VARCHAR(14) P fax

Pour changer sa dfinition en l renommant : P h dfi iti le t ALTER TABLE relation CHANGE attribut definition_absolue Exemple 2 : ALTER TABLE Personnes CHANGE fax num fax num_fax VARCHAR(14) Attention, si le nouveau type appliqu lattribut est incompatible avec les valeurs des enregistrements dj prsents dans la relation, alors elles risques dtres modifies ou remises zro !
15
IUT-R&T IvMad, Mai, 2006-2008

16

Changer le nom de la relation


Changer le nom d'une table : Syntaxe : ALTER TABLE relation RENAME nouveau_nom Exemple : ALTER TABLE P Personnes RENAME C Carnet t Cela consiste renommer la table, et donc le fichier qui la stocke. table stocke

Traitement des index


Les index sont utiliss pour trouver des lignes de rsultat avec une valeur spcifique, trs rapidement. Sans index, MySQL doit lire successivement toutes les lignes, et chaque fois, faire les comparaisons ncessaires pour extraire un rsultat pertinent. i l i

CREATE TABLE personne ( id INT NOT NULL, nom CHAR(30) NOT NULL, prenom CHAR(30) NOT NULL, PRIMARY KEY (id), INDEX nom_index (nom,prenom));

Un index est reprsent par une table une seule colonne o p p seul les numros des enregistrements correspondants un tri par ordre alphabtique sont prsents. Ainsi la recherche d'une clause WHERE se fait dans un espace ordonn. d' l E E f d d
IUT-R&T IvMad, Mai, 2006-2008

17

IUT-R&T

IvMad, Mai, 2006-2008

18

Ajouter un index
Une table ne peut comporter que 32 indexes. Et un index ne peut porter que sur 16 attributs maximum la fois. Syntaxe : ALTER TABLE relation ADD INDEX i d l i index (attributs) ib Exemple : E l ALTER TABLE Personnes ADD INDEX nom complet (nom,prnom); nom_comple Dans cet exemple on a ajout la relation Personnes un index que exemple, lon nomme nom_complet et qui sapplique aux deux attributs nom et prnom. Ainsi, les recherches et les tris sur les attributs nom et prnom seront grandement amliors. C d li Car un i d index apporte l les changements sous-jacents permettant doptimiser les performances du serveur de base de donnes donnes.
IUT-R&T IvMad, Mai, 2006-2008

Supprimer un index
Syntaxe : ALTER TABLE relation DROP INDEX index Exemple : ALTER TABLE P Personnes DROP INDEX nom_complet l Cette C tt exemple permet de supprimer lindex nomm nom_complet d l td i li d l t de la relation Personnes.

19

IUT-R&T

IvMad, Mai, 2006-2008

20

Les fonctions MySQL


Reportez-vous au manuel MySQL pour la liste dtaille de toutes les fonctions disponibles dans votre version du serveur MySQL. Ces f C fonctions sont ajouter aux requtes dans un SELECT ti t j t t d SELECT, WHERE, GROUP BY ou encore HAVING.

Les fonctions MySQL MySQL Q


IUT-R&T IvMad, Mai, 2006-2008

Les oprations suivantes sont disponibles : les parenthses ( ) ), les oprateurs arithmtiques (+, -, *, /, %), les oprateurs binaires (<, << , >, >>, |, &), b na res ( , , , les oprateurs logiques qui retournent 0 (faux) ou 1 (vrai) (AND, OR, NOT, BETWEEN, IN), les oprateurs relationnels (<, <=, =, >, >=, <>). Les oprateurs et les fonctions peuvent tres composs entre eux pour donner des expressions trs complexes.

21

IUT-R&T

IvMad, Mai, 2006-2008

22

Exemples
SELECT nom Liste du nom des produits dont le prix est infrieur ou gale 100.5 EUR. FROM produits WHERE prix < 100 5 <= 100.5 SELECT nom,prnom Liste des nom et prnom des lves dont lge est compris entre 12 et 16 FROM lves WHERE age BETWEEN 12 AND 16 ans. SELECT modle Liste des modles de voiture dont la couleur est dans la liste : FROM voitures it WHERE couleur IN (rouge, blanc, noir) rouge, blanc, noir. SELECT modle FROM voitures WHERE couleur NOT IN (rose, violet) Liste des modles de voiture dont la couleur nest pas dans la liste : rose, violet. l

Fonctions de comparaison de chanes


Le mot cl LIKE permet de comparer deux chanes. Le caractre % est spcial et signifie : 0 ou plusieurs caractres. Le caractre _ est spcial et signifie : 1 seul caractre. Lexemple permet de rechercher tous les clients dont le prnom L l d h h l li d l commence par Jean, cela peut tre Jean-Pierre, etc : SELECT nom FROM clients WHERE prnom LIKE Jean% Pour utiliser les caractres spciaux ci-dessus en leur enlevant leur fonction spciale, il faut les faire prcder de lantislash : \. p , p Pour lister les produit dont le code commence par la chane _XE : p p SELECT * FROM produit WHERE code LIKE \_XE%
IUT-R&T IvMad, Mai, 2006-2008

IUT-R&T

IvMad, Mai, 2006-2008

23

24

Fonctions mathmatiques
Fonction ABS(x) SIGN(x) FLOOR(x) CEILING(x) ROUND(x) EXP(x), LOG(x), SIN(x), COS(x), TAN(x), PI() POW(x,y) POW(x y) RAND(), RAND(x) TRUNCATE(x,y) SELECT nom FROM filiales WHERE SIGN(ca) = -1 ORDER BY RAND()
IUT-R&T

Fonctions de chanes
Fonction TRIM(x) LOWER(x) U UPPER(x) ( ) LONGUEUR(x) ( ,y) LOCATE(x,y) CONCAT(x,y,) Description Supprime les espaces de dbut et de fin de chane chane. Converti en minuscules. Co e t en ajuscu es Converti e majuscules. Retourne la taille de la chane. Retourne la position de la dernire occurrence de x p dans y. Retourne 0 si x nest pas trouv dans y. Concatne ses arguments. Retourne les n derniers caractres de s en commenant partir de la position i. Retourne une reprsentation phontique de x x.

Description Valeur absolue de X. Signe de X, retourne -1, 0 ou 1. Arrondi lentier infrieur. Arrondi lentier suprieur. Arrondi lentier le plus proche. Bon, l cest les fonctions de maths de base Retourne X la puissance Y Y. Retourne un nombre alatoire entre 0 et 1.0 Si x est spcifi entre 0 et X spcifi, Tronque le nombre X la Yme dcimale. Cet C t exemple affiche d l ffi h dans un ordre d alatoire le nom des filiales dont le chiffre daffaire est ngatif. A noter que : SIGN(ca) = -1 ca < 0
IvMad, Mai, 2006-2008

SUBSTRING(s,i,n) SOUNDEX(x)

SELECT UPPER(nom) FROM clients WHERE SOUNDEX(nom) = SOUNDEX(Dupond) j On affiche en majuscules le nom de tous les clients dont le nom ressemble Dupond.
25
IUT-R&T IvMad, Mai, 2006-2008

26

Fonctions de dates et heures


Fonction () NOW() TO_DAYS(x) DAYOFWEEK(x) Description Retourne la date et heure du jour. j Conversion de la date X en nombre de jours depuis le 1er janvier 1970. Retourne le jour de la semaine de la date x sous la forme dun index qui commence 1 ( (1=dimanche, 2=lundi) , ) Retourne le jour du mois (entre 1 et 31). Retourne le jour de lanne ( j (entre 1 et 366). ) Retournent respectivement les secondes, minutes, heures, mois, anne et semaine de la date. date

Fonctions utiliser dans les GROUP BY


Fonction Description COUNT([DISTINCT]x,y,) Dcompte des tuples du rsultat par projection sur l ou l attributs spcifis ( t le les tt ib t ifi (ou tous avec *). Loption DISTINCT limine les doublons. MIN(x), MAX(x) AVG(x) MIN(x) MAX(x), AVG(x), SUM(x) Calculent respectivement le minimum le minimum, maximum, la moyenne et la somme des valeurs de lattribut X. Ici on affiche le palmars des models de voitures qui proposent un choix de p plus de 10 couleurs. Affichage de tous les clients. g

DAYOFMONTH(x) ( ) DAYOFYEAR(x) SECOND(x), MINUTE(x), HOUR(x), MONTH(x), YEAR(x), YEAR(x) WEEK(x)

SELECT DISTINCT model FROM voiture GROUP BY model HAVING COUNT(couleur) > 10 SELECT COUNT(*) () FROM client

SELECT titre FROM article ti l WHERE (TO_DAYS(NOW()) TO_DAYS(parution)) < 30 Cet exemple affiche le titre des articles parus il y a moins de 30 jours jours.
IUT-R&T IvMad, Mai, 2006-2008

SELECT DISTINCT produit.nom, SUM(vente.qt * p p , ( q produit.prix) AS total p ) FROM produit, vente WHERE produit.id = vente.produit_idx Classement des produits GROUP BY produit.nom produit nom par la valeur totale vendue vendue. ORDER BY total
27
IUT-R&T IvMad, Mai, 2006-2008

28

Expression des jointures


Une jointure est un produit cartsien de deux tables. On appelle quijointure une jointure dont la qualification est une galit entre deux colonnes. En SQL, l'expression d'une jointure se fait en prcisant le nom des colonnes des tables sur lesquelles on fait la jointure, en dsignant les colonnes des diffrentes tables en crivant le nom de la table, suivie d'un point puis du nom de la colonne. La clause WHERE permet de prciser la qualification de la jointure. j

Expression des jointures


Soit les deux tables suivantes Occasions Socits L'affichage des pays d'origine des voitures par marque modle se fait par l'instruction :

SELECT Occaz.Marque, Occaz.Modele, Societe.Pays FROM OCCAZ,SOCIETE WHERE Occaz.Marque = Societe.Nom

IUT-R&T

IvMad, Mai, 2006-2008

29

IUT-R&T

IvMad, Mai, 2006-2008

30

Jointure volue
En dbut de ce document, on a vu la jointure suivante : SELECT Personnes.nom, nblivres FROM Personnes Bibliothque Personnes, WHERE Personnes.nom = Bibliothque.nom qu qui permet de concatner deux relation en prenant un attr but relat on attribut comme pivot (nom). Il est possible de concatner deux relation sur plusieurs attributs la fois, ou mme de concatner X relation sur Y attributs. Ainsi la jointure prcdente peut scrire aussi : Ai i l j i d i i SELECT Personnes.nom, nblivres FROM P Personnes INNER JOIN Bibli th Bibliothque USING (nom) ce qui signifie que les deux relations Personnes et Bibliothque sont concatne (INNER JOIN) en utilisant (USING) lattribut nom.

Jointure volue
La syntaxe USING permet de lister les attributs servant de pivot. Ces attributs doivent porter le mme nom dans chacune des tables devant tre concatnes. Si les attributs pivots ne portent pas le mme nom, il faut utiliser la syntaxe ON. Ainsi la jointure prcdente peut scrire aussi : SELECT Personnes.nom nblivres nom, FROM Personnes INNER JOIN Bibliothque ON Personnes.nom = Bibliothque.nom q La mthode INNER JOIN ninclus les enregistrements de la premire table t bl que sils ont une correspondance dans la seconde t bl il t d d l d table.
Personnes
Nom Martin Tartan Dupond Prnom Jean Pion Jacques

Bibliothque
Nom Martine Tartan Dupond Nblivres 5 10 3

Rsultat de la jointure
Nom Tartan Dupond Nblivres 10 3

IUT-R&T

IvMad, Mai, 2006-2008

31

IUT-R&T

IvMad, Mai, 2006-2008

32

Jointure volue
Pour remdier aux limites de INNER JOIN, il existe la syntaxe LEFT JOIN qui inclus tous les enregistrements de la premire table mme sils n ont nont pas de correspondance dans la seconde table. Dans ce cas prcis, lattribut non renseign prendra la valeur NULL. L encore, l ON peut avantageusement tre remplac par le USING. le l l G La jointure devient : SELECT Personnes.nom, nblivres FROM Personnes LEFT JOIN Bibliothque q ON Personnes.nom = Bibliothque.nom
Personnes
Nom Martin Tartan Dupond Prnom Jean Pion Jacques

Les oprations ensemblistes en SQL


Le langage SQL permet de raliser sur un groupe de deux tables les trois oprations de base de la thorie des ensembles : l'union l'intersection la diffrence La requte union permet de mettre deux tables bout bout en leur faisant jouer des rles identiques et en liminant identiques, systmatiquement les doublons. Cela la fait quasi irremplaable. irremplaable L'intersection et la diffrence sont en fait des requtes multi-tables particulires. multi tables particulires

Bibliothque
Nom Martine Tartan Dupond Nblivres 5 10 3

Rsultat de la jointure
Nom Martin Tartan Dupond Nblivres NULL 10 3

IUT-R&T

IvMad, Mai, 2006-2008

33

IUT-R&T

IvMad, Mai, 2006-2008

34

Les oprations ensemblistes en SQL


L'union de deux tables est une table contenant chaque ligne de la premire table et chaque ligne de la seconde table. Les lignes communes aux deux tables ne sont conserves g qu'en un seul exemplaire. Ainsi l'opration d'union limine les doublons. Les champs que l'on fait correspondre dans les deux tables n'ont pas besoin de porter les mmes noms ni p p d'tre dans le mme ordre, ni d'avoir le mme type de donne.

Les oprations ensemblistes en SQL


SELECT nom, prnom FROM Table1 UNION SELECT nom, prnom FROM Table2;
Slectionner les noms commenants par un "D":

SELECT nom, prnom FROM Table1 WHERE nom like "D%" D% UNION SELECT nom prnom FROM Table2 nom, WHERE nom like "D%";

IUT-R&T

IvMad, Mai, 2006-2008

35

IUT-R&T

IvMad, Mai, 2006-2008

36

Les oprations ensemblistes en SQL


L'intersection de deux tables est une feuille de donnes (ou une table) contenant seulement les lignes communes aux deux tables.

Les oprations ensemblistes en SQL


La diffrence de deux tables est une feuille de donnes (ou une table) contenant les enregistrements de la premire table qu'on ne retrouve pas dans la seconde.

SELECT nom, prnom FROM Table1 p INTERSECT SELECT nom, prnom FROM Table2;

SELECT nom, prnom FROM Table1 EXCEPT SELECT nom, prnom FROM Table2;

IUT-R&T

IvMad, Mai, 2006-2008

37

IUT-R&T

IvMad, Mai, 2006-2008

38

Les oprations ensemblistes en SQL


Le produit cartsien de deux tables est une feuille de donnes (ou une table) obtenue en associant tous les enregistrements de la seconde table chacun des enregistrements de la premire. Le code SQL correspondant s'crit : Q p

Le concept SGBD

SELECT Table1.nom, Table2.prnom Table1 nom Table2 prnom FROM Table1, Table2;

IUT-R&T

IvMad, Mai, 2006-2008

39

IUT-R&T

IvMad, Mai, 2006-2008

40

Prsentation
Loutil phpMyAdmin est dvelopp en PHP et offre une interface intuitive pour ladministration des base de donnes. Cet outil permet de : crer de nouvelles bases pp crer/modifier/supprimer des tables afficher/ajouter/modifier/supprimer des tuples dans des tables effectuer des sauvegarde de la structure et/ou des donnes effectuer nimporte quelle requte es pr ges ut sateurs grer les privilges des utilisateurs Les exemples sappliquent la version 2 2 6 s appliquent 2.2.6
IUT-R&T IvMad, Mai, 2006-2008

Administration b avec l til web loutil phpMyAdmin


41

IUT-R&T

IvMad, Mai, 2006-2008

42

Prsentation

Cration/slection dune base de donnes


Avant de manipuler des donnes, il faut crer une ou des bases de donnes.

ETAPE 2 : slectionnez le nom de la base manipuler (le nombre de tables de la base apparat p ) entre parenthses)

ETAPE 1 : crivez le nom de la base de donne crer. q Puis cliquez sur Crer

Et aussi.. choix de la langue de linterface de phpMyAdmin i h i d l l d li t f d h M Ad i

IUT-R&T

IvMad, Mai, 2006-2008

43

IUT-R&T

IvMad, Mai, 2006-2008

44

Gestion de la base de donnes

Gestion de la base de donnes


Accs un formulaire dtaill pour effectuer une requte

Choix dune table grer en particulier crire une requte MySQL excuter Actions sur les tables : afficher leur contenu intgral, faire une slection sur critres, ajouter des donnes, grer ses proprit d i intrinsques, supprimer, vider.

Option permettant de transmettre le schma sous la forme dun fichier Affichage du schma (structure et/ou donnes) des tables slectionnes de la base Accs un formulaire dtaill dajout dune table dans la base Supprimer la base
45
IUT-R&T IvMad, Mai, 2006-2008

Excuter une requte MySQL contenue dans un fichier


IvMad, Mai, 2006-2008

IUT-R&T

46

Affichage dune table


Rappel de la requte Rappel de la base, de la bl l table et du serveur d

Insertion/modification dun enregistrement


Nom du champ Type Choix dune fonction appliquer la valeur saisie Valeur saisir

Colonnes = noms des attributs de la table bl Liste des enregistrements de la table par pages de X g lignes Permet de naviguer dans les pages de rsultats

Les champs et leurs types p yp sont dfinis lors de la cration de la table : tous les champs sont pas forcment obligatoires Les formulaires dinsertion et de modification sont similaires.

Supprimer un enregistrement Accs au formulaire de modification dun enregistrement Insertion dun nouvel enregistrement it t
IUT-R&T

Afficher par page de X lignes


IvMad, Mai, 2006-2008

47

IUT-R&T

IvMad, Mai, 2006-2008

48

Gestion dune table


Proprits des attributs de la table Quelques actions rapides : affichage, slection, insertion d un enregistrement, vidage dun enregistrement vidage, suppression

Gestion dune table


Affichage de la version imprimable de la page

Quelques actions sur les tt ib t l attributs : modifier, supprimer ; plus les contraintes : cl primaire et unique ; et y mettre un index

crire une requte excuter ou spcifier un fichier en contenant une ou plusieurs Ajouter X champs dans la table Aj h d l bl une position particulire Rordonner les donnes de table en fonction dun attribut Accs au formulaire dinsertion de donnes dans la table partir dun fichier d d l t bl ti d fi hi
IUT-R&T IvMad, Mai, 2006-2008

Crer une nouvelle cl sur X attributs


IUT-R&T

Modifier ou supprimer plusieurs attributs en mme temps


IvMad, Mai, 2006-2008

Quelques statistiques et infos


49

50

Gestion dune table


Permet dafficher le schma (structure et/ou donnes) de la table. Le schma dune table est lensemble d l structure et l bl de la t t t des donnes dune table. La structure est compose de la dfinition des proprits des attributs et des cls. cls Le rsultat de sortie structure et/ou donnes est constitu des requtes MySQL de cration de la table et dinsertion des enregistrements. Le format CSV est un fichier texte dont chaque ligne reprsente un enregistrement. Le rsultat peut tre transmis sous la forme dun fichier (qui lui-mme peut tre t compress). )
IUT-R&T IvMad, Mai, 2006-2008

Gestion dune table


Dplacer la table vers une autre base avec changement de nom possible dans la foule Changer le nom de la table La copier (avec ou sans les donnes) vers une autre base avec changement de nom possible

Quelques oprations de maintenance : vrification, i ifi i analyse, rparation, optimisation Lui associer un commentaire Changer le format de la table Ch l f t d l t bl La supprimer
51
IUT-R&T

Recharger la table en mmoire du serveur g


IvMad, Mai, 2006-2008

52

Insertion des donnes dans une table


On accde cet cran var le lien Insrer des donnes provenant d'un d un fichier texte dans la table de la page de gestion de la table. Permet dinsrer des enregistrements dans une table p partir dun fichier de donnes au format CSV.
53

Cration dune cl
On accde cet cran var le lien C une clef Crer l f sur X colonne(s de la page de gestion de la table. Permet de crer une cl sur une ou plusieurs l i colonnes.

Il faut nommer la cl, en spcifier le type, et les attributs sur lesquels elle sapplique. On peut rajouter une autre colonne cette cl avant de valider lajout de la cl.

On peut changer les valeurs par dfaut des sparateurs standards du CSV.

IUT-R&T

IvMad, Mai, 2006-2008

IUT-R&T

IvMad, Mai, 2006-2008

54

Sommaire

Les bases de donnes relationnelles & MySQL M SQL (Partie III)


Ivan Madjarov
Mai, 2006, 2007, 2008, 2009

Introduction Concepts du modle relationnel Diagramme entits-associations Algbre relationnelle Les relations et syntaxe de MySQL Fonctions de MySQL Exemples

IUT-R&T

IvMad, Mai, 2006-2008

IUT-R&T

IvMad, Mai, 2006-2008

Exemple (I)
On nous demande de construire la version lectronique dun journal papier. Nous devrons crer une table pour stocker les articles de presse. Les informations relatives un article sont les suivantes : nformat ons relat ves art cle su vantes

Exemple (II)
Cette dfinition apporte certaines limitations : le nombre et le nom des rubriques sont fixs la cration de la relation. Pour cela on va crer une nouvelle relation : la table rubrique. La relation article contiendra le nom de la rubrique et une rfrence vers l nom d cette rubrique. Ainsi, l f le de lors d dune slection, il faudra faire une jointure entre les deux tables article rubrique article et rubrique pour connatre le nom de la rubrique associe un article.
CREATE TABLE article ( article_nom VARCHAR(20), rubrique_idx INT ); CREATE TABLE rubrique ( id INT UNSIGNED PRIMARY KEY, label l b l VARCHAR(40) );

titre, texte, date de parution, auteur, rubrique.

CREATE DATABASE journal Un i U titre ayant une l longueur raisonnable, il sera d i bl de type VARCHAR(80), le texte pourra tre trs grand : TEXT (65535 caractres !), la date sera au format DATE (YYYY-MM-JJ). ), ( ) Lauteur pourra tre cod sur un VARCHAR(80). Et la rubrique pourrait tre un ENUM.
CREATE TABLE article ( id INT UNSIGNED PRIMARY KEY, titre VARCHAR(80), texte TEXT, parution DATE DATE, auteur VARCHAR(80), rubrique ENUM(conomie,sports,international,politique,culture) )
IUT-R&T IvMad, Mai, 2006-2008

SELECT * FROM article,rubrique WHERE article.rubrique_idx=rubrique.id; E E l b d b d


3
IUT-R&T IvMad, Mai, 2006-2008

Crer une relation


La cration dune relation (table) utilise la syntaxe suivante : CREATE [TEMPORARY] TABLE nom_relation [IF NOT EXISTS] ( nom_attribut TYPE_ATTRIBUT [OPTIONS] ); TEMPORARY donne pour dure de vie la table (par p (p exemple: le temps de la connexion de lutilisateur au serveur, aprs, elle sera dtruite). En labsence de cette , p , ) option, la table sera permanente moins dtre dtruite p par la commande DROP TABLE. Loption IF NOT EXIST permet de ne crer cette table q que si une table de mme nom nexiste pas encore. p A lintrieur des parenthses, il sera list tous les attributs, cls et indexes de la table.
IUT-R&T IvMad, Mai, 2006-2008

Cl primaire (I)
Nous souhaitons pouvoir associer chacun des enregistrements de la relation un identifiant numrique unique. P i Pour cela on rajoute un nouvelle attribut d t l j t ll tt ib t de type entier. Un U carnet d d ss ne d t dadresse devrait pas excder plusieurs it s x d l si s centaines de personnes. Ainsi un attribut de type SMALLINT UNSIGNED devrait faire laffaire l affaire. Cet attribut devra ne jamais tre vide, il faut donc prciser l option loption NOT NULL pour le forcer prendre une valeur de son domaine. Il devra aussi tre unique, cest--dire que deux c est dire enregistrements ne pourront pas avoir une valeur identique de id. On utilisera loption PRIMARY KEY. Et pour finir, il faut signifier que cette valeur doit sincrmenter automatiquement chaque insertion dun enregistrement grce loption AUTO_INCREMENT.
IUT-R&T IvMad, Mai, 2006-2008

Cl primaire (II)
Notre exemple devient : CREATE TABLE Personne ( id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, nom VARCHAR(40), 'prnom' VARCHAR(40) ' ' VARCHAR(40), adresse TINYTEXT, 'tl h tlphone DECIMAL(10 0) DECIMAL(10,0) ) Cet identifiant numrique unique auto incrmental sappelle une auto-incrmental, s appelle "cl primaire ". La numrotation des cls primaires, dbute 1 et pas 0. primaires 0
Personnes Id 1
IUT-R&T

Cl primaire (III)
Notre cl primaire peut tre associe simultanment plusieurs attributs mais selon une syntaxe diffrente. Si au lieu de crer un identifiant numrique unique, on souhaite simplement interdire davoir des doublon sur le couple (nom,prnom) et d l m m t den i t di l nullit, on va crer interdire la llit une cl primaire sur ce couple. La connaissance des seuls nom et prnom suffit identifier sans ambigut un et un seul enregistrement. CREATE TABLE Personne ( nom VARCHAR(40), ( ), prnom VARCHAR(40), adresse TINYTEXT, tlphone DECIMAL(10,0), PRIMARY KEY (nom,prnom) );
7
IUT-R&T IvMad, Mai, 2006-2008

nom Dupond

prnom Marc

adresse 8 rue de loctet l octet


IvMad, Mai, 2006-2008

tlphone 0123456789

Attribut non nul


Considrons que lon souhaite que certains attributs aient obligatoirement une valeur. On utilisera loption NOT NULL. Dans ce cas, si malgr tout, aucune valeur nest fournie, la valeur D i l t t l tf i l l par dfaut sera automatiquement affecte cet attribut dans l enreg strement. lenregistrement. Si aucune valeur par dfaut nest dclare : la chane vide sera affecte lattribut sil est de type yp chane de caractres la valeur zro 0 sil est de type nombre la date nulle 0000-00-00 et/ou lheure nulle 00:00:00 sil est de type date, heure ou date et heure. Exemple :

Valeur par dfaut


Pour donner une valeur par dfaut un attribut, on utilise loption DEFAULT. Lors d l j t d L de lajout dun enregistrement cette valeur sera affecte i t t tt l ff t lattribut si aucune valeur nest donne. Exemple : tlphone DECIMAL(10 0) DEFAULT 0123456789 tlphone DECIMAL(10,0) 0123456789 Les attributs de type chane de caractres de la famille TEXT et attr buts cha ne fam lle BLOB ne peuvent pas avoir de valeur par dfaut.

adresse TINYTEXT NOT NULL

Et on utilisera l option NULL si on autorise l absence de valeur loption labsence valeur.


IUT-R&T IvMad, Mai, 2006-2008

IUT-R&T

IvMad, Mai, 2006-2008

10

Attribut sans doublon (I)


Pour interdire lapparition de doublon pour un attribut, on utilise loption UNIQUE. Syntaxe : UNIQUE [nomdelacontrainte](liste des attributs) Exemple, pour interdire tout doublon de lattribut nom : UNIQUE(nom) Pour interdire les doublons sur lattribut nom mais les interdire l attribut aussi sur prnom, tout en les laissant indpendants : UNIQUE(nom), UNIQUE(prnom) Q ( Q (p
nom
Dupond Dupont Martin M i
IUT-R&T

Attribut sans doublon (II)


Pour interdire tout doublon un ensemble dattributs (tuple), on passe en paramtre UNIQUE la liste des attributs concerns. Pour interdit tout doublon du couple (nom, prnom) :

UNIQUE(nom, prnom ) UNIQUE(nom prnom)


prnom
Marc Pierre erre Marc Pierre Marc

nom
Dupond Dupont Martin Martin Martin

enregistrement interdit car le p ( ) couple (Martin, Marc) est un doublon du couple (nom,prnom)

prnom
Marc Pierre Marc M
IvMad, Mai, 2006-2008

enregistrement interdit car Marc est un doublon dans la colonne prnom


11
IUT-R&T IvMad, Mai, 2006-2008

12

Ajouter un enregistrement (I)


Ajouter un enregistrement une relation c'est ajouter une ligne la table. Pour cela pour chacun des attributs il faudra en prciser la valeur cela, attributs, valeur. Si certaines valeurs sont omises, alors les valeurs par dfauts dfinie de la cration de la relation seront utilises. Si on ne dispose pas non plus de ces valeurs par dfaut, alors MySQL mettra 0 pour un nombre, pour une chane, 0000-00-00 pour une date 00:00:00 pour une heure 00000000000000 pour un date, heure, timestamp (si le champs poste la contrainte NOT NULL). Dans le cas o lattribut porte la contrainte NULL (par dfaut) alors la valeur par df t d l tt ib t s l dfaut de lattribut sera l s i la suivante : NULL t NULL. Syntaxe dune "insertion tendue" : INSERT INTO relation(liste des attributs) VALUES(liste des valeurs) p Exemple : INSERT INTO Personnes(nom,prnom) VALUES(Martin,Jean) REPLACE est un synonyme de INSERT, mais sans doublon. Pratique pour respecter l contraintes d i it (UNIQUE PRIMARY KEY) t les t i t dunicit (UNIQUE, KEY).
IUT-R&T IvMad, Mai, 2006-2008

Ajouter un enregistrement (II)


Une syntaxe plus courte mais plus ambigu permet dinsrer un enregistrement dans une table. Elle consiste omettre la liste des noms dattribut la suite du nom de la relation. Cela impose que la d attr but su te relat on. mpose liste des valeurs suivant le mot cl VALUES soit exactement celle dfinie dans la table et quelles soient dans lordre dfini dans la dfinition de la table ; sinon des erreurs se produiront produiront.
Syntaxe dune "insertion standard" : INSERT INTO relation VALUES(liste exhaustive et ordonne des valeurs); Exemple : CREATE TABLE Ballon ( taille t ill INT NOT NULL NULL, couleur VARCHAR(40) ); INSERT INTO Ballon VALUES(20, rouge); ok INSERT INTO Ballon VALUES(rouge, 20); faux INSERT INTO B ll VALUES( Ballon VALUES(rouge) ; f ) faux
IUT-R&T IvMad, Mai, 2006-2008

13

14

Ajouter un enregistrement (III)


Dans le cas o lon souhaite procder linsertion de plusieurs enregistrements les uns la suite des autres, il y a deux mthodes: - faire une boucle qui envoie autant dINSERT que ncessaire au serveur - faire une insertion dite "complte" complte Syntaxe dune "insertion complte" : INSERT INTO relation VALUES (liste des valeurs) (liste ), dautres valeurs), (liste dencore dautres valeurs), Exemple : E l INSERT INTO Ballon VALUES (20, rouge), (35, vert fluo), (17, orange), (28, crulen) ( , g ( , Cet exemple est quivalent aux requtes suivantes : INSERT INTO Ballon VALUES(20 rouge) VALUES(20, rouge INSERT INTO Ballon VALUES(35, vert fluo) INSERT INTO Ballon VALUES(17, orange) INSERT INTO Ballon VALUES(28 crulen) VALUES(28, crulen
IUT-R&T IvMad, Mai, 2006-2008

Ajouter un enregistrement (IV)


Linsertion complte permet dinsrer plusieurs enregistrements dans une mme table. Une insertion complte ne permet pas dinsrer des donnes dans plusieurs tables diffrentes. Linsertion complte et linsertion tendue peuvent tre l l d associes dans une mme requte : INSERT INTO Ballon(taille, couleur) VALUES (20, rouge), (35, vert fluo), (17, orange), (28, crulen);

15

IUT-R&T

IvMad, Mai, 2006-2008

16

Ajouter un enregistrement (V)


Utiliser AUTO_INCREMENT L'attribut AUTO_INCREMENT peut tre utilis pour gnrer un identifiant unique pour les nouvelles lignes : CREATE TABLE animals ( id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id) ) ); INSERT INTO animals ( E l (name) ) VALUES ("chien"),("chat"),("cheval"),("tigre"),("lion");

Ajouter des enregistrements (VI)


La commande LOAD DATA INFILE lit les lignes dans un fichier texte et les insre trs grande vitesse. Lorsque les fichiers de donnes sont sur le serveur, celui-ci utilise les rgles suivantes : Si un chemin absolu est fourni, le serveur utilise le chemin tel h l f l l l h l quel. Si un chemin relatif est fourni, avec un ou plusieurs lments h i l if f i l i l de dossiers, le serveur recherche le fichier relativement son dossier de donnes donnes. Si le fichier n'a pas d'lments de dossier, le serveur recherche les donnes dans le dossier de base de donnes courante. mysql> USE db1; mysql> LOAD DATA INFILE "donnees.txt" INTO TABLE db1.ma_table;
17
IUT-R&T IvMad, Mai, 2006-2008

IUT-R&T

IvMad, Mai, 2006-2008

18

Les cl trangres
Une cl trangre est un champ ou un ensemble de champs lintrieur dune table qui se trouve tre la cl primaire dune autre table.
CREATE TABLE person ( id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, name CHAR(60) NOT NULL NULL, PRIMARY KEY (id) ); CREATE TABLE shirt ( id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, style ENUM('t-shirt', 'polo', 'dress') NOT NULL, color ENUM('red', 'blue', 'orange', 'white', 'black') NOT NULL NULL, owner SMALLINT UNSIGNED NOT NULL, FOREIGN KEY (owner) REFERENCES person(id) );
IUT-R&T IvMad, Mai, 2006-2008

Modifier un enregistrement (I)


Pour modifier un ou des enregistrement(s) dune relation, il faut prciser un critre de slection des enregistrement modifier (clause WHERE) il faut aussi dire quels sont les attributs dont on WHERE), va modifier la valeur et quelles sont ces nouvelles valeurs (clause SET). Syntaxe : UPDATE [LOW_PRORITY] relation SET attribut1=valeur, attribut2=valeur, [WHERE condition] [LIMIT a]; Exemple : UPDATE Personnes SET tlphone=0156281469 = 0156281469 WHERE nom=Martin AND prnom = Pierre; Cet exemple modifie le numro de tlphone de Martin Pierre. LOW_PRORITY est une option qui permet modification si la relation est libre de lecture.
19
IUT-R&T IvMad, Mai, 2006-2008

d'appliquer

la

LIMIT est une option qui limite a le nombre d'enregistrements.


20

Modifier un enregistrement (II)


Il est possible de modifier les valeurs dautant dattributs que la relation en contient. Exemple pour modifier plusieurs attributs : UPDATE Personnes SET tlphone=0156281469, p , fax=0156281812 WHERE id = 102 Pour appliquer la modification t P li l difi ti tous l enregistrements d l les i t t de la relation, il suffit de ne pas mettre de clause WHERE. LIMIT a permet de nappliquer la commande quaux a premiers enregistrements satisfaisant la condition dfinie par WHERE. Autre exemple : UPDATE Enfants SET age=age+1 Il est donc possible de modifier la valeur d un attribut relativement dun sa valeur dj existante.
IUT-R&T IvMad, Mai, 2006-2008

Supprimer un enregistrement
Attention, la suppression est dfinitive ! Syntaxe : DELETE [ LOW_PRIORITY ] FROM relation [ WHERE condition ] [ LIMIT a ] Exemple : DELETE FROM Personnes WHERE nom=Martin AND prnom=Marc; Pour vider une table de tous ces lments, ne pas mettre de clause WHERE. Exemple : DELETE FROM P Personnes;
IUT-R&T IvMad, Mai, 2006-2008

21

22

Slectionner des enregistrements (I)


Pour extraire d'une base de donnes des informations. Syntaxe gnrale : SELECT [ DISTINCT ] attributs [ INTO OUTFILE fichier ] [ FROM relation ] [ WHERE condition ] [ GROUP BY attributs [ ASC | DESC ] ] [ HAVING condition ] [ ORDER BY attributs ] [ LIMIT [a,] b ] Exemple : la liste des personnes ducarnet dadresse qui vivent Paris. P i SELECT nom,'prnom' FROM Personnes WHERE adresse LIKE %paris%; %paris% ;
IUT-R&T IvMad, Mai, 2006-2008

Slectionner des enregistrements (II)


Nom SELECT DISTINCT INTO OUTFILE FROM WHERE GROUP BY HAVING ORDER BY LIMIT
23
IUT-R&T

Description Spcifie les attributs dont on souhaite connatre les valeurs. Permet dignorer les doublons de ligne de rsultat. Spcifie le fichier S ifi l fi hi sur l lequel effectuer l slection. l ff la l i Spcifie le ou les relations sur lesquelles effectuer la p q slection. Dfinie le ou les critres de slection sur des attributs. Permet de grouper les lignes de rsultats selon un ou des attributs. Dfinie un ou des critres de slection sur des ensembles de valeurs dattributs aprs groupement. Permet de dfinir lordre (ASCendant par dfaut ou DESCendant) dans lenvoi des rsultats. Permet de limiter le nombre de lignes du rsultats
IvMad, Mai, 2006-2008

24

Slectionner des enregistrements (III)


Pour slectionner tous les enregistrements dune relation : P l i l i d l i SELECT * FROM relation; Pour slectionner toutes les valeurs dun seul attribut : P l i l l d l ib SELECT attribut FROM relation; Pour liminer les doublons : P li i l d bl SELECT DISTINCT attribut FROM relation; Pour trier les valeurs en ordre croissant : P i l l d i SELECT DISTINCT attribut FROM relation ORDER BY attribut ASC; Pour se limiter aux num premiers rsultats sans doublons : SELECT DISTINCT attribut FROM relation ORDER BY attribut ASC LIMIT num; Pour slectionner en appliquant une condition : SELECT DISTINCT attribut FROM relation WHERE condition ORDER BY attribut ASC LIMIT num;
IUT-R&T IvMad, Mai, 2006-2008

Slectionner des enregistrements (IV)


SELECT * FROM Gens
Gens Nom Dupond Martin Dupont Martin Dupond Chirac Prenom Pierre Marc Jean Paul Lionel Jacques Age 24 48 51 36 68 70

1 SELECT Nom FROM Gens


Gens Nom Dupond Martin Dupont Martin p Dupond Chirac

2
Gens Nom Dupond Martin Dupont Chirac Chi

SELECT DISTINCT Nom FROM Gens


25
IUT-R&T IvMad, Mai, 2006-2008

26

Slectionner des enregistrements (V)


4
Gens Nom Chirac Dupond D d Dupont Martin

SQL mot-cl IN
Le mot cl IN nous permet de connatre la valeur des valeurs retournes que nous souhaitons voir au moins pour lune des colonnes en filtrant sur une liste :

SELECT DISTINCT

Nom

FROM Gens ORDER BY Nom ASC

5
Gens Nom Chirac Dupond

SELECT DISTINCT

Nom

SELECT nom de colonne FROM nom de table WHERE nom de colonne IN (valeur1, valeur2, ...) Dans une table "PRODUITS" nous avons les donnes : PRODUITS
+------+--------+----------+-----------+ | Code | Nom | Quantite | Prix | +------+--------+----------+-----------+ | 1 | pneu | 25 | 65.75 | | 2 | velo | 12 | 125.25 | | 3 | moto | 15 | 1234.00 | | 4 | bateau | 1 | 112233.99 | | 5 | auto | 2 | 9899.75 | +------+--------+----------+-----------+
IUT-R&T IvMad, Mai, 2006-2008

6
Gens G Nom p Dupond

FROM Gens ORDER BY Nom ASC LIMIT 2

SELECT DISTINCT Nom FROM Gens WHERE Nom <> "Chirac" ORDER BY Nom ASC LIMIT 2
IvMad, Mai, 2006-2008

IUT-R&T

27

28

SQL mot-cl IN
Une possible utilisation du mot cl IN serait d'afficher les donnes pour les produits "pneu" et "moto": SELECT * FROM Produits WHERE Nom IN ("pneu", "moto"); Le rsultat:
+------+------+----------+---------+ + + + + + | Code | Nom | Quantite | Prix | +------+------+----------+---------+ | 1 | pneu | 25 | 65.75 | | 3 | moto | 15 | 1234.00 | +------+------+----------+---------+ + + + + +

SQL mot-cl BETWEEN


Le mot-cl BETWEEN permet de slectionner un intervalle.
SELECT "nom de colonne" FROM "nom de table" WHERE "nom de colonne" BETWEEN 'valeur1' AND 'valeur2'

Pour connaitre les produits dont la quantit disponible et entre 10 et 30 units: SELECT * FROM Produits WHERE Quantite BETWEEN 10 AND 30;
+------+------+----------+---------+ + + + + + | Code | Nom | Quantite | Prix | +------+------+----------+---------+ | 1 | pneu | 25 | 65 75 | 65.75 | 2 | velo | 12 | 125.25 | | 3 | moto | 15 | 1234.00 | +------+------+----------+---------+
29
IUT-R&T IvMad, Mai, 2006-2008

IUT-R&T

IvMad, Mai, 2006-2008

30

SQL mot-cl ORDER BY


Il est possible en SQL de trier les rsultats grce la clause ORDER BY, suivie des mots cls ASC ou DESC, qui prcisent respectivement la croissance (par dfaut) ou la dcroissance du tri. SELECT * FROM VOITURE ORDER BY Marque ASC; ELE F E DE q ;
Marque Ford Peugeot Peugeot Renault Renault Renault l Modele Escort 106 309 Laguna Kangoo Kangoo Serie Match KID Griffe RXT RL RL Numero 8562 EV 7845 ZS 764 ABY 4698 SJ 4568 HD 6576 VE Compteur 87654 75600 189500 123450 56000 12000

SQL mot-cl GROUP BY


Un problme courant: q g Comment calculer les ventes totales de chaque magasin d'une chaine de magasins? 1.il est ncessaire de sassurer d avoir slectionn le nom s assurer davoir de magasin, ainsi que les ventes totales. 2.tous 2 tous les chiffres d affaires doivent tre groups par daffaires (grouped by) par magasin. La syntaxe SQL correspondante est :

23 83 82 45 16 38

SELECT "nom de colonne 1" SUM("nom de colonne 2") 1", FROM "nom de table" GROUP BY "nom de colonne 1";

IUT-R&T

IvMad, Mai, 2006-2008

31

IUT-R&T

IvMad, Mai, 2006-2008

32

Vous aimerez peut-être aussi