Bases de données relationnelles
LANGAGE SQL
Prof : Tahri Mouna
SQL
Le langage SQL (structured Query language) est un langage utilisé pour
interroger, mettre à jour et gérer les informations contenues dans des bases de
données relationnelles.
2
SQL
SQL a une triple fonction :
o DDL : Data Definition Language : Définition et modification du schéma de la
base de données.
o DML : Data Manipulation Language : Interrogation et modification des
données.
o DCL : Data Control Language : Contrôler la sécurité et l’intégrité de la base de
données
3
LANGAGE DE DESCRIPTION DES DONNEES (DDL)
o Créer une base de données
Pour créer une base de données qui sera appelé « ma_base » il suffit d’utiliser la
requête suivante qui est très simple:
CREATE DATABASE ma_base;
4
LANGAGE DE DESCRIPTION DES DONNEES (DDL)
o Créer une base de données
Avec MySQL, si une base de données porte déjà ce nom, la requête retournera une
erreur. Pour éviter d’avoir cette erreur, il convient d’utiliser la requête suivante pour
MySQL:
CREATE DATABASE IF NOT EXISTS ma_base;
5
LANGAGE DE DESCRIPTION DES DONNEES (DDL)
o Créer une Table
CREATE TABLE Nom_table ( Employé
CIN
colonne1 type1, Nom
Prénom
colonne2 type2, Salaire
.........,
.........); Employé (CIN , Nom, Prénom, Salaire)
6
LANGAGE DE DESCRIPTION DES DONNEES (DDL)
o Créer une Table
Les principaux types de données supportés sont les suivants :
CHAR(taille) : Ce type de données permet de stocker des chaînes de caractères de longueur
fixe. taille doit être inférieur à 255, sa valeur par défaut est 1.
VARCHAR(taille) : Ce type de données permet de stocker des chaînes de caractères de longueur
variable. longueur doit être inférieur à 2000, il n'y a pas de valeur par défaut.
INEGER : Ce type permet de stocker des entiers signés codés sur 4 octets
7
LANGAGE DE DESCRIPTION DES DONNEES (DDL)
o Créer une Table
Les principaux types de données supportés sont les suivants :
REAL : Ce type permet de stocker des réels comportant 6 chiffres significatifs codés sur 4 octets
NUMERIC(précision, longeur) : Ce type de données permet de stocker des données numériques
à la fois entières et réelles avec une précision de 1000 chiffres significatifs. longueur précise le
nombre maximum de chiffres significatifs stockés et précision donne le nombre maximum de
chiffres après la virgule.
DATE/TIME : types date / heure
8
Création de table en Sql
o Exemple
CREATE TABLE Vente (
Vente
NumAch INT PRIMARY KEY,
NumAch DateVente Date ,
Date_vente
Ville Ville VARCHAR(30)
);
Vente (NumAch, Date_vente, Prix)
9
règles d’intégrité
Les règles d’intégrité (R.I.) sont des assertions qui doivent être vérifiées à tout
moment par les données contenues dans la base de données.
10
Contrainte de clé
Clé primaire : PRIMARY KAY
La contrainte de clé impose que chaque relation possède une clé primaire.
La clé primaire de la table Client est le noClient
CREATE TABLE Client
(noCLIENT INTEGER PRIMARY KEY,
nomClient VARCHAR(15) NOT NULL,
noTéléphone VARCHAR(15) NOT NULL) ;
CREATE TABLE Client
(noCLIENT INTEGER,
nomClient VARCHAR(15),
noTéléphone VARCHAR(15),
PRIMARY KEY (noCLIENT)
) ;
Contrainte de clé
Clé primaire composée
CREATE TABLE LigneCommande
(noCommande INTEGER,
noArticle INTEGER,
quantité INTEGER,
PRIMARY KEY (noCommande, noArticle)
);
Contrainte de clé
Clé étrangère : FOREIGN KEY... REFERENCES
porte sur une relation R et impose que la valeur d’un attribut (clé étrangère)
apparaisse comme valeur de clé primaire dans une autre relation S.
Société (S)
Clé étrangère
Nom_Soc Ville
BMCE CASA
Coca AGADIR
Maroc Tele RABAT
COPAG TAROUDANT
Employé (R)
CIN Nom Prénom Salaire Nom_Soc
A24578 ALAMI AHMED 5500.00 Maroc Tele
JE4569 FAOUZI SAID 6200.00 BMCE
AB6593 DAOUDI YOUSSEF 4000.00 Coca
B1234 ARABI FATIMA 8500.00 Coca
J3659 DAOUDI AMNIA 7550.00 Maroc Tel
A3426 FAHMI ANASSE 7550.00 COPAG
Clé primaire Clé primaire
Employé
Société
CIN
Nom_Soc
Nom
Ville
Prénom
Salaire Employé (CIN , Nom, Prénom, Salaire,# Nom_Soc)
Nom_Soc
Clé étrangère Société(Nom_Soc, Ville) 14
Clé étrangère
Le Nom_Soc de la table Employé fait référence à la clé primaire Nom_Soc de la table
Société
CREATE TABLE Employé
(CIN VARCHAR(10),
NOM VARCHAR(20),
Prénom VARCHAR(20),
Salaire INTEGER,
Nom_Soc VARCHAR(50),
PRIMARY KEY(CIN,NOM_Soc),
FOREIGN KEY (Nom_Soc) REFERENCES Société(Nom_Soc)
) ;
La table Société doit d ’abord être créée
15
Contrainte NON NULL
NOT NULL
Spécifie qu’un ensemble d’attributs ne contient pas de valeur manquante (NULL)
CREATE TABLE Client
(noCLIENT INTEGER PRIMARY KEY,
nomClient VARCHAR(15) NOT NULL,
noTéléphone VARCHAR(15) NOT NULL
) ;
Contrainte de valeur par défaut
DEFAULT ‘…..’
Pour spécifier la valeur par défaut d’un champ
CREATE TABLE Client
(noCLIENT INTEGER PRIMARY KEY,
nomClient VARCHAR(15) NOT NULL,
noTéléphone VARCHAR(15) DEFAULT 'Confidentiel'
) ;
Contrainte de valeur unique
UNIQUE
CREATE Table Citoyen
(noAssurranceSociale INTEGER,
noAssurranceMaladie INTEGER,
noPasseport INTEGER,
Spécifie qu’un ensemble d’attributs ne contient nom VARCHAR(30),
prénom VARCHAR(30),
pas des doublons dateNaissance DATE,
PRIMARY KEY (noAssurranceSociale),
UNIQUE (noAssurranceMaladie),
UNIQUE (noPasseport),
UNIQUE (prénom)
) ;
Contrainte CHECK sur une colonne
CHECK (contrainte)
Le noClient est supérieur à 0 et inférieur à 100000
CREATE TABLE Client
(noCLIENT INTEGER PRIMARY KEY CHECK(noClient >0 AND noClient < 100000),
nomClient VARCHAR(15) NOT NULL,
noTéléphone VARCHAR(15) NOT NULL
) ;
CREATE TABLE Client
(noCLIENT INTEGER PRIMARY KEY,
nomClient VARCHAR(15) NOT NULL,
noTéléphone VARCHAR(15) NOT NULL,
CHECK(noClient >0 AND noClient < 100000)
) ;
Exemple
Vente
NumAch Supposons que les champs doivent être non null
NumVoit
Date_vente
Prix Personne
Voiture NumAch
Nom
NumVoit
Age
Marque
Ville
Type
Couleur
20
Modification du schéma d’une table
Renommer une colonne
ALTER TABLE nom_table
RENAME COLUMN ancien_nom TO nouveau_nom;
Renommer une table
ALTER TABLE nom_table
RENAME TO nouveau_nom;
21
Modification du schéma d’une table
Ajout d’un attribut à la relation en utilisant le mot clé ADD.
Dans ce cas, l'attribut est également ajouté aux tuples existants
ALTER TABLE Nom_Table
ADD colonne Type;
22
Modification du schéma d’une table
o Ajouter un attribut
CREATE TABLE Employé (
Employé CIN VARCHAR(8) PRIMARY KEY,
CIN
Nom
Nom VARCHAR(20),
Prénom Prénom VARCHAR(20),
Salaire
Salaire REAL
Employé (CIN , Nom, Prénom, Salaire) );
Ajouter de la colonne Date_Naissance (de type DATE) dans la table Employé
23
EXEMPLE
o Ajouter un attribut
Employé
CIN
Nom
ALTER TABLE Employé Prénom
Salaire
ADD Date_Naissance DATE ; Date_Naissance
Employé (CIN , Nom, Prénom, Salaire, Date_Naissance)
24
Modification du schéma d’une table
o Ajouter une contrainte
ALTER TABLE Nom_table
ADD [CONSTRAINT Nom_contrainte] contrainte;
25
Ajouter une contrainte
o Exemple
CREATE TABLE Employé (
Employé CIN VARCHAR(8) PRIMARY KEY,
CIN
Nom Nom VARCHAR(20),
Prénom
Salaire Prénom VARCHAR(20),
Salaire REAL
Employé (CIN , Nom, Prénom, Salaire) );
Ajouter une contrainte Salaire > 0 sur les colonnes " Salaire" de la table Employé
LANGAGE DE Définition DES DONNEES (DDL)
o Suppression d’une contrainte
Toute contrainte que vous avez définie peut être supprimée à l'aide de la
commande ALTER TABLE avec l'option DROP CONSTRAINT.
ALTER TABLE Nom_table
DROP CONSTRAINT nom_contrainte;
27
SUPPRIMER une contrainte
o Exemple
Employé
CIN ALTER TABLE Employé
Nom
Prénom DROP CONSTRAINT Salaire_Positif;
Salaire
LANGAGE DE Définition DES DONNEES (DDL)
o Modification du schéma d’une table
Suppression d’un attribut à la relation en utilisant le mot clé DROP
ALTER TABLE Nom_Table
DROP colonne ;
29
Modification du schéma d’une table
o Supprimer un attribut
CREATE TABLE Employé (
Employé CIN VARCHAR(8) PRIMARY KEY,
CIN
Nom
Nom VARCHAR(20),
Prénom Prénom VARCHAR(20),
Salaire
Salaire REAL
Employé (CIN , Nom, Prénom, Salaire) );
Supprimer la colonne Salaire de la table Employé
30
EXEMPLE
o Ajouter un attribut
Employé
CIN
Nom
ALTER TABLE Employé
Prénom
DROP Salaire;
Employé (CIN , Nom, Prénom)
31
LANGAGE DE Définition DONNEES (DDL)
o Suppression d’une table
Suppression d’une table en utilisant le mot clé DROP TABLE
Supprimer une table revient à éliminer sa structure et toutes les données qu'elle contient
DROP TABLE Nom_table ;
32