You are on page 1of 10

ECOLE SUPERIEURE

ET D'APPLICATION
DES TRANSMISSIONS

Division management
des systèmes d'information

COURS ANALYSE
Notions supplémentaires
sur le langage SQL

Edition 1999
SQL Notions supplémentaires

Objectif

Apporter des notions de bases concernant le domaine de la définition et de la


manipulation de données pour intervenir sur les bases de données relationnelles.

SOMMAIRE
I. NOTION DE VUE
ERROR: REFERENCE SOURCE NOT FOUND
A. CRÉATION
ERROR: REFERENCE SOURCE NOT FOUND
B. SÉLECTION DE DONNÉES
ERROR: REFERENCE SOURCE NOT FOUND
C. DESTRUCTION
ERROR: REFERENCE SOURCE NOT FOUND

II. NOTION DE TABLE 5


A. CRÉATION DE STRUCTURE
ERROR: REFERENCE SOURCE NOT FOUND
B. CRÉATION DE STRUCTURE AVEC CHARGEMENT DE DONNÉES
ERROR: REFERENCE SOURCE NOT FOUND
C. DESTRUCTION DE TABLE
ERROR: REFERENCE SOURCE NOT FOUND

III. NOTION D'INDEX 7


A. CRÉATION
ERROR: REFERENCE SOURCE NOT FOUND
B. DESTRUCTION
ERROR: REFERENCE SOURCE NOT FOUND

IV. MANIPULATION DE DONNÉES


ERROR: REFERENCE SOURCE NOT FOUND
A. INSERTION DE DONNÉES DANS UNE TABLE EXISTANTE
ERROR: REFERENCE SOURCE NOT FOUND
1. INSERTION DE DONNÉES PAR VALEURS 8
2. INSERTION PAR SÉLECTION DE DONNÉES 8
B. MISE À JOUR DE DONNÉES DANS UNE TABLE
ERROR: REFERENCE SOURCE NOT FOUND
1. MODIFICATION PAR VALEUR
ERROR: REFERENCE SOURCE NOT FOUND
2. MODIFICATION À PARTIR D'UNE COLONNE D'UNE AUTRE TABLE
ERROR: REFERENCE SOURCE NOT FOUND
C. SUPPRESSION DE DONNÉES DANS UNE TABLE

DMSI/ANALYSE du 11/10/2009 Suppléments SQL.doc Page 2 / 10


SQL Notions supplémentaires

ERROR: REFERENCE SOURCE NOT FOUND

V. NOTION DE TRANSACTION
10
A. VALIDATION
ERROR: REFERENCE SOURCE NOT FOUND
B. ANNULATION
ERROR: REFERENCE SOURCE NOT FOUND

DMSI/ANALYSE du 11/10/2009 Suppléments SQL.doc Page 3 / 10


SQL Notions supplémentaires

I.Notion de vue

Une vue se crée sur la base d’une requête répondant à un objectif précis.

A.Création

Syntaxe
CREATE VIEW <nom_vue>
[ (<liste_colonnes_vue>) ]
AS <instruction SELECT>

Exemple
/* Créer la vue emp_bis sur la base d’une sélection des matricule, nom, salaire et
commission des employés dont la commission n’est pas à NULL */
CREATE VIEW emp_bis
(matricule, nom, salaire, com)
AS (SELECT matricule, uppercase (varchar (nom)), salaire, com
FROM emp
WHERE com IS NOT NULL) ;

B.Sélection de données

• La recherche de données sur une vue s’opère exactement de la même façon que sur une table
à la différence fondamentale que le nom de la TABLE de l'instruction SELECT sera
remplacé par le nom de la VUE.
• L’instruction principale est naturellement SELECT.
• Toutes les syntaxes étudiées précédemment sur la clause SELECT sont applicables pour
l’exploitation d’une vue.
• Enfin, on peut très bien établir des jointures entre des vues et des tables, puisque les vues
sont des cas particuliers de tables.

C.Destruction

Syntaxe
DROP [ VIEW ] <nom_vue>

Exemple
/* Supprimer la vue qui vient d’être créée.*/
DROP VIEW emp_bis

DMSI/ANALYSE du 11/10/2009 Suppléments SQL.doc Page 4 / 10


SQL Notions supplémentaires

II.Notion de table

A.Création de structure

Syntaxe
CREATE TABLE <nom_table>
(<nom_colonne> <type_donnée> [{with|not} null] [{with|not} default]
[, ...]) ;

Exemple
CREATE TABLE emp_ter
(matricule integer not null not default,
nom varchar(30) not null with default,
salaire money not null not default,
com money with null with default) ;

B.Création de structure avec chargement de données

Syntaxe
CREATE TABLE <nom_table>
(<nom_colonne1>, <nom_colonne2> [, ...])
AS <instruction SELECT>

Dans ce cas, les colonnes prendront automatiquement les caractéristiques et le contenu des
colonnes énoncées dans la clause SELECT.

Exemple
/* Créer la table emp_quat sur la base d’une sélection des matricule, nom, salaire et
commission des employés dont la commission n’est pas à NULL */
CREATE TABLE emp_quat
(matricule, nom, salaire, com)
AS (SELECT matricule, uppercase (varchar (nom)), salaire, com
FROM emp
WHERE com IS NOT NULL) ;

NOTA
• Dans la première syntaxe, il est possible de définir simultanément des contraintes spécifiques
sur les colonnes ou sur la table. Par rapport à l'exemple, définir l'attribut "matricule" comme
clé primaire "primary key". Pour en savoir plus, reportez-vous à une documentation
spécifique.
• En mode interactif, on peut définir les index en même temps que la structure de la table. En
mode"SQL direct", la définition des index impose d'utiliser la commande CREATE INDEX
(cf Fin de cours).

DMSI/ANALYSE du 11/10/2009 Suppléments SQL.doc Page 5 / 10


SQL Notions supplémentaires

C.Destruction de table

Syntaxe
DROP [ TABLE ] <nom_table>

Exemple
/* Supprimer la table emp_quat */
DROP TABLE emp_quat ;

NOTA

S’il existe d’éventuels index rattachés à la table, cette commande les supprimera en
premier puis supprimera la table. Toutefois, il est conseillé de procéder comme indiquer au
paragraphe concernant les index (cf Fin de cours).

DMSI/ANALYSE du 11/10/2009 Suppléments SQL.doc Page 6 / 10


SQL Notions supplémentaires

III.Notion d'index

A.Création

Syntaxe
CREATE [UNIQUE] INDEX <nom_index>

ON <nom_table> (<nom_colonne1 [ASC/DESC]> [, …])

Le mot-clé UNIQUE permet de créer un index unique, c’est-à-dire que la colonne ou


l’association de colonnes qui sera définie pour former l’index ne pourra pas être enregistrée en
double dans la table concernée. Sans ce mot-clé, des doublons pourront être générés dans la
table.

Exemple
/* Poser un index unique sur le matricule dans la table des employés */
CREATE UNIQUE INDEX i_emp
ON emp (matricule) ;

B.Destruction

Syntaxe
DROP [ INDEX ] <nom_index>

Exemple
/* Supprimer l’index i_emp */
DROP INDEX i_emp ;

NOTA

En cas de suppression de table, il est conseillé de supprimer les index éventuels rattachés
à la table en premier puis de supprimer la table en dernier.

DMSI/ANALYSE du 11/10/2009 Suppléments SQL.doc Page 7 / 10


SQL Notions supplémentaires

IV.Manipulation de données

A.Insertion de données dans une table existante

1.Insertion de données par valeurs

Syntaxe
INSERT INTO <nom_table>
(<liste_colonnes>)
VALUES (<liste_valeurs> )

Exemple
/* Rajouter l’occurrence suivante dans la table dept (40, Marketing, 500000, C) */
INSERT INTO dept
(division, nom_div, budget, batiment)
VALUES (40, ‘Marketing’, ‘500000,00F’, ‘C’) ;

2.Insertion par sélection de données

Syntaxe
INSERT INTO <nom_table>
(<liste_colonnes>)
<instruction SELECT [avec condition(s)]>

Exemple
/* Reprendre la table emp_ter créée précédemment (sans clause SELECT) et insérer les
matricule, nom, salaire et commission des employés dont la commission est à NULL */
INSERT INTO emp_ter
(matricule, nom, salaire, com)
SELECT matricule, uppercase (varchar (nom)), salaire, com
FROM emp
WHERE com IS NOT NULL ;

NOTA

• L'ordre de la liste de valeurs doit correspondre à l'ordre de la liste des colonnes.

• Egalement, si une colonne ne doit pas recevoir de valeurs, elle ne peut être omise ; sa valeur
sera alors soit la valeur NULL si celle-ci est autorisée dans la définition de la structure de la
table, soit une éventuelle valeur par défaut définie.

• Les dates et les chaînes de caractères sont toujours entrées entre quotes (‘) et, si une valeur de
type caractère à entrer est plus longue que la taille du champ, la donnée sera tronquée
automatiquement et sans avertissement.

DMSI/ANALYSE du 11/10/2009 Suppléments SQL.doc Page 8 / 10


SQL Notions supplémentaires

B.Mise à jour de données dans une table


1.Modification par valeur
Syntaxe
UPDATE <nom_table>
SET <nom_colonne> = <valeur>
[WHERE <condition>]

Exemple
/* Attribuer 10000 F de salaire et 500 F de commission à tous les employés dont le nom
comporte ‘ON’ */
UPDATE emp_bis
SET salaire = 10000, com = 500
WHERE nom LIKE ‘%ON%’ ;

2.Modification à partir d'une colonne d'une autre table


Syntaxe
UPDATE <nom_table>
FROM <autre_table [alias]>
SET <nom_colonne> = [ { autre_table | alias }.]colonne> [, …]
[ WHERE <condition(s)> ]

Exemple
/* Désormais, tous les analystes dépendent directement du président */
UPDATE emp_bis
FROM emp
SET mat_chef = emp.matricule
WHERE emp.mat_chef is null
AND uppercase(emp_bis.emploi) like 'ANA%'

NOTA
On ne peut pas mettre à jour plusieurs tables dans la même instruction de mise à jour de
table.

C.Suppression de données dans une table


Syntaxe
DELETE FROM <nom_table>
[WHERE <condition >]

Exemple
/* Supprimer les occurrences où la commission n’excède pas 350,00 F */
DELETE FROM emp_bis
WHERE com <= 350 ;

NOTA
Si la commande ne contient pas de clause WHERE, toutes les occurrences de la table
seront supprimées. Sinon seront effacées les données sélectionnées par la condition.

DMSI/ANALYSE du 11/10/2009 Suppléments SQL.doc Page 9 / 10


SQL Notions supplémentaires

V.Notion de transaction

Il est possible de développer des programmes complets de mise à jour de la base de


données en langage S.Q.L.

Une transaction est alors une unité logique de traitement regroupant un ensemble
d'opérations élémentaires. Ces opérations doivent être entièrement exécutées ou pas du tout.
Cette notion de transaction permet de maintenir la cohérence de la base de données.

Considérons, par exemple, la séquence suivante :

CREATE TABLE emp_quat


(matricule, nom, salaire, com)
AS (SELECT matricule, uppercase (varchar (nom)), salaire, com
FROM emp) ;


UPDATE emp_bis
SET com = 500
WHERE com = 0 ;

{ COMMIT | ROLLBACK } ;

A.Validation

Syntaxe

COMMIT [WORK]

Cette commande permet la validation de toutes les modifications apportées dans la base
de données.

B.Annulation

Syntaxe

ROLLBACK [WORK]

Cette commande permet l’annulation de tout ou partie des modifications apportées dans
la base de données.

DMSI/ANALYSE du 11/10/2009 Suppléments SQL.doc Page 10 / 10

You might also like