Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Introduction Concepts du modle relationnel Diagramme entits-associations Les relations et syntaxe de MySQL Fonctions de MySQL Exemples
IUT-R&T
IUT-R&T
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
IUT-R&T
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
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
IUT-R&T
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
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
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
16
SGBD (architecture)
Architecture d'un BDMS (SGBD)
17
IUT-R&T
18
IUT-R&T
20
IUT-R&T
21
IUT-R&T
22
IUT-R&T
23
IUT-R&T
24
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
25
IUT-R&T
26
IUT-R&T
27
IUT-R&T
28
IUT-R&T
30
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
31
32
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
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
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.
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
Diagramme entits-associations
IUT-R&T
37
IUT-R&T
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
39
IUT-R&T
40
Sommaire
Introduction Concepts du modle relationnel Diagramme entits-associations Algbre relationnelle Les relations et syntaxe de MySQL Fonctions de MySQL Exemples
IUT-R&T
IUT-R&T
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
IUT-R&T
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 , ..);
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
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
Prnom Marc
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
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
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
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
IUT-R&T
14
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
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.
IUT-R&T
15
16
Union
P_1
Nom Durand Dupond Prnom Paul Caroline Nom Jenny Dupond Blanc Prnom Carole Caroline Michel
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
Intersection (INTERSECT)
P_1
Nom Durand Dupond Prnom Paul Caroline Nom Jenny Dupond Blanc Prnom Carole Caroline Michel
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
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
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
24
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
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
26
borne suprieure 127 255 32767 65535 8388607 16777215 2147483647 4294967295 9223372036854775807 18446744073709551615
28
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
30
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
32
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
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
36
Sommaire
Introduction Concepts du modle relationnel Diagramme entits-associations Algbre relationnelle Les relations et syntaxe de MySQL Fonctions de MySQL Exemples
IUT-R&T
IUT-R&T
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
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.
Syntaxe :
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 :
IUT-R&T
IUT-R&T
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.
IUT-R&T
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;
11
IUT-R&T
12
IUT-R&T
13
IUT-R&T
14
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
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
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
20
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
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
IUT-R&T
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
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
IUT-R&T
29
IUT-R&T
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
31
IUT-R&T
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
Bibliothque
Nom Martine Tartan Dupond Nblivres 5 10 3
Rsultat de la jointure
Nom Martin Tartan Dupond Nblivres NULL 10 3
IUT-R&T
33
IUT-R&T
34
SELECT nom, prnom FROM Table1 WHERE nom like "D%" D% UNION SELECT nom prnom FROM Table2 nom, WHERE nom like "D%";
IUT-R&T
35
IUT-R&T
36
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
37
IUT-R&T
38
Le concept SGBD
SELECT Table1.nom, Table2.prnom Table1 nom Table2 prnom FROM Table1, Table2;
IUT-R&T
39
IUT-R&T
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
IUT-R&T
42
Prsentation
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
IUT-R&T
43
IUT-R&T
44
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
IUT-R&T
46
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
47
IUT-R&T
48
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
50
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
52
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
IUT-R&T
54
Sommaire
Introduction Concepts du modle relationnel Diagramme entits-associations Algbre relationnelle Les relations et syntaxe de MySQL Fonctions de MySQL Exemples
IUT-R&T
IUT-R&T
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) );
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
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
tlphone 0123456789
IUT-R&T
10
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
12
13
14
15
IUT-R&T
16
IUT-R&T
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
d'appliquer
la
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
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
2
Gens Nom Dupond Martin Dupont Chirac Chi
26
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
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
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 | +------+------+----------+---------+ + + + + +
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
30
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
31
IUT-R&T
32