SQL-Structured Query language-
et SGBD MYSQL
Youssef RACHIDI
Filière : Informatique. EST Guelmim
Année: 2019-2020
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
SQL(Structured query language)[1]
SQL signifie langage d’interrogation structuré.
SQL est un Langage complet de gestion de bases de Données
relationnelles.
SQL est un langage formé de plusieurs sous langages
2
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
SQL(Structured query language) [2]
SQL c’est une norme qui regroupe les langages:
Un langage de définition des données
(LDD ; ordres CREATE, ALTER, DROP)
Un langage de manipulation des données
(LMD; ordres UPDATE, INSERT, DELETE)
Un langage d'interrogation de la base
(LID; ordre SELECT)
Un langage de contrôle de l'accès aux données
(LCD ; ordres GRANT,REVOKE).
3
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
SQL(Structured query language) [3]
Aujourd’hui :Il est devenu le langage standard des systèmes de gestion
de bases de données (SGBD) relationnelles
Le langage SQL est utilisé par les principaux SGBDR : DB2, Oracle,
Informix, RDB, MySQL,... Chacun de ces SGBDR a cependant sa propre
variante du langage.
Ce support de cours présente un noyau de commandes disponibles sur
L’ensemble SGBDR, et leur implantation dans MySQL Version 5.5.8.
4
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
SGBD MySQL
MySQL est un SGBD libre (open source)
crée par la société MySQLAB, Stockholm
en Suède (http://www.mysql.com)
Le serveur MySQL est écrit en C et C++.
Parmi ses avantages:
son ouverture à tous les principaux langages du marché(PHP, JAVA,
C++,C#,….)
Portabilité: fonctionne sur les systèmes les plus courants(les
distributions classiques de Linux, Windows, Mac OS, BSD, Novell et
les dérivés d’Unix).
Performances(fiable et rapide)
Riche en fonctionnalités
Facilité d’utilisation pour les
applications Web
5
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
Architecture SGBD MySQL(1)
MySQL est basé sur une architecture client/serveur.
C'est-à-dire que les clients doivent s'adresser au serveur qui
gère, contrôle et arbitre les accès aux données.
1
2
SERVEUR
Base de données
SGBD
MySQL
Clients
3
4
6
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
LDD: Langage Définition des
données(1)
Cette partie décrit les instructions SQL qui constituent l’aspect LDD.
(LDD ; ordres CREATE, ALTER, DROP)
Création d’une base de données:
Syntaxe: CREATE DATABASE [IF NOT EXISTS] name_database;
Exemple: CREATE DATABASE [IF NOT EXISTS] Ecole;
Suppression d’une base de données:
Syntaxe: DROP DATABASE [IF NOT EXISTS] name_database;
Exemple: DROP DATABASE [IF NOT EXISTS] Ecole;
La destruction d’une base entraîne aussi la suppression de ses tables.
NOTES:
1. L’option IF NOT EXISTS permet de n’est créée la BD que si elle
n’existe pas déjà. Cela évite les messages d’erreur.
7
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
LDD: Langage Définition des
données(2)
Création d’une table :
Syntaxe:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] [nomBase.]nomTable
( colonne1 type1 [NOT NULL | NULL] [DEFAULT ‘valeur1’][COMMENT 'chaine1‘]
[ , colonne2 type2 [NOT NULL | NULL] [DEFAULT ‘valeur2’] [COMMENT
'chaine2’] ] [CONSTRAINT nomContrainte1 typeContrainte1]...
) [ENGINE= InnoDB | MyISAM |…];
« , »: Séparateur entre les champs.
TEMPORARY: pour créer une table qui n’existera que durant la session courante (la
table sera supprimée à la déconnexion).
8
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
LDD: Langage Définition des
données(3)
Déclaration des contraintes:
Les contraintes peuvent être déclarées de deux manières :
1.contraintes en ligne (inline constraints):
Se définissent en même temps que la déclaration de la colonne;
2.Contraintes hors ligne (out-of-line constraints). :
Se définissent après que la colonne est déclarée ; ces contraintes ne sont pas
limitées à une colonne et peuvent être personnalisées par un nom.
Il est recommandé de déclarer les contraintes NOT NULL en ligne, les
autres peuvent soit être déclarées en ligne, soit être nommées
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
LDD: Langage Définition des
données(4)
- NOT NULL: pour que chaque enregistrement de l’attribut ait obligatoirement
une valeur non nulle.
Exemple: nom_attr VARCHAR(10) NOT NULL;
- DEFAULT : 'valeur_défaut' permet de définir une valeur par défaut pour
l’attribut si aucune valeur n’y est enregistrée.
1.Cette option est impossible pour les types BLOB et TEXT.
2.Les valeurs par défaut doivent être des constantes, et il n’est pas possible
d’utiliser de fonction pour les définir.
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
LDD: Langage Définition des
données(5)
- AUTO_INCREMENT: Pour qu’un attribut numérique entier soit
automatiquement incrémenté d’une unité à chaque insertion
d’un enregistrement.
Exemple: id tinyint NOT NULL auto_increment;
Pour que cette contrainte soit valable, il faut que l’attribut soit
indexé ou qu’il soit la clé primaire.
- COMMENT : (jusqu’à 60 caractères) permet de commenter une colonne.
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
LDD: Langage Définition des
données(6)
INDEX [nom_index] (nom_attribut1,nom_attribut2,...) crée un index pour la
table à partir des colonnes précisées.
Exemple: INDEX mon_index (Prénom);
crée un index nommé mon_index sur la colonne Prénom.
La Création d’index sur des colonnes de la table facilite les recherches
quand ces colonnes sont utilisées comme critère de recherche.
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
LDD: Langage Définition des
données(7)
Contraintes nommées:
Sont les clés primaires, les clés étrangères, l’unicité….
Syntaxe de base:
CONSTRAINT nomContrainte typeContraintei;
Nom de la contrainte suivi de son type
Syntaxe développée : CONSTRAINT
nomContrainte
UNIQUE (colonne1 [,colonne2]...) PRIMARY
KEY (colonne1 [,colonne2]...) FOREIGN
KEY (colonne1 [,colonne2]...)
REFERENCES nomTablePere [(colonne1
[,colonne2]...)]
CHECK (condition)
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
PRIMARY KEY : pour définir l’attribut comme clé primaire de la table.
LDD: Langage Définition des
données(8)
Exemple1: nom tinyint(4) NOT NULL AUTO_INCREMENT, PRIMARY KEY (nom);
nom tinyint(4) NOT NULL AUTO_INCREMENT PRIMARY KEY ;
ou
CONSTRAINT pk_nom PRIMARY KEY (nom);
définit l’attribut nom comme une clé primaire.
Exemple2: PRIMARY KEY (nom, prenom);
Ou CONSTRAINT pk_np PRIMARY KEY(nom,prenom);
crée une clé primaire composée des deux attributs, nom et prenom.
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
LDD: Langage Définition des
données(9)
UNIQUE (nom_attribut1,nom_attribut2,...) pour que chaque enregistrement ait une
valeur unique dans la colonne des attributs précisés.
Exemple: UNIQUE(nom, prenom);
ou
CONSTRAINT un_nom UNIQUE(nom,prenom);
Empêche d’enregistrer deux personnes ayant le même nom et le même
prénom. Par contre, deux prénoms identiques avec deux noms
différents sont acceptés.
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
LDD: Langage Définition des
données(10)
FOREIGN KEY: définit une clé étrangère
Exemple: dans la table commande on peut écrire
FOREIGN KEY (id_client) REFERENCES client(id-client)
Ou
CONSTRAINT fk_client FOREIGN KEY (Num_client)
REFERENCES client (id_client));
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
LDD: Langage Définition des
données(11)
ENGINE : définit le type de table
InnoDB: Type par défaut bien adapté à la programmation
de transactions
 MyISAM :est un type robuste, mais ne supportant pas
pour l’heure l’intégrité référentielle.
MEMORY :Type pour les tables temporaires,
ARCHIVE, etc.
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
« ;» : symbole par défaut qui termine une instruction MySQL en mode ligne
de commande.
LDD: Langage Définition des
données(12)
Délimiteurs
En mode ligne de commande, il est possible (par la directive delimiter
de choisir le symbole qui terminera chaque instruction.
Exemple:
delimiter |
CREATE TABLE Test (t CHAR(8))|
Sensibilité à la casse
MySQL est sensible par défaut à la casse (au niveau des noms de base et
de table) dans la plupart des distributions Unix, il ne l’est pas pour
Windows
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
Commentaires
Dans toute instruction SQL (déclaration, manipulation, interrogation et contrôle des données), il
est possible d’inclure des retours chariot, des Tabulations, espaces et commentaires :
• sur une ligne précédée de deux tirets «-- »,
• en fin de ligne à l’aide du dièse « # »,
• au sein d’une ligne ou sur plusieurs lignes entre « /* » et « */ ».
LDD: Langage Définition des
données(13)
Exemple:
Sans commentaire
CREATE TABLE Test(colonne
DECIMAL(38,8));
CREATE TABLE
Test
( colon
ne
DECIMA
L(38,8)
);
Avec commentaire
CREATE TABLE
-- nom de la table
Test( #début de la description
COLONNE DECIMAL(38,8)
)
-- fin, ne pas oublier le point-virgule.
;
CREATE TABLE Test (
/* une plus grande description
des colonnes */
COLONNE /* type : */
DECIMAL(38,8));
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
Exemple:
LDD: Langage Définition des
données(14)
Id_Entre nrue rue ville nomEntre
CREATE TABLE entreprise(
Id_entre CHAR(4),
nrue INTEGER(3),
rue CHAR(20),
ville CHAR(15) DEFAULT
‘Agadir’ COMMENT 'Par
defaut : Agadir',
Nom_Entreprise
CHAR(15) NOT NULL
CONSTRAINT pk_entreprise
PRIMARY
KEY(id_entre))ENGINE=Inn
oDB;
1.Deux contraintes en
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
LDD: Langage Définition des
données(15)
REFERENCES Entreprise(Id_entre)
);
Exemple:
CREATE TABLE fonctionnaire(
id_fct CHAR(6), nom CHAR(15) NOT NULL,
nbH DECIMAL(7,2),
Id_entre CHAR(4),
CONSTRAINT pk_fonctionnaire PRIMARY KEY(id_fct),
CONSTRAINT ck_nbH CHECK(nbH BETWEEN 0 AND
20000),
CONSTRAINT un_nom UNIQUE (nom),
CONSTRAINT fk_fct_entre
FOREIGN KEY (Id_entre)
Une contrainte en ligne
et quatre contraintes nommées
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
CONSTRAINT nn_nom CHECK
(nom IS NOT NULL),
LDD: Langage Définition des
données(16)
Type des Colonne : Nom d’une colonne et son type de données
( INTEGER, CHAR,DATE…).
Quels sont les types de données disponibles sous MySQL..?
MySQL permet de stocker des informations selon de nombreux types de
données. Cela donne la possibilité d’adapter le plus précisément possible le
type de donnée à l’information qui est enregistrée dans une table. Le choix du
type doit se faire de telle sorte que l’information occupe le moins d’octets
possible.
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
LDD: Langage Définition des
données(17)
Types numériques:
Les types numériques permettent de stocker toutes sortes de valeurs
numériques entières ou décimales avec des intervalles de valeurs très
étendus.
1.Les entiers:
TINYINT: Un très petit entier prenant des valeurs de –128 (– 27) à 127 (27 – 1).
S’il est suivi de l’option UNSIGNED, les valeurs sont positives et varient de
0 à 255 (28 – 1). Chaque valeur occupe 1 octet.
SMALLINT: Un petit entier prenant des valeurs de –32768 (– 215) à 32767 (215
– 1). S’il est suivi de l’option UNSIGNED, les valeurs sont positives et
varient de 0 à 65535 (216 – 1). Chaque valeur occupe 2 octets.
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
LDD: Langage Définition des
données(18)
MEDIUMINT: Entier moyen prenant des valeurs de –8388608 (– 223) à
8388607 (223 – 1).S’il est suivi de l’option UNSIGNED, les valeurs sont
positives et varient de 0 à 16777215 (224 – 1). Chaque valeur occupe
3 octets.
INT ou INTEGER Entier prenant des valeurs de –2147483648 (– 231) à
2147483647 (231 – 1). S’il est suivi de l’option UNSIGNED, les valeurs sont
positives et varient de 0 à 4294967295 soit 232 – 1. Chaque valeur occupe
4 octets.
BIGINT Grand entier prenant des valeurs de –9223372036854775808 (– 263) à
9223372036854775807 (263 – 1). S’il est suivi de l’option UNSIGNED, les
valeurs sont positives et varient de 0 à 18446744073709551615, soit
264 – 1. Chaque valeur occupe 8 octets.
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
LDD: Langage Définition des
données(19)
2.Les réels:
FLOAT :Nombre à virgule flottante en simple précision prenant des valeurs de –
3.402823466E+38 à –1.75494351E–38 pour les nombres négatifs et de
1.75494351E–38 à 3.402823466E+38 pour les positifs. S’il est suivi de l’option
UNSIGNED, les valeurs sont uniquement positives. Avec les options FLOAT (M,D),
l’affichage s’effectue avec M chiffres dont D décimales. Chaque valeur occupe
4 octets.
DOUBLE :Nombre à virgule flottante en double précision prenant des valeurs
de –1.7976931348623157E+308 à –2.2250738585072014E–308 pour les
nombres négatifs et de 2.2250738585072014E–308 à 1.7976931348623157E+308
pour les positifs, auxquelles s’ajoute la valeur exacte de 0. S’il est suivi de l’option
UNSIGNED, les valeurs sont uniquement positives. Avec les options DOUBLE (M,D)
l’affichage se fait avec M chiffres dont D décimales. Chaque valeur occupe 8 octets.
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
LDD: Langage Définition des
données(20)
DECIMAL: Nombre à virgule flottante qui doit être signé. La valeur est stockée
comme une chaîne de caractères dont chaque caractère est un chiffre. Les
Valeurs sont les mêmes que pour le type DOUBLE. S’il est suivi de l’option
UNSIGNED, les valeurs sont uniquement positives. Avec les options
DECIMAL (M), l’affichage s’effectue avec M chiffres (par défaut 10 chiffres),
ce qui limite l’intervalle de valeurs. Avec les options DECIMAL (M,D),
l’affichage s’effectue avec M chiffres dont D décimales. Chaque valeur
occupe autant d’octets qu’il y a de caractères dans le nombre.
3.Les chaine de caractères:
Ces types permettent de stocker des chaînes de caractères de
longueurs très diverses, allant du simple caractère au chaine très
Longue.
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
LDD: Langage Définition des
données(21)
CHAR(M) : Chaîne de caractères de longueur fixe de M caractères complétée
par des espaces si la donnée stockée est plus petite. La longueur indiquée
varie de 0 à 255 caractères. La chaîne stockée occupe toujours M octets,
même si elle ne contient qu’un seul caractère significatif.
VARCHAR(M) Chaîne de caractères de longueur variable comprise entre 1 et
M caractères. La valeur de M varie de 1 à 255 caractères. La chaîne
stockée occupe N + 1 octets quand elle comprend N caractères.
TINYTEXT/TINYBLOB: Texte d’une longueur comprise entre 1 et 255
caractères. Le type TINYBLOB est sensible à la casse. La chaîne stockée
occupe N + 1 octets quand elle comprend N caractères.
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
LDD: Langage Définition des
données(22)
TEXT/BLOB: Texte d’une longueur comprise entre 1 et 65 535 caractères.
Le type BLOB est sensible à la casse. La chaîne stockée occupe N + 2
octets quand elle comprend N caractères.
MEDIUMTEXT/MEDIUMBLOB: Texte d’une longueur comprise entre 1 et 16
777 215 caractères. Le type MEDIUMBLOB est sensible à la casse. La
chaîne stockée occupe N + 3 octets quand elle comprend N
caractères.
LONGTEXT/LONGBLOB: Texte d’une longueur comprise entre 1 et 4 294
967 295 caractères. Le type LONGBLOB est sensible à la casse.
La chaîne stockée occupe N + 4 octets quand elle comprend N
caractères.
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
LDD: Langage Définition des
données(23)
ENUM :Permet le choix d’une seule valeur parmi une liste des N
chaînes de caractères définies dans le type.
Le type peut définir jusqu’à 65 535 valeurs.
ENUM('chaine1', ...,' chaineN')
SET :Permet le choix d'une ou plusieurs valeurs simultanément parmi
l’ensemble des N chaînes de caractères définies dans le type.
L’ensemble peut contenir jusqu’à 64 valeurs.
SET('chaine1', ...,'chaineN')
4.Types booléens
BIT[(n)],Un bit, Ensemble de n bits. Taille de 1 à 64 (par défaut 1).
BOOL, BOOLEAN : équivaut à TINYINT(1)
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
LDD: Langage Définition des
données(24)
5.Types dates et heures
DATE: Une date au format AAAA-MM-JJ dans l’intervalle de 1000-01-01 à
9999-12-31. Chaque enregistrement occupe 3 octets.
DATETIME Contient la date et l’heure au format AAAA-MM-JJ HH:MM:SS
dans l’intervalle de 1000-01-01 00:00:00 à 9999-12-31 23:59:59.
Chaque enregistrement occupe 8 octets.
TIME: Stocke l’heure au format HH:MM:SS ou HHH:MM:SS pour un intervalle
de valeurs allant de –838:59:59 à 838:59:59 permettant d’effectuer des
calculs de durée excédant 24 heures. Chaque enregistrement occupe 3
octets.
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
LDD: Langage Définition des
données(25)
YEAR: Représente les années au format YYYY pour un intervalle allant de 1901 à
2155. Si l’année est fournie avec deux chiffres, les valeurs de 00 à 69
correspondent aux années 2000 à 2069 et les valeurs 70 à 99 aux années
1970 à 1999. Chaque enregistrement occupe 1 octet.
Structure d’une table :
Syntaxe:
DESCRIBE [nomBase.] nomTableou [colonne];
->Describe client;
->Describe client id_client;
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
Suppression d’une table:
Syntaxe:
DROP [TEMPORARY] TABLE [IF EXISTS]
LDD: Langage Définition des
données(26)
TEMPORARY : pour supprimer des tables temporaires.
IF EXISTS : permet d’éviter qu’une erreur se produise si la table n’existe pas.
Exemple:
Les « fils » puis les « pères »
DROP TABLE fonctionnaire;
DROP TABLE Entreprise;
DROP TABLE fonctionnaire, Entreprise;
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
LDD: Langage Définition des
données(27)
Évolution d’un schéma
L’évolution d’un schéma est un aspect permettant de modifier une base de
données d’un point de vue structurel (colonnes et index) mais aussi des
contraintes.
L’instruction principalement utilisée est ALTER TABLE qui permet :
 d’ajouter,
 de renommer,
 de modifier,
 de supprimer des colonnes d’une table.
 d’ajouter et de supprimer des contraintes.
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
LDD: Langage Définition des
données(28)
Modifications structurelles
1.Ajout des colonnes
Syntaxe:
ALTER TABLE[nomBase].nomTable ADD [COLUMN] ;
noncolonne typeMySQL [NOT NULL | NULL] [DEFAULT valeur]
[AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
[COMMENT 'chaine’] [REFERENCES ...]
[FIRST|AFTER nomColonne ];
Exemple:
ALTER TABLE fonctionnaire ADD (salaire DECIMAL(7,2));
ALTER TABLE fonctionnaire ADD (domaine VARCHAR(4) DEFAULT ‘dev',
pays VARCHAR(30) DEFAULT ‘Maroc' NOT NULL);
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
LDD: Langage Définition des
données(29)
Modifications structurelles
2.Renommer des colonnes
Syntaxe:
ALTER TABLE[nomBase].nomTable CHANGE [COLUMN] ;
ancienNom nouveauNom typeMySQL [NOT NULL | NULL]
[DEFAULT valeur] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY]
KEY] [COMMENT 'chaine’] [REFERENCES ...]
[FIRST|AFTER nomColonne ];
Exemple:
ALTER TABLE fonctionnaire CHANGE ville adresse VARCHAR(30)
AFTER nbH;
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
LDD: Langage Définition des
données(30)
Modifications structurelles
3.Modifier le type des colonnes
Syntaxe:
ALTER TABLE[nomBase].nomTable MODIFY [COLUMN]
nomColonneAmodifier typeMySQL [NOT NULL | NULL] [DEFAULT valeur]
[AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
[COMMENT 'chaine’] [REFERENCES ...]
[FIRST|AFTER nomColonne ];
Exemple:
ALTER TABLE fonctionnaire MODIFY id_entre
VARCHAR(6) DEFAULT 'SING';
ALTER TABLE fonctionnaire MODIFY Id_entre CHAR(4)
NOT NULL;
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
LDD: Langage Définition des
données(31)
Modifications structurelles
4. Valeurs par défaut des colonnes
Syntaxe:
ALTER TABLE[nomBase].nomTable ALTER [COLUMN] nomColonneAmodifier
{SET DEFAULT ‘chaine’ | DROP DEFAULT};
Exemple:
ALTER TABLE fonctionnaire ALTER COLUMN adresse SET DEFAULT ‘Agadir';
ALTER TABLE fonctionnaire ALTER COLUMN id_entre DROP DEFAULT;
définit une valeur par défaut pour la colonne adresse
puis supprime celle relative à la colonne id_entre
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
LDD: Langage Définition des
données(32)
Modifications structurelles
5. Supprimer des colonnes
Syntaxe:
ALTER TABLE [nomBase].nomTable DROP
{ [COLUMN] nomColonne};
Exemple:
ALTER TABLE fonctionnaire DROP COLUMN adresse;
Ou
ALTER TABLE fonctionnaire DROP adresse;
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
LDD: Langage Définition des
données(33)
Modifications des contraintes
1. Ajout de contraintes
Syntaxe:
ALTER TABLE [nomBase].nomTable ADD
{ INDEX [nomIndex] [typeIndex] (nomColonne1,...)
| CONSTRAINT nomContrainte typeContrainte };
• UNIQUE (colonne1 [,colonne2]...)
• PRIMARY KEY (colonne1 [,colonne2]...)
• FOREIGN KEY (colonne1 [,colonne2]...)
1.1 Unicité
Exemple:
ALTER TABLE entreprise ADD CONSTRAINT un_nomE UNIQUE (Nom_Entreprise);
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
LDD: Langage Définition des
données(34)
2. Clé étrangère
Exemple:
ALTER TABLE Fonctionnaire ADD INDEX (id_entre);
ALTER TABLE Fonctionnaire ADD CONSTRAINT fk_ Fonctionnaire
FOREIGN KEY(id_entre) REFERENCES Entreprise(id_entre);
3. Clé primaire
ALTER TABLE fonctionnaire ADD CONSTRAINT
pk_fct PRIMARY KEY (nom, id_fct);
valable dans le cas ou la table fonctionnaire ne contient pas aucune
clé primaire
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
LDD: Langage Définition des
données(35)
Modifications des contraintes
1. Suppression de contraintes
1. Contrainte NOT NULL
Exemple:
ALTER TABLE client MODIFY nom CHAR(10) NULL;
ALTER TABLE client MODIFY prenom CHAR(10) NULL;
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
LDD: Langage Définition des données
Modifications des contraintes
1. Suppression de contraintes
2. Clé étrangère
ALTER TABLE [nomBase].nomTable DROP FOREIGN KEY nomContrainte;
Exemple:
ALTER TABLE fonctionnaire DROP FOREIGN KEY fk_fct_entre;
• ALTER TABLE ligne DROP FOREIGN KEY fk_ligne_article;
3. Clé primaire
Exemple:
• ALTER TABLE ligne DROP PRIMARY KEY;
• ALTER TABLE ligne DROP PRIMARY KEY CASCADE;
Si la colonne clé primaire à supprimer contient des clés étrangères, il faut d’abord
retirer les contraintes de clé étrangère. Si la clé primaire à supprimer est référencée par
des clés étrangères d’autres tables, il faut d’abord ôter les contraintes de clé étrangère
de ces autres tables.
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
LMD&LID: Langage de manipulation et
d’interrogation des données
Les langages LMD et LIM sont basés sur l’Algèbre relationnelle.
L’algèbre relationnelle est une méthode permettant la modélisation:
 Des manipulations des données
 Les structures des tables
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
Opérations relationnelles
L’Algèbre relationnelle offre plusieurs opérations relationnelles.
Les opérations relationnelles permettent de fabriquer une relation à partir
des relations de départ
R1
Requête
R2
…
Rn
R
Une requête est une expression (opération) de l'algèbre relationnelle
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
Opérations relationnelles (2)
On distingue trois catégories d'opérations relationnelles :
 Opérations ensemblistes traditionnelles union, intersection,
différence
 Opérations permettant de construire une nouvelle relation à partir
d'une autre Projection, sélection
 Opérations qui permettent de combiner deux relations pour en
obtenir une troisième Jointure, produit
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
Opérations ensemblistes
Soient R et S deux relations de même schéma.
1.Union
La réunion de R et S , notée R ∪S, est l'ensemble des tuples qui figurent
dans l'une ou l'autre ou dans les des deux en même temps.
2.intersection
L'intersection de R et S, notée R ∩S , est l'ensemble des tuples qui figurent
dans R et dans S .
3.différence
La différence entre R et S, notée R -S , est l'ensemble des tuples qui figurent
dans R mais pas dans S .
Ces trois opérations fournissent une nouvelle relation ayant
le même schéma que les relations de départ.
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
Opérations ensemblistes (2)
R : S :
X Y Z
e b k
a b c
d f k
X Y Z
a b c
d b c
X Y Z
e b k
a b c
d f k
d b c
R ∪S :
Exemples
X Y Z
a b c
R ∩ S : X Y Z
e b k
d f k
R - S : X Y Z
d b c
S - R :
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
Opérations sur une relation
1.Projection
Soit R une relation dont le schéma est R (A1,…, An) , et si B={B1,…,
Bk } une partie de {A1,…, An}, alors la projection de R sur B est la
relation S dont le schéma est S ( B1,…, Bk), obtenue à partir de R
en ne retenant que les attributs de projections B1,…, Bk
Notations :
Π B1,…, Bk (R ) ou
Π (R , B1,…, Bk ) ou
Project B1,…, Bk (R ) ou Project (R , B1,…, Bk )
la projection de R sur B
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
R : Π (R , X): Π (R , Y): Y
b
f
Opérations sur une relation(2)
EXEMPLE DE PROJECTION
Z Y
k b
c b
k f
X
e
a
d
X Y Z
e b k
a b c
d f k
Π (R , Z, Y): Π (R , Z, X,Y): Z X Y
k e b
c a b
k d f
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
Opérations sur une relation(3)
2. Sélection
Soit R une relation dont le schéma est R (A1,…, An), et C une
condition portant sur les attributs de la relation R ; alors la
restriction (ou la sélection) de R selon la condition C est la
relation formée des tuples de R qui satisfont la condition C.
Notations :
σ C (R ) ou σ (R , C ) ou
Select C (R ) ou Select
(R , C )
la sélection de R selon la condition C
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
Opérations sur une relation (4)
R :
σ(R , Z=k):
X Y Z
e b k
a b c
d f k
X Y Z
e b k
d f k
EXEMPLE DE RESTRICTION
σ(R , X≠ a et Y=b): X Y Z
e b k
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
Composition de relations(1)
3.Produit cartésien
Si R (A1,…, An), et S (B1,…, Bm) sont deux relations alors leur
produit cartésien est la relation T=R xS ayant pour schéma
T(A1,…, An, B1,…, Bm) et définie par:
T={ (a1, …, an, b1,…,bm / (a1, …, an)∈R, (b1, …, bm)∈S }
Il est à noter que l‘arité de RxS est la somme des arités de R et
S . Le cardinal de RxS est le produit des cardinaux de R et S.
R : X Y
a b
c d
S : A B C
a d e
b c f
RxS : X Y A B C
a b a d e
a b b c f
c d a d e
c d b c f
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
Y.RACHIDI
EXEMPLE :Produit cartésien
Composition de relations(2)
4.Jointure
Si R (A1,…, An), et S (B1,…, Bm) sont deux relations, et si θ est
une condition portant sur des attributs de R et de S alors
la jointure (θ-jointure) de R et S est la relation
ayant pour schéma T(A1,…, An, B1,…, Bm) .
La jointure de R et S selon θ est obtenue par la concaténation
des lignes de R et S et qui vérifient entre eux la proposition
θ
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
Composition de relations (3)
(R , S ,
θ)
ou
4.Jointure(suite)
Notations
R
θ
S
R : X Y
a b
c d
S : A B C
a d e
b c f
Join(R,S, X=A)
: X Y A B C
a b a d e
Joinθ(R ,S) ou Join(R ,S ,
θ)
la jointure (θ-jointure) de R et S
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
R= Famille ∞ ((age≤ageC)and(Prix<50))Cadeau
R= (Famille, Cadeau,(age≤ageC)and(Prix<50))
Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
Y.RACHIDI
Composition de relations (4)
5.équijointure et jointure naturelle
Lorsque la condition de jointure est une égalité entre un attribut
de R et un attribut de S on parle d'équijointure
•Soient R (A1,…, An, B1,…, Bk), et S (B1,…, Bk, C1,…, Cm) deux relations
ayant k attributs en commun alors on appelle jointure naturelle
de R et S la relation obtenue par équijointure des deux relations
sur leurs attributs communs en ne gardant qu'une copie des
attributs communs
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
Y.RACHIDI
Jointure Naturelle
Fonctions et agrégats(1)
1.Fonctions de calcul
•Il est possible d'effectuer des calculs sur les attributs dans les
tables et tables générées par des opérations relationnelles
projection, rselection et jointure à l'aide d'expression d'attributs.
•Une expression d’attribut est une expression arithmétique
construite à partir d'attributs d'une relation et de constantes par
application d’opérations arithmétiques successives
Quantité*2
Prix*Quantité
Moyenne/2
Note*coefficient
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
NbrH*1.5
NbrHeff*PrixH
Fonctions et agrégats (3)
Agrégats
Partitionnement horizontal d'une relation(table) selon les
valeurs d'un ou plusieurs attributs, suivi d'un regroupement
par application d'une fonction de calcul.
R=AGREGAT(Relation; Attributs; Fonction{Attribut})
•Les fonctions utilisées sont
Somme (SUM)
Moyenne (AVG)
Minimum (MIN)
Maximum (MAX)
Compte
(COUNT)
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
Fonctions et agrégats (4)
Exemple d'agrégats
R1=AGREGAT(R; X; Sum{y}) R2=AGREGAT(R; X;Z; Sum{y})
R (X,Y,Y)
X Y Z
x1 2 z1
x1 3 z2
x2 1 z1
x2 3 z1
x2 6 z2
x3 4 z2
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
X Sum(y)
x1 5
x2 10
x3 4
X Z Sum(y)
x1 z1 2
x1 z2 3
x2 z1 4
x2 z2 6
x3 z2 4
R3=AGREGAT(R; AVG{y})
R AVG(y)
19/6
Fonctions et agrégats (4)
Exemple d'agrégats
•Calculer le nombre de commandes passées:
NBCommande=AGREGAT(Commande; Count{NumC})
•Calculer le nombre de commandes passées par date (par
jour)
CommandeJr=AGREGAT(Commande; Dte; Count{NumC})
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
Expressions relationnelles
Arbre algébrique
En utilisant des expressions d'opérations relationnelle(projection, sélection….),
il est possible d'élaborer les réponses à la plus part des questions que l'on pose
à une base de données relationnelle.
•Une question décomposée en requêtes peut être représentée par un arbre
relationnelle.
•Les nœuds correspondent aux représentations graphiques des opérations
• les arcs aux flots de données entre opérations
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
Arbre relationnel
Projection Sélection
θ-jointure
θ
Condition
A1,…,Ak
Jointure
naturelle
Op Op peut être : x , - , ∪ , ∩ ,
÷
Fonctions
Attributs
Agrégat Attributs
Tri
Y.RACHIDI 66
Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
Y.RACHIDI
Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
Y.RACHIDI
C’est quoi la liste des commandes dépassant 1000 Dh?
Exemple d'arbre relationnel
R1=join(Commande,Produit, Refprd=Ref)
R2=Project(R1, NumC, Qté, prix)
R3=Select(R2, prix*Qté>1000)
R=join(Commande , R3 )
Commande
R
prix*Qté>1000
=
Refprd Ref
Commande Produit
NumC, Qté, prix
65
C’est quoi la
liste des
commandes
dépassant 1000
Dh?
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
Fin
Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
Y.RACHIDI

le langage SQL et SGBD MYSQL_PARTIE 1.pptx

  • 1.
    SQL-Structured Query language- etSGBD MYSQL Youssef RACHIDI Filière : Informatique. EST Guelmim Année: 2019-2020 Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 2.
    SQL(Structured query language)[1] SQLsignifie langage d’interrogation structuré. SQL est un Langage complet de gestion de bases de Données relationnelles. SQL est un langage formé de plusieurs sous langages 2 Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 3.
    SQL(Structured query language)[2] SQL c’est une norme qui regroupe les langages: Un langage de définition des données (LDD ; ordres CREATE, ALTER, DROP) Un langage de manipulation des données (LMD; ordres UPDATE, INSERT, DELETE) Un langage d'interrogation de la base (LID; ordre SELECT) Un langage de contrôle de l'accès aux données (LCD ; ordres GRANT,REVOKE). 3 Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 4.
    SQL(Structured query language)[3] Aujourd’hui :Il est devenu le langage standard des systèmes de gestion de bases de données (SGBD) relationnelles Le langage SQL est utilisé par les principaux SGBDR : DB2, Oracle, Informix, RDB, MySQL,... Chacun de ces SGBDR a cependant sa propre variante du langage. Ce support de cours présente un noyau de commandes disponibles sur L’ensemble SGBDR, et leur implantation dans MySQL Version 5.5.8. 4 Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 5.
    SGBD MySQL MySQL estun SGBD libre (open source) crée par la société MySQLAB, Stockholm en Suède (http://www.mysql.com) Le serveur MySQL est écrit en C et C++. Parmi ses avantages: son ouverture à tous les principaux langages du marché(PHP, JAVA, C++,C#,….) Portabilité: fonctionne sur les systèmes les plus courants(les distributions classiques de Linux, Windows, Mac OS, BSD, Novell et les dérivés d’Unix). Performances(fiable et rapide) Riche en fonctionnalités Facilité d’utilisation pour les applications Web 5 Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 6.
    Architecture SGBD MySQL(1) MySQLest basé sur une architecture client/serveur. C'est-à-dire que les clients doivent s'adresser au serveur qui gère, contrôle et arbitre les accès aux données. 1 2 SERVEUR Base de données SGBD MySQL Clients 3 4 6 Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 7.
    LDD: Langage Définitiondes données(1) Cette partie décrit les instructions SQL qui constituent l’aspect LDD. (LDD ; ordres CREATE, ALTER, DROP) Création d’une base de données: Syntaxe: CREATE DATABASE [IF NOT EXISTS] name_database; Exemple: CREATE DATABASE [IF NOT EXISTS] Ecole; Suppression d’une base de données: Syntaxe: DROP DATABASE [IF NOT EXISTS] name_database; Exemple: DROP DATABASE [IF NOT EXISTS] Ecole; La destruction d’une base entraîne aussi la suppression de ses tables. NOTES: 1. L’option IF NOT EXISTS permet de n’est créée la BD que si elle n’existe pas déjà. Cela évite les messages d’erreur. 7 Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 8.
    LDD: Langage Définitiondes données(2) Création d’une table : Syntaxe: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] [nomBase.]nomTable ( colonne1 type1 [NOT NULL | NULL] [DEFAULT ‘valeur1’][COMMENT 'chaine1‘] [ , colonne2 type2 [NOT NULL | NULL] [DEFAULT ‘valeur2’] [COMMENT 'chaine2’] ] [CONSTRAINT nomContrainte1 typeContrainte1]... ) [ENGINE= InnoDB | MyISAM |…]; « , »: Séparateur entre les champs. TEMPORARY: pour créer une table qui n’existera que durant la session courante (la table sera supprimée à la déconnexion). 8 Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 9.
    LDD: Langage Définitiondes données(3) Déclaration des contraintes: Les contraintes peuvent être déclarées de deux manières : 1.contraintes en ligne (inline constraints): Se définissent en même temps que la déclaration de la colonne; 2.Contraintes hors ligne (out-of-line constraints). : Se définissent après que la colonne est déclarée ; ces contraintes ne sont pas limitées à une colonne et peuvent être personnalisées par un nom. Il est recommandé de déclarer les contraintes NOT NULL en ligne, les autres peuvent soit être déclarées en ligne, soit être nommées Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 10.
    LDD: Langage Définitiondes données(4) - NOT NULL: pour que chaque enregistrement de l’attribut ait obligatoirement une valeur non nulle. Exemple: nom_attr VARCHAR(10) NOT NULL; - DEFAULT : 'valeur_défaut' permet de définir une valeur par défaut pour l’attribut si aucune valeur n’y est enregistrée. 1.Cette option est impossible pour les types BLOB et TEXT. 2.Les valeurs par défaut doivent être des constantes, et il n’est pas possible d’utiliser de fonction pour les définir. Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 11.
    LDD: Langage Définitiondes données(5) - AUTO_INCREMENT: Pour qu’un attribut numérique entier soit automatiquement incrémenté d’une unité à chaque insertion d’un enregistrement. Exemple: id tinyint NOT NULL auto_increment; Pour que cette contrainte soit valable, il faut que l’attribut soit indexé ou qu’il soit la clé primaire. - COMMENT : (jusqu’à 60 caractères) permet de commenter une colonne. Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 12.
    LDD: Langage Définitiondes données(6) INDEX [nom_index] (nom_attribut1,nom_attribut2,...) crée un index pour la table à partir des colonnes précisées. Exemple: INDEX mon_index (Prénom); crée un index nommé mon_index sur la colonne Prénom. La Création d’index sur des colonnes de la table facilite les recherches quand ces colonnes sont utilisées comme critère de recherche. Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 13.
    LDD: Langage Définitiondes données(7) Contraintes nommées: Sont les clés primaires, les clés étrangères, l’unicité…. Syntaxe de base: CONSTRAINT nomContrainte typeContraintei; Nom de la contrainte suivi de son type Syntaxe développée : CONSTRAINT nomContrainte UNIQUE (colonne1 [,colonne2]...) PRIMARY KEY (colonne1 [,colonne2]...) FOREIGN KEY (colonne1 [,colonne2]...) REFERENCES nomTablePere [(colonne1 [,colonne2]...)] CHECK (condition) Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 14.
    PRIMARY KEY :pour définir l’attribut comme clé primaire de la table. LDD: Langage Définition des données(8) Exemple1: nom tinyint(4) NOT NULL AUTO_INCREMENT, PRIMARY KEY (nom); nom tinyint(4) NOT NULL AUTO_INCREMENT PRIMARY KEY ; ou CONSTRAINT pk_nom PRIMARY KEY (nom); définit l’attribut nom comme une clé primaire. Exemple2: PRIMARY KEY (nom, prenom); Ou CONSTRAINT pk_np PRIMARY KEY(nom,prenom); crée une clé primaire composée des deux attributs, nom et prenom. Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 15.
    LDD: Langage Définitiondes données(9) UNIQUE (nom_attribut1,nom_attribut2,...) pour que chaque enregistrement ait une valeur unique dans la colonne des attributs précisés. Exemple: UNIQUE(nom, prenom); ou CONSTRAINT un_nom UNIQUE(nom,prenom); Empêche d’enregistrer deux personnes ayant le même nom et le même prénom. Par contre, deux prénoms identiques avec deux noms différents sont acceptés. Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 16.
    LDD: Langage Définitiondes données(10) FOREIGN KEY: définit une clé étrangère Exemple: dans la table commande on peut écrire FOREIGN KEY (id_client) REFERENCES client(id-client) Ou CONSTRAINT fk_client FOREIGN KEY (Num_client) REFERENCES client (id_client)); Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 17.
    LDD: Langage Définitiondes données(11) ENGINE : définit le type de table InnoDB: Type par défaut bien adapté à la programmation de transactions  MyISAM :est un type robuste, mais ne supportant pas pour l’heure l’intégrité référentielle. MEMORY :Type pour les tables temporaires, ARCHIVE, etc. Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 18.
    « ;» :symbole par défaut qui termine une instruction MySQL en mode ligne de commande. LDD: Langage Définition des données(12) Délimiteurs En mode ligne de commande, il est possible (par la directive delimiter de choisir le symbole qui terminera chaque instruction. Exemple: delimiter | CREATE TABLE Test (t CHAR(8))| Sensibilité à la casse MySQL est sensible par défaut à la casse (au niveau des noms de base et de table) dans la plupart des distributions Unix, il ne l’est pas pour Windows Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 19.
    Commentaires Dans toute instructionSQL (déclaration, manipulation, interrogation et contrôle des données), il est possible d’inclure des retours chariot, des Tabulations, espaces et commentaires : • sur une ligne précédée de deux tirets «-- », • en fin de ligne à l’aide du dièse « # », • au sein d’une ligne ou sur plusieurs lignes entre « /* » et « */ ». LDD: Langage Définition des données(13) Exemple: Sans commentaire CREATE TABLE Test(colonne DECIMAL(38,8)); CREATE TABLE Test ( colon ne DECIMA L(38,8) ); Avec commentaire CREATE TABLE -- nom de la table Test( #début de la description COLONNE DECIMAL(38,8) ) -- fin, ne pas oublier le point-virgule. ; CREATE TABLE Test ( /* une plus grande description des colonnes */ COLONNE /* type : */ DECIMAL(38,8)); Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 20.
    Exemple: LDD: Langage Définitiondes données(14) Id_Entre nrue rue ville nomEntre CREATE TABLE entreprise( Id_entre CHAR(4), nrue INTEGER(3), rue CHAR(20), ville CHAR(15) DEFAULT ‘Agadir’ COMMENT 'Par defaut : Agadir', Nom_Entreprise CHAR(15) NOT NULL CONSTRAINT pk_entreprise PRIMARY KEY(id_entre))ENGINE=Inn oDB; 1.Deux contraintes en Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 21.
    LDD: Langage Définitiondes données(15) REFERENCES Entreprise(Id_entre) ); Exemple: CREATE TABLE fonctionnaire( id_fct CHAR(6), nom CHAR(15) NOT NULL, nbH DECIMAL(7,2), Id_entre CHAR(4), CONSTRAINT pk_fonctionnaire PRIMARY KEY(id_fct), CONSTRAINT ck_nbH CHECK(nbH BETWEEN 0 AND 20000), CONSTRAINT un_nom UNIQUE (nom), CONSTRAINT fk_fct_entre FOREIGN KEY (Id_entre) Une contrainte en ligne et quatre contraintes nommées Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL CONSTRAINT nn_nom CHECK (nom IS NOT NULL),
  • 22.
    LDD: Langage Définitiondes données(16) Type des Colonne : Nom d’une colonne et son type de données ( INTEGER, CHAR,DATE…). Quels sont les types de données disponibles sous MySQL..? MySQL permet de stocker des informations selon de nombreux types de données. Cela donne la possibilité d’adapter le plus précisément possible le type de donnée à l’information qui est enregistrée dans une table. Le choix du type doit se faire de telle sorte que l’information occupe le moins d’octets possible. Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 23.
    LDD: Langage Définitiondes données(17) Types numériques: Les types numériques permettent de stocker toutes sortes de valeurs numériques entières ou décimales avec des intervalles de valeurs très étendus. 1.Les entiers: TINYINT: Un très petit entier prenant des valeurs de –128 (– 27) à 127 (27 – 1). S’il est suivi de l’option UNSIGNED, les valeurs sont positives et varient de 0 à 255 (28 – 1). Chaque valeur occupe 1 octet. SMALLINT: Un petit entier prenant des valeurs de –32768 (– 215) à 32767 (215 – 1). S’il est suivi de l’option UNSIGNED, les valeurs sont positives et varient de 0 à 65535 (216 – 1). Chaque valeur occupe 2 octets. Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 24.
    LDD: Langage Définitiondes données(18) MEDIUMINT: Entier moyen prenant des valeurs de –8388608 (– 223) à 8388607 (223 – 1).S’il est suivi de l’option UNSIGNED, les valeurs sont positives et varient de 0 à 16777215 (224 – 1). Chaque valeur occupe 3 octets. INT ou INTEGER Entier prenant des valeurs de –2147483648 (– 231) à 2147483647 (231 – 1). S’il est suivi de l’option UNSIGNED, les valeurs sont positives et varient de 0 à 4294967295 soit 232 – 1. Chaque valeur occupe 4 octets. BIGINT Grand entier prenant des valeurs de –9223372036854775808 (– 263) à 9223372036854775807 (263 – 1). S’il est suivi de l’option UNSIGNED, les valeurs sont positives et varient de 0 à 18446744073709551615, soit 264 – 1. Chaque valeur occupe 8 octets. Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 25.
    LDD: Langage Définitiondes données(19) 2.Les réels: FLOAT :Nombre à virgule flottante en simple précision prenant des valeurs de – 3.402823466E+38 à –1.75494351E–38 pour les nombres négatifs et de 1.75494351E–38 à 3.402823466E+38 pour les positifs. S’il est suivi de l’option UNSIGNED, les valeurs sont uniquement positives. Avec les options FLOAT (M,D), l’affichage s’effectue avec M chiffres dont D décimales. Chaque valeur occupe 4 octets. DOUBLE :Nombre à virgule flottante en double précision prenant des valeurs de –1.7976931348623157E+308 à –2.2250738585072014E–308 pour les nombres négatifs et de 2.2250738585072014E–308 à 1.7976931348623157E+308 pour les positifs, auxquelles s’ajoute la valeur exacte de 0. S’il est suivi de l’option UNSIGNED, les valeurs sont uniquement positives. Avec les options DOUBLE (M,D) l’affichage se fait avec M chiffres dont D décimales. Chaque valeur occupe 8 octets. Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 26.
    LDD: Langage Définitiondes données(20) DECIMAL: Nombre à virgule flottante qui doit être signé. La valeur est stockée comme une chaîne de caractères dont chaque caractère est un chiffre. Les Valeurs sont les mêmes que pour le type DOUBLE. S’il est suivi de l’option UNSIGNED, les valeurs sont uniquement positives. Avec les options DECIMAL (M), l’affichage s’effectue avec M chiffres (par défaut 10 chiffres), ce qui limite l’intervalle de valeurs. Avec les options DECIMAL (M,D), l’affichage s’effectue avec M chiffres dont D décimales. Chaque valeur occupe autant d’octets qu’il y a de caractères dans le nombre. 3.Les chaine de caractères: Ces types permettent de stocker des chaînes de caractères de longueurs très diverses, allant du simple caractère au chaine très Longue. Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 27.
    LDD: Langage Définitiondes données(21) CHAR(M) : Chaîne de caractères de longueur fixe de M caractères complétée par des espaces si la donnée stockée est plus petite. La longueur indiquée varie de 0 à 255 caractères. La chaîne stockée occupe toujours M octets, même si elle ne contient qu’un seul caractère significatif. VARCHAR(M) Chaîne de caractères de longueur variable comprise entre 1 et M caractères. La valeur de M varie de 1 à 255 caractères. La chaîne stockée occupe N + 1 octets quand elle comprend N caractères. TINYTEXT/TINYBLOB: Texte d’une longueur comprise entre 1 et 255 caractères. Le type TINYBLOB est sensible à la casse. La chaîne stockée occupe N + 1 octets quand elle comprend N caractères. Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 28.
    LDD: Langage Définitiondes données(22) TEXT/BLOB: Texte d’une longueur comprise entre 1 et 65 535 caractères. Le type BLOB est sensible à la casse. La chaîne stockée occupe N + 2 octets quand elle comprend N caractères. MEDIUMTEXT/MEDIUMBLOB: Texte d’une longueur comprise entre 1 et 16 777 215 caractères. Le type MEDIUMBLOB est sensible à la casse. La chaîne stockée occupe N + 3 octets quand elle comprend N caractères. LONGTEXT/LONGBLOB: Texte d’une longueur comprise entre 1 et 4 294 967 295 caractères. Le type LONGBLOB est sensible à la casse. La chaîne stockée occupe N + 4 octets quand elle comprend N caractères. Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 29.
    LDD: Langage Définitiondes données(23) ENUM :Permet le choix d’une seule valeur parmi une liste des N chaînes de caractères définies dans le type. Le type peut définir jusqu’à 65 535 valeurs. ENUM('chaine1', ...,' chaineN') SET :Permet le choix d'une ou plusieurs valeurs simultanément parmi l’ensemble des N chaînes de caractères définies dans le type. L’ensemble peut contenir jusqu’à 64 valeurs. SET('chaine1', ...,'chaineN') 4.Types booléens BIT[(n)],Un bit, Ensemble de n bits. Taille de 1 à 64 (par défaut 1). BOOL, BOOLEAN : équivaut à TINYINT(1) Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 30.
    LDD: Langage Définitiondes données(24) 5.Types dates et heures DATE: Une date au format AAAA-MM-JJ dans l’intervalle de 1000-01-01 à 9999-12-31. Chaque enregistrement occupe 3 octets. DATETIME Contient la date et l’heure au format AAAA-MM-JJ HH:MM:SS dans l’intervalle de 1000-01-01 00:00:00 à 9999-12-31 23:59:59. Chaque enregistrement occupe 8 octets. TIME: Stocke l’heure au format HH:MM:SS ou HHH:MM:SS pour un intervalle de valeurs allant de –838:59:59 à 838:59:59 permettant d’effectuer des calculs de durée excédant 24 heures. Chaque enregistrement occupe 3 octets. Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 31.
    LDD: Langage Définitiondes données(25) YEAR: Représente les années au format YYYY pour un intervalle allant de 1901 à 2155. Si l’année est fournie avec deux chiffres, les valeurs de 00 à 69 correspondent aux années 2000 à 2069 et les valeurs 70 à 99 aux années 1970 à 1999. Chaque enregistrement occupe 1 octet. Structure d’une table : Syntaxe: DESCRIBE [nomBase.] nomTableou [colonne]; ->Describe client; ->Describe client id_client; Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 32.
    Suppression d’une table: Syntaxe: DROP[TEMPORARY] TABLE [IF EXISTS] LDD: Langage Définition des données(26) TEMPORARY : pour supprimer des tables temporaires. IF EXISTS : permet d’éviter qu’une erreur se produise si la table n’existe pas. Exemple: Les « fils » puis les « pères » DROP TABLE fonctionnaire; DROP TABLE Entreprise; DROP TABLE fonctionnaire, Entreprise; Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 33.
    LDD: Langage Définitiondes données(27) Évolution d’un schéma L’évolution d’un schéma est un aspect permettant de modifier une base de données d’un point de vue structurel (colonnes et index) mais aussi des contraintes. L’instruction principalement utilisée est ALTER TABLE qui permet :  d’ajouter,  de renommer,  de modifier,  de supprimer des colonnes d’une table.  d’ajouter et de supprimer des contraintes. Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 34.
    LDD: Langage Définitiondes données(28) Modifications structurelles 1.Ajout des colonnes Syntaxe: ALTER TABLE[nomBase].nomTable ADD [COLUMN] ; noncolonne typeMySQL [NOT NULL | NULL] [DEFAULT valeur] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'chaine’] [REFERENCES ...] [FIRST|AFTER nomColonne ]; Exemple: ALTER TABLE fonctionnaire ADD (salaire DECIMAL(7,2)); ALTER TABLE fonctionnaire ADD (domaine VARCHAR(4) DEFAULT ‘dev', pays VARCHAR(30) DEFAULT ‘Maroc' NOT NULL); Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 35.
    LDD: Langage Définitiondes données(29) Modifications structurelles 2.Renommer des colonnes Syntaxe: ALTER TABLE[nomBase].nomTable CHANGE [COLUMN] ; ancienNom nouveauNom typeMySQL [NOT NULL | NULL] [DEFAULT valeur] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'chaine’] [REFERENCES ...] [FIRST|AFTER nomColonne ]; Exemple: ALTER TABLE fonctionnaire CHANGE ville adresse VARCHAR(30) AFTER nbH; Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 36.
    LDD: Langage Définitiondes données(30) Modifications structurelles 3.Modifier le type des colonnes Syntaxe: ALTER TABLE[nomBase].nomTable MODIFY [COLUMN] nomColonneAmodifier typeMySQL [NOT NULL | NULL] [DEFAULT valeur] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'chaine’] [REFERENCES ...] [FIRST|AFTER nomColonne ]; Exemple: ALTER TABLE fonctionnaire MODIFY id_entre VARCHAR(6) DEFAULT 'SING'; ALTER TABLE fonctionnaire MODIFY Id_entre CHAR(4) NOT NULL; Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 37.
    LDD: Langage Définitiondes données(31) Modifications structurelles 4. Valeurs par défaut des colonnes Syntaxe: ALTER TABLE[nomBase].nomTable ALTER [COLUMN] nomColonneAmodifier {SET DEFAULT ‘chaine’ | DROP DEFAULT}; Exemple: ALTER TABLE fonctionnaire ALTER COLUMN adresse SET DEFAULT ‘Agadir'; ALTER TABLE fonctionnaire ALTER COLUMN id_entre DROP DEFAULT; définit une valeur par défaut pour la colonne adresse puis supprime celle relative à la colonne id_entre Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 38.
    LDD: Langage Définitiondes données(32) Modifications structurelles 5. Supprimer des colonnes Syntaxe: ALTER TABLE [nomBase].nomTable DROP { [COLUMN] nomColonne}; Exemple: ALTER TABLE fonctionnaire DROP COLUMN adresse; Ou ALTER TABLE fonctionnaire DROP adresse; Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 39.
    LDD: Langage Définitiondes données(33) Modifications des contraintes 1. Ajout de contraintes Syntaxe: ALTER TABLE [nomBase].nomTable ADD { INDEX [nomIndex] [typeIndex] (nomColonne1,...) | CONSTRAINT nomContrainte typeContrainte }; • UNIQUE (colonne1 [,colonne2]...) • PRIMARY KEY (colonne1 [,colonne2]...) • FOREIGN KEY (colonne1 [,colonne2]...) 1.1 Unicité Exemple: ALTER TABLE entreprise ADD CONSTRAINT un_nomE UNIQUE (Nom_Entreprise); Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 40.
    LDD: Langage Définitiondes données(34) 2. Clé étrangère Exemple: ALTER TABLE Fonctionnaire ADD INDEX (id_entre); ALTER TABLE Fonctionnaire ADD CONSTRAINT fk_ Fonctionnaire FOREIGN KEY(id_entre) REFERENCES Entreprise(id_entre); 3. Clé primaire ALTER TABLE fonctionnaire ADD CONSTRAINT pk_fct PRIMARY KEY (nom, id_fct); valable dans le cas ou la table fonctionnaire ne contient pas aucune clé primaire Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 41.
    LDD: Langage Définitiondes données(35) Modifications des contraintes 1. Suppression de contraintes 1. Contrainte NOT NULL Exemple: ALTER TABLE client MODIFY nom CHAR(10) NULL; ALTER TABLE client MODIFY prenom CHAR(10) NULL; Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 42.
    LDD: Langage Définitiondes données Modifications des contraintes 1. Suppression de contraintes 2. Clé étrangère ALTER TABLE [nomBase].nomTable DROP FOREIGN KEY nomContrainte; Exemple: ALTER TABLE fonctionnaire DROP FOREIGN KEY fk_fct_entre; • ALTER TABLE ligne DROP FOREIGN KEY fk_ligne_article; 3. Clé primaire Exemple: • ALTER TABLE ligne DROP PRIMARY KEY; • ALTER TABLE ligne DROP PRIMARY KEY CASCADE; Si la colonne clé primaire à supprimer contient des clés étrangères, il faut d’abord retirer les contraintes de clé étrangère. Si la clé primaire à supprimer est référencée par des clés étrangères d’autres tables, il faut d’abord ôter les contraintes de clé étrangère de ces autres tables. Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 43.
    LMD&LID: Langage demanipulation et d’interrogation des données Les langages LMD et LIM sont basés sur l’Algèbre relationnelle. L’algèbre relationnelle est une méthode permettant la modélisation:  Des manipulations des données  Les structures des tables Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 44.
    Opérations relationnelles L’Algèbre relationnelleoffre plusieurs opérations relationnelles. Les opérations relationnelles permettent de fabriquer une relation à partir des relations de départ R1 Requête R2 … Rn R Une requête est une expression (opération) de l'algèbre relationnelle Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 45.
    Opérations relationnelles (2) Ondistingue trois catégories d'opérations relationnelles :  Opérations ensemblistes traditionnelles union, intersection, différence  Opérations permettant de construire une nouvelle relation à partir d'une autre Projection, sélection  Opérations qui permettent de combiner deux relations pour en obtenir une troisième Jointure, produit Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 46.
    Opérations ensemblistes Soient Ret S deux relations de même schéma. 1.Union La réunion de R et S , notée R ∪S, est l'ensemble des tuples qui figurent dans l'une ou l'autre ou dans les des deux en même temps. 2.intersection L'intersection de R et S, notée R ∩S , est l'ensemble des tuples qui figurent dans R et dans S . 3.différence La différence entre R et S, notée R -S , est l'ensemble des tuples qui figurent dans R mais pas dans S . Ces trois opérations fournissent une nouvelle relation ayant le même schéma que les relations de départ. Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 47.
    Opérations ensemblistes (2) R: S : X Y Z e b k a b c d f k X Y Z a b c d b c X Y Z e b k a b c d f k d b c R ∪S : Exemples X Y Z a b c R ∩ S : X Y Z e b k d f k R - S : X Y Z d b c S - R : Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 48.
    Opérations sur unerelation 1.Projection Soit R une relation dont le schéma est R (A1,…, An) , et si B={B1,…, Bk } une partie de {A1,…, An}, alors la projection de R sur B est la relation S dont le schéma est S ( B1,…, Bk), obtenue à partir de R en ne retenant que les attributs de projections B1,…, Bk Notations : Π B1,…, Bk (R ) ou Π (R , B1,…, Bk ) ou Project B1,…, Bk (R ) ou Project (R , B1,…, Bk ) la projection de R sur B Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 49.
    R : Π(R , X): Π (R , Y): Y b f Opérations sur une relation(2) EXEMPLE DE PROJECTION Z Y k b c b k f X e a d X Y Z e b k a b c d f k Π (R , Z, Y): Π (R , Z, X,Y): Z X Y k e b c a b k d f Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 50.
    Opérations sur unerelation(3) 2. Sélection Soit R une relation dont le schéma est R (A1,…, An), et C une condition portant sur les attributs de la relation R ; alors la restriction (ou la sélection) de R selon la condition C est la relation formée des tuples de R qui satisfont la condition C. Notations : σ C (R ) ou σ (R , C ) ou Select C (R ) ou Select (R , C ) la sélection de R selon la condition C Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 51.
    Opérations sur unerelation (4) R : σ(R , Z=k): X Y Z e b k a b c d f k X Y Z e b k d f k EXEMPLE DE RESTRICTION σ(R , X≠ a et Y=b): X Y Z e b k Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 52.
    Composition de relations(1) 3.Produitcartésien Si R (A1,…, An), et S (B1,…, Bm) sont deux relations alors leur produit cartésien est la relation T=R xS ayant pour schéma T(A1,…, An, B1,…, Bm) et définie par: T={ (a1, …, an, b1,…,bm / (a1, …, an)∈R, (b1, …, bm)∈S } Il est à noter que l‘arité de RxS est la somme des arités de R et S . Le cardinal de RxS est le produit des cardinaux de R et S. R : X Y a b c d S : A B C a d e b c f RxS : X Y A B C a b a d e a b b c f c d a d e c d b c f Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 53.
    Génie Informatique 2: Bases de données relationnelles :Sql et le SGBD MYSQL Y.RACHIDI EXEMPLE :Produit cartésien
  • 54.
    Composition de relations(2) 4.Jointure SiR (A1,…, An), et S (B1,…, Bm) sont deux relations, et si θ est une condition portant sur des attributs de R et de S alors la jointure (θ-jointure) de R et S est la relation ayant pour schéma T(A1,…, An, B1,…, Bm) . La jointure de R et S selon θ est obtenue par la concaténation des lignes de R et S et qui vérifient entre eux la proposition θ Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 55.
    Composition de relations(3) (R , S , θ) ou 4.Jointure(suite) Notations R θ S R : X Y a b c d S : A B C a d e b c f Join(R,S, X=A) : X Y A B C a b a d e Joinθ(R ,S) ou Join(R ,S , θ) la jointure (θ-jointure) de R et S Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 56.
    R= Famille ∞((age≤ageC)and(Prix<50))Cadeau R= (Famille, Cadeau,(age≤ageC)and(Prix<50)) Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL Y.RACHIDI
  • 57.
    Composition de relations(4) 5.équijointure et jointure naturelle Lorsque la condition de jointure est une égalité entre un attribut de R et un attribut de S on parle d'équijointure •Soient R (A1,…, An, B1,…, Bk), et S (B1,…, Bk, C1,…, Cm) deux relations ayant k attributs en commun alors on appelle jointure naturelle de R et S la relation obtenue par équijointure des deux relations sur leurs attributs communs en ne gardant qu'une copie des attributs communs Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 58.
    Y.RACHIDI Génie Informatique2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 59.
    Génie Informatique 2: Bases de données relationnelles :Sql et le SGBD MYSQL Y.RACHIDI Jointure Naturelle
  • 60.
    Fonctions et agrégats(1) 1.Fonctionsde calcul •Il est possible d'effectuer des calculs sur les attributs dans les tables et tables générées par des opérations relationnelles projection, rselection et jointure à l'aide d'expression d'attributs. •Une expression d’attribut est une expression arithmétique construite à partir d'attributs d'une relation et de constantes par application d’opérations arithmétiques successives Quantité*2 Prix*Quantité Moyenne/2 Note*coefficient Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL NbrH*1.5 NbrHeff*PrixH
  • 61.
    Fonctions et agrégats(3) Agrégats Partitionnement horizontal d'une relation(table) selon les valeurs d'un ou plusieurs attributs, suivi d'un regroupement par application d'une fonction de calcul. R=AGREGAT(Relation; Attributs; Fonction{Attribut}) •Les fonctions utilisées sont Somme (SUM) Moyenne (AVG) Minimum (MIN) Maximum (MAX) Compte (COUNT) Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 62.
    Fonctions et agrégats(4) Exemple d'agrégats R1=AGREGAT(R; X; Sum{y}) R2=AGREGAT(R; X;Z; Sum{y}) R (X,Y,Y) X Y Z x1 2 z1 x1 3 z2 x2 1 z1 x2 3 z1 x2 6 z2 x3 4 z2 Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL X Sum(y) x1 5 x2 10 x3 4 X Z Sum(y) x1 z1 2 x1 z2 3 x2 z1 4 x2 z2 6 x3 z2 4 R3=AGREGAT(R; AVG{y}) R AVG(y) 19/6
  • 63.
    Fonctions et agrégats(4) Exemple d'agrégats •Calculer le nombre de commandes passées: NBCommande=AGREGAT(Commande; Count{NumC}) •Calculer le nombre de commandes passées par date (par jour) CommandeJr=AGREGAT(Commande; Dte; Count{NumC}) Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 64.
    Expressions relationnelles Arbre algébrique Enutilisant des expressions d'opérations relationnelle(projection, sélection….), il est possible d'élaborer les réponses à la plus part des questions que l'on pose à une base de données relationnelle. •Une question décomposée en requêtes peut être représentée par un arbre relationnelle. •Les nœuds correspondent aux représentations graphiques des opérations • les arcs aux flots de données entre opérations Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 65.
    Arbre relationnel Projection Sélection θ-jointure θ Condition A1,…,Ak Jointure naturelle OpOp peut être : x , - , ∪ , ∩ , ÷ Fonctions Attributs Agrégat Attributs Tri Y.RACHIDI 66 Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL Y.RACHIDI
  • 66.
    Génie Informatique 2: Bases de données relationnelles :Sql et le SGBD MYSQL Y.RACHIDI C’est quoi la liste des commandes dépassant 1000 Dh?
  • 67.
    Exemple d'arbre relationnel R1=join(Commande,Produit,Refprd=Ref) R2=Project(R1, NumC, Qté, prix) R3=Select(R2, prix*Qté>1000) R=join(Commande , R3 ) Commande R prix*Qté>1000 = Refprd Ref Commande Produit NumC, Qté, prix 65 C’est quoi la liste des commandes dépassant 1000 Dh? Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
  • 68.
    Fin Génie Informatique 2: Bases de données relationnelles :Sql et le SGBD MYSQL Y.RACHIDI