Vous êtes sur la page 1sur 65

SQL-Structured Query language-

et SGBD MYSQL

Youssef RACHIDI
Filière : Informatique. EST Guelmim
Année: 2022-2023

Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL


SQL(Structured query language)[1]

SQL est un Langage complet de gestion de bases de Données


relationnelles. (un langage qui permet de communiquer avec une
base de données)

SQL est un langage formé de plusieurs sous langages

Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL 2


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

Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL 3


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

Un langage SQL est utilisé par les principaux SGBDR Comme: DB2,
Oracle, Informix, MySQL,... Chacun de ces SGBDR a cependant sa
propre variante du langage.

Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL 4


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++,….)
Portabilité: fonctionné 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
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL 5
Une Architecture SGBD MySQL(1)
MySQL est basé sur une architecture client/serveur.
C'est-à-dire que les clients (exemple un navigateur) doivent
s'adresser au serveur qui gère, contrôle et arbitre les accès aux
données.

2
1

SGBD
MySQL Base de données

3
Clients 4
SERVEUR

Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL 6


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 name_database;
Exemple: DROP DATABASE 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 une BD que si elle


n’existe pas déjà. Cela évite les problèmes et les messages d’erreurs.
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL 7
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]...
)
« , »: 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).

Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL 8


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 (Contraintes nommées):


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.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 int auto_increment;

- 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)
Création d’INDEX

INDEX [nom_index] (nom_attribut1,nom_attribut2,...) crée un index pour la


table à partir des colonnes précisées.

Exemple: CREATE INDEX `index_nom` ON `table` (`Prenom`);

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

Exemples:
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
LDD: Langage Définition des
données(8)
PRIMARY KEY : pour définir l’attribut comme clé primaire de la table.

Exemple1: ID int(4) NOT NULL AUTO_INCREMENT PRIMARY KEY ;

ou
CONSTRAINT pk_ID PRIMARY KEY (ID);

définit l’attribut ID 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(12)
« ;» : symbole par défaut qui termine une instruction MySQL en mode ligne
de commande.

Délimiteurs (une barre verticale )


En mode ligne de commande, il est possible (par la directive delimiter
de choisir le symbole qui terminera chaque instruction. ( une barre
verticale )

Exemple:
delimiter |
CREATE TABLE Test (t CHAR(8))|

Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD


MYSQL
LDD: Langage Définition des
données(13)
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 « */ ».

Exemple:
Avec commentaire
Sans commentaire
CREATE TABLE
-- nom de la table
CREATE TABLE Test(colonne
Test( #début de la description
DECIMAL(38,8));
COLONNE DECIMAL(38,8)
CREATE TABLE
)
Test
-- fin, ne pas oublier le point-virgule.
( colon
;
ne
CREATE TABLE Test (
DECIMA
/* une plus grande description
L(38,8)
des colonnes */
);
COLONNE /* type : */
Y.RACHIDI DECIMAL(38,8));
Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
LDD: Langage Définition des
données(14)
Exemple1: Id_Entre nrue rue ville nomEntre

CREATE TABLE entreprise(


Id_entre CHAR(4),
nrue INTEGER(3),
rue CHAR(20),
ville CHAR(15) DEFAULT
‘Agadir’ -- Par defaut :
Agadir',
Nom_Entreprise
CHAR(15) NOT NULL,
CONSTRAINT pk_entreprise
PRIMARY KEY(id_entre));

Y.RACHIDI 1. Deux contraintes


Génieen
Informatique 2 : Bases de données relationnelles :Sql et le SGBD
MYSQL
ligne
LDD: Langage Définition des
données(15)
Exemple 2:
CREATE TABLE fonctionnaire(
id_fct CHAR(6), nom CHAR(15) NOT NULL,
nbH DECIMAL(7,2),
Id_entre CHAR(4), + 1 contrainte en ligne
CONSTRAINT pk_fonctionnaire PRIMARY KEY(id_fct), + 4 contraintes nommées
CONSTRAINT ck_nbH CHECK(nbH BETWEEN 0 AND 2000),
CONSTRAINT un_nom UNIQUE (nom),
CONSTRAINT fk_fct_entre Comment transformé la
FOREIGN KEY (Id_entre) contrainte NOT NULL vers la
contrainte Nommée ?
REFERENCES Entreprise(Id_entre)
); CONSTRAINT NN_nom
CHECK (nom IS 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(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. FLOAT(5,2) ------------------ 145,78

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.

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.

Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD


MYSQL
LDD: Langage Définition des
données(23)
4.Types booléens

BIT[(n)],Un bit, Ensemble de n bits. Taille de 1 à 64 (par défaut 1).

BOOL, BOOLEAN

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 (afficher details):
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


LDD: Langage Définition des
données(26)
Suppression d’une table:
Syntaxe:
DROP [TEMPORARY] TABLE [IF EXISTS]

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 Entreprise;
DROP TABLE fonctionnaire, Entreprise;
DROP TABLE fonctionnaire;

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

ALTER

L’instruction principalement utilisée est ALTER TABLE qui permet soit :

 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] ;
[COLUMN] :
noncolonne type [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)
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)
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)
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)
5. Supprimer des colonnes

Syntaxe:

ALTER TABLE [nomBase].nomTable DROP {nomColonne};

Exemple:

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)
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 LID sont basés sur l’Algèbre relationnelle.

L'algèbre relationnelle est un langage de requêtes dans des bases


de données relationnelles

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
R2 Une R
… Requête
Rn

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


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
L‘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)

Exemples
R: XY Z S: XY Z R ∪S : XY Z
e b k a b c e b k
a b c d b c a b c
d f k d f k
d b c

R∩S: XY Z R- S: XY Z S- R: XY Z
a b c e b k d b c
d f k

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 :
Π (R , B1,…, Bk ) ou
Π B1,…, Bk (R ) 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
Opérations sur une relation(2)
EXEMPLE DE PROJECTION

R: X Y Z Π (R , X): X Π (R , Y): Y
e b k e b
a b c a
d f k d f

Π (R , Z, Y): Z Y Π (R , Z, X,Y): Z XY
k b k e b
c b c a b
k f 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)
EXEMPLE DE RESTRICTION

R: X Y Z
σ(R , Z=k): XY Z
e b k e b k
a b c d f k
d f k

σ(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 }

R: X Y S: A B C RxS : X Y A B C
a b a d e a b a d e
c d b c f a b b c f
c d a d e
c d b c f

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.
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
EXEMPLE :Produit cartésien

Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL


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)

Notations
R
ou (R , S ,
S θ)
θJoinθ(R ,S) ou Join(R ,S ,
θ)
la jointure (θ-jointure) de R et S
Join(R,S, X=A)
R: X Y S: A B C : X Y A B C
a b a d e a b a d e
c d b c f

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

Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL


Composition de relations (4)

5.équijointure
Lorsque la condition de jointure est une égalité entre un attribut
de R et un attribut de S on parle d'équijointure

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
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, selection 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 Moyenne/2 NbrH*1.5


Prix*Quantité Note*coefficient NbrHeff*PrixH

Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL


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

R (X,Y,Y) R1=AGREGAT(R; X; Sum{y}) R2=AGREGAT(R; X;Z; Sum{y})

X Y Z X Sum(y) X Z Sum(y)
x1 2 z1 x1 5 x1 z1 2
x1 3 z2 x2 10 x1 z2 3
x2 1 z1 x3 4 x2 z1 4
x2 3 z1 x2 z2 6
R3=AGREGAT(R; AVG{y}) x3 z2 4
x2 6 z2
x3 4 z2
R AVG(y)
19/6

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

A1,…,Ak Projection Condition Sélection

Jointure
θ θ-jointure
naturelle

Op Op peut être : x , - , ∪ , ∩

Fonctions
Agrégat Attributs
Attributs Tri

Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL 66


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


Exemple d'arbre relationnel

R1=join(Commande,Produit, Refprd=Ref)
R2=Project(R1, NumC, Qté, prix) R
R3=Select(R2, prix*Qté>1000)
R=join(Commande , R3 )

Commande
prix*Qté>1000
C’est quoi la
liste des
commandes NumC, Qté, prix

dépassant 1000
Refprd Ref
Dh? =

Commande Produit
65
Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL
Fin

Y.RACHIDI Génie Informatique 2 : Bases de données relationnelles :Sql et le SGBD MYSQL

Vous aimerez peut-être aussi