Vous êtes sur la page 1sur 82

Langage SQL Structured Query Language

Introduction
SQL signifie Structured Query Language c'est--

dire Langage d'interrogation structur. Origine:


Modle des base de donnes relationnelles

invent au centre de recherche IBM en 1970. SEQUEL (Structured English Query Language) enrichi pour donner naissance SQL en 1980 SQL est devenu la norme officielle en 1986: norme SQL86

Langage SQL

Introduction
Depuis, la norme SQL est passe par SQL-2 et

SQL-3

Langage SQL

Introduction
Classification des commandes dans

SQL
Commandes de dfinition de donnes
Tables, Vue ,colonnes ,clefs, index, contraintes

Commandes de manipulation des donnes


Permettent lajout, la suppression et la modification

des lignes, la manipulation et la visualisation des contenus des tables.


Commandes de contrle de donnes:
permette de maintenir la confidentialit et lintgrit

des donnes

Langage SQL

Dfinir une base Langage de dfinition de donnes (LLD)


5 Langage SQL

Contraintes dintgrits
Cl primaire: une ou plusieurs colonnes dune

table permettant didentifier chaque ligne de la table de manire unique. La cl primaire ne doit pas contenir de colonnes valeurs nulles. Cl unique: contrle l unicit de la valeur: une valeur distincte pour chaque ligne de table. Une cl unique peut contenir une valeur nulles.

Langage SQL

Contraintes dintgrits
Cl trangre: compose dune ou plusieurs

colonnes dans une table dite fille dont les valeurs dpendent dune cl primaire ou unique dune table appele parent. Intgrit rfrentielle: signifie que les relations reprsentes par les cls primaires et trangre sont maintenues. Elle assure la consistance des donnes.

Langage SQL

Cration dune table: CREATE TABLE


Dfinition dune colonne: syntaxe

nom type [DEFAULT expression] [contrainte de colonne] Type de donne


CHAR(n): n est fixe entre 1 et 255 VARCHAR(n): n est entre 1 et 2000 INTEGER: entier sur 4 octet BIGINT: entier sur 8 octet SMALLINT : entier sur un octet BOOLEAN: true ou false NUMBER(p,e): p entre 1 et 38, e entre -84 et 127 DATE

Langage SQL

Cration dune table


Contraintes dintgrit:

Contraintes de colonne

[CONSTRAINT contrainte] { [NOT] NULL UNIQUE | PRIMARY KEY REFERENCES table [colonne] [ON DELETE CASCADE] CHECK (condition) }

Langage SQL

Cration dune table


Exemple:

CREATE TABLE client (idclient NUMBER CONSTRAINT u_id PRIMARY KEY, Nom CHAR(20) CONSTRAINT nn_nom NOT NULL, adresse CHAR(80), Codepost NUMBER(5) CHECK (codepost BETWEEN 10000 AND 95999), ville CHAR(20), tel NUMBER(8));
Langage SQL

10

Cration dune table


Exemple

CREATE TABLE article (idarticle NUMBER CONSTRAINT c_adr PRIMARY KEY, designation CHAR(20) CONSTRAINT nn_des NOT NULL, prixunit NUMBER(7,2), qlestock NUMBER DEFAULT 0);

11

Langage SQL

Cration dune table


Exemple

CREATE TABLE commande( Numcom NUMBER, Idarticle NUMBER CONSTRAINT fk_idr REFERENCE article(idarticle), Datecom DATE);

12

Langage SQL

Cration dune table


Contraintes dintgrit:

Contraintes de table

[CONSTRAINT contrainte] { UNIQUE | PRIMARY KEY (colonne [, colonne ]) FOREIGN KEY (colonne [, colonne ]) REFERENCES table [(colonne [, colonne ])] [ON DELETE CASCADE] CHECK (condition) }

13

Langage SQL

Cration dune table


Exemple

CREATE TABLE ligne_com (numcom NUMBER, nuligne NUMBER, idarticle NUMBER CONSTRAINT fk_ida REFERENCE article(idarticle), qtecom NUMBER CONSTRAINT nn_qte NOT NULL CONSTRAINT check_qte CHECK (qtecom > 0), PRIMARY KEY (numcom, nuligne));
14 Langage SQL

Cration dune table


Cration de table avec insertion de donnes.
On peut, en un seul ordre SQL crer une table et la

remplir avec des donnes provenant dune requte SELECT CREATE TABLE nom [(col1, col2, .)] AS SELECT

15

Langage SQL

Suppression dune table


Supprimer une table revient liminer sa

structure et toutes les donnes quelle contient. DROP TABLE nom_table

16

Langage SQL

Modifier une table


Ajout ou Modification dune colonnes

ALTER TABLE nom_table ADD ([nom_colonne type [contrainte.]]) MODIFY ([nom_colonne type ]]) DROP {PRIMARY KEY |UN IQUE |CONSTRAINT contrainte [CASCADE] }
17 Langage SQL

Modifier une table


Exemple:

1) ALTER TABLE client ADD remarque CHAR(80), MODIFY ville CHAR(30), 2) ALTER TABLE article DROP CONSTRAINT c_idr CASCADE, Ou simplement DROP PRIMARY KEY CASCADE

18

Langage SQL

Modifier une table


CASCADE permet de supprimer toutes les cls trangres qui se rfrent la cl primaire.

19

Langage SQL

Modifier 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

20

Langage SQL

Exercice
crez les tables du schma relationnel suivant: - film(num_film, num_realisateur, titre, genre,

annee) - cinema(num_cenima, nom, adresse) - individu (num_individu, nom, prenom) - jouer (num_acteur,num_film, role) N oubliez pas: - De choisir correctement les types - De prciser les cl primaire et les contraintes dintgrit rfrentielle
21 Langage SQL

Modifier une base Langage de modification des donnes (LMD)


22 Langage SQL

Insrer des ligne: insert into


La commande insert permet dinsrer une ligne

dans une table Syntaxe INSERT INTO nom_table [(col1,col2,)] VALUES (val1,val2,) La liste des noms de colonnes est optionnelle: si elle est omise, cest lensemble des colonnes de la table dans lordre de la cration qui sera considr par dfaut. Si une colonne ne figure pas dans la liste, elle aura la valeur NULL.
23 Langage SQL

Insrer des ligne: insert into


Exemple

INSERT INTO client VALUES(10, Ahmed, 2 Bd Med VI, 60000, Oujda, 0661340340); INSERT INTO client VALUES(13, Aziz, 15 Bd Med VI, 60000); INSERT INTO client (idclient, nom) VALUES(16, Ahmed);

24

Langage SQL

Insrer des ligne


Il est possible dinsrer dans une table des lignes

provenant dune autre table Exemple INSERT INTO client_par SELECT idclient, nom, adresse, codepost,tel FROM client WHERE ville=Oujda

25

Langage SQL

Modifier des donnes: UPDATE


La commande UPDATE permet de modifier les

valeurs dune ou plusieurs colonnes dune ou plusieurs lignes. Syntaxe


UPDATE nom_table

SET colonne = expresion [WHERE condition]


UPDATE nom_table

SET (liste_colonne) = (requete_sql) [WHERE condition]


26 Langage SQL

Modifier des donnes: UPDATE


Exemple

UPDATE client SET (adresse, ville, codepost, tel)=(SELECT adr, ville, code, tel FROM client_par WHERE idc=16) WHERE idclient = 16;

27

Langage SQL

Supprimer des lignes: DELETE


La commande DELETE permet de supprimer des

ligne dune table. Syntaxe DELETE FROM nom_table [WHERE prdicat]; Exemple DELETE FROM client WHERE ville=Oujda

28

Langage SQL

Interroger une base: SELECT


Syntaxe gnrale:

SELECT [DISTINCT ou ALL] * ou liste de colonnes FROM liste_de_tables [WHERE prdicats] [GROUP BY ordre des groupes] [HAVING condition] [ORDER BY ] liste de colonnes [ASC/DESC]

29

Langage SQL

Interroger une base


SELECT: Spcification des colonnes du rsultat FROM: Spcification des tables sur lesquelles


30

porte l'ordre WHERE: Filtre portant sur les donnes (conditions remplir pour que les lignes soient prsentes dans le rsultat) GROUP BY: Dfinition d'un groupe (sous ensemble) HAVING: Filtre portant sur les rsultats (conditions de regroupement des lignes) ORDER BY: Tri des donnes du rsultat

Langage SQL

Interroger une base


Exemple
SELECT CLI_NOM, CLI_PRENOM FROM T_CLIENT WHERE TIT_CODE = 'M.; CLI_NOM CLI_PRENOM ------- ----------------------DUPONT Alain MARTIN Marc BOUVIER Alain DUBOIS Paul DREYFUS Jean FAURE Alain PAUL Marcel DUVAL Arsne PHILIPPE Andr CHABAUD Daniel BAILLY Jean-Franois Affichage des noms et prnoms des clients dont le titre est M. (monsieur).

31

Langage SQL

Interroger une base: L'oprateur * (toile)


Le caractre * (toile) rcupre toutes les colonnes de la

table prcise dans la clause FROM de la requte. Exemple SELECT * FROM T_CLIENT WHERE TIT_CODE = 'M.;
CLI_ID TIT_CODE CLI_NOM ----------- ---------------- -------------1 M. DUPONT 2 M. MARTIN 3 M. BOUVIER 4 M. DUBOIS 5 M. DREYFUS 6 M. FAURE 11 M. PAUL 12 M. DUVAL 13 M. PHILIPPE 16 M. CHABAUD CLI_PRENOM CLI_ENSEIGNE ---------------------- -----------------------Alain NULL Marc Transports MARTIN Alain NULL Paul NULL Jean NULL Alain Boulangerie du march Marcel Cie Internationale Arsne NULL Andr NULL Daniel NULL

32

Langage SQL

Interroger une base: L'oprateur DISTINCT (ou ALL)


le mot clef DISTINCT qui permet dliminer les doublons dans la rponse. Le mot clef ALL (par dfaut) rcupre toutes les lignes Exemple 1 SELECT CLI_PRENOM FROM T_CLIENT WHERE TIT_CODE = 'M.;

CLI_PRENOM -----------------Alain Marc Alain Paul Jean Alain Marcel Arsne Andr Daniel

33

Langage SQL

Interroger une base: L'oprateur DISTINCT (ou ALL)


Exemple 2.

SELECT distinct CLI_PRENOM FROM T_CLIENT WHERE TIT_CODE = 'M.; CLI_PRENOM -----------------Alain Marc Paul Jean Marcel Arsne Andr Daniel
34 Langage SQL

Interroger une base: L'oprateur AS


L oprateur AS sert donner un nom de

nouvelles colonnes cres par la requte. On peut rajouter autant de colonnes quon le dsire en utilisant le mot clef AS. Exemple SELECT CLI_NOM as NOM, 'homme' as SEXE FROM T_CLIENT WHERE TIT_CODE = 'M.'

35

Langage SQL

Interroger une base: L'oprateur AS


NOM -----------DUPONT MARTIN BOUVIER DUBOIS DREYFUS FAURE PAUL DUVAL PHILIPPE CHABAUD
36 Langage SQL

SEXE ------------homme homme homme homme homme homme homme homme homme homme

Interroger une base: L'oprateur arithmtique


On, peut utiliser les oprateurs mathmatiques

de base pour combiner diffrentes colonnes (+,-, *, /). Exemple SELECT CHB_ID, TRF_CHB_PRIX * 1.206 AS TARIF_TTC FROM TJ_TRF_CHB WHERE TRF_DATE_DEBUT = '2001-01-01;

37

Langage SQL

Interroger une base: L'oprateur de concatnation


L'oprateur || (double barre verticale) permet de concatner des

champs de type caractres. Exemple SELECT TIT_CODE || ' ' || CLI_PRENOM || ' ' || CLI_NOM AS NOM FROM T_CLIENT WHERE TIT_CODE =M; NOM ----------------------M. Alain DUPONT M. Marc MARTIN M. Alain BOUVIER M. Paul DUBOIS M. Jean DREYFUS M. Alain FAURE
Langage SQL

38

Interroger une base: Utilisation du


caractre double quotte (guillemet)
Imaginons une table de nom JOIN, compose

des champs suivants : NOM SELECT DATE NOT ------- - ---------- ------------DURAND Oui 1999-11-12 F DUVAL Non 1998-01-17 M
nous dsirons slectionner les colonnes SELECT

et DATE lorsque la colonne NOT vaut F


39 Langage SQL

Interroger une base: Utilisation du caractre double quotte (guillemet)


Attention!: Linstruction suivante nest pas juste

SELECT SELECT, DATE FROM JOIN WHERE NOT = 'F;


On doit entourer les mots clefs du SQL par des

doubles quottes SELECT "SELECT", "DATE" FROM "JOIN" WHERE "NOT" = 'F;
40 Langage SQL

Interroger une base: La clause ORDER BY


La clause ORDER BY permet de dfinir le tri des

colonnes de rsultat, soit en prcisant le nom littral de la colonne, soit en prcisant son n d'ordre dans l'numration qui suit le mot clef SELECT. ASC spcifie lordre ascendant et DESC lordre descendant du tri. par dfaut, c'est l'ordre ascendant qui est utilis. le tri est un tri interne sur le rsultat final de la requte, il ne faut donc placer dans cette clause que les noms des colonnes prsentes dans la clause SELECT.

41

Langage SQL

Interroger une base: La clause ORDER BY


SELECT CLI_NOM, CLI_PRENOM FROM T_CLIENT ORDER BY CLI_NOM, CLI_PRENOM Ou SELECT CLI_NOM, CLI_PRENOM FROM T_CLIENT ORDER BY 1, 2
42 Langage SQL

Interroger une base: La clause ORDER BY


CLI_NOM ------------AIACH ALBERT AUZENAT BACQUE BAILLY BAVEREL BEAUNEE BENATTAR BENATTAR BENZAQUI
43 Langage SQL

CLI_PRENOM ------------------Alexandre Christian Michel Michel Jean-Franois Frdric Pierre Bernard Pierre Jol

Interroger une base: La clause WHERE


Syntaxe

WHERE prdicats Le prdicat doit contenir nimporte quelle expression logique renvoyant une valeur vrai. Dans la clause WHERE, on dispose de diffrents oprateurs de comparaisons logiques : WHERE valeur1 [NOT et] = ou < ou <= ou > ou >= ou <>valeur2 [OR ou AND ...]

44

Langage SQL

Interroger une base: La clause WHERE


Exemple:

SELECT CLI_NOM, CLI_PRENOM FROM T_CLIENT WHERE CLI_NOM >= 'A' AND CLI_NOM <'E' ou SELECT CLI_NOM, CLI_PRENOM FROM T_CLIENT WHERE (CLI_NOM >= 'A') AND (CLI_NOM <'E') Cet exemple affiche les clients dont le nom commence par A, B ou C

45

Langage SQL

Interroger une base: Loprateur IN


L'oprateur IN permet de rechercher si une valeur

se trouve dans un ensemble donn. Exemple: SELECT TIT_CODE, CLI_NOM, CLI_PRENOM FROM T_CLIENT WHERE TIT_CODE IN ('Mme.', 'Melle.') On recherche les clients de sexe fminin, bass sur le code titre.

46

Langage SQL

Interroger une base: Loprateur IN


TIT_CODE -------------Mme. Mme. Melle. Mme. Melle. Mme. CLI_NOM ------------BOYER GALLACIER HESS LETERRIER MARTINET DAVID CLI_PRENOM -----------------Martine Nolle Lucette Monique Carmen Jacqueline

47

Langage SQL

Interroger une base: Loprateur BETWEEN


L'oprateur BETWEEN permet de rechercher si

une valeur se trouve dans un intervalle donn, Exemple SELECT CLI_NOM, CLI_PRENOM FROM T_CLIENT WHERE CLI_NOM BETWEEN 'A' AND 'E'

48

Langage SQL

Interroger une base :Oprateur LIKE


L'oprateur LIKE permet deffectuer une

comparaison partielle utilise les le caractre gnrique % pour remplacer nimporte quelle chaine de caractre. utilise les le caractre gnrique _ (Blanc soulign) pour remplacer un seul caractre. loprateur LIKE effectue une recherche en tenant compte de la diffrence entre lettres majuscules et minuscules

49

Langage SQL

Interroger une base :Oprateur LIKE


Exemple

SELECT CLI_NOM, CLI_PRENOM FROM T_CLIENT WHERE CLI_NOM LIKE 'B%


Cette requtte affiche les clients dont le nom

commence par B

50

Langage SQL

Interroger une base :Oprateur LIKE


Traitement de caractre gnrique

SELECT * FROM T_CLIENT WHERE CLI_ENSEIGNE LIKE '%_% Affiche toute la table

51

Langage SQL

Interroger une base :Oprateur LIKE


SELECT * FROM T_CLIENT WHERE CLI_ENSEIGNE LIKE '%#_%' ESCAPE '# Affiche seulement les clients dont l'enseigne contient au moins un caractre blanc soulign # est dfini comme caractre dchappement. Le caractre qui suit ce caractre dchappement est donc interprt comme un caractre et non comme un joker.

52 Langage SQL

Rsum des oprateurs pour les prdicats de la clause WHE


oprateurs de comparaisons: = <> < <= > >= connecteurs logiques: {OR | AND} oprateur de ngation : NOT Parenthses: ( ... ) oprateurs mathmatiques: +-*/ comparaison logique : IS [NOT] {TRUE | FALSE | UNKNOWN} comparaison avec valeur: IS [NOT] NULL intervalle valeur : BETWEEN borne_basse AND borne_haute comparaison partielle de chane de caractres: valeur LIKE motif [ESCAPE echappement] comparaison une liste de valeurs: valeur [NOT] IN (liste)

53

Langage SQL

Interroger une base :Oprateurs statistiques


Il est possible de raliser des comptages

statistiques sur les colonnes, l'aide des oprateurs: AVG : (moyenne), MAX (maximum), MIN (minimum), SUM (total), COUNT (nombre).

54

Langage SQL

Interroger une base :Oprateurs statistiques


Exemple

SELECT AVG(TRF_CHB_PRIX) as MOYENNE, MAX(TRF_CHB_PRIX) as MAXI, MIN(TRF_CHB_PRIX) as MINI, SUM(TRF_CHB_PRIX) as TOTAL, COUNT(TRF_CHB_PRIX) as NOMBRE FROM TJ_TRF_CHB WHERE TRF_DATE_DEBUT = '2001-01-01 MOYENNE MAXI MINI --------------- -------- -------406,74 512,00 352,00
55 Langage SQL

TOTAL ----------7 728,00

NOMBRE -------------19

Interroger une base: La clause GROUP BY


La clause BROUP BY groupe les lignes

slectionnes en se basant sur la valeur de colonnes spcifies pour chaque ligne et renvoie une seule ligne par groupe. Exemple : Cherchons compter le nombre de clients par ville.

56

Langage SQL

Interroger une base: La clause GROUP BY


Syntaxe:

SELECT COUNT(*) AS NOMBRE, ville FROM T_Client GROUP BY Ville; Exemple daffichage NOMBRE Ville 20 Casa 10 Fs 11 Oujda 3 Tanger
57 Langage SQL

Interroger une base: La clause GROUP BY


Exemple: nous cherchons afficher le min, max

et la moyenne des salaires des employs par service: Syntaxe SELECT MIN(salaire), MAX(salaire), AVG(salaire) FROM employe GROUP BY service;

58

Langage SQL

Interroger une base: La clause HAVING


La clause HAVING permet de filtrer les oprations

rsultant des regroupements. La clause HAVING est li la clause GROUP BY et ne peut jamais tre utilise toute seule. Exemple: on veut afficher par ville le nombre des cleints qui est inferieur 20.

59

Langage SQL

Interroger une base: La clause HAVING


SELECT COUNT(*) AS NOMBRE, ville FROM T_Client GROUP BY Ville HAVING COUNT(*) <20;
Exemple daffichage

NOMBRE 10 11 3
60 Langage SQL

Ville Fs Oujda Tanger

Interroger une base: LES JOINTURES


Une jointure permet de combiner les colonnes de

plusieurs tables. Il existe diffrentes natures de jointures:


jointure naturelle ou qui-jointure, jointures externe,

jointures htrognes, auto-jointure


Dans ce cours nous nous limitons aux jointures

dites jointures naturelles ou qui-jointures: Ce type de jointures entre tables s'effectuent en imposant l'galit des valeurs d'une colonne d'une table une colonne d'une autre table.
61 Langage SQL

Interroger une base: LES JOINTURES


Une jointure entre tables peut tre mise en

uvre:
soit l'aide des lments de syntaxe SQL dj vu

dans ce cours, soit l'aide d'une clause spcifique du SQL: la clause JOIN.
Nous commenons par voir comment l'aide du

SQL de base nous pouvons exprimer une jointure.

62

Langage SQL

Interroger une base: LES JOINTURES


Exemple 1:

SELECT CLI_NOM, TEL_NUMERO FROM T_CLIENT, T_TELEPHONE Cette requte ne possde pas de critre de jointure entre une table et l'autre. Dans ce cas, le compilateur SQL calcule le produit cartsien des deux ensembles, c'est--dire qu' chaque ligne de la premire table, il accole l'ensemble des lignes de la seconde.

63

Langage SQL

Interroger une base: LES JOINTURES


Exemple daffichage:

CLI_NOM TEL_NUMERO -------------------DUPONT 01-45-42-56-63 DUPONT 01-44-28-52-52 DUPONT 01-44-28-52-50 DUPONT 06-11-86-78-89 DUPONT 02-41-58-89-52 DUPONT 01-51-58-52-50 DUPONT 01-54-11-43-21 DUPONT 06-55-41-42-95 ... Pour DUPOND cette requte a fait correspondre tous les numros de tlphone mme CEUX QUI NE LUI APPARTIENNE PAS

64

Langage SQL

Interroger une base: LES JOINTURES


Critre de jointure:
Dans lexemple prcdent, pour attribuer chaque

nom donn seulement ces numro de tlphone, on crit:


SELECT CLI_NOM, TEL_NUMERO FROM T_CLIENT, T_TELEPHONE WHERE T_CLIENT.CLI_ID = T_TELEPHONE.CLI_ID

T_CLIENT.CLI_ID fait rfrence la colonne

CLI_ID de la table T_CLIENT T_TELEPHONE.CLI_ID fait rfrence la colonne CLI_ID de la table T_TELEPHONE
65 Langage SQL

Interroger une base: LES JOINTURES


Exemple daffichage:

CLI_NOM ------------DUPONT DUPONT DUPONT BOUVIER DUBOIS DREYFUS BOUVIER MARTIN MARTIN
66 Langage SQL

TEL_NUMERO -------------01-45-42-56-63 01-44-28-52-52 01-44-28-52-50 06-11-86-78-89 02-41-58-89-52 01-51-58-52-50 06-55-41-42-95 01-48-98-92-21 01-44-22-56-21

Interroger une base: LES JOINTURES


technique du surnommage : C'est--dire que

l'on attribue un surnom chacune des tables prsente dans la partie FROM du SELECT. Exemple SELECT CLI_NOM, TEL_NUMERO FROM T_CLIENT C, T_TELEPHONE T WHERE C.CLI_ID = T.CLI_ID la table T_CLIENT a t surnomme "C" et la table T_TELEPHONE "T".

67

Langage SQL

Interroger une base: LES JOINTURES


Dans une requte de jointure entre table, on peut

poser des conditions supplmentaires de filtrage dans la clause WHERE. Exemple: SELECT CLI_NOM, TEL_NUMERO FROM T_CLIENT C, T_TELEPHONE T WHERE C.CLI_ID = T.CLI_ID AND TYP_CODE = 'FAX' Cet requte affiche les clients dont les numros de tlphone correspondent un fax.
68 Langage SQL

Interroger une base: loprateur JOIN


Syntaxe normalise des jointures naturelles :

SELECT ... FROM <table gauche> NATURAL JOIN <table droite> [USING <noms de colonnes>] Pour exprimer lexemple prcdent en utilisant loprateur JOIN: SELECT CLI_NOM, TEL_NUMERO FROM T_CLIENT NATURAL JOIN T_TELEPHONE USING (CLI_ID)
69 Langage SQL

LES VUES
Une vue est une perceprion logique sur les

donnes dune ou plusieur tables. Les vues sont definit pour:


Fournir un niveau de securit supplimentaire sur les

donnes dune table. Cacher une certaine complixit des donnes. Une vue peut etre dfinie partir de plusieurs jointures sur des tables diffrentes.

70

Langage SQL

LES VUES
Simplifier la complexit de la requte. Prsenter les donnes de la table sous forme de

diffrente perspectives sans modifier la definition de la tables Sauvegarder dune faon indirecte des requtes complexes.

71

Langage SQL

LES VUES
Syntaxe de cration dune vue:

CREATE VIEW nom_vue [ ( nom_col1, [, nom_col2 ... ] ) ] AS requte_select [WITH CHECK OPTIONS]
La clause WITH CHECK OPTION implique que si

la vue peut tre mise jour, alors les valeurs modifies doivent rpondre la validation de la clause WHERE.
72 Langage SQL

LES VUES
A la diffrence des tables, une vue ne peut tre mise jour

(INSERT, UPDATE, DELETE) que si elle obit un certain nombre de conditions :


ne porter que sur une table (pas de jointure) ne pas contenir de ddoublonnage (pas de mot clef

DISTINCT) si la table n'a pas de clef contenir la clef de la table si la table en a une ne pas transformer les donnes (pas de concatnation, addition de colonne, calcul d'agrgat...) ne pas contenir de clause GROUP BY ou HAVING ne pas contenir de sous requte rpondre au filtre WHERE si la clause WITH CHECK OPTIONS est spcifi lors de la cration de la vue

73

Langage SQL

LES VUES
Exemple

soit la table suivante : CREATE TABLE T_EMPLOYE (EMP_ID INTEGER PRIMARY KEY, EMP_MATRICULE CHAR(8), EMP_TITRE VARCHAR(4), EMP_NOM VARCHAR(32), EMP_PRENOM VARCHAR(32), EMP_DATE_NAIS DATE, EMP_SALAIRE FLOAT, EMP_STATUT CHAR(8), EMP_MAIL VARCHAR(128), EMP_TEL CHAR(16)); Cette table permet de stocker les employs de l'entreprise
74 Langage SQL

LES VUES
pour le syndicat, on pourra dfinir la vue

suivante: CREATE VIEW V_EMP_SYNDICAT AS SELECT EMP_MATRICULE, EMP_TITRE, EMP_NOM, EMP_PRENOM, EMP_DATE_NAIS, EMP_MAIL, EMP_TEL FROM T_EMPLOYE Cette vue ne peut tre mise jour car la clef ne s'y trouve pas

75

Langage SQL

LES VUES
pour le carnet d'adresse on pourra dfinir la vue

suivante: CREATE VIEW V_EMP_ADRESSE AS SELECT EMP_ID, EMP_TITRE || ' ' || EMP_PRENOM || ' ' || EMP_NOM AS EMP_NOM_COMPLET, EMP_MAIL, EMP_TEL FROM T_EMPLOYE Cette vue ne peut tre mise jour cause des transformation de donnes (concatnation au niveau du nom)
76 Langage SQL

LES VUES
Pour le service comptable, on pourra dfinir la

vue suivante : CREATE VIEW V_EMP_COMPTABLE AS SELECT EMP_ID, EMP_PRENOM, EMP_NOM, EMP_SALAIRE FROM T_EMPLOYE WHERE STATUT = OUVRIER' WITH CHECK OPTIONS elle pourra tre mis jour uniquement pour les salaris de type ' OUVRIER '
77 Langage SQL

LES VUES
Par exemple, dans le cadre de la vue pour le

service comptable, il n'est pas possible de faire : UPDATE V_EMP_COMPTABLE SET EMP_SALAIRE = EMP_SALAIRE + 100 WHERE STATUT = 'CADRE'

78

Langage SQL

LES VUES
Suppression dune vue.

DROP VIEW nom_vue;


Exemple

DROP VIEW V_EMP_COMPTABLE;

79

Langage SQL

LES INDEX
Les index sont des objets crs sur une table

permettant laccs rapide linformation. Les index peuvent tre crer sur une ou plusieurs colonnes.

80

Langage SQL

LES INDEX
Cration dun index

CREATE INDEX index ON table (colonne [ASC, DESC], colonne [ASC, DESC],.) Exemple: CREATE INDEX ind_client ON Client (nom DESC, ville);

81

Langage SQL

LES INDEX
Suppression dindex

DROP INDEX index; Exemple DROP INDEX ind_client;

82

Langage SQL