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