Vous êtes sur la page 1sur 33

Cours

Bases de Données Relationnelles

Dr. Safa Hachani


hachanisafaa@gmail.com

ENIB 2017/2018
Chapitre 4 :

Traitement des données – Le


langage de requêtes SQL
Généralités

1. Généralités
Généralités

Traitement des données


Les traitements définis dans les schémas de traitements sont réalisés au niveau
physique à l’aide de langages assurant :

- La définition des données


- La manipulation des données
- L’interrogation des données

Ces langages sont appelés langages de requêtes

Une Requête permet de définir un sous-ensemble d’occurrences d’une BD.

Une Requête =
- Une Cible : données à fournir à l’utilisateur
- Une Qualification : spécification des propriétés que doivent satisfaire les
données pour être retenues par la requête
Généralités

Langage de requêtes
SQL = Structured Query Language

- Interface de communication avec les SGBD relationnels


- Langage non procédural.
- Langage relationnel (utilise des opérateurs)

Le langage de requête le plus répandu : Oracle, Sql Server, PostgreSQL, MySQL,


MS ACCESS …
Sous forme texte
Généralités

Langage de requêtes
SQL = Structured Query Language

 SQL comprend
– Un langage de définition des données (LDD)
– Un langage de contrôle de données (sécurité) (LDD)
– Un langage d’interrogation des données (LMD)
– Un langage de manipulation des données (LMD)

 Plusieurs versions
de SQL
Généralités

Plan
• Types de données
• Définition et contrôle de tables et de contraintes(LDD)
• Définition et manipulation de données (LMD)
Généralités Types de
données

2. Types de données
Généralités Types de
données

Type de données
 Types numériques :
- Entier: INT, SMALLINT
- Réel: NUMBER, REAL, FLOAT, NUMERIC (n,d)

 Type texte
- Chaîne de caractères de longueur fixe: CHAR
- Chaîne de caractère de longueur variable: VARCHAR

 Type date
– DATE
– TIME
– TIMESTAMP
Généralités Type de LDD-
données Définition

3. LDD- Langage de définition


des données
Généralités Type de LDD-
données Définition

Création de table clause CREATE TABLE

• Permet de créer une structure de stockage (table).


• Syntaxe

• Create-definition : représente la liste des champs avec leurs types


et options:

– Seuls le nom et le type son obligatoires


– Par défaut le champ est défini en NULL
– L’option Auto_Increment n’est possible que sur des champs de type entier
– Les champs sont séparés par des virgules
Généralités Type de LDD-
données Définition

Exemple
CREATE TABLE Film (

idFilm INTEGER,
nom VARCHAR (50),
année INTEGER,
codePays INTEGER,

PRIMARY KEY (idFilm)

);
Généralités Type de LDD-
données Définition

Contraintes sur les colonnes


• NOT NULL : empêche d’enregistrer une valeur nulle pour une colonne.

• DEFAULT : attribuer une valeur par défaut

• PRIMARY KEY : indiquer si cette colonne est considérée comme clé


primaire.

• FOREIGN KEY (table1_colonne1, …, table1_colonneN) references


nom_table2 (table2_colonne1, …, table2_colonneN).

• CHECK est un mot associé à une condition qui doit être vérifiée pour
chaque valeur insérée
Généralités Type de LDD-
données Définition

Contrainte de clé primaire clause PRIMARY KEY

L’attribut (ou le groupe d’attributs) doit avoir une valeur unique


et identifier un tuple de manière unique.

Exemple
CREATE TABLE Internaute
(
email VARCHAR (50) PRIMARY KEY,
nom VARCHAR (20),
prenom VARCHAR (20),
motDePasse VARCHAR (60) ,
dateNaissance DATE,
CONSTRAINT pk_internaute PRIMARY KEY(email)
);
Généralités Type de LDD-
données Définition

Contrainte de non nullité clause NOT NULL

L’attribut ne peut pas prendre de valeur nulle, il doit être toujours


renseigné.

Exemple:
CREATE TABLE Internaute
(
email VARCHAR (50) NOT NULL,
nom VARCHAR (20) NOT NULL,
prenom VARCHAR (20),
motDePasse VARCHAR (60) NOT NULL,
dateNaissance DATE,
CONSTRAINT pk_internaute PRIMARY KEY(email)
);
Généralités Type de LDD-
données Définition

Contrainte d'unicité clause UNIQUE

L’attribut (ou le groupe d’attributs) doit avoir une valeur unique.


Exemple:

CREATE TABLE Internaute


(
email VARCHAR (50) NOT NULL,
nom VARCHAR (20) NOT NULL,
prenom VARCHAR (20),
motDePasse VARCHAR (60) NOT NULL,
dateNaissance DATE,

CONSTRAINT pk_internaute PRIMARY KEY(email) ,


CONSTRAINT uniq_internaute UNIQUE (nom, prenom)
);
Généralités Type de LDD-
données Définition

Contrainte référentielle clause REFERENCES

Toute valeur d'un attribut ou d'un groupe d'attributs, appelé clé


étrangère, doit exister dans une autre table.

Exemple: CREATE TABLE Artiste (


idArtiste INTEGER Primary Key,
nom VARCHAR (30) CONSTRAINT uniq_artiste UNIQUE
);

CREATE TABLE Film (

idFilm INTEGER NOT NULL,


nom VARCHAR (50) NOT NULL,
année INTEGER NOT NULL,
idArtiste INTEGER CONSTRAINT fk_artiste REFERENCES Artiste(idArtiste),
codePays INTEGER,
PRIMARY KEY (idFilm)
);
Généralités Type de LDD-
données Définition

Contrainte référentielle et suppression


clause ON DELETE CASCADE

Si le tuple référencé est supprimé alors tous les tuples qui le


référencent doivent être supprimés également.
Exemple :

CREATE TABLE Film


(
idFilm INTEGER NOT NULL,
nom VARCHAR (50) NOT NULL,
année INTEGER NOT NULL,
idArtiste INTEGER CONSTRAINT fk_film_artiste
REFERENCES Artiste(idArtiste) ON DELETE CASCADE,
codePays INTEGER,
PRIMARY KEY (idFilm)
);
Généralités Type de LDD-
données Définition

Récapitulons
CREATE TABLE Internaute
(
Un attribut doit toujours
email VARCHAR (50) NOT NULL,
avoir une valeur.
nom VARCHAR (20) NOT NULL,
prenom VARCHAR (20),
motDePasse VARCHAR (60) NOT NULL,
dateNaiss DATE,
PRIMARY KEY (email))
);

Contrainte de clé
CREATE TABLE Artiste ( primaire
idArtiste INTEGER NOT NULL,
nom VARCHAR (30) NOT NULL,
prenom VARCHAR (30) NOT NULL, Contrainte d’unicité: On
anneeNaiss INTEGER, spécifie que la valeur d’un attribut
est unique pour l’ensemble de la
PRIMARY KEY (idArtiste), colonne.
UNIQUE (nom, prenom));
Généralités Type de LDD-
données Définition

Récapitulons
CREATE TABLE Film
(
idFilm INTEGER NOT NULL,
nom VARCHAR (50) NOT NULL,
année INTEGER NOT NULL,
idArtiste INTEGER,
Référence la clé
codePays INTEGER, primaire de la table
PRIMARY KEY (idFilm), Artiste
FOREIGN KEY (idArtiste) REFERENCE Artiste,
FOREIGN KEY (codePays) REFERENCE Pays
);
Généralités Type de LDD-
données Définition

Vous avez COMPRIS ? A vous de jouer …

Soit le modèle relationnel suivant:


• Livre (idLivre, nomLivre, ISBN, etatLivre, nombrePages)
• Pret (idPret, datePret, dateRetour, duree)
• DetailPret (#idPret, #idLivre)

Note: Prenez en considération les informations suivantes lors


de la création des tables:
• ISBN doit être formé de 6 chiffres; il est unique.
• L’état du livre peut être bon, moyen ou mauvais.
• La durée du prêt est par défaut de 14 jours.

Q- Donnez les commandes SQL permettant de créer les tables


de la base de données bibliothèque.
Généralités Type de LDD-
données Définition

Correction
CREATE TABLE Livre
(idLivre INTEGER ,
nomLivre VARCHAR(20),
ISBN CHAR(6),
etatLivre VARCHAR(10) in (bon, moyen , mauvais),
nombrePages INT,
PRIMARY KEY(idLivre));

CREATE TABLE Pret CREATE TABLE DetailPret


(idPret INTEGER, (idPret INTEGER,
datePret Date, idLivre INTEGER,
dateRetour Date, PRIMARY KEY(idPret, idLivre));
duree INT DEFAULT 14 ,
PRIMARY KEY(idPret));
Généralités Type de LDD- LDD-
données Définition Modification

Modification de table clause ALTER TABLE

La clause ALTER TABLE permet :


– d'ajouter un attribut
– de supprimer un attribut
– de modifier un attribut
– d'ajouter une contrainte
– de supprimer une contrainte
Généralités Type de LDD- LDD-
données Définition Modification

Modification de table clause ALTER TABLE

ALTER TABLE <nom_table>


ADD <definition_attribut>
MODIFY <definition_attribut>
DROP <nom_attribut>
ADD <definition_contrainte>
DROP <nom_contrainte>
Exemple
ALTER TABLE Internaute
ADD adresse VARCHAR(20);

ALTER TABLE Internaute


MODIFY adresse VARCHAR(30);

ALTER TABLE Artiste


DROP CONSTRAINT fk_film_artiste;
Généralités Type de LDD- LDD-
données Définition Modification

Suppression d'une table clause DROP TABLE

La clause DROP TABLE supprime une table.


Syntaxe :
DROP TABLE <nomtable>;

Exemple :
DROP TABLE Internaute ;

Attention: on ne peut pas supprimer une table, dont la clé primaire


est une clé étrangère dans une autre table, avant cette autre table si
on n’s pas mis l’option ‘on delete cascade’.
Généralités Type de LDD- LDD- LMD-
données Définition Modification Définition

4. LMD- Langage de
manipulation des données

Partie 1 – Définition et
manipulation de données
Généralités Type de LDD- LDD- LMD-
données Définition Modification Définition

Insertion de lignes
clause INSERT INTO … VALUES

• La clause INSERT INTO … VALUES permet d'insérer de


nouvelles lignes dans la table.
• Syntaxe :
INSERT INTO <nom_table>
VALUES (valeur1, valeur2,…, valeurn)

ou
INSERT INTO <nom_table> (attr1, attr2, …, attrm)
VALUES (v1, v2,…, vm)

Remarque : Si une valeur n'est pas précisée pour un attribut qui


n’est pas obligatoire, alors le système insère la valeur NULL ou
ce qui a été spécifié dans la clause DEFAULT de CREATE TABLE.
Généralités Type de LDD- LDD- LMD-
données Définition Modification Définition

Exemple
INSERT INTO internaute
VALUES(’soumeya@yahoo.fr ’, ’Soumeya’, ’Gafsi’, ’15/05/1984’);
INSERT INTO internaute
VALUES(’ahmed@planet.tn’, ’Ahmed’, ’BenSaleh’, ’15/06/1980’);

Attention :
 Les données de type texte ou date doivent être entre ' '.
Généralités Type de LDD- LDD- LMD-
données Définition Modification Définition

Insertion de lignes
clause INSERT INTO … SELECT

La clause INSERT INTO … SELECT permet d'insérer de nouvelles lignes


dans la table à partir d'une table existante.

Syntaxe :
INSERT INTO <nom_table>
SELECT …

INSERT INTO <nom_table> (attr1, attr2, …, attrm)


SELECT r1, r2,…, rm
FROM …

Remarque : Si une valeur n'est pas précisée pour un attribut qui n’est
pas obligatoire, alors le système insère la valeur NULL ou ce qui a été
spécifié dans la clause DEFAULT du CREATE TABLE.
Généralités Type de LDD- LDD- LMD-
données Définition Modification Définition

Exemple:
CREATE TABLE Film1998
(
idFilm INTEGER NOT NULL,
nom VARCHAR (50) NOT NULL,
année INTEGER NOT NULL,
IdArtiste INTEGER,
codePays INTEGER,
PRIMARY KEY (idFilm),
FOREIGN KEY (idArtiste) REFERENCE Artiste,
FOREIGN KEY (codePays) REFERENCE Pays
);

INSERT INTO Film1998


SELECT * FROM Film WHERE année=1998;
Généralités Type de LDD- LDD- LMD- LMD- Mani-
données Définition Modification Définition pulation

Suppression de lignes clause DELETE

La clause DELETE permet de supprimer des lignes d'une table.


Syntaxe :
DELETE FROM <nom_table>
[ WHERE <critère> ]

Exemple :
DELETE FROM Film;
WHERE codepays=1;

Attention si il existe une contrainte référentielle!


Généralités Type de LDD- LDD- LMD- LMD- Mani-
données Définition Modification Définition pulation

Modification de lignes clause UPDATE

La clause UPDATE permet de modifier des lignes d'une table.


Syntaxe :
UPDATE <nom_table>
SET <nom_attribut> = <expression>
[ WHERE <critère> ]
Exemple :
UPDATE Produit
SET prix = prix *1.1;

UPDATE Internaute
SET motDePasse=‘h1998’
WHERE email=ahmed@yahoo.fr;
Généralités Type de LDD- LDD- LMD- LMD- Mani-
données Définition Modification Définition pulation

Synthèse
Nous avons vu :
• Création et modification de tables
– CREATE TABLE, ALTER TABLE, DROP TABLE
• Création et modification de contraintes
– PRIMARY KEY, NOT NULL, FOREIGN KEY
• Création et modification de données
– INSERT, UPDATE, DELETE

Vous aimerez peut-être aussi