Vous êtes sur la page 1sur 53

Chp4 : Langage SQL

Objectif :
• Maîtriser le langage SQL et les principales commandes pour lire, insérer, modifier,
supprimer des données dans une base et les expressions de contraintes
d’intégrité.

54
Contenue:

• Contraintes d’intégrité

• Création d’une table

• Création d’une vue

• Modification, Renommage ,Suppression d’une table

• Les prédicats

• La jointure

• L’insertion, La mise à jour ,La suppression de tuples

• La clause GRANT ,REVOKE

55
Langage SQL

• Le SQL(Structured Query Language) est un langage permettant de communiquer


avec une base de données. Ce langage informatique est notamment très utilisé par
les développeurs web pour communiquer avec les données d’un site web.

• Le langage SQL signifie « langage de requêtes structurées» est un langage basé sur
l’algèbre relationnelle qui permet de définir le modèle de données, de le contrôler et
enfin de le manipuler.

56
Langage SQL
Ce langage permet l’accès aux données et se compose de quatre sous-ensembles :

• Le Langage de Définition de Données : Ce langage permet la définition et la mise à jour


de la structure de la base de données (CREATE, ALTER, DROP).

• Le Langage d’Interrogation de Données : Ce langage permet de rechercher des


informations utiles en interrogeant la base de données. Certains considèrent ce langage
comme étant une partie du LMD (SELECT).

• Le Langage de Manipulation de Données : Ce langage permet de manipuler les


données de la base et de les mettre à jour (UPDATE, INSERT, DELETE).

• Le Langage de Contrôle de Données : Ce langage permet de définir les droits d’accès


pour les différents utilisateurs de la base de données, donc il permet de gérer la sécurité
de la base et de confirmer et d’annuler les transactions (GRANT, REVOKE).

57
CREATE DATABASE

Pour créer une base de données qui sera appelé « mon_base » il suffit d’utiliser la requête
suivante qui est très simple :

CREATE DATABASE mon_base;

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

58
Gestion Des Utilisateurs

• Chaque base de données Oracle possède une liste d’utilisateurs valables.


• Pour pouvoir se connecter à l’instance d’une BD un utilisateur doit utiliser un nom utilisateur et
son mot de passe.
• Pour créer un utilisateur d’une BD, il faut l’identifier an lui donnant un nom et un mot de passe.

Pour créer un utilisateur :


CREATE USER nom_utilisateur IDENTIFIED BY mot_passe ;

Pour modifier le mot de passe d’utilisateur:


ALTER USER nom_utilisateur IDENTIFIED BY nov_mot_passe ;

Pour supprimer un utilisateur :


DROP USER nom_utilisateur ;

59
CREATE TABLE
Syntaxe:
CREATE TABLE nom_table (
- - définition des colonnes
Col1 TYPE (taille) [NULL | NOT NULL | UNIQUE | DEFAULT valeur | PRIMARY KEY ],
Col2 TYPE (taille) ,
...,
- - contraintes de table
[PRIMARY KEY (liste de colonnes) ],
[FOREIGN KEY (nom colonne) REFERENCES table],
[CHECK condition ] );

60
CREATE TABLE

Contraintes d’intégrité :

• NOT NULL : valeur null impossible.

• UNIQUE : interdit qu’une colonne contienne deux valeurs identiques.

• PRIMARY KEY : définit la clé primaire de la table.

• FOREIGN KEY : indique que la colonne que l’on définit est une clé étrangère qui fait
référence à la colonne de la table tableref.

• CHECK : donne une condition que les colonnes de chaque ligne devront vérifier (plage
ou liste de valeurs).

61
Les Types De Données Utilisables

• CHAR(n) = Chaîne de caractères de longueur fixe (n=255)·

• VARCHAR(n) = Chaîne de caractères de longueur variable.

• NUMBER = Entier ou réel .

• NUMBER (p) = Entier (d’au plus p chiffres).

• DATE = Une date dont le format dépend de la configuration d’Oracle. Le plus


souvent c'est jj/mm/aaaa .

• LONG = Chaîne longue.

• INTEGER = Entier.

• FLOAT = Réel (0.934 ou 14.3434 etc.).

62
CREATE TABLE
Exemple:
CREATE TABLE Clients (
idClient CHAR(6) PRIMARY KEY ,
nom VARCHAR(30) NOT NULL,
adresse VARCHAR(30) ,
numeroTelephone INTEGER);

CREATE TABLE Produit (


idProduit CHAR(6) PRIMARY KEY ,
nom VARCHAR(30) NOT NULL,
marque VARCHAR(30) NOT NULL ,
prix NUMBER );

63
CREATE TABLE

CREATE TABLE Vente (

idVente CHAR(6) PRIMARY KEY ,

referenceProduit CHAR(6) ,

idClient CHAR(6) ,

dateV DATE NOT NULL ,

type_vnt VARCHAR(10) DEFAULT 'cheque' ,

FOREIGN KEY (referenceProduit) REFERENCES Produit(idProduit),

FOREIGN KEY (idClient) REFERENCES Clients (idClient) );

64
CREATE TABLE
CREATE TABLE clients (

idClient CHAR(6),

Nom CHAR(30) NOT NULL,

Prenom CHAR(30) NOT NULL,

Age INTEGER,

Email CHAR(50) NOT NULL,

etat_civil VARCHAR(20),

PRIMARY KEY(idClient),

CHECK ( age>0 AND age <= 120),

CHECK (Email LIKE ' %@%’ ),

CHECK (etat_civil IN ('marie' , 'célibataire' , ' veuf' , 'divorce' ) );

65
ALTER TABLE

La commande ALTER TABLE en SQL permet de modifier une table existante. Il est ainsi
possible d'ajouter, supprimer ou modifier une colonne existante, par exemple pour
changer le type.

Syntaxe de baxe:
D' une manière générale, la commande s'utilise de la manière suivante :

ALTER TABLE nom_table


Instruction;

66
ALTER TABLE

• Ajouter une colonne :


Pour ajouter une colonne à table de donnée on utilise le syntaxe suivant :

ALTER TABLE nom_table


ADD nom_colonne type_donnees ;

• Modifier une colonne:


Pour changer le type d'une colonne on utilise le syntaxe suivant :

ALTER TABLE nom_table


MODIFY nom_colonne type_donnees;

67
ALTER TABLE

• Renommer une colonne :


Pour renommer une colonne d’une table on utilise le syntaxe suivant :
ALTER TABLE nom_table
RENAME COLUMN ancien_nom TO nouveau_nom;

• Supprimer une colonne :

Pour supprimer une colonne d’une table on utilise le syntaxe suivant :


ALTER TABLE nom_table
DROP COLUMN nom_colonne;

68
ALTER TABLE

Exemple :

• ALTER TABLE utilisateur ADD adresse VARCHAR(255);

• ALTER TABLE utilisateur Modify adresse LONG;

• ALTER TABLE utilisateur RENAME COLUMN adresse TO adresse_user;

• ALTER TABLE utilisateur DROP COLUMN adresse_user;

69
INSERT INTO

La commande INSERT INTO permet d'ajouter de nouvelles lignes à une table.


Syntaxe:
INSERT INTO table (colonne1, colonne2, … )
VALUES (valeur1, valeur2, … ) ;

Ou bien on complète tous les champs dans le même ordre comme dans la table :

INSERT INTO table


VALUES (' valeur 1' , ' valeur 2' , ...);

Exemple:
• INSERT INTO client (prenom, nom, ville, age) VALUES ('Ali' , ' Fallah' , ' Fes' , 24);
• INSERT INTO client VALUES ('Leila' , ' Hadi' , ' Fes' , 24);

70
UPDATE
La commande UPDATE permet d' effectuer des modifications sur des lignes existantes.
Très souvent cette commande est utilisée avec WHERE pour spécifier sur quelles lignes
doivent porter la ou les modifications.
Syntaxe :
UPDATE table
SET colonne1 = valeur1 [, colonne2 = valeur2]
[WHERE condition] ;
Exemple :
• Remplacer tous les client habitent à la rue FARRAH par la rue OULFA :
UPDATE client
SET rue = ‘rue OULFA’
WHERE rue =‘rue FARRAH' ;
• Remplacer pour le client N° 5 en ville par ' Tanger ' :
UPDATE client
SET ville = ' Tanger'
WHERE id = 5;
71
DELETE
La commande DELETE en SQL permet de supprimer des lignes dans une table. En utilisant
cette commande associé à WHERE.
Syntaxe :
DELETE FROM table
WHERE condition;
Exemple :
• Si l' ont souhaite supprimer les utilisateurs qui se sont inscrit avant le 15/03/2010, il va
falloir effectuer la requête suivante :

DELETE FROM utilisateur


WHERE date_inscription < '15/03/2010' ;

• Si l' ont souhaite supprimer le clien avec id = ' c214' :

DELETE FROM Clients


WHERE idClient = ' c214' ;

72
SELECT

La commande SELECT permet de rechercher des données à partir d'un ou plusieurs tables; le
résultat est présenté sous forme d' une table réponse.
Syntaxe :
SELECT [ALL ou DISTINCT] ( nom_colonne1, [nom_colonne2,…] ) | *
FROM nom_table ,
[ WHERE condition ],
[ GROUP BY condition ],
[ HAVING condition ],
[ ORDER BY nom-attribut ] [ASC/DESC];
[…] optionnel

• ALL : affiche tout les lignes.


• DISTINCT : permet d'éliminer les doublons si dans le résultat plusieurs lignes sont
identiques, une seule sera conservée.
• * : affiche toutes les colonnes.

73
SELECT
Exemple :
• Liste des numéros et noms d' employés :
SELECT ename, empno FROM emp ;
• Liste de tous les employés :
SELECT * FROM emp ;
• Liste de tous les employés habitent à oujda :

SELECT * FROM emp WHERE ville='oujda' ;

• Liste des fonctions occupées dans l'entreprise :


SELECT fonction FROM emp ;

Remarque : la requête renvoie plusieurs lignes identiques.


• Liste des fonctions occupées dans l'entreprise (avec suppression des lignes identiques)
SELECT DISTINCT fonction FROM emp ;

74
Opérateurs De Comparaisons

Opérateur Description
= Égale
<> , != Different de
> Supérieur à
< Inférieur à
>= Supérieur ou égale à
<= Inférieur ou égale à
IN Liste de plusieurs valeurs possibles
BETWEEN Valeur comprise dans un intervalle donnée (utile pour
les nombres ou dates)
LIKE Recherche un expression en spécifiant le début,
milieu ou fin d’un mot
IS NULL Valeur est nulle
IS NOT NULL Valeur n est pas nulle

75
Les opérateurs logiques AND et OR
Pour filtrer les données on peut ajouter dans la condition WHERE des opérateurs qui
peuvent être combinés. L' opérateur AND permet de s'assurer que la condition1 ET la
condition2 sont vrai.
Syntaxe :
SELECT nom_colonne
FROM nom_table
WHERE condition1 AND condition2;

L' opérateur OR vérifie quant à lui que la condition1 OU la condition2 est vrai :
SELECT nom_colonne FROM nom_table
WHERE condition1 OR condition2;

Ces opérateurs peuvent être combinés et mélangés:


SELECT nom_colonne FROM nom_table
WHERE condition1 AND (condition2 OR condition3);

76
AND et OR

Exemple :
• Afficher les produits de la catégorie informatique et dont le stock est inférieur à 50 :
SELECT * FROM produit
WHERE categorie = ' informatique' AND stock < 50 ;
• Afficher le nom et prénom des employés qui ont 1 enfant ou 2 enfants :
SELECT nom,prenom FROM emp
WHERE nbenfants = 1 OR nbenfants = 2 ;
• Afficher les employés qui ont 1 enfant ou 2 enfants et un âge supérieur à 38 ans :
SELECT * FROM emp
WHERE (nbenfants = 1 OR nbenfants = 2 ) AND ( age >= 38) ;

77
IN
L'opérateur IN permet de sélectionner les enregistrements dont le champ spécifié
contient une valeur apparaissant dans la liste de valeurs possible.

SELECT nom_colonne
FROM table
WHERE nom_colonne IN ( valeur1, valeur2, valeur3, ... );
Exemple :
• Donner les produits dont la marque appartient au valeurs suivantes
(TOYOTA,BMW, MERCEDES) :
SELECT * FROM produit
WHERE marque IN ('TOYOTA' ,'BMW' ,'MERCEDES');
• Lister les employés habitent à Oujda , Fes et Meknass :
SELECT * FROM emp
WHERE location IN ('Oujda' , 'Fes' , 'Meknass') ;

78
BETWEEN
L’opérateur BETWEEN ... AND … permet de sélectionner les enregistrements dont le
champ spécifié contient une valeur dans un intervalle déterminé.
Syntaxe :
SELECT * FROM table
WHERE nom_colonne BETWEEN valeur1 AND valeur2 ;
Exemple :
• N° des comptes dont le solde est compris entre 600 et 1000 :
SELECT NumC FROM Compte
WHERE solde BETWEEN 600 AND 1000;

• Obtenir les membres qui se sont inscrit entre le 1 avril 2020 et le 20 avril 2020:
SELECT * FROM utilisateur
WHERE date_inscription BETWEEN ‘2020/04/01' AND ‘2020/04/20' ;
• Afficher les noms des clients qui ont de 1 à 3 enfants :
SELECT nom FROM client
WHERE nbenfants BETWEEN 1 AND 3 ;

79
LIKE

L’opérateur LIKE permet de faire une recherche approximative.


Syntaxe :

SELECT * FROM table WHERE colonne LIKE 'modele' ;


Exemple :
• Obtenir les étudiants qui commence par N:
SELECT * FROM etudiants WHERE nom LIKE ' N%' ;

• LIKE ‘%a’ : Chercher toutes les lignes de ' colonne ‘ qui se terminent par un ‘a’.
• LIKE ‘a%’ : Chercher toutes les lignes de ' colonne ’ qui commencent par un ‘a’.
• LIKE ‘%a%’ : Chercher toutes les lignes de ' colonne ‘ qui contiennent un ‘a’.

Le caractère % remplace un ensemble de caractères.


Le caractère – remplace un seul caractère.

80
IS NULL / IS NOT NULL

Pour filtrer les résultats où les champs d’une colonne sont à NULL .
Syntaxe :
SELECT * FROM table
WHERE nom_colonne IS NULL ;

A l’inverse, pour filtrer les résultats et obtenir uniquement les enregistrements qui ne sont
pas NULL.
Syntaxe :
SELECT * FROM table
WHERE nom_colonne IS NOT NULL ;

81
NOT

L’opérateur NOT inverse la valeur d’une condition.

Exemple :
• Afficher les noms des clients qui n’ont pas de 1 à 3 enfants :
SELECT nom FROM client
WHERE nbenfants NOT BETWEEN 1 AND 3 ;

• Afficher les étudiants qui n’ont pas des noms entre Ali , Salma , Sara :
SELECT * FROM etudiant
WHERE nom NOT IN ('Ali' , 'Salma' , ' Sara' ) ;

• Afficher les clients qui n’habitent pas à Oujda:


SELECT * FROM client
WHERE NOT ville = 'Oujda' ;

82
ORDER BY

La commande ORDER BY permet de classer les résultats d’une requête dans un ordre alphabétique,
numérique ou chronologique croissant (ASC) ou décroissant (DESC). Le tri se fait par défaut par ordre
croissant.
Syntaxe :
SELECT colonne1, colonne2, colonne3,..
FROM table
ORDER BY colonne1 [ DESC | ASC ], ...
Exemple :
• Récupérer la liste de ces utilisateurs par ordre alphabétique du nom de famille :
SELECT * FROM utilisateur
ORDER BY nom;
ou bien
SELECT nom,prenom FROM utilisateur
ORDER BY nom ASC;
• Récupérer la liste de ces utilisateurs par ordre alphabétique du nom de famille ,les trier par ordre
décroissant d’inscription :
SELECT * FROM utilisateur
ORDER BY nom ASC, date_inscription DESC;

83
GROUP BY

La commande GROUP BY est utilisée dans une instruction SELECT pour


regroupe en une seule ligne des enregistrements qui possèdent des valeurs
de colonnes ou d'expressions identiques. La commande GROUP BY
renvoie une ligne par groupe.
La clause GROUP BY est souvent utilisée avec des fonctions
d'agrégat telles que AVG(), COUNT(), MAX().

Syntaxe :
SELECT colonne1, fonction(colonne2)
FROM table
GROUP BY colonne1;

84
GROUP BY
Exemple :
idclient tarif date
1 105 2022/10/11
2 15 2022/10/11
3 87 2022/10/11
1 160 2022/10/11
2 100 2022/10/11

• Donner le coût total de chaque client en regroupant les commandes des mêmes clients :

SELECT idclient, SUM(tarif) idclient SUM(tarif)

FROM achat 1 265

GROUP BY idclient; 2 115


3 87

85
GROUP BY

Il existe plusieurs fonctions qui peuvent être utilisées pour manipuler plusieurs
enregistrements :
• COUNT() : compte le nombre d’occurrences du colonne.

• SUM() : calcule la somme des valeurs du colonne (de type numérique).

• AVG() : calcule la moyenne des valeurs du colonne (de type numérique).

• MAX() : recherche la plus grande valeur du colonne.

• MIN() : recherche la plus petite valeur du colonne.

86
HAVING

La condition HAVING en SQL est presque similaire à WHERE à la seule différence que
HAVING permet de filtrer en utilisant des fonctions telles que SUM(), COUNT(), AVG(), MIN()
ou MAX().
Syntaxe :
SELECT colonne1, SUM(colonne2)
FROM nom_table
GROUP BY colonne1
HAVING fonction(colonne2) operateur valeur;
Exemple :
• Récupérer la liste des clients qui ont commandé plus de 100DH :
SELECT idclient, SUM(tarif)
FROM achat
GROUP BY idclient
HAVING SUM(tarif) > 100 ;

87
HAVING
Exemple :
• Récupérer la liste des clients qui ont commandé plus de 100DH :

idclient tarif date


SELECT idclient, SUM(tarif)
1 105 2022/10/11 FROM achat
2 15 2022/10/11 GROUP BY idclient
3 87 2022/10/11 HAVING SUM(tarif) > 100 ;
1 160 2022/10/11
2 100 2022/10/11
idclient SUM(tarif)
1 265
2 115

88
Exercice

1.Créer une base de données “Universite”.


2. Supprimer la base de données “Universite”.
3. Créer une base de données Univ (Si elle n’existe pas).
4. Créer une table utilisateur avec les informations : id, nom, prenom, email, dateNaissance,
ville.
5. Ajouter une colonne adresse à la table utilisateur.
6. Supprimer la colonne ville de la table utilisateur.
7. Insérer un utilisateur : id =1, nom =‘Al’i, prenom= ‘ali’, email = ‘ali@gmail.com’,
dateNaissance= ‘12-01-2002’, ville =‘Oujda’.
8. Afficher les utilisateurs.
9. Changer la ville de l’utilisateur ayant le nom ’Ali’ à Tanger.
10. Supprimer les utilisateurs qui habitent à Fès.
11. Supprimer la table utilisateur.

89
La Jointure
La jointure permet de fusionner les enregistrements de plusieurs tables possédant un
domaine commun
Syntaxe :
SELECT attribut1, attribut2,……
FROM table1 [alias], table2 [alias],……
WHERE table1.attribut= table2.attribut;

Exemple :
• Jointure de la table commande et client.
SELECT * FROM client, commande
WHERE commande.numcli = client.numcli ;

• Donner le total de soldes des comptes des clients de la ville de oujda.


SELECT SUM (solde)
FROM commande, client
WHERE commande.numcli = client.numcli AND client.ville = ‘oujda’ ;

90
La Jointure
Exemple :
Jointure de la table commande et client
commande client
numc numcli solde date numcli nom ville
1 1 105 2022/10/11 1 Ali oujda
2 2 15 2022/10/17 2 Hamza Fes
3 3 87 2022/10/11
3 Salma oujda
4 1 160 2022/10/15
5 2 100 2022/10/11

numc numcli solde date numcli nom ville


1 1 105 2022/10/11 1 Ali Oujda
2 2 15 2022/10/17 2 Hamza Oujda
3 3 87 2022/10/11 3 Salma Fes
4 1 160 2022/10/15 1 Ali Oujda
5 2 100 2022/10/11 2 Hamza Oujda

91
La Jointure

Exemple :
• Donner le total de soldes des comptes des clients de la ville de oujda.

SELECT Cl.ville, SUM (solde)


FROM commande C, client Cl
WHERE Cl. numcli =C. numcli AND Cl.ville = ‘oujda’ ;

ville SUM (solde)

oujda 380

92
L’ALIAS

Un ALIAS est un nom synonyme ou un nom de remplacement d’une expression, d’un


colonne ou d’une table.
Exemple :

• Donner le total de soldes des comptes des clients de la ville de oujda.


SELECT SUM (solde) as soldeVile
FROM Compte C, Client Cl
WHERE Cl.NumCl=C.NumCl AND Cl.villeCl = ‘oujda’ ;

ville soldeVille

oujda 380

93
Fonctions D'agregation

• COUNT (*) : Permet de compter le nombre de lignes résultant d'un résultat. On peut
nommer la colonne correspondante avec AS.

Exemple :
• Compte le nombre d'élève habitant Fes et appelle le résultat Nb_Fes.

SELECT COUNT (*) AS Nb_ Fes


FROM ELEVES
WHERE VilleE = 'Fes';

94
Fonctions D'agregation

• SUM (colonne) : Permet d'additionner les valeurs d'une colonne numérique pour
les lignes sélectionnées.

Exemple :
• Calcul le cumul (la somme) de tous les opérations de débit du compte 1259
le 09/01/2020.

SELECT SUM(montant_opération) AS débit_0901


FROM OPERATIONS
WHERE compte = 1259
AND date = '09/01/2020';

95
Fonctions D'agregation

• AVG (colonne) : Permet d'afficher la moyenne des valeurs d'une colonne numérique
pour les lignes sélectionnées.

Exemple :

• Afficher le salaire moyen des analystes.


SELECT AVG(salaire)
FROM EMPLOYE
WHERE fonction = 'analyste';

96
Fonctions D'agregation

• MAX (colonne), MIN (colonne) : Permet d'obtenir la valeur maximale (ou minimale)
d'une colonne pour un ensemble de lignes sélectionnées

Exemple :

• Affiche le salaire de la secrétaire la mieux payée:


SELECT MAX(salaire)
FROM EMPLOYE
WHERE function = 'secrétaire' ;

97
Operateurs Ensemblistes

• UNION : Il est possible de faire l’union des résultats de deux requêtes. Cet opérateur
permet d'effectuer une union des lignes sélectionnées par deux clauses SELECT (les
deux tables sur lesquelles on travaille devant avoir le même schéma).
• Par défaut les doublons sont automatiquement éliminés. Pour conserver les doublons, il
est possible d'utiliser une clause UNION ALL.
Syntaxe :
SELECT * FROM table1
UNION
SELECT * FROM table2
Exemple :
• La liste des villes où habitent des élèvent et des professeurs :
SELECT VilleE FROM ELEVES
UNION
SELECT VilleP FROM PROFS ;

98
Operateurs Ensemblistes

• INTERSECT : Permet d’obtenir l’intersection des résultats de deux requêtes. Cette


commande permet donc de récupérer les enregistrements communs aux deux requêtes.
Cela peut être utile lorsqu’il faut trouver s’il y a des données similaires sur deux tables
distinctes

Syntaxe :
SELECT * FROM table1
INTERSECT
SELECT * FROM table2
Exemple :
• La liste des villes où habitent à la fois des élèves et des professeurs :
SELECT DISTINCT VilleE FROM ELEVES
INTERSECT
SELECT DISTINCT VilleP FROM PROFS ;

99
Operateurs Ensemblistes

• MINUS : S’utilise entre 2 instructions pour récupérer les enregistrements de la première


instruction sans inclure les résultats de la seconde requête.

Syntaxe :
SELECT * FROM table1
MINUS
SELECT * FROM table2
Exemple :
• La liste des villes où habitent seulement des élèves et pas de professeurs :
SELECT DISTINCT VilleE FROM ELEVES
MINUS
SELECT DISTINCT VilleP FROM PROFS

100
La Clause GRANT

GRANT : Permet au propriétaire d’une table ou d’une vue de donner à d’autres


utilisateurs des droits d’accès à celles-ci.

Syntaxe :
GRANT Liste_Privilège ON Table/ Vue TO Utilisateur;

Exemple :
• Donner à l’utilisateur user1 la privilège de sélection sur la table client.
GRANT SELECT ON client TO user1;

101
La Clause GRANT

Les privilèges sont :

• SELECT : droit de lecture.

• INSERT : droit d’insertion de lignes.

• UPDATE : droit de modification de lignes.

• DELETE : droit de suppression de lignes.

• ALTER : droit de modification de la structure de la table.

• CREATE : droit de création de table ,vue et index.

• ALL : Tous les droits

102
La Clause REVOKE

REVOKE : Un utilisateur ayant accordé un privilège peut l’annuler à l’aide de la


commande REVOKE.

Syntaxe :
REVOKE Liste_Privilège ON Table/Vue FROM Utilisateur;

Exemple:
REVOKE SELECT ON Produit FROM User1;

103
VUE
Une vue est une table virtuelle créer à partir des tables de base par une requête. Une vue
comporte également des lignes et des colonnes telles qu'elles se trouvent dans une vraie table
de la base de données. Nous pouvons créer une vue en sélectionnant des champs dans une
ou plusieurs tables présentes dans la base de données. Une vue peut avoir toutes les lignes
d'une table ou des lignes spécifiques en fonction de certaines conditions.

Syntaxe :
CREATE VIEW view_name
AS SELECT column1, column2.....
FROM table_name WHERE condition;
Aussi avec :
CREATE VIEW nom_vue (colonneA,colonneB,colonneC,colonneD)
AS SELECT colonne1,colonne2,colonneI,colonneII
FROM Nom_table1 Alias1,Nom_tableII AliasII
WHERE Alias1.colonne1 = AliasII.colonneI
AND Alias1.colonne2 = AliasII.colonneII
Pour supprimer une vue en utilise :
DROP VIEW nom_vue ;
104
VUE
Exemple :
CREATE VIEW DetailsView
AS SELECT NAME, ADDRESS
FROM Etudiant
WHERE ID_etudiant < 5;

CREATE VIEW etu_som_vu (nom, note_min, note_max)


AS SELECT e.nom_et, MIN(n.note), MAX(n.note)
FROM etudiant e, note n
WHERE e.num_et = n.num_et
GROUP BY e.nom_et ;

105
INDEX

L’index est utile pour accélérer l’exécution d’une requête SQL qui lit des données et ainsi
améliorer les performances d’une application utilisant une base de données. Les index peuvent
être créés ou supprimés sans effet sur les données.

Syntaxe :
CREATE INDEX index_nom ON table_nom (colonne1,..);

Pour supprimer un index en utilise :


DROP INDEX nom_index;
Exemple :
CREATE INDEX ix_etUd ON etudiant(nom_etud);
CREATE INDEX ix_etudiant ON etudiant(num,_etud,nom_etud);

106

Vous aimerez peut-être aussi