Le langage SQL
Pour Oracle
www.tellora.fr
Auteur : Clotilde Garde
Société : Tellora
Version 2
Du 21 Novembre 2015
Le langage SQL
Tellora pour M2I Formation
Sommaire
1 Les bases de données relationnelles (SGBDRO) ………………………………………………….. 6
2.1
2 La base de donnée Oracle et ses outils ………………………………………………………………. 7
L’outil SQL*Plus …………………………………………………………………………………….. 7
2.1.1 Environnement de travail ……………………………………………………………………………… 7
Lancement de SQL*Plus sous Dos ………………………………………………………………….. 9
2.1.2
L’outil iSQL*Plus ………………………………………………………………………………….. 10
Outil Oracle Database Control ou Grid Control ………………………………………………. 10
2.2
2.3
3.1
3 Les commandes de l’outil SQL*Plus ………………………………………………………………… 12
Quelques commandes SQL*Plus ……………………………………………………………….. 12
3.1.1 Mise en forme à l’affichage …………………………………………………………………………. 12
3.1.2 Ajouter des commentaires ………………………………………………………………………….. 13
3.1.3 Exécuter le contenu d’un script ……………………………………………………………………. 13
Utilisation de paramètres ……………………………………………………………………….. 14
3.2.1 Déclarer un éditeur ……………………………………………………………………………………. 14
3.2.2 Générer un fichier résultat ………………………………………………………………………….. 14
3.2.3 Modifier l’affichage par défaut …………………………………………………………………….. 15
3.2.4 Mesurer les performances d’une requête …………………………. Erreur ! Signet non défini.
3.2
4 La base exemple ………………………………………………………………………………………….. 16
Le MCD (Modèle Conceptuel de Données) ……………………………………………………. 16
Régles de passage du MCD au MLD ……………………………………………………………. 17
Diagramme de classe ……………………………………………. Erreur ! Signet non défini.
Du diagramme de classe au MLD ………………………………. Erreur ! Signet non défini.
Le MLD (Modèle Logique de Données) ………………………………………………………… 18
Les contraintes d’intégrité ………………………………………………………………………. 18
Scritp de création des tables ……………………………………………………………………. 19
Les types de données ……………………………………………………………………………. 22
Règles de nommage ……………………………………………………………………………… 23
4.1
4.2
1.1
2.1
4.3
4.4
4.5
4.6
4.7
5 La commande SQL « CREATE TABLE » …………………………………………………………….. 24
Modifier la structure d’une table ……………………………………………………………….. 25
Contraintes d’intégrité activées ou désactivées ……………………………………………… 27
Contraintes immédiates ou différées ………………………………………………………….. 28
Manipulation des LOB ……………………………………………………………………………. 29
Manipulation des BFILEs…………………………………………………………………………. 30
Créer une table à partir d’une table existante ……………………………………………….. 31
5.1
5.2
5.3
5.4
5.5
5.6
6 Notion de tablespace ……………………………………………………………………………………. 33
7 Le dictionnaire de données ……………………………………………………………………………. 34
8 Le langage SQL ……………………………………………………………………………………………. 36
www.Tellora.fr
Page 2/133
Le langage SQL
Tellora pour M2I Formation
8.2
8.1
Requêtes avec comparaisons …………………………………………………………………… 39
La clause IN ……………………………………………………………………………………………… 39
8.1.1
La clause LIKE ………………………………………………………………………………………….. 40
8.1.2
La valeur NULL ………………………………………………………………………………………….. 40
8.1.3
8.1.4
La clause BETWEEN …………………………………………………………………………………… 41
8.1.5 Trier l’affichage d’une requête …………………………………………………………………….. 41
8.1.6 Eliminer les doublons …………………………………………………………………………………. 42
Requêtes avec jointures …………………………………………………………………………. 43
8.2.1 Equijointure ……………………………………………………………………………………………… 43
Inequijointure ………………………………………………………………………………………….. 44
8.2.2
8.2.3
Jointure multiple ………………………………………………………………………………………. 44
8.2.4 Utiliser des ALIAS ……………………………………………………………………………………… 46
8.2.5 Auto-jointure ……………………………………………………………………………………………. 46
Jointure externe ……………………………………………………………………………………….. 47
8.2.6
Ecriture et mise en forme ……………………………………………………………………….. 49
8.3.1 Afficher un titre de colonne ………………………………………………………………………… 49
8.3.2
Les opérateurs ………………………………………………………………………………………….. 50
8.3.3 Afficher un libellé dans une requête …………………………………………………………….. 50
Les fonctions ………………………………………………………………………………………. 51
Les fonctions d’agrégat ………………………………………………………………………………. 51
8.4.1
Les fonctions numériques …………………………………………………………………………… 52
8.4.2
Les fonctions de chaînes de caractères …………………………………………………………. 52
8.4.3
8.4.4
Les fonctions de gestion du temps ……………………………………………………………….. 55
8.4.5 Autres fonctions ……………………………………………………………………………………….. 57
Requêtes avec regroupement…………………………………………………………………… 58
Requêtes ensemblistes ………………………………………………………………………….. 61
8.6.1 Minus ………………………………………………………………………………………………………. 62
8.6.2 UNION …………………………………………………………………………………………………….. 62
INTERSECT……………………………………………………………………………………………….. 63
8.6.3
Sous requêtes dans la clause FROM …………………………………………………………… 63
Requêtes imbriquées …………………………………………………………………………….. 64
8.8.1 Opérateurs de comparaison ………………………………………………………………………… 64
8.8.2 Opérateurs ensemblistes ……………………………………………………………………………. 66
Balayer une arborescence ………………………………………………………………………. 68
8.3
8.4
8.5
8.6
8.7
8.8
8.9
3.1
4.1
9 Les jointures ANSI ……………………………………………………………………………………….. 70
Jointures simples …………………………………………………………………………………. 70
Jointure avec conditions …………………………………………………………………………. 71
L’opérateur JOIN ON ………………………………………………………………………………….. 71
9.1.1
L’opérateur JOIN USING …………………………………………………………………………….. 71
9.1.2
9.1.3
L’opérateur NATURAL JOIN …………………………………………………………………………. 72
9.1.4 Produit cartésien ………………………………………………………………………………………. 73
Jointure externe ……………………………………………………………………………………….. 73
9.1.5
10
Transactions et accés concurents …………………………………………………………………. 77
www.Tellora.fr
Page 3/133
Le langage SQL
Tellora pour M2I Formation
10.1
10.2
10.3
10.4
10.5
Découper une transaction ……………………………………………………………………….. 78
Gestion des accès concurrents …………………………………………………………………. 79
Les verrous ………………………………………………………………………………………… 80
Accès concurrents en mise à jours …………………………………………………………….. 81
Les rollbacks segments ou segments d’annulation ………………………………………….. 82
11.1
11.2
11 Modifier les lignes de tables ………………………………………………………………………… 83
Insérer des lignes dans une table ……………………………………………………………… 83
11.1.1 La commande INSERT ……………………………………………………………………………….. 83
11.1.2 Insertion à partir d’une table existante ……………………………………………………….. 84
Modifier les lignes d’une table ………………………………………………………………….. 85
11.2.1 La commande UPDATE ………………………………………………………………………………. 85
11.2.2 Modifications de lignes à partir d’une table existante …………………………………….. 86
Spécifier la valeur par défaut d’une colonne …………………………………………………. 87
Supprimer les lignes d’une table ……………………………………………………………….. 88
11.4.1 La commande DELETE ……………………………………………………………………………….. 88
11.4.2 Vider une table ………………………………………………………………………………………… 90
11.3
11.4
12
gestion de la confidentialité ………………………………………………………………………… 91
Gestion de la confidentialité niveau objet …………………………………………………….. 92
Gestion de la confidentialité niveau system ………………………………………………….. 94
Les rôles ……………………………………………………………………………………………. 95
12.1
12.2
12.3
13 Notion de schéma ……………………………………………………………………………………… 97
Création d’un schéma ……………………………………………………………………………. 97
Intérêt d’un schéma ……………………………………………………………………………… 98
Modifier un élément de schéma ………………………………………………………………… 98
13.1
13.2
13.3
14
14.1
14.2
14.3
Les objets de schema ……………………………………………………………………………….. 100
Les vues ……………………………………………………………………………………………100
14.1.1 Créer une vue ………………………………………………………………………………………… 100
14.1.2 Supprimer une vue …………………………………………………………………………………. 104
Les synonymes ……………………………………………………………………………………104
Les séquences …………………………………………………………………………………….105
14.3.1 Créer une séquence ………………………………………………………………………………… 106
14.3.2 Utiliser une séquence ……………………………………………………………………………… 106
14.3.3 Modifier une séquence …………………………………………………………………………….. 107
14.3.4 Supprimer une séquence …………………………………………………………………………. 107
Procédures, Fonctions et Packages ……………………………………………………………108
Les Triggers ……………………………………………………………………………………….109
Les index …………………………………………………………………………………………..110
14.6.1 Index et contraintes d’intégrité ………………………………………………………………… 114
14.6.2 La clause USING INDEX ……………………………………………………………………………… 115
14.6.3 Suppression d’un index ……………………………………………………………………………. 116
14.4
14.5
14.6
15
Complément sur les tables ………………………………………………………………………… 117
Le Flach Back ……………………………………………………………………………………..117
15.1
www.Tellora.fr
Page 4/133
Le langage SQL
Tellora pour M2I Formation
15.1.1 Modifier une table par fusion : MERGE ……………………………………………………….. 119
15.1.2 Améliorations de la commande MERGE en version 10g …………………………………… 122
Créer une table à partir d’une table existante ……………………………………………….123
Renommer une table …………………………………………………………………………….124
Les tables temporaires …………………………………………………………………………..124
Les tables externes ………………………………………………………………………………124
15.2
15.3
15.4
15.5
16
Les vues Matérialisées ……………………………………………………………………………… 131
www.Tellora.fr
Page 5/133
Le langage SQL
Tellora pour M2I Formation
1
Les bases de données relationnelles (SGBDRO)
Les SBDRO (Système de Gestion de Bases de Données Relationnelles Objet) sont constituées de
tables en relations les unes avec les autres.
Ces relations sont représentées et gérées par les contraintes d’intégrités au niveau du noyau de la
base de données.
Ces contraintes d’intégrité sont vérifiées et exécutées tout au long de la vie de la base de données.
Elles garantissent :
•
•
la lecture cohérente (même version des données au sein d’une même lecture)
la cohérence des données (le respect de la conception de la base de données)
Le « O » de SGBDRO, représente l’intégration de l’objet à travers la gestion des images, de la
vidéo, de la musique apparu avec l’rrivée d’internet.
Ces objets sont stockés dans les bases de données relationnelles dans des types BLOB, CLOB,
Bitmap, ces types seront abordés dans les chapitres qui suivent.
www.Tellora.fr
Page 6/133
Le langage SQL
Tellora pour M2I Formation
2
La base de donnée Oracle et ses outils
Trois outils sont présents dans une base de données Oracle
SQL*Plus (sqlplus), outil ligne de commande
iSQL*Plus, outil graphique permettant de saisir des requètes SQL.
Oracle Enterprise Manager (OEM), appelé encore Grid Control est un outil graphique d’administration.
2.1 L’outil SQL*Plus
Outil ligne de commande nommé SQLPLUS.
Présent sur tous les serveurs de base de données Oracle.
SQLPLUS [ CONNEXION ] [ @FICHIER_SCRIPT [ARGUMENT [,…]] ]
Il permet de saisir et d’exécuter des ordres SQL ou du code PL/SQL et dispose en plus d’un certain
nombre de commandes.
— lancer SQLPlus sans connexion
C:> SQLPLUS /NOLOG
— lancer SQLPlus avec connexion
C:> SQLPLUS system/tahiti@tahiti
— visualiser l’utilisateur avec lequel on s’est connecté
SQL> show user
USER est “SYSTEM”
— lancer SQLPlus avec connexion et lancement d’un script sur la ligne de commande
C:> SQLPLUS system/tahiti@tahiti @info.sql
2.1.1
Environnement de travail
SQL*PLUS est avant tout un interpréteur de commandes SQL. Il est également fortement interfacé
avec le système d’exploitation. Par exemple, sous UNIX, on pourra lancer des commandes UNIX
sans quitter sa session SQL*PLUS.
Un SGBDR est une application qui fonctionne sur un système d’exploitation donné. Par conséquent, il
faut se connecter au système avant d’ouvrir une session ORACLE.
www.Tellora.fr
Page 7/133
Le langage SQL
Tellora pour M2I Formation
Connexion à une base de données Oracle en utilisant un client Oracle installé sur un poste distant.
Depuis le groupe ORACLE, double sur l’icône SQL*Plus …
La boîte de dialogue suivante permet de saisir un compte et un mot de passe ORACLE …
Le nom de la « Chaîne hôte» correspond au nom du service Oracle Net de la base de données à
laquelle l’utilisateur veut se connecter à distance.
La session SQL*PLUS est ouverte …
www.Tellora.fr
Page 8/133