ORACLE
SQL sous ORACLE
Programme de SQL sous Oracle
 Introduction
 Base de Données
 SGBD
 Modèle Relationnel
 Architecture
 Installation 11g
 Pré requis
 Normes OFA
 Varaiable d ’environnement
 Installation de Oracle Database 11g sous Windows
 Présentation du langage SQL
Programme de SQL sous Oracle
 Oracle
 Fonctionnalités && Versions Oracle
 Composant Oracle
 Outils d’administration
 Outils de développement
 Outils de programmation
 Chapitre I : Mode de Connexion
 Chapitre II : Gestion des données
 Chapitre III Utilisation des instructions LDD pour gérer et créer des tables
 Chapitre IV: Manipulation des données d’une table
 Chapitre V : Evolution d’un schéma
 Chapitre VI: Extraction des données à l’aide de l’instruction SELECT
 Chapitre VII : restreindre et trier les données
 Chapitre VIII : Utilisation des fonctions mono-lignes pour personnaliser les résultats
 Chapitre IX: Utilisation des fonctions de conversions et des expressions conditionnelles
 Chapitre X: Manipulation des données agrégées à l’aide des fonctions de groupe
 Chapitre XI : Affichage des données et des jointures
 Chapitre XII : Utilisation des sous-interrogations pour résoudre des interrogations
 Chapitre XIII : Opérateurs ensemblistes
 Chapitre XIV: Création d’objet et Schéma
Introduction
La première chose à faire est d’établir quelques points de terminologie. Qu’est-ce qu’une
donnée ? C’est une information quelconque comme, par exemple : voici une personne, elle
s’appelle Jean. C’est aussi une relation entre des informations : Jean enseigne les bases de
données. Des relations de ce genre définissent des structures. Une base de données est un
ensemble, en général volumineux, de telles informations, avec une caractéristique essentielle :
on souhaite les mémoriser de manière permanente.
Base de Données
Une Base de données est un gros ensemble d’informations structurées mémorisées sur un
support permanent.
On peut remarquer qu’une organisation consistant en un (ou plusieurs) fichier(s) stockés sur mémoire
secondaire est conforme à cette définition. Un ensemble de fichiers ne présentant qu’une complexité assez
faible, il n’y aurait pas là matière à longue dissertation. Malheureusement l’utilisation directe de fichiers
soulève de très gros problèmes :
1. Lourdeur d’accès aux données. en pratique, pour chaque accès, même le plus simples, il faudrait
écrire un programme.
2. Manque de sécurité. Si tout programmeur peut accéder directement aux fichiers, il est impossible de
garantir la sécurité et l’intégrité des données.
3. Pas de contrôle de concurrence. Dans un environnement où plusieurs utilisateurs accèdent aux même
fichiers, des problèmes de concurrence d’accès se posent.
D’où le recours à un logiciel chargé de gérer les fichiers constituant une base de données, de prendre
en charge les fonctionnalités de protection et de sécurité et de fournir les différents types d’interface
nécessaires à l’accès aux données.
SGBD
En particulier, une des tâches principales du SGBD est de masquer à l’utilisateur les détails
complexes et fastidieux liés à la gestion de fichiers. D’où la définition.
Définition 2 .2 Un Système de Gestion de Bases de Données (SGBD) est un logiciel de haut niveau qui
permet de manipuler les informations stockées dans une base de données.
Chaque niveau du SGBD remplit (réalise) un certain nombre de fonctions :
– Niveau physiques : gestion sur le mémoire secondaire (fichiers) des données, du schéma, des index ;
Partage de données et gestion de la concurrence d’accès ; Reprise sur pannes (fiabilité) ; Distribution
des données et interopérabilité (accès aux réseaux).
– Niveau logique : Définition de la structure de données : Langage de Description de Données (LDD) ;
Consultation et Mise à Jour des données : Langages de Requêtes (LR) et Langage de Manipulation
de Données (LMD) ; Gestion de la confidentialité (sécurité) ; Maintien de l’intégrité ;
– Niveau externe : Vues Environnement de programmation (intégration avec un langage de programmation) Interfaces
conviviales et Langages de 4e Génération (L4G) ; Outils d’aides (e.g. conception de schémas) ; Outils de saisie,
d’impression d’états.
En résumé, un SGBD est destiné à gérer un gros volume d’informations, persistantes (années) et fiables
(protection sur pannes), partageables entre plusieurs utilisateurs et/ou programmes et manipulées indépendamment de
leur représentation physique.
Model Relationnel
Le modèle de données relationnel repose sur une théorie rigoureuse bien qu’adoptant des principes
simples. La table relationnelle (relationnel table) est la structure de données de base qui contient des
enregistrements, également appelés « lignes » (rows). Une table est composée de colonnes (columns) qui
décrivent les enregistrements.(n_uplets)
Chaque colonne est composée d’attribut et ce dernier est composé de domaine c’est-à-dire les types de
valeurs que prennent ces attributs (entiers , chaines de caractères etc…)
Une clé est un attribut (ou un ensemble d’attributs) qui identifie(nt) de manière unique un tuple d’une
relation. la clé primaire est la clé utilisée pour référencer une ligne et une seule à partir d’autres.
La Clé étrangères est un attributs qui fait référence à une ligne dans une autre table.
Oracle
Oracle est un SGBD (système de gestion de bases de données) édité par la société du même nom
(Oracle Corporation - http://www.oracle.com), leader mondial des bases de données.
La société Oracle Corporation a été créée en 1977 par Lawrence Ellison, Bob Miner, et Ed Oates.
Elle s'appelle alors Relational Software Incorporated (RSI) et commercialise un Système de
Gestion de Bases de données relationnelles (SGBDR ou RDBMS pour Relational Database
Management System) nommé Oracle.
• En 1979, le premier prototype (RDBMS - RSI1) intégrant la séparation des espaces
d'adressage entre les programmes utilisateurs et le noyau Oracle est commercialisé. Cette
version est entièrement développée en langage assembleur. La seconde version (RDBMS -
RSI2) est un portage de l'application sur d'autres plates-formes.
• En 1983 la troisième version apporte des améliorations au niveau des performances et une
meilleure prise en charge du SQL. Cette version Cette version est entièrement codée en
langage C. A la même époque RSI change de raison sociale et devient Oracle
Oracle (1)
• En 1984 la première version d'Oracle (Oracle 4) est commercialisée sur les machines IBM.
• En 1985 Oracle 5 permet une utilisation client-serveur grâce au middleware SQL*Net.
• En 1986 Oracle a été porté sur la plateforme 8086.
• En 1988 Oracle 6 est disponible sur un grand nombre de plates-formes et apporte de
nombreuses nouvelles fonctionnalités ainsi qu'une amélioration notable des performances.
• En 1991, Oracle 6.1 propose une option Parallel Server (dans un premier temps sur la DEC
VAX, puis rapidement sur de nombreuses autres plates-formes).
• En 1992, Oracle 7 sort sur les plates-formes UNIX (elle ne sortira sur les plates-formes
Windows qu'à partir de 1995). Cette version permet une meilleure gestion de la mémoire, du
CPU et des entrées-sorties. La base de données est accompagnée d'outils d'administration
(SQL*DBA) permettant une exploitation plus aisée de la base. En 1997, la version Oracle 7.3
(baptisée Oracle Universal Server) apparaît, suivie de la version 8 offrant des capacités objet
à la base de données
Oracle (2)
Oracle est écrit en langage C et est disponible sur de nombreuses plates-formes matérielles (plus
d'une centaine) dont :
• AIX (IBM)
• Solaris (Sun)
• HP/UX (Hewlett Packard)
• Windows NT (Microsoft)
• Oracle depuis la version 8.0.5 est disponible sous Linux
Fonctionnalité & versions Oracle
Les fonctionnalités d'Oracle
• Oracle est un SGBD permettant d'assurer :
• La définition et la manipulation des données
• La cohérence des données
• La confidentialité des données
• L'intégrité des données
• La sauvegarde et la restauration des données
• La gestion des accès concurrents
Les versions d'Oracle
Oracle se décline en plusieurs versions
• Oracle Server Standard, une version comprenant les outils les plus courants de la solution
Oracle. Il ne s'agit pas pour autant d'une version bridée...
• Oracle Server Enterprise Edition
Composants Oracle
Les composants d'Oracle
Outre la base de données, la solution Oracle est un véritable environnement de travail constitué
de nombreux logiciels permettant notamment une administration graphique d'Oracle, de
s'interfacer avec des produits divers et d'assistants de création de bases de données et de
configuration de celles-ci.
On peut classer les outils d'Oracle selon diverses catégories :
• Les outils d'administration
• Les outils de développement
• Les outils de communication
• Les outils de génie logiciel
• Les outils d'aide à la décision
Les outils d'administration d'Oracle
Oracle est fourni avec de nombreux outils permettant de simplifier l'administration de la base
de données. Parmi ces outils, les plus connus sont :
• Oracle Manager (SQL*DBA)
• Network Manager
• Oracle Enterprise Manager
• Import/Export : un outil permettant d'échanger des données entre deux bases Oracle
Outils de développement d'Oracle (1)
Oracle propose également de nombreux outils de développement permettant d'automatiser la
création d'applications s'interfaçant avec la base de données. Ces outils de développement sont
• Oracle Designer
• Oracle Developer
• SQL*Plus : une interface interactive permettant d'envoyer des requêtes SQL et PL/SQL à
la base de données. SQL*Plus permet notamment de paramétrer l'environnement de travail
(formatage des résultats, longueur d'une ligne, nombre de lignes par page, ...)
• Oracle Developper : il s'agit d'une suite de produits destinés à la conception et à la création
• d'applications client-serveur.
Outils de développement d'Oracle (2)
Il est composé de 4 applications :
• Oracle Forms (anciennement SQL*Forms) : un outil permettant d'interroger la base de
données de façon graphique sans connaissances préalables du langage SQL. SQL*Forms
permet ainsi de développer des applications graphiques (fenêtres, formulaires, ...)
permettant de sélectionner, modifier et supprimer des données dans la base.
• Oracle Reports (SQL* Repor t Writer) : un outil permettant de réaliser des états
• Oracle Graphics : un outil de génération automatique de graphiques dynamiques pour
présenter graphiquement des statistiques réalisées à partir des données de la base
• Procedure Builder : un outil permettant de développer des procédures, des fonctions et des
packages
Outils de programmation
Oracle dispose d'un grand nombre d'interfaces (API) permettant à des programmes écrits dans
divers langages de s'interfacer avec la base de données en envoyant des requêtes SQL. Ces
interfaces (appelées précompilateurs) forment une famille dont le nom commence par PRO* :
• Pro*C
• Pro*Cobol
• Pro*Fortran
• Pro*Pascal
• Pro*PLI
Architecture Oracle
L’architecture oracle est constituée d’une instance et d’une base de données appelée Database.
 Une instance est constituée :
• D’une zone de mémoire partagée appelée System Global Area (SGA)
• D’un ensemble de processus d’arrière plan ayant chacun un rôle bien précis
• D’un ensemble de processus serveur chargés de traiter les requêtes des utilisateurs
 La base de données est l’ensemble des fichiers qui permettent de gérer les données de la base.
Une base de données est constituée de :
• Un fichier de contrôle, contenant les informations sur tous les autres fichiers de la base
(nom, emplacement, taille).
• Fichiers de Redo Log, contenant l’activité des sessions connectées à la base. Ce sont des
journaux de transactions de la base.
• fichiers de Redo Log archivés contenant les archives d’anciens fichiers de Redo Log.
• fichiers de données qui contiennent les données des tables de la base.
Architecture Oracle (1)
• Le fichier de paramètres
Ce fichier contient les paramètres de démarrage de la base et d'autres valeurs qui
déterminent l'environnement dans lequel elle s'exécute. Lorsque la base est démarrée,
le fichier des paramètres est lu et plusieurs structures mémoire sont allouées en fonction de son
contenu.
• Le fichier mot de passe le fichier de mot de passe est utilisé pour établir l’authenticité des
utilisateurs privilégiés de la base de données.
Définition :
Une instance est l’ensemble des processus d’arrière-plan (background process) et de zones
mémoire qui sont allouées au démarrage de la base de données, pour permettre l’exploitation des
données.
Une instance ne peut ouvrir qu’une seule base de données à la fois et dans la grande majorité des cas,
une base de données est ouverte par une seule instance.
Architecture Oracle (2)
Instance = Zones mémoires (SGA + PGA) + Processus d’arrière Plan
Architecture Oracle (3)
Vue d’ensemble de la SGA
 SGA (System Global Area)
• Mémoire partagée
• Chaque instance a sa propre SGA
Architecture Oracle (4)
Zones de mémoires
 Shared pool
 Library Cache
 Analyse sémantique et syntaxique des requêtes
 Plan d’exécution
 Gestion du cache en LRU
 Dictionnary Cache
 Droits des utilisateurs
 Descriptions des objets de la base
 Database buffer cache
 Cache des blocs de données récemment utilisés
 Redo Log Buffer
 Enregistrement des modifications sur les données
Architecture Oracle (5)
La PGA
Program Global Area
 Caractéristiques
• Utilisée par les processus (serveur et d’arrière plan)
• Mémoire non partagée
 Utilisation
• Zone de travail (Tris, hachage)
• Espace de pile de traitements (Stack Space)
Processus Utilisateur:
Processus Serveur:
Architecture Oracle (6)
Système de stockage:
• La structure physique comprend les fichiers de contrôle, les fichiers de journalisation en
ligne (online redo log) et les fichiers de données qui constituent la base de données.
• La structure logique est composée de tablespaces, de segments, extents (ensemble de
blocs contigus) et de blocs de données.
Architecture Oracle (6)
Structure logique
Le block de données est l‘ unité logique la plus fine, 8ko par défaut.
l‘ extent est un ensemble contiguë de blocks, alloues en une seule fois.
le segment est un ensemble d'extents dédies a un même objet (table, index, ...)
Tablespace : regroupe un ensemble d'objets (=segments) pour faciliter leur administration.
Architecture Oracle (7)
Processus arriére plan :
Assurent le fonctionnement interne de la base
Installation Oracle 11g
Objectifs
 Prérequis d’installation
 Norme OFA
 Installer le logiciel Oracle
Exploitation
 L’exploitation d’Oracle passe par la connaissance
 Des procédures d’installation
 Prérequis
 Opérations de pré-installation et post-installation
 De l’arborescence du noyau
 De la norme OFA
 La localisation des fichiers de configuration
 Un exploitant Oracle doit savoir
 Installer le logiciel Oracle
 Identifier les composants d’une installation
Prérequis matériels
 Systèmes d’exploitation
 MS Windows, NIX : 32 bit, 64 bits
 Win NIX
 Server, Client Linux, Solaris, AIX, …
 Voir documentation Oracle
 Mémoire
 RAM : 1GB
 VRAM/SWAP : 2 x RAM
 Espace disque : 6 GB
 Processor : Intel, AMD
Normes OFA
 Optimal flexible architecture
OFA, Oracle Flexible Architecture, est un ensemble de recommandations sur l’arborescence
et le nommage des fichiers du serveur contenant les produits et les bases de données en
tenant compte de la possibilité d’avoir plusieurs bases de données et plusieurs versions
d’Oracle par plate-forme
Le répertoire /app/oracle/oradata/orcl/ contient les fichiers de la base de données
« orcl »
 Arborescence
 Noms des fichiers
 Avantages
 Organiser de grandes quantités de logiciels et de données
 Faciliter les tâches administratives
 Faciliter le passage d’une base à une autre
Normes OFA (1)
 Répertoire de base
 C:app
 Fichiers
 Fichiers de contrôle (control files) : ce sont des fichiers qui contiennent le nom de la base
et la structure de la base et les informations sur l’état de la base
Rq: ces fichiers sont nécessaire au démarrage de la base;
• controlN.ctl : Select * from v$controlfile;
Exemple : control01.ctl
 Fichiers journaux (redo log files) : ils contiennent les transactions de la base de données
leurs rôles sont la récupération automatique de la base. Et ils sont nécessaire à l’ouverture
de la base.
• redoN.log : Select * from v$logfile;
Exemple : redo04.log
 Fichiers de données (data files): ce sont des fichiers binaires qui contiennent les données
utilisateurs et le dictionnaire de données.
• tN.dbf : select name from v$datafile;
Exemple : user01.dbf
Variables d’environnement
 Variables d’environnement
• ORACLE_BASE : répertoire racine d’installation d’Oracle
• ORACLE_HOME : racine d’une instance
• ORACLE_SID : nom de l’instance
 Exemple:
• ORACLE_BASE : C:app
• ORACLE_HOME : C:appproduct11.1.xdbname
• ORACLE_SID : orcl (par défaut)
Rq: Une base de données Oracle est désignée par le nom de la base de données, un
paramètre, DB_NAME.
SHOW PARAMETER DB_NAME
Oracle Universal Installer (OUI)
 Application Java : interface consistante
• Utilisation
• Installation
• Désinstallation
• Patch
• Mise à niveau
 Exemple :
• setup.exe (Windows)
• Runinstaller.sh sous NIX
SQL*Plus
Cette interface est la plus pratique, car elle permet facilement de copier-coller des blocs instructions SQL et
PL/SQL. Malheureusement la version 11g n’en dispose pas.
Pour lancer SQL*Plus graphique, menu Démarrer Programmes/Oracle…/Application
Développement /SQL Plus. Saisir les trois champs afin d’obtenir la fenêtre de commandes.
SQL Développer
En l’absence d’interface graphique, la version 11g d’Oracle propose l’outil SQL Developer (menu
Démarrer Oracle.../Développement d’applications). Au premier lancement, il vous sera demandé le
chemin du répertoire contenant l’exécutable java.exe. SQL Developer permet de nombreuses
fonctionnalités pour manipuler tous les objets d’un schéma (tables, procédures, déclencheurs, vues, etc.),
cependant aucune commande SQL*Plus (COL, ACCEPT...) n’est prise en compte.
Chronologie des versions d’oracle
1979 Oracle 2 Première version commerciale écrite en C/assembleur pour Digital –
pas de mode transactionnel.
1983 Oracle 3 Réécrit en C - verrous.
19984 Oracle 4 Portage sur IBM/VM, MVS, PC – transaction (lecture consistante).
1986 Oracle 5 Architecture client-serveur avec SQL*Net – version pour Apple.
1988 Oracle 6 Verrouillage niveau ligne – sauvegarde/restauration – AGL – PL/SQL.
1991 Oracle 6.1 Parallel Server sur DEC.
1992 Oracle 7 Contraintes référentielles – procédures cataloguées – déclencheurs –
version Windows en 1995.
1994 Serveur de données vidéo.
1995 Connexions sur le Web.
1997 Oracle 8 Objet-relationnel – partitionnement – LOB – Java.
1998 Oracle 8 i i comme Internet, SQLJ – Linux – XML.
2001 Oracle 9 i Services Web – serveur d’applications – architectures sans fil.
2004 Oracle 10g g comme Grid computing (ressources en clusters)
2007 Oracle 11g Auto-configuration.
2010 Oracle 12 c
Présentation du langage SQL
 Historique , norme et succès
 Caractéristiques du langage SQL
 Les principaux types de langages
 Les limites du langage SQL
 Schéma HR et tables utilisés dans ce cours
Historique
C’est IBM, à tout seigneur tout honneur, qui, avec System-R, a implanté le modèle relationnel
au travers du langage SEQUEL (Stuctured English as Query Language) rebaptisé par la suite
SQL (Structured Query Language).
La première norme (SQL1) date de 1987. Elle était le résultat de compromis entre constructeurs,
mais fortement influencée par le dialecte d’IBM. SQL2 a été normalisée en 1992. Elle
définit quatre niveaux de conformité : le niveau d’entrée (entry level), les niveaux intermédiaires
(transitional et intermediate levels) et le niveau supérieur (full level). Les langages SQL
des principaux éditeurs sont tous conformes au premier niveau et ont beaucoup de caractéristiques
relevant des niveaux supérieurs. La norme SQL3 (intitulée initialement SQL:1999) comporte de nombreuses
parties : concepts objets, entrepôts de données, séries temporelles, accès à des sources non SQL, réplication
des données, etc. (chaque partie étant nommée ISO/ IEC 9075-i:2003, i allant de 1 à 13). La plus récente
partie de la norme de 2006 (ISO/IEC 9075-14:2006) est consacré à XML.
Historique (suite)
Le succès que connaissent les grands éditeurs de SGBD relationnels (IBM, Oracle, Microsoft,
Sybase et Computer Associates) a plusieurs origines et repose notamment sur SQL :
Le langage est une norme depuis 1986 qui s’enrichit au fil du temps.
SQL peut s’interfacer avec des langages de troisième génération comme C ou Cobol, mais
aussi avec des langages plus évolués comme C++ et Java. Certains considèrent ainsi que le
langage SQL n’est pas assez complet (le dialogue entre la base et l’interface n’est pas direct) et la
littérature parle de « défaut d’impédance » (impedance mismatch).
Les SGBD rendent indépendants programmes et données (la modification d’une structure de
données n’entraîne pas forcément une importante refonte des programmes d’application).
Ces systèmes sont bien adaptés aux grandes applications informatiques de gestion (architectures
type client-serveur et Internet) et ont acquis une maturité sur le plan de la fiabilité
et des performances.
Caractéristique du langage SQL
SQL est un langage déclaratif qui permet d’interroger une base de données sans se soucier de la
représentation interne (physique) des données, de leur localisation, des chemins d’accès ou des algorithmes
nécessaires. A ce titre il s’adresse à une large communauté d’utilisateurs potentiels (pas seulement des
informaticiens) et constitue un des atouts les plus spectaculaires (et le plus connu) des SGBDR. On peut
l’utiliser de manière interactive, mais également en association avec des interfaces graphiques, des outils de
reporting ou, très généralement, des langages de programmation.
Rôle:
SQL permet de manipuler des données stockées dans des bases de données relationnelles.
Depuis sa création en 1974 par IBM et normalisé depuis 1986 (ANSI et ISO) reconnu par la grande
majorité des SGBDR du marché :
- Oracle
- SQL Server
- PostgreSQL
- MySQL
Les principaux types de langages
Les types de
langages
Ordre SQL Définition
Langage de
définition de
données (LDD)
CREATE – ALTER –
DROP - COMMENT-
RENAME - TRUNCATE
Permet de définir les objets de la base en
créant ,modifiant et renommer des objets.
Langage de
manipulation de
données (LMD)
INSERT – UPDATE -
DELETE - MERGE
Permet une manipulation des objets et
des transactions effectuées.
Langage de contrôle
de données (LCD)
GRANT – REVOKE -
COMMIT - ROLLBACK -
SAVEPOINT
Contrôle les données avec des notions de
privilèges et schémas
Langage
d’interrogation de
données (LID)
SELECT Il interroge les données de la base
Les limites du langage SQL
• Non procédural
- PL/SQL (Oracle)
- T-SQL (SQL Server)
- PlpgSQL (PostgreSQL)
• Portabilité limité
- Fonctions spécifiques à chaque SGBDR
- Typage différent d’un SGBDR à un autre
Schéma HR et tables utilisés dans ce cours
Schéma
Notion de schéma
Le terme SCHÉMA désigne l’ensemble des objets qui appartiennent à un utilisateur, ces objets
sont préfixés par le nom de l’utilisateur qui les a créés.
En général on indique sous le terme de schéma, l’ensemble des tables et des index d’une même
application. Principaux types d’objets de schéma :
 Tables et index
 Vues, séquences et synonymes
 Programmes PL/SQL (procédures, fonctions, packages, triggers)
Règles de nommage
Règles de nommage
Un nom de structure Oracle doit respecter les règles suivantes :
• 30 caractères maximums
• Doit commencer par une lettre
• Peut contenir des lettres, des chiffres et certains caractères spéciaux (_$#)
• N’est pas sensible à la casse
• Ne doit pas être un mot réservé Oracle
Chapitre I : Mode de Connexion et gestion des
données
 Connexion à une base de données
 Connexion
 Session
 SQL Plus et SQL Développer
 La Gestion des données
1) Gestion des utilisateurs
- création utilisateur
- modifier utilisateur
- supprimer utilisateur
- droit d’accès
2) Gestion des privilèges
- Privilèges sur objets,
- privilèges systèmes
3) Gestion des rôles
- Création rôles
- Accorder des rôles
- Modifier rôles
- Distinction entre privilèges et rôles
Connexion à une base de données
Processus de connexion à une instance de base de données
Pour pouvoir soumettre des instructions SQL à Oracle, l'utilisateur doit se connecter à
une instance de base de données.
• L'utilisateur démarre un outil, par exemple SQL*Plus, ou exécute une application
développée à l'aide d'un outil tel qu'Oracle Forms. Cette application ou cet outil est
exécuté dans un processus utilisateur.
• Dans la configuration la plus simple, un processus est créé sur l'ordinateur qui
exécute le serveur Oracle lorsqu'un utilisateur se connecte au serveur. Ce processus s'appelle un
processus serveur. Ce processus communique avec l'instance de base de données Oracle pour le
compte du processus utilisateur exécuté sur le client. Le processus serveur exécute les
instructions SQL pour le compte de l'utilisateur
Connexion à une base de données(1)
Les administrateurs systèmes se connectent de la façon suivante sans mot de passe en tant que SYSDBA :
C:/> sqlplus /nolog : sans connexion
Sqlplus:/> connect /as sysdba (administrateur système)
Rq: vous pouvez supprimer cette option:
il suffit de neutraliser cette ligne du fichier sqlnet.ora
# SQLNET.AUTHENTICATION_SERVICES= (NTS)
Sqlplus:> sys/system as sysdba
Sqlplus:/> system/oracle@ orcl (administrateur de BD)
- Invite de commande Dos de Windows
sqlplus nom utilisateur /mdp@ service : sqlplus system/oracle@alpha112
Service : le nom de la base décrit dans le fichier tnsnames.ora
- Connexion via SQL PLUS
Nom utilisateur : xxxxxxx
Mot de passe : xxxxxxxx
> Oracle Database 11g
Connexion
Connexion
Une connexion est un chemin de communication entre un processus utilisateur et un serveur Oracle.
L'utilisateur d'une base de données peut se connecter à un serveur Oracle de trois manières :
• Il peut se connecter au système d'exploitation qui exécute l'instance de base de données Oracle et
démarrer une application ou un outil qui accède à la base de données du système. Le chemin de
communication est établi à l'aide des mécanismes de communication interprocessus du système
d'exploitation hôte.
• L'utilisateur démarre l'application ou l'outil sur un ordinateur local et se connecte, via un réseau, à
l'ordinateur qui exécute l'instance de base de données Oracle. Dans cette configuration, appelée
client-serveur, le logiciel réseau permet à l'utilisateur et au serveur Oracle de communiquer.
• Dans une connexion à trois niveaux (3-tiers), l'ordinateur de l'utilisateur communique, sur le réseau,
avec une application ou un serveur réseau. Ce dernier est connecté, via un réseau, à la machine exécutant
l'instance de base de données Oracle. Par exemple, l'utilisateur exécute un navigateur sur un ordinateur en
réseau pour utiliser une application résidant sur un serveur NT qui extrait les données d'une base de
données Oracle s'exécutant sur un hôte UNIX.
Session
Définition
Une session est une connexion spécifique d'un utilisateur à un serveur Oracle. La
session démarre lorsque l'utilisateur est authentifié par le serveur Oracle, et elle se
termine lorsque l'utilisateur se déconnecte ou lorsqu'un arrêt anormal se produit. Un
utilisateur de base de données peut ouvrir plusieurs sessions simultanées s'il se connecte
simultanément à partir de plusieurs outils, applications ou terminaux. En règle générale, le
serveur Oracle doit être disponible pour que l'on puisse ouvrir une session, sauf si l'ouverture
est effectuée par certains outils spéciaux d'administration de base de données.
Gestion des données
Il existe deux manières pour créer un utilisateur ; la différence réside dans le choix de l’authentification
de la personne.
En effet soit nous pouvons avoir une authentification par le serveur, soit une authentification par le
système d’exploitation de la machine.
A- Authentification par le système d’exploitation:
L’utilisateur utilise la machine, il a dut entrer son mot de passe, donc il est autorisé à utiliser le serveur
car l’inconvénient est que si on arrive à pirater l’os la base de données est à la merci du pirate.
Create user name identified externally;
B- authentification par le serveur
Dans ce cas la le serveur a besoin que vous confirmiez votre identité par un mot de passe. Ce mécanisme
d’ identification est fortement recommandé car il offre un niveau supplémentaire de sécurité.
Create user name identified by mot de passe;
Gestion des Utilisateurs
 Gestion des utilisateurs
Les deux administrateurs de base de données par défaut SYS et SYSTEM sont créés
automatiquement ont le rôle de DBA.
Ces opérations doivent être réalisées par les administrateurs de base de données. Les deux comptes
utilisateur de base de données SYS et SYSTEM sont créés automatiquement avec la base de données et
reçoivent le rôle d'administrateur de base de données, un rôle prédéfini créé systématiquement avec
chaque base de données. Ce rôle dispose de tous les privilèges système sur la base de données.
Gestion des Utilisateurs
 Gestion des utilisateurs SYS ET SYSTEM
SYS
Lors de la création d'une base de données, l'utilisateur SYS, identifié à l'origine par le mot de passe
change_on_install, est créé automatiquement et obtient le rôle d'administrateur de base de données.
Toutes les tables et vues de base du dictionnaire de données sont stockées dans le schéma SYS.
SYSTEM
Lors de la création d'une base de données, l'utilisateur SYSTEM, identifié à l'origine par le mot de passe
manager, est également créé automatiquement et reçoit les privilèges du rôle d'administrateur de base de
données. D'autres tables et vues appartenant à l'utilisateur SYSTEM sont également créées. Elles
contiennent des informations d'administration utilisées par les outils Oracle. SYS et SYSTEM sont des
utilisateurs standard, stockés dans le dictionnaire de données, qui ne peuvent se connecter que lorsque la
base de données est ouverte.
Remarque : vous serez certainement amené à créer au moins un nom d'administrateur
supplémentaire pour exécuter les tâches d'administration quotidiennes.
Gestion des Utilisateurs (1)
• Création d’un utilisateur
CREATE USER user_name IDENTIFIED BY mot_de_passe;
Identified by mot_de_passe : permet d’ affecter un mot de passe à un utilisateur local
Exemple :
créer un utilisateur toto avec un mot de passe oracle
CREATE USER toto IDENTIFIED BY oracle;
• Modification
ALTER USER user_name…
Exemple :
Modifier le mot de passe de toto qui est oracle en sabs
ALTER USER toto identified by sabs;
• Supprimer un utilisateur
DROP USER user_name CASCADE ;
Cascade : l’option cascade force la suppréssion et détruit tous les objets du schéma de l’utilisateur.
Exemple : supprimer l’utilisateur toto
DROP USER toto CASCADE;
Droit d’accès
Les droits d’accès d’un compte utilisateur assurent la sécurité en mettant des systèmes de verrouillage.
Verrouillage d’un compte utilisateur.
ALTER USER user_name ACCOUNT LOCK;
ACCOUNT: pour verrouiller ou libérer l’accès à la base
LOCK : bloqué
Exemple :
Verrouiller le compte utilisateur de toto.
ALTER USER toto ACCOUNT LOCK;
Déverrouillage d’un compte utilisateur
ALTER USER user_name ACCOUNT UNLOCK;
UNLOCK:: débloqué
Exemple :
ALTER USER toto ACCOUNT UNLOCK;
Privilèges
Un privilège (sous-entendu utilisateur) est un droit d’exécuter une certaine instruction SQL (on parle de
privilège système), ou un droit d’accéder à un certain objet d’un autre schéma(on parle de privilège objet).
Les privilèges systèmes différent sensiblement d’un SGBD à un autre. Nous avons deux types de privilèges
qui sont :
Privilèges systèmes
CREATE SESSION , CREATE TABLE , CREATE SEQUENCE , CREATE VIEW , CREATE
PROCEDURE.
Exemple: donner les privilèges systèmes à l’utilisateur John.
GRANT CREATE SESSION , CREATE TABLE, CREATE SEQUENCE , CREATE PROCEDURE,
CREATE VIEW TO JOHN;
Exemples :
Donner l’utilisateur toto les droits de privilèges nécessaires
GRANT connect, resource TO toto;
Privilège Système
WITH ADMIN OPTION : permet d’attribuer aux bénéficiaires le droit de retransmettre les ou le
privilège reçu à une tierce personne utilisateurs
EX:
GRANT CREATE SESSION , CREATE TABLE, CREATE SEQUENCE , CREATE PROCEDURE,
CREATE VIEW TO JOHN WITH ADMIN OPTION;
EX:
GRANT CREATE TABLE TO TOTO;
Exemple :
ALL PRIVILEGES : tous les privilèges systèmes.
Accorder à toto tous les privilèges systèmes
GRANT ALL PIVILEGES TO toto;
Révocations de privilèges système
La révocation d’un ou de plusieurs privilèges est réalisée par l’instruction REVOKE. Cette commande
permet d’annuler un privilège système ou un rôle d’un utilisateur. Pour pouvoir révoquer un privilège ou
un rôle vous devez détenir au préalable ce privilège avec l’option WITH ADMIN OPTION
Syntaxe:
REVOKE [ privilège système] FROM USER;
Exemple :
Annuler le privilège de CREATE TABLE à l’utilisateur toto
REVOKE CREATE TABLE FROM toto;
Annuler le privilège de CREATE SESSION à l’utilisateur toto
REVOKE CREATE SESSION FROM toto;
Privilège Objet
Les privilèges objet sont relatives aux données de la base et aux actions sur les objets(table, vue,
séquence, procédure).
Il permet l’accès et la manipulation d’objets ( select, update, delete, insert, execute)
Syntaxe :
GRANT [SELECT |INSERT|UPDATE|DELETE] ON TABLE TO username;
SELECT : afficher les colonnes de la base
INSERT : insertion de lignes
UPDATE: modifications de lignes
DELETE : supprimer de lignes
Privilège Objet
Exemple :
Donner le privilege objet SELECT , INSERT, UPDATE, DELETE à l’utilisateur john
GRANT SELECT, INSERT, UPDATE , DELETE ON schema. Table TO JOHN;
Ex: avec WITH GRANT OPTION
GRANT SELECT, INSERT, UPDATE , DELETE ON schema. Table TO JOHN WITH GRANT OPTION
EX:
Donner le privilege objet SELECT à l’utilisateur JOHN ;
GRANT SELECT ON scott.EMP TO JOHN;
Rq: avec l’option WITH ADMIN OPTION
GRANT SELECT ON scott.EMP TO JOHN WITH GRANT OPTION ;
Révocation de privilèges Objet
Pour pouvoir révoquer un privilège objet vous devez détenir au préalable cette permission ou avoir reçu le
privilège système ANY OBJECT PRIVILEGE. Il n’est pas possible d’annuler un privilège objet qui a été
accordé avec l’option WITH GRANT OPTION.
Syntaxe :
REVOKE [ Privilège Object ] ON [schéma. nomObject] FROM USER
Exemple :
Annuler le privilège de lire SELECT la table département à l’utilisateur toto
REVOKE SELECT ON toto.DEPARTMENT FROM toto;
Annuler le privilège de modifier UPDATE à l’utilisateur toto
REVOKE UPDATE ON toto.DEPARTMENT FROM toto;
Annuler le privilège de supprimer la table département à l’utilisateur toto.
REVOKE DELETE ON toto.DEPARTMENT FROM toto;
Gestion des rôles
rôle
Un rôle est un ensemble nommé de privilèges(systèmes ou objets). Un rôle est accordé à un ou plusieurs
utilisateurs. Cela peut devenir problématique s’il faut donner plusieurs privilèges à plusieurs utilisateurs.
Pour simplifier ce problème, il faut utiliser un rôle. Pour créer un rôle, il vous suffit de procéder
pratiquement tout comme la création d’un utilisateur.
Création de role :
CREATE ROLE nomderole NOT IDENTIFIED;
Ex: créer le rôle comptable
Create role comptable not identified ;
une foi l’utilisateur crée , il vous suffit de lui donner les privilèges (sur système ou sur objet)
Privilège objet :
Grant select , insert, update, delete on schéma.table to nomderole;
Ex:
Grant select ,insert, update , delete on scott.emp to comptable;
rôle (1)
Privilège système:
GRANT CREATE TABLE , CREATE SESSION, CREATE PROCEDURE TO COMPTABLE;
Pour affecter à des utilisateurs le role comptable on procédé comme suit:
GRANT COMPTABLE TO USER1 , USER2 ;
Suppression de role ;
Drop role nomderole;
Ex : supprimer le role comptable
Drop role comptable;
Rôle prédéfinis
Chapitre II : Utilisations des instructions LDD pour créer des tables
 Décrire les instructions LDD
 Conventions de dénomination
 Identifier les types de données
 Créer des tables à l'aide de l'instruction CREATE TABLE
 Décrire les contraintes
 Modifier une table
 Supprimer une table
Décrire les instructions LDD
Un schéma est la collection d'objets de base de données multiples, qui sont connus comme
schéma Object.
• Table- pour stocker des données
•  View représente de manière logique des sous-groupes de données issue d'une ou
plusieurs tables
•  Séquence - pour générer des valeurs numériques
•  Index - d'améliorer les performances des requêtes sur les tables
• Synonyme - Alternative nom d'un objet
Conventions de Dénomination
Un nom :
– Doit commencer par une lettre
– Peut comporter de 1 à 30 caractères
– Ne peut contenir que les caractères A à Z, a à z, 0 à 9, _, $, et #
– Ne doit pas porter le nom d’un autre objet appartenant au même utilisateur
– Ne doit pas être un mot réservé Oracle8 Server
Types de Données
L’ordre CREATE TABLE
Pour créer une table dans la base de données, un DBA doit disposer de certaines informations dans la main
- le nom de table, nom de la colonne, les types de données de colonne, et tailles de la colonne. Toutes ces
informations peuvent être modifié ultérieurement en utilisant les commandes DDL .
– Vous devez posséder :
• Un privilège CREATE TABLE
• Un espace de stockage
Syntaxe :
– Spécifiez :
• Un nom de table
• Le nom, le type de données et la taille des colonnes.
Exemple de création de tables
Exemple:
Créer la table client
CREATE TABLE client
(n_client Number(10) ,
nomc varchar2 (10),
prenom1 varchar2 (10),
ville varchar2 (10),
sexe char (1));
Références aux tables d’un autre utilisateur
– Les tables appartenant à d'autres utilisateurs ne sont pas dans le schéma utilisateur.
– Le nom du propriétaire doit précéder le nom de la table.
Exemple :
Select * from userA.employees;
Select last_name , salary from userB.employees;
Option DEFAULT
Spécifie la valeur par défaut d'une colonne.
• Valeurs autorisées : littéraux, expressions et fonctions SQL.
• Valeurs non-autorisées : noms d'autres colonnes ou pseudo - colonnes.
• Le type de données par défaut doit correspondre à celui de la colonne.
Modification de tables
Pour modifier le nom d'une table, d'une vue, d'une séquence ou d'un synonyme, utilisez l'ordre
RENAME.
Exemple :
renommer la table dept en department
RENAME dept TO department;
Vous devez être propriétaire de l'objet
Suppression de Tables
•La structure et toutes les données de la table sont supprimées.
•Tous les index sont supprimés.
•La transaction en instance est validée.
•Une suppression de table ne peut être annulée.
Exemple :
Supprimer la table dept30
DROP TABLE dept30;
READ - ONLY TABLES
Read - only ou lectures seules des tables sont venus comme une amélioration dans Oracle 11g. IL
permet les tables à utiliser pour un seul but de les lire. Dans les versions antérieures d'Oracle, des tables ont
été faites en lecture seule par l'octroi d'un privilège SELECT pour les autres utilisateurs, mais le
propriétaire avait encore la lecture écriture privilege.Mais maintenant, si une table est mis en lecture seule,
même propriétaire n'a pas accès à la manipulation des données .(INSERT , UPDATE , DELETE ,
MERGE,).
Syntaxe:
•ALTER TALBE [TABLE NAME] READ ONLY
Modifier la table en lecture seule ou on pourra seulement la lire
•ALTER TALBE [TABLE NAME] READ WRITE
Modifier la table en lecture écriture ou des modifications sont possible
READ ONLY ET READ WRITE
- Creation de table ORATEST
CREATE TABLE ORATEST (id NUMBER)
- Ajout de lignes
INSERT INTO ORATEST VALUES (1);
- Modifier la table en lecture seule
ALTER TABLE ORATEST READ ONLY;
- Ajout de lignes
INSERT INTO ORATEST VALUES (2);
ERROR at line 1: erreur à la ligne les opérations LMD ne sont pas autorisées
ORA-12081: update operation not allowed on table "TEST"."ORATEST“
Pour lever le Read only on utilise le Read write .
Exemple :
- Modifier la table ORATEST en READ WRITE
ALTER TABLE ORATEST READ WRITE;
Exemple: supprimer la table ORATEST
DELETE FROM ORATEST;
Les Contraintes
Les Types de contraintes valides dans Oracle :
• NOT NULL : Une contrainte NOT NULL signifie qu'une ligne de données doit avoir une
valeur pour la colonne spécifiée comme NOT NULL.
• UNIQUE : contrainte UNIQUE chaque colonne peut être utilisée pour faire respecter cette
règle et Oracle va rejeter toutes les lignes qui violent la contrainte et garantit que les
valeurs de la colonne sont distincte , sans doublons
• PRIMARY KEY: Chaque table doit normalement contenir une colonne ou un ensemble de
colonnes qui identifie de façon unique des lignes de données qui sont stockées dans la
colonne table.
• FOREIGN KEY: Lorsque deux tables partagent la relation parent-enfant sur la base de
colonne spécifique, la colonne se joindre à la table enfant est connu en tant que propriété
Key
• CHECK: exige que la condition de contrôle spécifié est vrai ou inconnue pour chaque
ligne stockée dans la contrainte table.Check permet d'imposer une règle conditionnelle sur
un colonne, qui doit être validé avant de données est inséré dans la colonne
Conventions Applicables aux Contraintes
–Si vous ne nommez pas une contrainte, Oracle8 Server créera un nom au
format SYS_Cn.
–Vous pouvez créer une contrainte :
•En même temps que la création de la table
•Une fois que la table est créée
–Définissez une contrainte peut être définie au niveau table ou colonne.
–Consulter le dictionnaire de données pour retrouver une contrainte.
Définir les Contraintes
Syntaxe
Contrainte niveau colonne:
Contrainte niveau Table :
Exemple d’utilisation de Contraintes
Exemple de Contrainte au niveau colonne
Exemple de Contrainte au niveau Table
Contrainte NOT NULL
Une contrainte NOT NULL signifie qu'une ligne de données doit avoir une valeur pour la colonne
spécifiée comme NOT NULL.si une colonne est spécifiée comme NOT NULL, le SGBDR Oracle ne
permettra pas de lignes à être stockés à la table des employés qui violent cette contrainte. Il ne peut être
défini au niveau de la colonne, et non au niveau de la table .
Syntaxe:
•COLUMN [data type] [NOT NULL]
Exemple :
Matriule NUMBER (5) NOT NULL ;
Contrainte de Clé Unique
Parfois, il est nécessaire de garantir l'unicité pour une valeur de colonne qui est pas une clé
primaire contrainte UNIQUE colonne peut être utilisée pour faire respecter cette règle et Oracle
va rejeter toutes les lignes qui violent la contrainte de contrainte .
Syntaxe:
Niveau Colonne :
COLUMN [data type] [CONSTRAINT <name>] [UNIQUE]
Exemple:
CREATE TABLE TEST
( ... , NAME VARCHAR2(20) CONSTRAINT TEST_NAME_UK UNIQUE, ... );
Niveau table :
CONTRAINTE [nom de la contrainte] UNIQUE (nom de colonne)
Exemple :
CREATE TABLE TEST
( ... , NAME VARCHAR2(20), STD VARCHAR2(20) ,
CONSTRAINT TEST_NAME_UK UNIQUE (NAME, STD) );
Contrainte PRIMARY KEY
Syntaxe:
Niveau de la colonne:
COLUMN [data type] [CONSTRAINT <constraint name> PRIMARY KEY]
L'exemple suivant montre comment utiliser la contrainte de clé primaire au niveau de la colonne:
CREATE TABLE TEST
( ID NUMBER CONSTRAINT TEST_PK PRIMARY KEY, ... );
Niveau de la table:
CONSTRAINT [constraint name] PRIMARY KEY [column (s)]
L'exemple suivant montre comment définir la clé primaire composite en utilisant la contrainte de clé
primaire au niveau de la table.
CREATE TABLE TEST
( ..., CONSTRAINT TEST_PK PRIMARY KEY (ID) );
Contrainte FOREIGN KEY
Syntaxe:
Niveau Colonne:
• COLUMN [data type] [CONSTRAINT] [constraint name] [REFERENCES] [table name
(column name)]
Exemple :
CREATE TABLE TEST (ccode varchar2(5)
CONSTRAINT TEST_FK REFERENCES PARENT_TEST(ccode) , ... );
Niveau table:
• CONSTRAINT [constraint name] [FOREIGN KEY (foreign key column name)
REFERENCES] [referenced table name (referenced column name)]
Mots-clés associés à la Contrainte FOREIGN
KEY
– FOREIGN KEY
• Définit la colonne dans la table détail dans une contrainte de niveau table
– REFERENCES
• Identifie la table et la colonne de la table maître
– ON DELETE CASCADE
• Autorise la suppression d’une ligne dans la table maître et des lignes dépendantes dans la
table détail
Contrainte CHECK
• Définit une condition que chaque ligne doit obligatoirement satisfaire
Syntaxe:
Niveau de la colonne:
COLUMN [data type] CONSTRAINT [name] [CHECK (condition)]
Exemple :
CREATE TABLE TEST
( ..., GRADE char (1) CONSTRAINT TEST_CHK CHECK (upper (GRADE) in
('A','B','C')), );
Niveau de la table:
CONSTRAINT [name] CHECK (condition)
Exemple :
CREATE TABLE TEST
( ..., CONSTRAINT TEST_CHK CHECK (stdate < = enddate), );
Ajout d’une Contrainte
Syntaxe :
ALTER TABLE table ADD [CONSTRAINT constraint] type (column);
• Vous pouvez ajouter ou supprimer une contrainte, mais pas la modifier
• Vous pouvez activer ou désactiver des contraintes
• Pour ajouter une contrainte NOT NULL, utilisez la clause MODIFY
Exemple :
Ajouter une contrainte FOREIGN KEY à la table EMP précisant qu'un manager doit déjà
exister dans la table EMP en tant qu'employé valide .
ALTER TABLE emp
ADD CONSTRAINT emp_mgr_fk FOREIGN KEY(mgr) REFERENCES emp(empno);
Suppression d'une Contrainte
Exemple1 :
Supprimer de la table EMP la contrainte concernant le manager.
ALTER TABLE emp
DROP CONSTRAINT emp_mgr_fk;
Exemple2 :
Supprimer la contrainte PRIMARY KEY de la table DEPT, ainsi que la contrainte FOREIGN
KEY associée définie sur la colonne EMP.DEPTNO
ALTER TABLE dept
DROP PRIMARY KEY CASCADE;
Activation de Contraintes
• Pour activer une contrainte d'intégrité actuellement désactivée dans la définition de la table,
utiliser la clause ENABLE.
Exemple:
ALTER TABLE emp
ENABLE CONSTRAINT emp_empno_pk;
• Si vous activez une contrainte UNIQUE ou PRIMARY KEY, un index correspondant est
automatiquement créé
Désactivation de Contraintes
• Pour désactiver une contrainte d'intégrité, utiliser la clause DISABLE de l'ordre ALTER
TABLE.
• Pour désactiver les contraintes d'intégrité dépendantes, ajouter l'option CASCADE.
Exemple :
ALTER TABLE emp
DISABLE CONSTRAINT emp_empno_pk CASCADE;
Chapitre III : Manipulation de données
 Ajouter de nouvelles lignes à une table
 Modifier les données d'une table
 Supprimer les lignes d’une table
 Utiliser les instructions TRUNCATE
 Transactions de la base de données
Langage de Manipulation des Données
• Un ordre du LMD est exécuté lorsque :
– Vous ajoutez des lignes à une table
– Vous modifiez des lignes existantes dans une table
– Vous supprimez des lignes d'une table
– Une transaction est un ensemble d'ordres du LMD formant une unité de travail
logique.
Ajouter des lignes d’une table
L'ordre INSERT permet d'ajouter de nouvelles lignes dans une table.
La commande INSERT est utilisé pour stocker des données dans des tables .La commande
INSERT est souvent utilisé dans plus haut niveau des langages de programmation tels que
Visual Basic.NET ou C ++ comme une commande SQL embarqué;
- Cette syntaxe n'insère qu'une seule ligne à la fois
Insertion de nouvelles lignes
– Insérez une nouvelle ligne en précisant une valeur pour chaque colonne.
– Eventuellement, énumérez les colonnes dans la clause INSERT.
– Indiquez les valeurs dans l'ordre par défaut des colonnes dans la table.
– Placez les valeurs de type caractère et date entre simples quottes
Insertion de lignes contenant des valeurs NULL
Méthode implicite : ne spécifiez pas la colonne dans la liste.
Méthode explicite : spécifiez le mot-clé NULL.
Insertion de date dans un format spécifique
Ajout d'un nouvel employé.
Vérification de l’ajout
Modifier les lignes d’une table
Utilisez l’ordre Update pour modifier des lignes existantes
La commande de mise à jour modifie les données stockées dans une colonne il peut mettre à
jour une ou plusieurs lignes à la fois en fonction de l'ensemble de résultats filtrés par les
conditions spécifiées dans la clause WHERE
Si nécessaire, vous pouvez modifier plusieurs lignes à la fois.
Modifications de lignes d’une Table
La clause WHERE permet de modifier une ou plusieurs lignes spécifiques.
Si vous omettez la clause WHERE, toutes les lignes sont modifiées.
Supprimer les lignes d’une table
Vous pouvez supprimer des lignes d'une table au moyen de l'ordre DELETE.
La commande DELETE est l'un des plus simple des instructions SQL. Il supprime une ou
plusieurs lignes d'une table. Plusieurs tableau, supprimer les opérations ne sont pas autorisés
dans SQL.
Exemple Suppression de ligne d’une table
La clause WHERE permet de supprimer une ou plusieurs lignes spécifiques.
Si vous omettez la clause WHERE, toutes les lignes sont supprimées.
Vider une table
• TRUNCATE ou Tronquée est une commande de DDL qui est utilisé pour débusquer tous
les enregistrements d'une table, mais en conservant la structure de la table. Il ne supporte
pas la condition WHERE pour supprimer les enregistrements sélectionnés .
• Syntaxe
• Exemple : vider la table copy_emp
Transactions de la Bases de Données
Une transaction se compose des éléments suivants :
– Ensemble d'ordres du LMD effectuant une modification cohérente des données
– Un ordre du LDD
– Un ordre du LCD
Une transaction :
– Commence à l'exécution du premier ordre SQL
– Se termine par l'un des événements suivants :
• COMMIT ou ROLLBACK
• Exécution d'un ordre LDD ou LCD (validation automatique)
• Fin de session utilisateur
• Panne du système
Avantages des Ordres COMMIT et
ROLLBACK
– Garantit la cohérence des données
– Possibilité d'afficher le résultat des modifications avant qu'elles ne soient définitives
– Regroupement logique d'opérations
Traitement Implicite des Transactions
– Une validation automatique a lieu dans les situations suivantes :
• Exécution d'un ordre du LDD
• Exécution d'un ordre du LCD
• Sortie normale de SQL*Plus, sans ordre COMMIT ou ROLLBACK explicite
– Il se produit un rollback automatique en cas de sortie anormale de SQL*Plus ou d'une
panne du système
Etat des Données Avant
COMMIT ou ROLLBACK
- Il est possible de restaurer l'état précédent des données.
– L'utilisateur courant peut afficher le résultat des opérations du LMD au moyen de
l'ordre SELECT.
– Les résultats des ordres du LMD exécutés par l'utilisateur courant ne peuvent pas être
affichés par d'autres utilisateurs.
– Les lignes concernées sont verrouillées. Aucun autre utilisateur ne peut les modifier
Etat des Données Après COMMIT
– Les modifications des données dans la base sont définitives.
– L'état précédent des données est irrémédiablement perdu.
– Tous les utilisateurs peuvent voir le résultat des modifications.
– Les lignes verrouillées sont libérées et peuvent de nouveau être manipulées par d'autres
utilisateurs.
– Tous les savepoints sont effacés.
Annulation des Modifications Jusqu'à une
Etiquette
– Posez une étiquette dans la transaction courante au moyen de l'ordre SAVEPOINT.
– Annulez la transaction jusqu'à cette étiquette en utilisant l'ordre ROLLBACK TO
SAVEPOINT.
Validation de données
Effectuez les modifications
Validez les modifications
Etat des Données Après ROLLBACK
• L'ordre ROLLBACK rejette toutes les modifications de données en instance.
– Les modifications sont annulées.
– L'état précédent des données est restauré.
– Les lignes verrouillées sont libérées.
Rollback au Niveau Ordre
– Si un seul ordre du LMD dans la transaction échoue, seul cet ordre est annulé.
– Oracle8 met en œuvre un savepoint implicite.
– Toutes les autres modifications sont conservées.
– L'utilisateur doit terminer explicitement les transactions en exécutant un ordre
COMMIT ou ROLLBACK.
Résumé
Chapitre IV : Evolution d’un schéma
 Ajouter de colonnes
 Modifier de colonnes
 Renommer de colonnes
 Supprimer de colonnes
L’ ordre ALTER TABLE
Un DBA peut apporter des modifications aux définitions de structure de table ou de colonne après la table
a été créée dans la base de données de commande ALTER TABLE DDL est utilisé pour effectuer une
telle action. ALTER TABLE est utilisée d'ajouter, supprimer , renommer et modifier une colonne dans
une table.
• Utilisez l'ordre ALTER TABLE pour :
– Ajouter une colonne
– Modifier une colonne existante
– Renommer une colonne
– Supprimer colonne
Ajout d’une Colonne
On utilisez la directive ADD pour ajouter des colonnes dans l’instruction ALTER TABLE
Exemple :
Ajouter une colonne dans la table dept30
ALTER TABLE dept30
ADD (job VARCHAR2(9));
Le ci-dessous ALTER TABLE ajoute une nouvelle TESTCOL de colonne à la table EMP_NEW
ALTER TABLE EMP_NEW ADD (TESTCOL VARCHAR2 (100)) ;
Modification de colonnes
•Vous pouvez modifier le type de données, la taille et la valeur par défaut d'une colonne.
Exemple :
ALTER TABLE dept30 MODIFY (ename VARCHAR2(15));
la modification d’une valeur par défaut ne s’applique qu’aux insertions ultérieures dans la table.
Vous pouvez :
–Augmenter la largeur ou la précision d’une colonne numérique.
–Réduire la largeur d’une colonne si elle ne contient pas de valeurs NULL ou si la table est
vide.
–Modifier le type de données d’une colonne si elle contient des valeurs NULL ou si la table
est vide.
–Convertir de CHAR à VARCHAR ou inversement si la colonne contient des valeurs
NULL, si vous ne réduisez pas sa taille ou si la table est vide.
Renommer colonne
Pour renommer une colonne on utilise RENAME COLUMN dans l’instruction ALTER TABLE
Exemple:
Changer le nom de la colonne last_name en nom de la table employée
ALTER TABLE employées RENAME COLUMN last_name to nom;
Supprimer colonne
Pour supprimer une colonne on utilise la directive DROP COLUMN dans l’instruction d’un ALTER
TABLE.
Exemple:
Supprimer la colonne nom de la table employées.
ALTER TABLE employées DROP COLUMN nom ;
Chapitre V : Extraction des données avec SELECT
 Enumérer les fonctionnalités des instructions SQL SELECT
 Générer un état à partir du résultat d'une instruction SELECT de base
 Utilisation des expressions arithmétiques et des valeurs NULL
 Implémenter des alias de colonne
 Utiliser des opérateurs de concaténation, des chaînes de caractères littérales,
 l'opérateur de délimitation alternatif et le mot-clé DISTINCT
 Afficher la structure d'une table à l'aide de la commande DESCRIBE
Enumérer les fonctionnalités des instructions
SQL SELECT
Sélection Projection
Table 1 Table 1
Jointure
Capacités de l'instruction SQL SELECT
Une instruction SELECT récupère les informations de la base de données. Avec une instruction SELECT,
vous pouvez procédez comme suit:
• Projection : Sélectionnez les colonnes dans un tableau ou table qui sont retournés par une requête.
Sélectionnez aussi peu ou autant des colonnes selon les besoins.
• Sélection: Sélectionnez les lignes d'une table qui sont retournés par une requête. Plusieurs critères peuvent
être utilisés pour restreindre les lignes qui sont récupérés.
• Jointures: Rassembler des données qui sont stockées dans des tables différentes en précisant le lien entre
eux. SQL jointures sont couverts plus en détail dans la leçon intitulée "Résultats données dans plusieurs tables
.
Leçon 5: extraction des données à l’aide d’instruction SELECT
2) Générer un état à partir du résultat d'une instruction SELECT de base
2-1) Déclaration de base SELECT
La syntaxe de base pour une instruction SELECT est présentée ci-dessous.
• SELECT identifie les colonnes à afficher.
• from identifie la table contenant ces colonnes
Déclaration de base SELECT
Dans sa forme la plus simple, une instruction SELECT doit inclure les éléments suivants :
Dans la syntaxe :
• SELECT qui spécifie les colonnes à afficher
• * Sélectionne toutes les colonnes
• DISTINCT supprime les doublons des colonnes.
• FROM qui identifie la table contenant les colonnes qui sont répertoriés dans la clause SELECT .
Remarque:
Tout au long de ce cours, les mots clés, la clause, et la déclaration sont utilisés comme suit :
Un mot se réfère à un exemple d'élément - pour SQL individuels, sélectionnez et FROM sont mots-
clés. Une déclaration est une combinaison de deux ou plusieurs clauses - par exemple : afficher tous
les employées
SELECT * FROM employees ;
Sélectionner toutes les colonnes
Comme résultats :
Sélection de toutes les colonnes
Vous pouvez afficher toutes les colonnes de données dans une table en suivant le mot-clé SELECT avec une
astérisque (*) . Dans l'exemple de la diapositive, la table Departments contient quatre colonnes :
DEPARTMENT_ID , Department_Name , manager_id et LOCATION_ID . La table contient huit lignes, une
pour chaque département .
Vous pouvez également afficher toutes les colonnes de la table en listant toutes les colonnes après le mot clé
SELECT.
Par exemple, l’instruction SQL suivante (comme l'exemple de la diapositive) affiche toutes les colonnes et
toutes les lignes de la table départements:
SELECT department_id , department_name , manager_id , location_id from departments
Remarque : Dans SQL Developer , vous pouvez entrer votre instruction SQL dans une feuille de calcul SQL
et cliquez sur le "Exécuter Déclaration " icône ou appuyez sur [ F9 ] pour exécuter l'instruction . La sortie de
figurer sur les résultats la page à onglets apparaît comme indiqué dans la diapositive.
Sélection d’une ou Plusieurs Colonnes Spécifiques
Comme résultats :
Les expressions arithmétiques et les valeurs NULL dans
l'instruction SELECT
1) Expressions Arithmétiques
Avec l’expression arithmétique on a la possibilité de créer des expressions avec des données de type
NUMBER et DATE au moyen d’opérateurs arithmétiques.
Une expression arithmétique peut être crée en utilisant les noms de colonnes, les opérateurs et les valeurs
constantes à intégrer une expression dans une instruction SELECT. L'opérateur applicable à une colonne
dépend du type de données de colonne. Par exemple, les opérateurs arithmétiques ne rentre pas pour le
caractère des valeurs littérales.
Utilisation des Opérateurs Arithmétiques
Comme résultats :
Utilisation des Opérateurs Arithmétiques
Priorité des Opérateurs
Les opérateurs agissent sur les colonnes (connu comme opérandes) pour conduire à un résultat
différent. En cas de plusieurs opérateurs dans une expression, de l'ordre d’évaluation est décidé par
la priorité de l'opérateur. Voici les règles élémentaires de priorité :
• Multiplication et la division se produisent avant multiplication et division.
• Les opérateurs sur une même priorité sont évalués de gauche à droite.
• Utilisez les parenthèses pour remplacer le comportement par défaut des opérateurs.
* / + _
Utilisation des Opérateurs Arithmétiques
1)Priorité des Opérateurs
2) Utilisation des parenthèses
La valeur NULL
NULL représente une valeur non disponible, non affectée, inconnue ou inapplicable.
La valeur NULL est différente du zéro ou de l’espace.
Définir une valeur Null
Si une colonne ne possède pas une valeur définitive, il est considéré comme nulle. La valeur NULL représente
inconnue ou indisponible. Il est non nulle pour les valeurs numériques, pas d'espace vide pour les valeurs de
caractères.
Les colonnes avec la valeur NULL peuvent être sélectionnées dans une requête SELECT et peuvent être la
partie d'une expression arithmétique. Toute expression arithmétique en utilisant des valeurs NULL dans les
résultats NULL. Pour cette raison, des colonnes par valeur NULL doivent être traités différemment en
spécifiant leurs autres valeurs en utilisant Oracle , il fourni des fonctions comme NVL ou NULLIF.
Valeurs NULL dans les Expressions
Arithmétiques
1) Les expressions arithmétiques comportant une valeur NULL sont évaluées à
NULL
Implémenter des alias de colonnes
1) alias de colonne
- Renomme un en-tête de colonne
- Est utile dans les calculs
- Suit immédiatement le nom de la colonne ;
- le mot-clé AS placé entre le nom et l’alias est optionnel
- Doit obligatoirement être inclus entre guillemets s’il contient des espaces, des caractères spéciaux ou si
les majuscules/minuscules doivent être différenciées
2) Définir l’alias de colonne
Lors de l'affichage du résultat d'une requête , SQL Développer utilise normalement le nom de la colonne
choisie comme tête de colonne. Cette rubrique peut ne pas être descriptive et, par conséquent , peut être
difficile à comprendre. Vous pouvez modifier un titre de colonne en utilisant un alias de colonne . Spécifiez
l'alias après la colonne dans la liste SELECT en utilisant l'espace vide comme un séparateur . Par défaut , les
titres d'alias apparaissent en majuscules . Si l'alias contient des espaces ou des caractères spéciaux ( tels que
# ou $ ) , ou si elle est sensible à la casse , joindre l'alias dans des guillemets doubles ( "")
Utilisation des alias de colonne
Utiliser des opérateurs de concaténation, des chaînes de caractères littérales,
1) L’Opérateur de Concaténation
– Concatène des colonnes ou chaînes de caractères avec d’autres colonnes
– Est représenté par deux barres verticales (||)
– La colonne résultante est une expression caractère
Opérateurs de concaténation
Opérateur de concaténation peut être utilisé pour joindre deux valeurs de chaîne ou des expressions dans
une requête SELECT. Le symbole de la double barre verticale (| |) est utilisé comme opérateur de
concaténation. Elle est applicable uniquement pour les valeurs de caractères et de colonnes de chaîne
résultant en une nouvelle expression de caractères.
Exemple :
SELECT 'ORACLE ‘ || ' CERTIFICATION' FROM dual;
Littéral
Un littéral est un caractère, une expression, ou un nombre inclus dans la liste SELECT.
Les valeurs littérales de type date et caractère doivent être placées entre simples quottes.
Chaque littéral apparaît sur chaque ligne ramenée.
SQL> SELECT first_name ||‘ earns ‘ || salary ||‘ as of '|| sysdate FROM employees
Afficher le prénom des employés qui ont un salaire à partir de ce jour
Utilisation des Chaînes
de Caractères Littérales
Opérateur de délimitation alternative Quote (q)
L'opérateur de devis est utilisé pour spécifier le guillemet délimiteur de votre choix. Vous pouvez choisir
un séparateur pratique, dépendant sur les données
Alternative Opérateur Quote (q)
Beaucoup utilisent des instructions SQL littéraux de caractères dans les expressions ou les conditions . Si le
même littérale contient un guillemet simple , vous pouvez utiliser la citation ( q ) opérateur et choisir votre
propre guillemet délimiteur . Vous pouvez choisir un séparateur pratique, un seul octet ou multi-octets , ou
tout ce qui suit paires de caractères : [ ] , {} , ( ) , ou < > . Dans l'exemple illustré , la chaîne contient un
guillemet simple , qui est normalement interprété comme un délimiteur d'une chaîne de caractères. En
utilisant l'opérateur de q, cependant , entre crochets [] sont utilisés comme guillemet séparateurs . La chaîne
entre les séparateurs de supports est interprété comme un littéral chaîne de caractères .
Mot-clé DISTINCT
1) Doublons
Par défaut, le résultat d’une requête affiche toutes les lignes, y compris les doublons
Élimination des Doublons
Pour éliminer les doublons il faut ajouter le mot-clé DISTINCT à la clause SELECT
Afficher les numéros des départements et leurs fonctions de travail des employés en
éliminant les doublons .
Structure d’une table avec DESCRIBE
1) Commande DESCRIBE
Les métadonnées de structure d'une table peut être obtenu en interrogeant la base de données pour la liste des
colonnes qui la composent en utilisant la commande DESCRIBE . Il liste les noms de colonnes utilisés, et
leurs types de données.
Syntaxe:
DESC[RIBE] [SCHEMA].object name
Exemple :
DESC EMPLOYEE
Affichera la structure de la table EMPLOYÉ c’est-à-dire des colonnes, leurs types de données, la précision et
la propriété nullable.
Utilisation de la commande DESCRIBE
Chapitre VI : Restreindre et trier des données :
 Ecrire des interrogations avec une clause WHERE pour limiter les données extraites
 Utiliser des opérateurs de comparaison et des opérateurs logiques
 Décrire les règles de priorité des opérateurs de comparaison et des opérateurs
logiques
 Utilisation des littéraux de type chaîne de caractères dans la clause WHERE
 Ecrire des interrogations avec une clause ORDER BY
 Trier le résultat par ordre croissant et par ordre décroissant
 Variables de substitution
Ecrire des interrogations avec une clause WHERE pour
limiter les données extraites
1) Sélection des lignes
Afficher tous les employés du départements 90
Limiter la sélection des lignes
Restreindre la sélection au moyen de la clause WHERE.
La clause WHERE se place après la clause FROM
Utilisation de la Clause WHERE
Remarque :
On utilise jamais de alias dans la clause where
Chaînes de Caractères et Dates
Les constantes chaînes de caractères et dates doivent être placées entre simples quotes.
La recherche tient compte des majuscules et minuscules (pour les chaînes de caractère) et du format
(pour les dates.)
Le format de date par défaut est 'DD-MON-YY'.
Opérateurs de Comparaison
Utilisation des opérateurs de comparaison
Les opérateurs de comparaison sont utilisés dans des conditions pour comparer des expressions ou par des
valeurs . Rq : les symboles != and ^= peuvent représenter aussi différent d’une condition
la syntaxe : WHERE expr operator value
. .. WHERE hire_date = '01-JAN-95'
. .. WHERE salary >= 6000
. .. WHERE last_name = 'Smith‘
L’opérateur BETWEEN
L’opérateur BETWEEN peut être utilisé pour comparer une valeur de colonne dans une plage définie.
Elle permet aussi de tester l’appartenance à une fourchette de valeurs.
Utilisation de l’opérateur BETWEEN
On peut aussi utiliser l’opérateur BETWEEN sur les valeurs des chaines de caractères .
Utilisation de l’opérateur IN
L’utilisation de l’opérateur IN permet de comparer une expression avec une liste de valeurs
l’opérateur LIKE
LIKE permet de rechercher des chaînes de caractères à l'aide de caractères génériques.
Les conditions de recherche peuvent contenir des caractères ou des nombres littéraux:
(%) représente zéro ou plusieurs caractères
( _ ) représente un caractère
Utilisation de l’opérateur LIKE
On peut combiner plusieurs caractères de recherche
Exemple :
On peut utiliser l’identifiant ESCAPE pour rechercher les symboles « % » ou « _ »
Exemple de LIKE
On veut rechercher SA avec % et _ dans l’exemple en utilisant ESCAPE :
L’utilisation de l’opérateur IS NULL
Recherche de valeur NULL avec l’opérateur IS NULL
Opérateur logique
Plusieurs conditions de filtrage peuvent être ajoutés au prédicat de clause WHERE. Plus d'une condition
peut être combiné à l'aide des opérateurs logiques AND, OR et NOT.
• AND: rejoint deux ou plusieurs conditions, et renvoie un résultat que lorsque toutes les conditions
sont remplies.
• OR: rejoint deux ou plusieurs conditions, et il renvoie des résultats lorsque l'une des conditions sont
remplies.
• NOT: nie l'expression qui le suit.
Utilisation de l’opérateur AND
Avec AND les deux conditions doivent être vraies.
L’utilisation de l’opérateur OR
Avec OR l’une ou l’autre des deux condition doit être vraie .
l’opérateur NOT
Utilisation de NOT
NOT peut être utilisé dans d’autres opérateurs de SQL comme BETWEEN , LIKE , NULL
... WHERE job_id NOT IN ('AC_ACCOUNT', 'AD_VP')
... WHERE salary NOT BETWEEN 10000 AND 15000
... WHERE last_name NOT LIKE '%A%'
... WHERE commission_pct IS NOT NULL
Règle de priorité
Les parenthèses permettent de modifier les règles de priorités
Exemple de règle de priorité
Utilisation de la parenthèse pour forcer la priorité :
Clause ORDER BY
Tri des lignes avec la clause ORDER BY
• ASC : ordre croissant (par défaut)
• DESC : ordre décroissant
La clause ORDER BY se place à la fin de l’ordre SELECT
TRI
Tri par ordre décroissant
Tri sur l’alias de colonne
Exemple de TRI
Utilisation de tri par la position des colonnes numériques
Tri sur plusieurs colonnes
Variable de Substitution
Quand une requête SQL doit être exécutée plus d'une fois pour les différents ensembles d'entrées, les
variables de substitution peuvent être utilisés. Les variables de substitution peuvent être utilisés pour
demander entrées de l'utilisateur avant l'exécution de la requête Les variables de substitution sont
préfixés par un symbole unique eCommercial (&) pour stocker temporairement des valeurs.
Remarque:
• Si la variable est destinée à remplacer une valeur de caractère ou de la date, les besoins littérales à
être encadrées par des apostrophes. Une technique utile est d'enfermer la variable de substitution
eCommercial guillemets simples lorsqu'ils traitent avec des valeurs de caractère et date.
• Les deux SQL Développer et SQL * Plus peuvent soutenir les variables de substitution et les
DEFINE / commandes UNDEFINE. Bien que SQL Développer ou SQL * Plus ne supporte pas les
contrôles de validation (sauf pour le type de données) sur l'entrée de l'utilisateur.
• Vous pouvez utiliser les variables de substitution non seulement dans la clause WHERE d'une
instruction SQL, mais aussi comme substitution pour les noms de colonnes, des expressions ou texte.
Utilisation de la simple variable de Substitution
On utilise la simple variable de substitution par le préfixe eCommercial« & » par l’entré en valeur de
l’utilisateur
Exemple de variable de substitution dans les
chaines de caractères et dates
Pour les chaines de caractères et dates on utilise & pour les variables de substitution .
Spécification des noms de colonne et expression
On peut spécificité les noms de colonne pour rechercher une colonne avec une condition et mettant
l’expression par ordre croissant ou décroissante.
Utilisation de la double variable de substitution
Lorsque la même variable de substitution est utilisé à plus d'un endroit, puis pour éviter la ré-entrer
encore une fois les mêmes données, nous utilisons double substitution eCommercial. Dans de tels cas, la
valeur de la variable de substitution, une fois saisi, serait substitué à tous les instants de l'utilisation.
Chapitre VII: fonctions mono-lignes pour personnaliser les résultats
 Différences entre les fonctions mono-lignes et les fonctions multi-lignes
 Manipuler des chaînes à l'aide de fonctions de type caractère
 Manipuler des nombres à l'aide des fonctions ROUND, TRUNC et MOD
 Effectuer des opérations arithmétiques avec des données de type date
 Manipuler des dates à l'aide de fonctions de type date
Fonctions Mono-ligne
Une fonction est une expression d’un type de données spécifique qui fait partie d’une instruction utilisée
pour calculer une valeur.
Utilisation des fonctions simples
Oracle SQL fournit une riche bibliothèque de fonctions en construction qui peuvent être utilisés pour
diverses tâches. Les capacités essentielles des fonctions peuvent être la conversion de cas de chaînes, en
chaîne ou des opérations de sous-chaînes, des calculs mathématiques sur des données numériques, et les
opérations de date sur les valeurs de type date. Les Fonctions SQL prennent éventuellement des arguments
de l'utilisateur et obligatoirement renvoient une valeur.
Deux types de fonctions en SQL
• Fonctions mono-lignes : ceux sont des fonctions simples qui travaillent sur une rangée et retourner
une sortie par ligne. Par exemple, des fonctions de conversion de longueur .
• Fonctions multi-lignes ceux sont des fonctions de lignes qui fonctionnent sur un groupe de lignes et
retourne un résultat pour l'ensemble des lignes. Ils sont également connus comme des fonctions de
groupe.
Fonction simples ou mono-lignes
• .Manipulent des éléments de données
• Acceptent des arguments et ramènent une valeur
• Agissent sur chacune des lignes rapportées
• Ramènent un seul résultat par ligne
• Peuvent modifier les types de données
• Peuvent être imbriquées
Syntaxe :
Function_name : nom de la fonction avec l’expression de la colonne et les arg1, arg2 utilisés dans la
fonction .
Composition des fonctions Mono-lignes
Illustration des fonctions simples
Fonctions générales - contient habituellement des fonctions de manutention NULL. Les fonctions en vertu
de la catégorie sont NVL, NVL2, NULLIF, COALESCE, CASE, décoder.
Cas de fonctions de conversion - Accepte la saisie de caractères et retourne une valeur de caractère.
Fonctions en vertu de la catégorie sont supérieures, inférieures et INITCAP.
Fonction UPPER convertit une chaîne en majuscules.
Fonction LOWER convertit une chaîne en minuscules.
INITCAP fonction convertit uniquement les alphabets initiales d'une chaîne en majuscules.
Fonctions de caractères - accepte la saisie de caractères et retourne numéro ou le caractère de valeur.
Fonctions en vertu de la catégorie sont CONCAT, LONGUEUR, SUBSTR, INSTR, LPAD, RPAD, TRIM et
le remplacer.
Fonction CONCAT concatène deux valeurs de chaîne.
Fonction LENGTH renvoie la longueur de la chaîne d'entrée.
Fonction SUBSTR renvoie une partie d'une chaîne à partir d'un point de départ donné jusqu'à un point de
fin.
Fonction INSTR renvoie position numérique d'un caractère ou une chaîne dans une chaîne donnée.
Fonctions de LPAD et RPAD de la chaîne donnée jusqu'à une longueur spécifique avec un caractère donné.
Fonction TRIM versions d'entrée de chaîne à partir du début ou de fin.
Fonction REPLACE remplace les caractères de la chaîne d'entrée avec un caractère donné.
Illustration des fonctions simples
Fonctions de date - Date des opérations arithmétiques date ou des valeurs numériques renvoient. Fonctions
en vertu de la catégorie sont MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY, LAST_DAY, rond et
TRUNC.
MONTHS_BETWEEN fonction renvoie le nombre de mois entre les deux dates.
ADD_MONTHS fonctionnent ajouter 'n' nombre de mois d'une date d'entrée.
NEXT_DAY fonction retourne le lendemain de la date spécifiée.
LAST_DAY fonction retourne le dernier jour du mois de la date d'entrée.
Fonctions de ROUND et TRUNC sont utilisés pour arrondir et tronque la valeur de date.
 Fonctions numériques - accepte l'entrée numérique et retourne des valeurs numériques. Fonctions en vertu
de la catégorie sont ronds, TRUNC et MOD.
Fonctions de ROUND et TRUNC sont utilisés pour arrondir et tronquer la valeur du nombre.
MOD est utilisé pour renvoyer le reste de l'opération de division entre deux nombres.
Fonctions de caractères
Fonctions de Conversions Majuscules/ Minuscules
Utilisation des fonctions de Conversions
Afficher le numéros de l’employé , le nom et le numéros de départements de l’employé Higgins
Fonctions de Manipulation des caractères
Utilisation des fonctions de Manipulation des
caractères
Fonctions Numériques
 ROUND : arrondie la valeur à la précision spécifiée
ROUND(45.926, 2)
 TRUNC : tronque la valeur à la précision spécifiée
TRUNC(45.926, 2 )
 MOD : ramène le reste d’une division
45.93
45.92
MOD(1600,300) 100
Utilisation de la fonction ROUND
Affichage de la valeur 45.923 arrondie au centième, à 0 décimale et à la dizaine supérieure.
Utilisation de la fonction TRUNC
Affichage de la valeur 45.923 tronquée au centième, à 0 décimale et à la dizaine.
Utilisation de la fonction MOD
La fonction MOD renvoie le reste du premier argument, divisé par le second argument.
Exemple : calcule de Le reste du salaire 5000 par la division pour tous les Employé
Utilisation des Dates
Oracle stocke les dates dans un format numérique interne : siècle, année, mois, jour, heures, minutes,
secondes.
Le format de date par défaut est DD-MON-YY.
La fonction SYSDATE ramène la date et l’heure courante.
DUAL est une table factice qu'on peut utiliser pour visualiser SYSDATE ;
On veut afficher le nom et la date des employés qui sont venus avant le 01/02/1988
Utilisation de la fonction SYSDATE
SYSDATE est une fonction qui retourne:
. DATE
. TEMPS
Opérations arithmétiques sur les dates
- Ajout ou soustraction d’un nombre à une date pour obtenir un résultat de type date.
- Soustraction de deux dates afin de déterminer le nombre de jours entre
ces deux dates.
- Ajout d’un nombre d’heures à une date en divisant le nombre d’heures par 24.
 Exemple :
Fonction de Dates
utilisations des fonctions Dates
Exemple de dates
SELECT ADD_MONTHS (sysdate,2), NEXT_DAY (sysdate , 6), LAST_DAY (sysdate)
FROM dual;
SELECT employee_id , last_name, trunc (MONTHS_BETWEEN (sysdate, hire_date))
Employment_months FROM employees
Chapitre VIII : fonctions de conversions et des expressions conditionnelles
 Conversions implicites et explicites de type de données
 Décrire les fonctions de conversion TO_CHAR, TO_NUMBER et TO_DATE
 Imbriquer plusieurs fonctions
 Appliquer les fonctions NVL, NULLIF et COALESCE aux données
 Utiliser la logique conditionnelle IF THEN ELSE
Fonctions de Conversions
Conversions de Types de données implicites
Pour les affectations, Oracle effectue automatiquement les conversions suivantes
Une valeur VARCHAR2 ou CHAR peut être implicitement converti en nombre ou DATE valeur de
type Oracle. De même, une valeur de type NUMBER ou les données peuvent être automatiquement
converti en données de caractère par serveur Oracle. Notez que l'inter conversion impicit ne se produit
que lorsque le personnage représente la valeur du type d'un numéro ou date valide respectivement.
Conversions de types de données explicites
Fonctions de conversion SQL sont des fonctions simples de rangée qui sont capables de valeur de la colonne
de typage, littérale ou une expression.TO_CHAR, TO_NUMBER et TO_DATE sont les trois fonctions qui
effectuent modification transversale de types de données.
Fonction TO_Char avec les dates
- Doit être placé entre simples quottes et différencie les majuscules et minuscules.
- Peut inclure tout élément valide de format date
- Comporte un élément format model qui supprime les espaces de remplissage ou les zéros de tête
- Est séparé de la valeur date par une virgule
Exemple :
SELECT employee_id, TO_CHAR(hire_date, 'MM/YY') Month_Hired
FROM employees WHERE last_name = 'Higgins';
Modèles de format Date
Modèles de Format pour les dates
- Les éléments horaire formatent la partie horaire de la date
- Pour ajouter des chaînes de caractères, les placer entre guillemets.
- Différents suffixes existent pour les nombres.
Utilisation de la fonction TO_CHAR avec les Dates
TO_CHAR fonction est utilisé pour transtyper une entrée numérique ou de date de type de caractère avec un
modèle de format (en option).
Exemple de To_Char avec les dates
SELECT last_name, TO_CHAR (hire_date, ' fmDdspth "of" Month YYYY fmHH:MI:SS
AM') HIREDATE FROM employees ;
Résultat :
la fonction To_Char avec les nombres
Utilisez les formats suivants avec TO_CHAR pour afficher un nombre sous la forme d'une chaîne de
caractère.
Utilisation de la fonction To_Char avec les
nombres
Fonction To_Number et To_Date
- Conversion d’une chaîne de caractères en format numérique avec la fonction
- Conversion d’une chaîne de caractères en format date avec la fonction TO_DATE
Fonctions Générales
Fonctions générales sont utilisés pour gérer les valeurs NULL dans la base de données. L'objectif des
fonctions générales de manutention NULL est de remplacer les valeurs NULL avec une autre valeur. Nous
verrons brièvement grâce à ces fonctions ci-dessous.
Convertit une valeur NULL en une valeur réelle
- NVL (expr1, expr2)
- NVL2 (expr1,expr2,expr3)
- NULLIF (expr1,expr2)
- COALESCE (expr1, expr2, ……,exprn)
Fonctions NVL
– Fonctionne avec les données de type date, caractère et numérique.
– Les types de données doivent correspondre
• NVL(comm,0)
• NVL(hiredate,'01-JAN-97')
• NVL(job,'No Job Yet')
Exemple d’utilisation de la fonction NVL
La fonction NVL substitue une autre valeur pour une valeur NULL.
Exemple de la fonction NVL2
Comme une amélioration sur NVL, Oracle a introduit une fonction de la valeur de remplacement non
seulement pour les valeurs de colonnes NULL, mais aussi pour les colonnes NOT NULL. NVL2 fonction
peut être utilisée pour substituer une autre valeur NULL ainsi que la valeur NULL non.
Exemple de la fonction NULLIF
La fonction NULLIF compare deux arguments expr1 et expr2. Si expr1 et expr2 sont égales, elle renvoie
NULL; d'autre, il retourne expr1.
Exemple de COALESCE
Fonction COALESCE, une forme plus générique de NVL, renvoie la première expression non-nulle dans
la liste d'arguments. Il prend un minimum de deux paramètres obligatoires, mais les arguments maximale
n’ont pas de limite.
Expression Conditionnelle
Oracle fournit deux méthodes d’expression conditionnelle :
- CASE : Facilite les recherches conditionnelles en jouant le rôle de CASE ou IF-THEN-ELSE
- DECODE:
La fonction est l'équivalence SQL de if..then..else déclaration procédurale conditionnelle. DECODE
travaille avec les valeurs / colonnes / expressions de tous les types de données.
Exemple de CASE
Exemple de DECODE
Chapitre IX: Manipulation des données agrégées à l’aide des fonctions de groupe
 Générer des états signicatifs à l'aide de fonctions d'agrégation
 Utiliser les fonctions AVG, SUM, MIN et MAX
 Comment manipuler des valeurs NULL dans une fonction de groupe ?
 Répartir les données dans des groupes à l'aide de la clause GROUP BY
 Exclure des groupes de dates à l'aide de la clause HAVING
Les données agrégées des rapports en utilisant les
fonctions du Groupe
SQL a de nombreuses fonctions d'agrégats prédéfinis qui peuvent être utilisés pour écrire des requêtes pour
produire exactement ce genre de informations de clause GROUP BY indique comment regrouper les lignes
d'un tableau de données lors de l'agrégation des informations, alors que la clause HAVING filtre les lignes
qui ne font pas partie de groupes spécifiés.
Les fonctions d'agrégation exécutent diverses actions telles que compter toutes les lignes d'une table, en
moyenne les données d'une colonne, et en additionnant les données numériques. Agrégats peuvent
également rechercher une table pour trouver la plus haute "MAX" ou valeurs les plus basses "MIN" dans
une colonne. Comme avec d'autres types de requêtes, vous pouvez limiter ou filtrer les lignes de ces
fonctions agissent avec la clause WHERE. Par exemple, si un gestionnaire a besoin de savoir combien
d'employés travaillent dans une organisation, la fonction d'agrégation COUNT nom (*) peut être utilisé pour
produire des informations de cette COUNT (*) fonction indiquée dans la déclaration ci-dessous SELECT
compte toutes les lignes dans une table.
Types de fonction de Groupe
AVG ([DISTINCT|ALL]n)
COUNT ({ *|[DISTINCT|ALL] expr})
MAX ([DISTINCT|ALL ]expr)
MIN ([DISTINCT|ALL] expr)
STDDEV ([DISTINCT|ALL]x)
SUM ([DISTINCT|ALL]n)
VARIANCE ([DISTINCT|ALL]x)
Fonction de groupe
Les fonctions de groupe agissent sur des groupes de lignes et donnent un résultat par groupe :
La syntaxe :
Utilisation de AVG et SUM
AVG et SUM est utilisé avec des données numériques
Utilisation de MIN et MAX
MIN et MAX s’utilise avec tous les types de données numériques , caractères , dates.
SELECT MIN (last_name), MAX(last_name) FROM employees;
Utilisation de la fonction Count
- COUNT(*) ramène le nombre de lignes d'une table.
- COUNT( expr) ramène le nombre de lignes non NULL.
Fonction de groupe et valeur NULL
Les fonctions de groupe ignorent les valeurs NULL des colonnes
La fonction NVL force la prise en compte des valeurs NULL dans les fonctions de groupe
Création de groupe de données avec GROUP BY
Les fonctions d'agrégat sont normalement utilisés en conjonction avec une clause GROUP BY
Divisez une table en groupes de lignes avec la clause GROUP BY.
Utilisation de la fonction GROUP BY
La clause GROUP BY doit inclure toutes les colonnes de la liste SELECT qui ne figurent pas dans
des fonctions de groupe.
Exemple de GROUP BY
La colonne citée dans le GROUP BY ne doit pas nécessairement figuré dans la liste SELECT
Utilisation de GROUP BY dans plusieurs colonnes
EXCEPTION de GROUP BY
(1) Toutes les colonnes ou les colonnes utilisées dans GROUP BY fonction doit former la base du
groupement dépendantes, par conséquent doivent être inclus dans la clause GROUP BY également.
• (2) la clause GROUP BY ne supporte pas l'utilisation des alias de colonne, mais les noms réels.
• (3) la clause GROUP BY ne peut être utilisé avec des fonctions d'agrégation comme SUM, AVG,
COUNT, MAX et MIN.il est utilisé avec des fonctions simples de rangée, Oracle lance et d'exception
comme «ORA-00979: pas un GROUP BY expression" .
• (4) Les fonctions d'agrégation ne peuvent pas être utilisées dans une clause GROUP BY. Oracle va
retourner le "ORA-00934: fonction de groupe non autorisés" ici message d'erreur.
Exclusion de groupes avec HAVING
• Utilisez la clause HAVING pour restreindre les groupes
• Les lignes sont regroupées.
• La fonction de groupe est appliquée.
• Les groupes qui correspondent à la clause HAVING sont affichés.
La clause HAVING est utilisé pour les fonctions d'agrégation de la même manière qu'une clause WHERE
est utilisée pour les noms de colonnes et expressions.
Exemple de HAVING (1)
Exemple de HAVING (2)
Imbrication des fonctions de Groupes
Afficher le salaire moyen maximum.
Chapitre X: Affichage des données et des jointures
 Ecrire des instructions SELECT pour accéder à des données provenant de
plusieurs tables
 Joindre des tables à l'aide de la syntaxe SQL:1999
 Afficher des données qui ne répondent pas à une condition de jointure à l'aide de
jointures externes
 Joindre une table à elle-même à l'aide d'une auto-jointure
 Créer des jointures croisées
Affichage des données dans plusieurs tables
Les tables liées d'une grande base de données sont liés par l'utilisation de clés étrangères et primaires ou ce
qu'on appelle souvent à colonnes communes. La possibilité de rejoindre les tables vous permettront
d'ajouter plus de sens à la table de résultat qui est produite. Pour 'n' tables numériques pour être assemblés
dans une requête, minimum (n-1) des conditions de jointure sont nécessaires. Sur la base des conditions de
jointure, Oracle associe la paire de rangées d'adaptation et affiche celui qui satisfait à la condition de
jointure.
Les types de jointures
•  Jointure naturelle (aussi connu comme une équijointure ou d'une simple jointure) - Crée une
jointure en utilisant une colonne couramment nommée et définie.
•  Non-égalité rejoindre - joint des tables quand il n'y a pas de lignes équivalentes dans les tables à
joindre, par exemple, pour correspondre à des valeurs dans une colonne d'une table avec une gamme
de valeurs dans une autre table.
•  Auto-jointure - se joint à une table à elle-même.
•  Jointure externe - Comprend enregistrements d'une table de la production quand il n'y a aucun
enregistrement correspondant dans l'autre table.
•  Cartésienne rejoindre (aussi connu comme un produit cartésien ou jointure croisée) - Réplique
chaque ligne de la première table avec tous les rangs à partir du deuxième table. Crées une jointure
entre les tables en affichant toutes les combinaisons possibles d'enregistrement.
Utilisation de la jointure SQL:1999
L’utilisation de la jointure dans une requête de donnée
NATURAL JOIN
Le mot-clé NATURAL JOIN peut simplifier la syntaxe d'une equijoin.le NATURAL JOIN est possible
lorsque deux (ou plus) les tables ont des colonnes avec le même nom, et les colonnes sont compatibles
rejoignent, à savoir, les colonnes ont un domaine partagé des valeurs rejoindre opération rejoint les rangs de
tables qui ont des valeurs de colonnes égales pour les mêmes colonnes nommées.
Utilisation de USING
USING rejoint naturel, Oracle identifier implicitement colonnes pour former la base de rejoindre. De
nombreuses situations nécessitent déclaration explicite des conditions de jointure. Dans de tels cas, nous
utilisation USING clause pour spécifier les critères d'assemblage. Depuis, USING clause joint les tables
fondées sur l'égalité de colonnes, il est également connu comme équijointure. Ils sont également connus
comme les jointures internes ou la simple joint.
Syntaxe:
Exemple de USING
Utilisation de SELF JOIN
Une opération de auto jointure produit une table de résultat lorsque la relation d'intérêts existe entre les
rangées qui sont stockés dans une seule table. En d'autres termes, quand une table est jointe à elle-même, la
jointure est appelée auto jointure.
Utilisation de Non Equijointure
Un non-égalité jointure est utilisée lorsque les colonnes connexes ne peuvent être rejoints avec un signe
égal-qui signifie qu'il n'y a pas de lignes équivalentes dans les tables soient jointes
Jointures Externes
Une jointure externe est utilisé pour identifier les situations où des rangées d'une table ne correspondent
pas rangées dans un deuxième tableau, même si les deux tables sont liées.
Il existe trois types de jointures externes: la GAUCHE, DROITE, et FULL OUTER JOIN. Ils commencent
tous par une jointure interne, puis ils ajoutent retour certaines des lignes qui ont été abandonnées. Un
LEFT OUTER JOIN ajoute retour toutes les lignes qui sont supprimés à partir du premier (à gauche) table
dans la condition de jointure et les colonnes de sortie de la seconde (à droite) tableau sont mis à NULL.
Un RIGHT OUTER JOIN ajoute retour toutes les lignes qui sont lâchés d'un deuxième (à droite) table
dans la condition de jointure et les colonnes de sortie de la première (à gauche) tableau sont mis à NULL.
FULL OUTER JOIN ajoute retour toutes les lignes qui sont lâchés d'un deux tables.
LEFT OUTER JOIN
Un LEFT OUTER JOIN ajoute retour toutes les lignes qui sont supprimés à partir du premier (à gauche)
table dans la condition de jointure et les colonnes de sortie de la seconde (à droite) tableau sont mis à
NULL. La requête démontré ci-dessus peut être utilisé pour démontrer la jointure externe gauche, en
échangeant la position du signe (+).
RIGHT OUTER JOIN
Un RIGHT OUTER JOIN ajoute retour toutes les lignes qui sont lâchés d'un deuxième (à droite) table dans
la condition de jointure et les colonnes de sortie de la première (à gauche) de la table sont mise à NULL.
FULL OUTER JOIN
FULL OUTER JOIN ajoute retour toutes les lignes qui sont lâchés une des deux tables.
Produit cartésien
Pour les deux entités A et B, A * B est appelé produit cartésien. Un produit cartésien constitué de toutes
les combinaisons possibles des lignes de chacune des tables. Par conséquent, quand une table avec 10
lignes est jointe à une table avec 20 lignes, le produit cartésien est de 200 lignes (10 * 20 = 200) .Par
exemple, de rejoindre la table des employés avec huit lignes et la table de service avec trois rangées va
produire une table de produit cartésien de 24 lignes (8 * 3 = 24).
Jointure croisée désigne le produit cartésien de deux tables. Il produit croisé de deux tables. La requête ci-
dessus peut être écrit en utilisant la clause CROSS JOIN.
Un cartésien table résultat du produit est généralement pas très utile. En fait, un tel tableau de résultat peut
être terriblement trompeur.
Condition de Produit cartésien
– On obtient un produit cartésien lorsque :
• Une condition de jointure est omise
• Une condition de jointure est incorrecte
– Toutes les lignes de la première table sont jointes à toutes les lignes de la seconde
– Pour éviter un produit cartésien, toujours insérer une condition de jointure correcte dans la clause
WHERE.
Exemple de produit cartésien
CROSS JOIN
Le cross join fait appel à deux tables comme le produit cartésien
Chapitre XI : Utilisation des sous-interrogations et les résoudre
 Utiliser une sous-interrogation pour résoudre un problème
 Exécuter des sous-interrogations monolignes
 Déployer des fonctions de groupe dans une sous-interrogation
 Sous-interrogations multilignes
 Utiliser les opérateurs ANY et ALL dans les sous-interrogations multilignes
 Utiliser l'opérateur EXISTS
Résoudre les sous-requêtes de requêtes
Une sous-requête est mieux défini comme une requête dans une requête. Les sous-requêtes vous permettent
d'écrire des requêtes qui sélectionnent les lignes de données pour les critères qui sont effectivement
développées pendant que la requête est en cours d'exécution au moment de l'exécution. Plus formellement,
il est l'utilisation d'une instruction SELECT à l'intérieur de l'une des clauses .
Une Sous-interrogation est un ordre SELECT imbriqué dans une clause d’un autre ordre SELECT .
Elles permettent de sélectionner des lignes d’une table lorsque la condition dépend des données de la table
elle-même .
Les sous-requêtes Peuvent être placées dans les clauses SQL suivantes :
• WHERE
• HAVING
• FROM
Sous-interrogations
La Syntaxe :
– La sous-interrogation (requête interne) est exécutée une fois avant la requête principale.
– Le résultat de la sous-interrogation est utilisé par la requête principale (externe).
Utilisation d’une Sous-interrogation
Conventions d’utilisation des Sous-interrogations
- Placez les sous-interrogations entre parenthèses.
- Placez les sous-interrogations à droite de l'opérateur de comparaison.
- N'ajoutez jamais de clause ORDER BY à une sous-interrogation.
- Utilisez les opérateurs mono-ligne avec les sous-interrogations mono-ligne.
- Utilisez les opérateurs multi-ligne avec les sous-interrogations multi-ligne.
Types de sous-requêtes
• Sous-interrogation mono-lignes : Sous requête qui renvoie la sortie de rangée. Ils marquent
l'utilisation des opérateurs de comparaison à une rangée, lorsqu'il est utilisé dans les conditions
WHERE.
• Sous-interrogation multi-lignes: Sous requête renvoyant sortie à lignes multiples. Ils font usage de
plusieurs opérateurs de comparaison de ligne
comme dans TOUT, Il peut y avoir des sous-requêtes renvoyant plusieurs colonnes aussi.
Sous-interrogation Mono-ligne
Une sous-requête seule ligne est utilisée lorsque les résultats de la requête externe sont basées sur une seule
valeur inconnue. Bien que ce type de requête est officiellement appelé "une seule ligne," le nom implique
que la requête retourne plusieurs colonnes, mais seulement une ligne de résultats. Cependant, une sous-
requête simple rangée peut renvoyer qu'une seule ligne de résultats composé de seulement une colonne à la
requête externe.
Utilisation de sous-interrogation Mono-ligne
– Ne ramènent qu'une seule ligne
– Utilisent des opérateurs de comparaison mono-ligne
Exemple de sous-interrogation Mono-ligne
Afficher les postes des employés occupant le même poste que le numéro de l’employé 141 .
SELECT last_name , job_id FROM employees
WHERE job_id = (SELECT job_id FROM employees WHERE employee_id = 141);
Exécution de sous-interrogation Mono-ligne
Utilisation de fonctions de groupe dans une sous
interrogation
Clause HAVING avec Sous-interrogation
– Oracle Server exécute les sous-interrogations en premier.
– Oracle Server ramène les résultats dans la clause HAVING de la requête principale.
– Une clause HAVING est utilisée lorsque les résultats du groupe d'une requête doivent être
restreint selon une condition.
Exemple de la clause HAVING dans une sous-
interrogation
Exemple de la clause HAVING
Trouver le poste ayant le salaire moyen le moins élevé .
Exemple :
SELECT job_id, AVG(salary) FROM employees
GROUP BY job_id HAVING AVG(salary) = (SELECT MIN(AVG(salary))
FROM employees GROUP BY job_id);
Sous-interrogation Multi-lignes
Sous-requêtes multi-lignes sont les requêtes imbriquées qui peuvent renvoyer plus d'une ligne de résultats à
la requête de parent. Sous-requêtes multi-lignes sont les plus couramment utilisés dans les clauses WHERE
et HAVING. Depuis, il retourne de multiples lignes, il doit être manipulé par des opérateurs de
comparaison de jeu (IN, ALL, ANY) .
– Ramène plusieurs lignes
– Utilise des opérateurs de comparaison multi-ligne
Exemple
Trouver les employés qui gagnent l’équivalent d’un salaire minimum de département .
SELECT last_name, salary, department_id FROM employees WHERE salary IN (SELECT
MIN(salary) FROM employees GROUP BY department_id);
Utilisation de l’opérateur ANY dans les sous-
interrogations Multi-lignes
Utilisation de l’opérateur ALL dans les sous-
interrogations Multi-lignes
Résumé
Les sous-interrogations sont utiles lorsqu'une requête fait appel à des valeurs inconnues
Utilisation de l’opérateur EXISTS
• Dès qu'il trouve une ligne par la sous-interrogation :
– La recherche dans la requête interne est interrompue.
– La condition est vraie (TRUE).
• S'il ne trouve aucune ligne par la sous-interrogation :
– La condition est fausse (FALSE).
Exemple de EXISTS
Rechercher tous les employés ayant au moins une personne sous leur responsabilité
Exemple de NOT EXISTS
Recherchez tous les départements qui ne comprennent pas d’employé
Chapitre XII : Opérateurs ensemblistes
 Présentation des opérateurs ensemblistes
 Utiliser un opérateur ensembliste pour combiner plusieurs interrogations en une
seule
 Utiliser les opérateurs UNION, UNION ALL, INTERSECT et MINUS
 Utiliser la clause ORDER BY dans des opérations ensemblistes
Utilisation des Opérateurs de Set
Règles des Opérateurs de Set
- Les expressions citées dans la clause SELECT doivent être égales en nombre et avoir des données
du même type.
- Les doublons sont automatiquement éliminés, sauf avec l'opérateur UNION ALL.
- Les noms de colonnes apparaissant dans le résultat sont ceux de la première requête.
-Par défaut, le résultat est trié par ordre croissant, sauf avec l’opérateur UNION ALL.
- Utilisez des parenthèses pour modifier la séquence d'exécution.
L’opérateur UNION
Lorsque plusieurs requêtes SELECT sont jointes à l'aide de l'opérateur UNION, Oracle affiche le résultat
combiné de toutes les requêtes SELECT composées, après le retrait de tous les doublons et dans l'ordre de tri
(croissant par défaut), sans ignorer les valeurs NULL.
L’opérateur UNION ALL
UNION et UNION ALL sont similaires dans leur fonctionnement avec une légère différence. Mais UNION
ALL donne le jeu de résultats sans enlever les doubles emplois et le tri des données. Par exemple, dans
l'union de la requête ci-dessus est remplacé par UNION ALL pour voir l'effet.
Exemple de UNION ALL
L’opérateur INTERSECT
Utilisation de l'opérateur INTERSECT, Oracle affiche les lignes communes aux deux instructions
SELECT, sans doublons et les données disposées dans l'ordre de tri (croissant par défaut).
Opérateur MINUS
Opérateur de Minus affiche les lignes qui sont présents dans la première requête mais absent dans la seconde
requête, sans doublons et données disposées dans l'ordre croissant par défaut.
Correspondance par l’instruction SELECT
Il peut y avoir des scénarios où le composé instructions SELECT peuvent avoir comptage différente et le
type de colonnes sélectionnées de données. Par conséquent, pour correspondre à la liste de la colonne
explicitement, colonnes NULL sont insérées dans les positions manquantes afin de correspondre le
nombre et le type de données des colonnes sélectionnées dans chaque instruction SELECT. Pour les
colonnes numériques, zéro peut aussi être substitué pour correspondre au type des colonnes sélectionnées
dans la requête.
Exemple
Exemple l’operateur UNION
Utilisé l’opérateur UNION pour afficher les numéros de l’employé , de fonctions et le salaire de tous les
employés .
Chapitre XIII : Création d’objet et schémas
 Créer des simples et complexes vues
 Extraction des données d’une vue
 Créer , des séquences
 Créer des indexes
 Créer des synonymes privés et public
Objet et Schémas
En dehors de tables, d'autres objets de schéma sont essentiels vue, séquences, index et vue synonyms.A
est une table logique ou virtuelle. Les synonymes sont des noms tout simplement alias pour
objects.Synonyms de base de données simplifient également l'écriture de requêtes et fournissent un
élément de la sécurité du système en déguisant le nom réel d'une base Object. Séquences sont des objets
de base de données spéciale qui soutiennent la génération automatique de valeurs entières, et sont souvent
utilisés pour générer des valeurs de clé primaire pour tables. Indexes sont créés sur des colonnes de la
table afin de faciliter la récupération rapide de l'information à partir des tables.
VIEW
Une vue de la base de données est une table logique ou virtuelle basée sur une requête. Les vues sont
interrogés tout comme les tables
A quoi serve les vues
• Limite l'accès à la base de données
• Facilite la création de requêtes complexes
• Garantit l'indépendance des données
• Présente les mêmes données sous différentes formes
Ils existent deux types de vues :
Les différentes formes de vues
- Vue simple :
Une vue simple est créé sur le dessus d‘une table simple et c’ est une requête SELECT simple, sans
fonctions ou clause de groupe, mais juste la sélection des colonnes de la table sans aucune
transformation. Si une opération LMD est effectuée sur la vue, elle se reflète immédiatement dans la
table de base.
- Vue Complexe :
Une vue complexe est créé sur plusieurs tables en utilisant des jointures. Il peut contenir des fonctions
SQL, Groupe par fonction. Mais car la vue est sur de multiples données et la sélection des colonnes est
également pas simple, elle ne permet pas le fonctionnement DML sur elle.
Création de VIEW
Imbriquer une sous-interrogation dans l'ordre CREATE VIEW.
• La sous-requête peut contenir une syntaxe SELECT complexe.
• Elle ne peut pas contenir une clause ORDER BY.
Exemple de VIEW
Créer la vue EMPVUE80 qui contient les détails de l’employé du département 80
Exemple de vue avec les sous-interrogations
Créez une vue à l'aide des alias de colonnes de la sous-interrogation.
Exemple :
CREATE OR REPLACE VIEW salvu50 (ID_NUMBER, NAME, ANN_SALARY)
AS
SELECT employee_id, last_name, salary*12
FROM employees
WHERE department_id = 50;
Sélectionnez les colonnes de cette vue par leur nom d'alias.
Extraction des Données d’une Vue
Règles d'Exécution des Ordres du LMD dans
une Vue
• Vous pouvez exécuter des opérations du LMD dans des vues simples.
• Vous ne pouvez pas supprimer une ligne si la vue contient :
– Des fonctions de groupe
– Une clause GROUP BY
– Le mot-clé DISTINCT
Utilisation de la Clause WITH CHECK OPTION
Vous pouvez garantir que le LMD reste dans le domaine de la vue à l'aide de la clause WITH CHECK
OPTION.
CREATE OR REPLACE VIEW empvu20
AS SELECT *
FROM emp
WHERE deptno = 20
WITH CHECK OPTION CONSTRAINT empvu20_ck;
Toute tentative de modification du numéro de département dans une ligne de la vue échouera, car elle
transgresse la contrainte WITH CHECK OPTION.
Aucune opération du LMD ne pourra être exécutée si vous ajoutez l'option WITH READ ONLY dans la
définition de votre vue.
Toute tentative d'exécution d'un ordre du LMD sur une ligne de la vue génère l'erreur Oracle8 Server ORA-
01752.
Suppréssion d’une VUE
La suppression d'une vue n'entraîne pas la perte des données, car toute vue est basée sur des tables sous-
jacentes de la base de données.
Syntaxe :
DROP VIEW view ;
Exemple :
DROP VIEW empvu10;
Séquences
Oracle offre la possibilité de générer des séquences de numéros uniques pour ce type d'utilisation, et ils sont
appelés sequences.Generalement , les séquences sont utilisés pour générer, les valeurs entières séquentielles
uniques qui sont utilisés comme valeurs de clé primaire dans la base de données de séquence de nombres de
tables.A être générée dans l'ordre croissant ou décroissant . On note qu'un certain nombre fois générée par la
séquence ne peut pas être annulée.
Syntaxe : de la création de Séquence
CREATE SEQUENCE <sequence name>
[INCREMENT BY < number >]
[START WITH < start value number>]
[MAXVALUE < MAXIMUM VLAUE NUMBER>]
[NOMAXVALUE]
[MINVALUE < minimum value number>]
[CYCLE | NOCYCLE]
[CACHE < number of sequence value to cache> | NOCACHE]
[ORDER | NOORDER];
Exemple de Séquences
Créer une séquence dept_deptid_seq de la table department en utilisant la clé primaire de cette table .
CREATE SEQUENCE DEPT_DEPTID_SEQ
INCREMENT BY 10
START WITH 120
MAXVALUE 9999
NOCACHE
NOCYCLE
Pseudo colonnes NEXTVAL et CURRVAL
Valeurs de séquence sont générés par l'utilisation de deux colonnes de pseudo nommé currval et la
colonne nextval
Syntaxe:
Sequence.NEXTVAL
Sequence.CURRVAL
Modification et Supprimer une Séquence
Le propriétaire de séquence peut modifier une séquence pour modifier les attributs comme INCREMENT
BY clauses valeur, MINVALUE, MAXVALUE, à vélo ou en mémoire cache uniquement. Notez que les
modifications effectuées seront reflétées dans les numéros à venir.
modification
ALTER SEQUENCE DEPT_DEPTID_SEQ
INCREMENT BY 20
START WITH
MAXVALUE 999999
NOCACHE
NOCYCL
suppression
DROP SEQUENCE DEPT_DEPTID_SEQ
Création et Suppréssion d’INDEX
Les index sont les objets de base de données qui sont utilisés pour optimiser les performances de la
requête dans les SELECT.
- Syntaxe : création de l’index
CREATE [UNIQUE][BITMAP]INDEX index
ON table (column [, column]...);
Exemple :
Création de l’index au niveau de la colonne de last_name de la table employees
CREATE INDEX EMP_LAST_NAME idx
ON EMPLOYEES(LAST_NAME);
- Syntaxe de suppression: il faut avoir le privilège DROP ANY INDEX pour supprimer les index
DROP INDEX index ;
Exemple : il faut avoir
DROP INDEX EMP_LAST_NAME idx;
Création de Synonymes
Un synonyme est un alias, qui est, d'une forme de sténographie utilisé pour simplifier la tâche de
référencement d'un objet
Il existe deux catégories de synonymes, synonyme public et synonyme privé peut être utilisée pour
permettre un accès facile à un objet pour tous les utilisateurs du système. En fait, l'individu créant un
synonyme public ne détient pas le synonyme plutôt, il appartiendra au groupe de l'utilisateur PUBLIC qui
existe au sein de synonymes Oracle. Synonyme privé d'autre part, appartiennent à l'utilisateur du système
qui les crée et de séjourner dans ce le schéma de l'utilisateur.
Exemple de Synonyme
Un utilisateur du système peut accorder le privilège d'utiliser des synonymes privés qu'ils possèdent à
l'autre fin. Pour créer un synonyme vous devez avoir le privilège CREATE SYNONYME .néanmoins
vous devez avoir le privilège CREATE synonyme public dans le but de créer des synonymes
publics .Si un synonyme est déclarée comme public, le nom de synonymes ne peut pas déjà être
utilisé comme un synonyme.
Syntaxe :
CREATE [ PUBLIC ] SYNONYM synonym
FOR OBJECT;
Exemple de création et de suppression de
Synonyme
- Création d’un Synonyme
Exemple :
Créer un synonyme de la vue DEPT_SUM_VU
CREATE SYNONYM DEPT_SU
FOR DEPT_SUM_VU
- Suppréssion d’un Synonyme
DROP SYNONYM DEPT_SU

ORACLETEDORACLEDEVELOPPEMENTWEBCJEK.pptx

  • 1.
  • 2.
    Programme de SQLsous Oracle  Introduction  Base de Données  SGBD  Modèle Relationnel  Architecture  Installation 11g  Pré requis  Normes OFA  Varaiable d ’environnement  Installation de Oracle Database 11g sous Windows  Présentation du langage SQL
  • 3.
    Programme de SQLsous Oracle  Oracle  Fonctionnalités && Versions Oracle  Composant Oracle  Outils d’administration  Outils de développement  Outils de programmation  Chapitre I : Mode de Connexion  Chapitre II : Gestion des données  Chapitre III Utilisation des instructions LDD pour gérer et créer des tables  Chapitre IV: Manipulation des données d’une table  Chapitre V : Evolution d’un schéma  Chapitre VI: Extraction des données à l’aide de l’instruction SELECT  Chapitre VII : restreindre et trier les données
  • 4.
     Chapitre VIII: Utilisation des fonctions mono-lignes pour personnaliser les résultats  Chapitre IX: Utilisation des fonctions de conversions et des expressions conditionnelles  Chapitre X: Manipulation des données agrégées à l’aide des fonctions de groupe  Chapitre XI : Affichage des données et des jointures  Chapitre XII : Utilisation des sous-interrogations pour résoudre des interrogations  Chapitre XIII : Opérateurs ensemblistes  Chapitre XIV: Création d’objet et Schéma
  • 5.
    Introduction La première choseà faire est d’établir quelques points de terminologie. Qu’est-ce qu’une donnée ? C’est une information quelconque comme, par exemple : voici une personne, elle s’appelle Jean. C’est aussi une relation entre des informations : Jean enseigne les bases de données. Des relations de ce genre définissent des structures. Une base de données est un ensemble, en général volumineux, de telles informations, avec une caractéristique essentielle : on souhaite les mémoriser de manière permanente.
  • 6.
    Base de Données UneBase de données est un gros ensemble d’informations structurées mémorisées sur un support permanent. On peut remarquer qu’une organisation consistant en un (ou plusieurs) fichier(s) stockés sur mémoire secondaire est conforme à cette définition. Un ensemble de fichiers ne présentant qu’une complexité assez faible, il n’y aurait pas là matière à longue dissertation. Malheureusement l’utilisation directe de fichiers soulève de très gros problèmes : 1. Lourdeur d’accès aux données. en pratique, pour chaque accès, même le plus simples, il faudrait écrire un programme. 2. Manque de sécurité. Si tout programmeur peut accéder directement aux fichiers, il est impossible de garantir la sécurité et l’intégrité des données. 3. Pas de contrôle de concurrence. Dans un environnement où plusieurs utilisateurs accèdent aux même fichiers, des problèmes de concurrence d’accès se posent. D’où le recours à un logiciel chargé de gérer les fichiers constituant une base de données, de prendre en charge les fonctionnalités de protection et de sécurité et de fournir les différents types d’interface nécessaires à l’accès aux données.
  • 7.
    SGBD En particulier, unedes tâches principales du SGBD est de masquer à l’utilisateur les détails complexes et fastidieux liés à la gestion de fichiers. D’où la définition. Définition 2 .2 Un Système de Gestion de Bases de Données (SGBD) est un logiciel de haut niveau qui permet de manipuler les informations stockées dans une base de données. Chaque niveau du SGBD remplit (réalise) un certain nombre de fonctions : – Niveau physiques : gestion sur le mémoire secondaire (fichiers) des données, du schéma, des index ; Partage de données et gestion de la concurrence d’accès ; Reprise sur pannes (fiabilité) ; Distribution des données et interopérabilité (accès aux réseaux). – Niveau logique : Définition de la structure de données : Langage de Description de Données (LDD) ; Consultation et Mise à Jour des données : Langages de Requêtes (LR) et Langage de Manipulation de Données (LMD) ; Gestion de la confidentialité (sécurité) ; Maintien de l’intégrité ; – Niveau externe : Vues Environnement de programmation (intégration avec un langage de programmation) Interfaces conviviales et Langages de 4e Génération (L4G) ; Outils d’aides (e.g. conception de schémas) ; Outils de saisie, d’impression d’états. En résumé, un SGBD est destiné à gérer un gros volume d’informations, persistantes (années) et fiables (protection sur pannes), partageables entre plusieurs utilisateurs et/ou programmes et manipulées indépendamment de leur représentation physique.
  • 8.
    Model Relationnel Le modèlede données relationnel repose sur une théorie rigoureuse bien qu’adoptant des principes simples. La table relationnelle (relationnel table) est la structure de données de base qui contient des enregistrements, également appelés « lignes » (rows). Une table est composée de colonnes (columns) qui décrivent les enregistrements.(n_uplets) Chaque colonne est composée d’attribut et ce dernier est composé de domaine c’est-à-dire les types de valeurs que prennent ces attributs (entiers , chaines de caractères etc…) Une clé est un attribut (ou un ensemble d’attributs) qui identifie(nt) de manière unique un tuple d’une relation. la clé primaire est la clé utilisée pour référencer une ligne et une seule à partir d’autres. La Clé étrangères est un attributs qui fait référence à une ligne dans une autre table.
  • 9.
    Oracle Oracle est unSGBD (système de gestion de bases de données) édité par la société du même nom (Oracle Corporation - http://www.oracle.com), leader mondial des bases de données. La société Oracle Corporation a été créée en 1977 par Lawrence Ellison, Bob Miner, et Ed Oates. Elle s'appelle alors Relational Software Incorporated (RSI) et commercialise un Système de Gestion de Bases de données relationnelles (SGBDR ou RDBMS pour Relational Database Management System) nommé Oracle. • En 1979, le premier prototype (RDBMS - RSI1) intégrant la séparation des espaces d'adressage entre les programmes utilisateurs et le noyau Oracle est commercialisé. Cette version est entièrement développée en langage assembleur. La seconde version (RDBMS - RSI2) est un portage de l'application sur d'autres plates-formes. • En 1983 la troisième version apporte des améliorations au niveau des performances et une meilleure prise en charge du SQL. Cette version Cette version est entièrement codée en langage C. A la même époque RSI change de raison sociale et devient Oracle
  • 10.
    Oracle (1) • En1984 la première version d'Oracle (Oracle 4) est commercialisée sur les machines IBM. • En 1985 Oracle 5 permet une utilisation client-serveur grâce au middleware SQL*Net. • En 1986 Oracle a été porté sur la plateforme 8086. • En 1988 Oracle 6 est disponible sur un grand nombre de plates-formes et apporte de nombreuses nouvelles fonctionnalités ainsi qu'une amélioration notable des performances. • En 1991, Oracle 6.1 propose une option Parallel Server (dans un premier temps sur la DEC VAX, puis rapidement sur de nombreuses autres plates-formes). • En 1992, Oracle 7 sort sur les plates-formes UNIX (elle ne sortira sur les plates-formes Windows qu'à partir de 1995). Cette version permet une meilleure gestion de la mémoire, du CPU et des entrées-sorties. La base de données est accompagnée d'outils d'administration (SQL*DBA) permettant une exploitation plus aisée de la base. En 1997, la version Oracle 7.3 (baptisée Oracle Universal Server) apparaît, suivie de la version 8 offrant des capacités objet à la base de données
  • 11.
    Oracle (2) Oracle estécrit en langage C et est disponible sur de nombreuses plates-formes matérielles (plus d'une centaine) dont : • AIX (IBM) • Solaris (Sun) • HP/UX (Hewlett Packard) • Windows NT (Microsoft) • Oracle depuis la version 8.0.5 est disponible sous Linux
  • 12.
    Fonctionnalité & versionsOracle Les fonctionnalités d'Oracle • Oracle est un SGBD permettant d'assurer : • La définition et la manipulation des données • La cohérence des données • La confidentialité des données • L'intégrité des données • La sauvegarde et la restauration des données • La gestion des accès concurrents Les versions d'Oracle Oracle se décline en plusieurs versions • Oracle Server Standard, une version comprenant les outils les plus courants de la solution Oracle. Il ne s'agit pas pour autant d'une version bridée... • Oracle Server Enterprise Edition
  • 13.
    Composants Oracle Les composantsd'Oracle Outre la base de données, la solution Oracle est un véritable environnement de travail constitué de nombreux logiciels permettant notamment une administration graphique d'Oracle, de s'interfacer avec des produits divers et d'assistants de création de bases de données et de configuration de celles-ci. On peut classer les outils d'Oracle selon diverses catégories : • Les outils d'administration • Les outils de développement • Les outils de communication • Les outils de génie logiciel • Les outils d'aide à la décision
  • 14.
    Les outils d'administrationd'Oracle Oracle est fourni avec de nombreux outils permettant de simplifier l'administration de la base de données. Parmi ces outils, les plus connus sont : • Oracle Manager (SQL*DBA) • Network Manager • Oracle Enterprise Manager • Import/Export : un outil permettant d'échanger des données entre deux bases Oracle
  • 15.
    Outils de développementd'Oracle (1) Oracle propose également de nombreux outils de développement permettant d'automatiser la création d'applications s'interfaçant avec la base de données. Ces outils de développement sont • Oracle Designer • Oracle Developer • SQL*Plus : une interface interactive permettant d'envoyer des requêtes SQL et PL/SQL à la base de données. SQL*Plus permet notamment de paramétrer l'environnement de travail (formatage des résultats, longueur d'une ligne, nombre de lignes par page, ...) • Oracle Developper : il s'agit d'une suite de produits destinés à la conception et à la création • d'applications client-serveur.
  • 16.
    Outils de développementd'Oracle (2) Il est composé de 4 applications : • Oracle Forms (anciennement SQL*Forms) : un outil permettant d'interroger la base de données de façon graphique sans connaissances préalables du langage SQL. SQL*Forms permet ainsi de développer des applications graphiques (fenêtres, formulaires, ...) permettant de sélectionner, modifier et supprimer des données dans la base. • Oracle Reports (SQL* Repor t Writer) : un outil permettant de réaliser des états • Oracle Graphics : un outil de génération automatique de graphiques dynamiques pour présenter graphiquement des statistiques réalisées à partir des données de la base • Procedure Builder : un outil permettant de développer des procédures, des fonctions et des packages
  • 17.
    Outils de programmation Oracledispose d'un grand nombre d'interfaces (API) permettant à des programmes écrits dans divers langages de s'interfacer avec la base de données en envoyant des requêtes SQL. Ces interfaces (appelées précompilateurs) forment une famille dont le nom commence par PRO* : • Pro*C • Pro*Cobol • Pro*Fortran • Pro*Pascal • Pro*PLI
  • 18.
    Architecture Oracle L’architecture oracleest constituée d’une instance et d’une base de données appelée Database.  Une instance est constituée : • D’une zone de mémoire partagée appelée System Global Area (SGA) • D’un ensemble de processus d’arrière plan ayant chacun un rôle bien précis • D’un ensemble de processus serveur chargés de traiter les requêtes des utilisateurs  La base de données est l’ensemble des fichiers qui permettent de gérer les données de la base. Une base de données est constituée de : • Un fichier de contrôle, contenant les informations sur tous les autres fichiers de la base (nom, emplacement, taille). • Fichiers de Redo Log, contenant l’activité des sessions connectées à la base. Ce sont des journaux de transactions de la base. • fichiers de Redo Log archivés contenant les archives d’anciens fichiers de Redo Log. • fichiers de données qui contiennent les données des tables de la base.
  • 19.
    Architecture Oracle (1) •Le fichier de paramètres Ce fichier contient les paramètres de démarrage de la base et d'autres valeurs qui déterminent l'environnement dans lequel elle s'exécute. Lorsque la base est démarrée, le fichier des paramètres est lu et plusieurs structures mémoire sont allouées en fonction de son contenu. • Le fichier mot de passe le fichier de mot de passe est utilisé pour établir l’authenticité des utilisateurs privilégiés de la base de données. Définition : Une instance est l’ensemble des processus d’arrière-plan (background process) et de zones mémoire qui sont allouées au démarrage de la base de données, pour permettre l’exploitation des données. Une instance ne peut ouvrir qu’une seule base de données à la fois et dans la grande majorité des cas, une base de données est ouverte par une seule instance.
  • 20.
    Architecture Oracle (2) Instance= Zones mémoires (SGA + PGA) + Processus d’arrière Plan
  • 21.
    Architecture Oracle (3) Vued’ensemble de la SGA  SGA (System Global Area) • Mémoire partagée • Chaque instance a sa propre SGA
  • 22.
    Architecture Oracle (4) Zonesde mémoires  Shared pool  Library Cache  Analyse sémantique et syntaxique des requêtes  Plan d’exécution  Gestion du cache en LRU  Dictionnary Cache  Droits des utilisateurs  Descriptions des objets de la base  Database buffer cache  Cache des blocs de données récemment utilisés  Redo Log Buffer  Enregistrement des modifications sur les données
  • 23.
    Architecture Oracle (5) LaPGA Program Global Area  Caractéristiques • Utilisée par les processus (serveur et d’arrière plan) • Mémoire non partagée  Utilisation • Zone de travail (Tris, hachage) • Espace de pile de traitements (Stack Space) Processus Utilisateur: Processus Serveur:
  • 24.
    Architecture Oracle (6) Systèmede stockage: • La structure physique comprend les fichiers de contrôle, les fichiers de journalisation en ligne (online redo log) et les fichiers de données qui constituent la base de données. • La structure logique est composée de tablespaces, de segments, extents (ensemble de blocs contigus) et de blocs de données.
  • 25.
    Architecture Oracle (6) Structurelogique Le block de données est l‘ unité logique la plus fine, 8ko par défaut. l‘ extent est un ensemble contiguë de blocks, alloues en une seule fois. le segment est un ensemble d'extents dédies a un même objet (table, index, ...) Tablespace : regroupe un ensemble d'objets (=segments) pour faciliter leur administration.
  • 26.
    Architecture Oracle (7) Processusarriére plan : Assurent le fonctionnement interne de la base
  • 27.
    Installation Oracle 11g Objectifs Prérequis d’installation  Norme OFA  Installer le logiciel Oracle Exploitation  L’exploitation d’Oracle passe par la connaissance  Des procédures d’installation  Prérequis  Opérations de pré-installation et post-installation  De l’arborescence du noyau  De la norme OFA  La localisation des fichiers de configuration  Un exploitant Oracle doit savoir  Installer le logiciel Oracle  Identifier les composants d’une installation
  • 28.
    Prérequis matériels  Systèmesd’exploitation  MS Windows, NIX : 32 bit, 64 bits  Win NIX  Server, Client Linux, Solaris, AIX, …  Voir documentation Oracle  Mémoire  RAM : 1GB  VRAM/SWAP : 2 x RAM  Espace disque : 6 GB  Processor : Intel, AMD
  • 29.
    Normes OFA  Optimalflexible architecture OFA, Oracle Flexible Architecture, est un ensemble de recommandations sur l’arborescence et le nommage des fichiers du serveur contenant les produits et les bases de données en tenant compte de la possibilité d’avoir plusieurs bases de données et plusieurs versions d’Oracle par plate-forme Le répertoire /app/oracle/oradata/orcl/ contient les fichiers de la base de données « orcl »  Arborescence  Noms des fichiers  Avantages  Organiser de grandes quantités de logiciels et de données  Faciliter les tâches administratives  Faciliter le passage d’une base à une autre
  • 30.
    Normes OFA (1) Répertoire de base  C:app  Fichiers  Fichiers de contrôle (control files) : ce sont des fichiers qui contiennent le nom de la base et la structure de la base et les informations sur l’état de la base Rq: ces fichiers sont nécessaire au démarrage de la base; • controlN.ctl : Select * from v$controlfile; Exemple : control01.ctl  Fichiers journaux (redo log files) : ils contiennent les transactions de la base de données leurs rôles sont la récupération automatique de la base. Et ils sont nécessaire à l’ouverture de la base. • redoN.log : Select * from v$logfile; Exemple : redo04.log  Fichiers de données (data files): ce sont des fichiers binaires qui contiennent les données utilisateurs et le dictionnaire de données. • tN.dbf : select name from v$datafile; Exemple : user01.dbf
  • 31.
    Variables d’environnement  Variablesd’environnement • ORACLE_BASE : répertoire racine d’installation d’Oracle • ORACLE_HOME : racine d’une instance • ORACLE_SID : nom de l’instance  Exemple: • ORACLE_BASE : C:app • ORACLE_HOME : C:appproduct11.1.xdbname • ORACLE_SID : orcl (par défaut) Rq: Une base de données Oracle est désignée par le nom de la base de données, un paramètre, DB_NAME. SHOW PARAMETER DB_NAME
  • 32.
    Oracle Universal Installer(OUI)  Application Java : interface consistante • Utilisation • Installation • Désinstallation • Patch • Mise à niveau  Exemple : • setup.exe (Windows) • Runinstaller.sh sous NIX
  • 33.
    SQL*Plus Cette interface estla plus pratique, car elle permet facilement de copier-coller des blocs instructions SQL et PL/SQL. Malheureusement la version 11g n’en dispose pas. Pour lancer SQL*Plus graphique, menu Démarrer Programmes/Oracle…/Application Développement /SQL Plus. Saisir les trois champs afin d’obtenir la fenêtre de commandes.
  • 34.
    SQL Développer En l’absenced’interface graphique, la version 11g d’Oracle propose l’outil SQL Developer (menu Démarrer Oracle.../Développement d’applications). Au premier lancement, il vous sera demandé le chemin du répertoire contenant l’exécutable java.exe. SQL Developer permet de nombreuses fonctionnalités pour manipuler tous les objets d’un schéma (tables, procédures, déclencheurs, vues, etc.), cependant aucune commande SQL*Plus (COL, ACCEPT...) n’est prise en compte.
  • 35.
    Chronologie des versionsd’oracle 1979 Oracle 2 Première version commerciale écrite en C/assembleur pour Digital – pas de mode transactionnel. 1983 Oracle 3 Réécrit en C - verrous. 19984 Oracle 4 Portage sur IBM/VM, MVS, PC – transaction (lecture consistante). 1986 Oracle 5 Architecture client-serveur avec SQL*Net – version pour Apple. 1988 Oracle 6 Verrouillage niveau ligne – sauvegarde/restauration – AGL – PL/SQL. 1991 Oracle 6.1 Parallel Server sur DEC. 1992 Oracle 7 Contraintes référentielles – procédures cataloguées – déclencheurs – version Windows en 1995. 1994 Serveur de données vidéo. 1995 Connexions sur le Web. 1997 Oracle 8 Objet-relationnel – partitionnement – LOB – Java. 1998 Oracle 8 i i comme Internet, SQLJ – Linux – XML. 2001 Oracle 9 i Services Web – serveur d’applications – architectures sans fil. 2004 Oracle 10g g comme Grid computing (ressources en clusters) 2007 Oracle 11g Auto-configuration. 2010 Oracle 12 c
  • 36.
    Présentation du langageSQL  Historique , norme et succès  Caractéristiques du langage SQL  Les principaux types de langages  Les limites du langage SQL  Schéma HR et tables utilisés dans ce cours
  • 37.
    Historique C’est IBM, àtout seigneur tout honneur, qui, avec System-R, a implanté le modèle relationnel au travers du langage SEQUEL (Stuctured English as Query Language) rebaptisé par la suite SQL (Structured Query Language). La première norme (SQL1) date de 1987. Elle était le résultat de compromis entre constructeurs, mais fortement influencée par le dialecte d’IBM. SQL2 a été normalisée en 1992. Elle définit quatre niveaux de conformité : le niveau d’entrée (entry level), les niveaux intermédiaires (transitional et intermediate levels) et le niveau supérieur (full level). Les langages SQL des principaux éditeurs sont tous conformes au premier niveau et ont beaucoup de caractéristiques relevant des niveaux supérieurs. La norme SQL3 (intitulée initialement SQL:1999) comporte de nombreuses parties : concepts objets, entrepôts de données, séries temporelles, accès à des sources non SQL, réplication des données, etc. (chaque partie étant nommée ISO/ IEC 9075-i:2003, i allant de 1 à 13). La plus récente partie de la norme de 2006 (ISO/IEC 9075-14:2006) est consacré à XML.
  • 38.
    Historique (suite) Le succèsque connaissent les grands éditeurs de SGBD relationnels (IBM, Oracle, Microsoft, Sybase et Computer Associates) a plusieurs origines et repose notamment sur SQL : Le langage est une norme depuis 1986 qui s’enrichit au fil du temps. SQL peut s’interfacer avec des langages de troisième génération comme C ou Cobol, mais aussi avec des langages plus évolués comme C++ et Java. Certains considèrent ainsi que le langage SQL n’est pas assez complet (le dialogue entre la base et l’interface n’est pas direct) et la littérature parle de « défaut d’impédance » (impedance mismatch). Les SGBD rendent indépendants programmes et données (la modification d’une structure de données n’entraîne pas forcément une importante refonte des programmes d’application). Ces systèmes sont bien adaptés aux grandes applications informatiques de gestion (architectures type client-serveur et Internet) et ont acquis une maturité sur le plan de la fiabilité et des performances.
  • 39.
    Caractéristique du langageSQL SQL est un langage déclaratif qui permet d’interroger une base de données sans se soucier de la représentation interne (physique) des données, de leur localisation, des chemins d’accès ou des algorithmes nécessaires. A ce titre il s’adresse à une large communauté d’utilisateurs potentiels (pas seulement des informaticiens) et constitue un des atouts les plus spectaculaires (et le plus connu) des SGBDR. On peut l’utiliser de manière interactive, mais également en association avec des interfaces graphiques, des outils de reporting ou, très généralement, des langages de programmation. Rôle: SQL permet de manipuler des données stockées dans des bases de données relationnelles. Depuis sa création en 1974 par IBM et normalisé depuis 1986 (ANSI et ISO) reconnu par la grande majorité des SGBDR du marché : - Oracle - SQL Server - PostgreSQL - MySQL
  • 40.
    Les principaux typesde langages Les types de langages Ordre SQL Définition Langage de définition de données (LDD) CREATE – ALTER – DROP - COMMENT- RENAME - TRUNCATE Permet de définir les objets de la base en créant ,modifiant et renommer des objets. Langage de manipulation de données (LMD) INSERT – UPDATE - DELETE - MERGE Permet une manipulation des objets et des transactions effectuées. Langage de contrôle de données (LCD) GRANT – REVOKE - COMMIT - ROLLBACK - SAVEPOINT Contrôle les données avec des notions de privilèges et schémas Langage d’interrogation de données (LID) SELECT Il interroge les données de la base
  • 41.
    Les limites dulangage SQL • Non procédural - PL/SQL (Oracle) - T-SQL (SQL Server) - PlpgSQL (PostgreSQL) • Portabilité limité - Fonctions spécifiques à chaque SGBDR - Typage différent d’un SGBDR à un autre
  • 42.
    Schéma HR ettables utilisés dans ce cours
  • 43.
    Schéma Notion de schéma Leterme SCHÉMA désigne l’ensemble des objets qui appartiennent à un utilisateur, ces objets sont préfixés par le nom de l’utilisateur qui les a créés. En général on indique sous le terme de schéma, l’ensemble des tables et des index d’une même application. Principaux types d’objets de schéma :  Tables et index  Vues, séquences et synonymes  Programmes PL/SQL (procédures, fonctions, packages, triggers)
  • 44.
    Règles de nommage Règlesde nommage Un nom de structure Oracle doit respecter les règles suivantes : • 30 caractères maximums • Doit commencer par une lettre • Peut contenir des lettres, des chiffres et certains caractères spéciaux (_$#) • N’est pas sensible à la casse • Ne doit pas être un mot réservé Oracle
  • 45.
    Chapitre I :Mode de Connexion et gestion des données  Connexion à une base de données  Connexion  Session  SQL Plus et SQL Développer  La Gestion des données 1) Gestion des utilisateurs - création utilisateur - modifier utilisateur - supprimer utilisateur - droit d’accès 2) Gestion des privilèges - Privilèges sur objets, - privilèges systèmes 3) Gestion des rôles - Création rôles - Accorder des rôles - Modifier rôles - Distinction entre privilèges et rôles
  • 46.
    Connexion à unebase de données Processus de connexion à une instance de base de données Pour pouvoir soumettre des instructions SQL à Oracle, l'utilisateur doit se connecter à une instance de base de données. • L'utilisateur démarre un outil, par exemple SQL*Plus, ou exécute une application développée à l'aide d'un outil tel qu'Oracle Forms. Cette application ou cet outil est exécuté dans un processus utilisateur. • Dans la configuration la plus simple, un processus est créé sur l'ordinateur qui exécute le serveur Oracle lorsqu'un utilisateur se connecte au serveur. Ce processus s'appelle un processus serveur. Ce processus communique avec l'instance de base de données Oracle pour le compte du processus utilisateur exécuté sur le client. Le processus serveur exécute les instructions SQL pour le compte de l'utilisateur
  • 47.
    Connexion à unebase de données(1) Les administrateurs systèmes se connectent de la façon suivante sans mot de passe en tant que SYSDBA : C:/> sqlplus /nolog : sans connexion Sqlplus:/> connect /as sysdba (administrateur système) Rq: vous pouvez supprimer cette option: il suffit de neutraliser cette ligne du fichier sqlnet.ora # SQLNET.AUTHENTICATION_SERVICES= (NTS) Sqlplus:> sys/system as sysdba Sqlplus:/> system/oracle@ orcl (administrateur de BD) - Invite de commande Dos de Windows sqlplus nom utilisateur /mdp@ service : sqlplus system/oracle@alpha112 Service : le nom de la base décrit dans le fichier tnsnames.ora - Connexion via SQL PLUS Nom utilisateur : xxxxxxx Mot de passe : xxxxxxxx > Oracle Database 11g
  • 48.
    Connexion Connexion Une connexion estun chemin de communication entre un processus utilisateur et un serveur Oracle. L'utilisateur d'une base de données peut se connecter à un serveur Oracle de trois manières : • Il peut se connecter au système d'exploitation qui exécute l'instance de base de données Oracle et démarrer une application ou un outil qui accède à la base de données du système. Le chemin de communication est établi à l'aide des mécanismes de communication interprocessus du système d'exploitation hôte. • L'utilisateur démarre l'application ou l'outil sur un ordinateur local et se connecte, via un réseau, à l'ordinateur qui exécute l'instance de base de données Oracle. Dans cette configuration, appelée client-serveur, le logiciel réseau permet à l'utilisateur et au serveur Oracle de communiquer. • Dans une connexion à trois niveaux (3-tiers), l'ordinateur de l'utilisateur communique, sur le réseau, avec une application ou un serveur réseau. Ce dernier est connecté, via un réseau, à la machine exécutant l'instance de base de données Oracle. Par exemple, l'utilisateur exécute un navigateur sur un ordinateur en réseau pour utiliser une application résidant sur un serveur NT qui extrait les données d'une base de données Oracle s'exécutant sur un hôte UNIX.
  • 49.
    Session Définition Une session estune connexion spécifique d'un utilisateur à un serveur Oracle. La session démarre lorsque l'utilisateur est authentifié par le serveur Oracle, et elle se termine lorsque l'utilisateur se déconnecte ou lorsqu'un arrêt anormal se produit. Un utilisateur de base de données peut ouvrir plusieurs sessions simultanées s'il se connecte simultanément à partir de plusieurs outils, applications ou terminaux. En règle générale, le serveur Oracle doit être disponible pour que l'on puisse ouvrir une session, sauf si l'ouverture est effectuée par certains outils spéciaux d'administration de base de données.
  • 50.
    Gestion des données Ilexiste deux manières pour créer un utilisateur ; la différence réside dans le choix de l’authentification de la personne. En effet soit nous pouvons avoir une authentification par le serveur, soit une authentification par le système d’exploitation de la machine. A- Authentification par le système d’exploitation: L’utilisateur utilise la machine, il a dut entrer son mot de passe, donc il est autorisé à utiliser le serveur car l’inconvénient est que si on arrive à pirater l’os la base de données est à la merci du pirate. Create user name identified externally; B- authentification par le serveur Dans ce cas la le serveur a besoin que vous confirmiez votre identité par un mot de passe. Ce mécanisme d’ identification est fortement recommandé car il offre un niveau supplémentaire de sécurité. Create user name identified by mot de passe;
  • 51.
    Gestion des Utilisateurs Gestion des utilisateurs Les deux administrateurs de base de données par défaut SYS et SYSTEM sont créés automatiquement ont le rôle de DBA. Ces opérations doivent être réalisées par les administrateurs de base de données. Les deux comptes utilisateur de base de données SYS et SYSTEM sont créés automatiquement avec la base de données et reçoivent le rôle d'administrateur de base de données, un rôle prédéfini créé systématiquement avec chaque base de données. Ce rôle dispose de tous les privilèges système sur la base de données.
  • 52.
    Gestion des Utilisateurs Gestion des utilisateurs SYS ET SYSTEM SYS Lors de la création d'une base de données, l'utilisateur SYS, identifié à l'origine par le mot de passe change_on_install, est créé automatiquement et obtient le rôle d'administrateur de base de données. Toutes les tables et vues de base du dictionnaire de données sont stockées dans le schéma SYS. SYSTEM Lors de la création d'une base de données, l'utilisateur SYSTEM, identifié à l'origine par le mot de passe manager, est également créé automatiquement et reçoit les privilèges du rôle d'administrateur de base de données. D'autres tables et vues appartenant à l'utilisateur SYSTEM sont également créées. Elles contiennent des informations d'administration utilisées par les outils Oracle. SYS et SYSTEM sont des utilisateurs standard, stockés dans le dictionnaire de données, qui ne peuvent se connecter que lorsque la base de données est ouverte. Remarque : vous serez certainement amené à créer au moins un nom d'administrateur supplémentaire pour exécuter les tâches d'administration quotidiennes.
  • 53.
    Gestion des Utilisateurs(1) • Création d’un utilisateur CREATE USER user_name IDENTIFIED BY mot_de_passe; Identified by mot_de_passe : permet d’ affecter un mot de passe à un utilisateur local Exemple : créer un utilisateur toto avec un mot de passe oracle CREATE USER toto IDENTIFIED BY oracle; • Modification ALTER USER user_name… Exemple : Modifier le mot de passe de toto qui est oracle en sabs ALTER USER toto identified by sabs; • Supprimer un utilisateur DROP USER user_name CASCADE ; Cascade : l’option cascade force la suppréssion et détruit tous les objets du schéma de l’utilisateur. Exemple : supprimer l’utilisateur toto DROP USER toto CASCADE;
  • 54.
    Droit d’accès Les droitsd’accès d’un compte utilisateur assurent la sécurité en mettant des systèmes de verrouillage. Verrouillage d’un compte utilisateur. ALTER USER user_name ACCOUNT LOCK; ACCOUNT: pour verrouiller ou libérer l’accès à la base LOCK : bloqué Exemple : Verrouiller le compte utilisateur de toto. ALTER USER toto ACCOUNT LOCK; Déverrouillage d’un compte utilisateur ALTER USER user_name ACCOUNT UNLOCK; UNLOCK:: débloqué Exemple : ALTER USER toto ACCOUNT UNLOCK;
  • 55.
    Privilèges Un privilège (sous-entenduutilisateur) est un droit d’exécuter une certaine instruction SQL (on parle de privilège système), ou un droit d’accéder à un certain objet d’un autre schéma(on parle de privilège objet). Les privilèges systèmes différent sensiblement d’un SGBD à un autre. Nous avons deux types de privilèges qui sont : Privilèges systèmes CREATE SESSION , CREATE TABLE , CREATE SEQUENCE , CREATE VIEW , CREATE PROCEDURE. Exemple: donner les privilèges systèmes à l’utilisateur John. GRANT CREATE SESSION , CREATE TABLE, CREATE SEQUENCE , CREATE PROCEDURE, CREATE VIEW TO JOHN; Exemples : Donner l’utilisateur toto les droits de privilèges nécessaires GRANT connect, resource TO toto;
  • 56.
    Privilège Système WITH ADMINOPTION : permet d’attribuer aux bénéficiaires le droit de retransmettre les ou le privilège reçu à une tierce personne utilisateurs EX: GRANT CREATE SESSION , CREATE TABLE, CREATE SEQUENCE , CREATE PROCEDURE, CREATE VIEW TO JOHN WITH ADMIN OPTION; EX: GRANT CREATE TABLE TO TOTO; Exemple : ALL PRIVILEGES : tous les privilèges systèmes. Accorder à toto tous les privilèges systèmes GRANT ALL PIVILEGES TO toto;
  • 57.
    Révocations de privilègessystème La révocation d’un ou de plusieurs privilèges est réalisée par l’instruction REVOKE. Cette commande permet d’annuler un privilège système ou un rôle d’un utilisateur. Pour pouvoir révoquer un privilège ou un rôle vous devez détenir au préalable ce privilège avec l’option WITH ADMIN OPTION Syntaxe: REVOKE [ privilège système] FROM USER; Exemple : Annuler le privilège de CREATE TABLE à l’utilisateur toto REVOKE CREATE TABLE FROM toto; Annuler le privilège de CREATE SESSION à l’utilisateur toto REVOKE CREATE SESSION FROM toto;
  • 58.
    Privilège Objet Les privilègesobjet sont relatives aux données de la base et aux actions sur les objets(table, vue, séquence, procédure). Il permet l’accès et la manipulation d’objets ( select, update, delete, insert, execute) Syntaxe : GRANT [SELECT |INSERT|UPDATE|DELETE] ON TABLE TO username; SELECT : afficher les colonnes de la base INSERT : insertion de lignes UPDATE: modifications de lignes DELETE : supprimer de lignes
  • 59.
    Privilège Objet Exemple : Donnerle privilege objet SELECT , INSERT, UPDATE, DELETE à l’utilisateur john GRANT SELECT, INSERT, UPDATE , DELETE ON schema. Table TO JOHN; Ex: avec WITH GRANT OPTION GRANT SELECT, INSERT, UPDATE , DELETE ON schema. Table TO JOHN WITH GRANT OPTION EX: Donner le privilege objet SELECT à l’utilisateur JOHN ; GRANT SELECT ON scott.EMP TO JOHN; Rq: avec l’option WITH ADMIN OPTION GRANT SELECT ON scott.EMP TO JOHN WITH GRANT OPTION ;
  • 60.
    Révocation de privilègesObjet Pour pouvoir révoquer un privilège objet vous devez détenir au préalable cette permission ou avoir reçu le privilège système ANY OBJECT PRIVILEGE. Il n’est pas possible d’annuler un privilège objet qui a été accordé avec l’option WITH GRANT OPTION. Syntaxe : REVOKE [ Privilège Object ] ON [schéma. nomObject] FROM USER Exemple : Annuler le privilège de lire SELECT la table département à l’utilisateur toto REVOKE SELECT ON toto.DEPARTMENT FROM toto; Annuler le privilège de modifier UPDATE à l’utilisateur toto REVOKE UPDATE ON toto.DEPARTMENT FROM toto; Annuler le privilège de supprimer la table département à l’utilisateur toto. REVOKE DELETE ON toto.DEPARTMENT FROM toto;
  • 61.
  • 62.
    rôle Un rôle estun ensemble nommé de privilèges(systèmes ou objets). Un rôle est accordé à un ou plusieurs utilisateurs. Cela peut devenir problématique s’il faut donner plusieurs privilèges à plusieurs utilisateurs. Pour simplifier ce problème, il faut utiliser un rôle. Pour créer un rôle, il vous suffit de procéder pratiquement tout comme la création d’un utilisateur. Création de role : CREATE ROLE nomderole NOT IDENTIFIED; Ex: créer le rôle comptable Create role comptable not identified ; une foi l’utilisateur crée , il vous suffit de lui donner les privilèges (sur système ou sur objet) Privilège objet : Grant select , insert, update, delete on schéma.table to nomderole; Ex: Grant select ,insert, update , delete on scott.emp to comptable;
  • 63.
    rôle (1) Privilège système: GRANTCREATE TABLE , CREATE SESSION, CREATE PROCEDURE TO COMPTABLE; Pour affecter à des utilisateurs le role comptable on procédé comme suit: GRANT COMPTABLE TO USER1 , USER2 ; Suppression de role ; Drop role nomderole; Ex : supprimer le role comptable Drop role comptable;
  • 64.
  • 65.
    Chapitre II :Utilisations des instructions LDD pour créer des tables  Décrire les instructions LDD  Conventions de dénomination  Identifier les types de données  Créer des tables à l'aide de l'instruction CREATE TABLE  Décrire les contraintes  Modifier une table  Supprimer une table
  • 66.
    Décrire les instructionsLDD Un schéma est la collection d'objets de base de données multiples, qui sont connus comme schéma Object. • Table- pour stocker des données •  View représente de manière logique des sous-groupes de données issue d'une ou plusieurs tables •  Séquence - pour générer des valeurs numériques •  Index - d'améliorer les performances des requêtes sur les tables • Synonyme - Alternative nom d'un objet
  • 67.
    Conventions de Dénomination Unnom : – Doit commencer par une lettre – Peut comporter de 1 à 30 caractères – Ne peut contenir que les caractères A à Z, a à z, 0 à 9, _, $, et # – Ne doit pas porter le nom d’un autre objet appartenant au même utilisateur – Ne doit pas être un mot réservé Oracle8 Server
  • 68.
  • 69.
    L’ordre CREATE TABLE Pourcréer une table dans la base de données, un DBA doit disposer de certaines informations dans la main - le nom de table, nom de la colonne, les types de données de colonne, et tailles de la colonne. Toutes ces informations peuvent être modifié ultérieurement en utilisant les commandes DDL . – Vous devez posséder : • Un privilège CREATE TABLE • Un espace de stockage Syntaxe : – Spécifiez : • Un nom de table • Le nom, le type de données et la taille des colonnes.
  • 70.
    Exemple de créationde tables Exemple: Créer la table client CREATE TABLE client (n_client Number(10) , nomc varchar2 (10), prenom1 varchar2 (10), ville varchar2 (10), sexe char (1));
  • 71.
    Références aux tablesd’un autre utilisateur – Les tables appartenant à d'autres utilisateurs ne sont pas dans le schéma utilisateur. – Le nom du propriétaire doit précéder le nom de la table. Exemple : Select * from userA.employees; Select last_name , salary from userB.employees;
  • 72.
    Option DEFAULT Spécifie lavaleur par défaut d'une colonne. • Valeurs autorisées : littéraux, expressions et fonctions SQL. • Valeurs non-autorisées : noms d'autres colonnes ou pseudo - colonnes. • Le type de données par défaut doit correspondre à celui de la colonne.
  • 73.
    Modification de tables Pourmodifier le nom d'une table, d'une vue, d'une séquence ou d'un synonyme, utilisez l'ordre RENAME. Exemple : renommer la table dept en department RENAME dept TO department; Vous devez être propriétaire de l'objet
  • 74.
    Suppression de Tables •Lastructure et toutes les données de la table sont supprimées. •Tous les index sont supprimés. •La transaction en instance est validée. •Une suppression de table ne peut être annulée. Exemple : Supprimer la table dept30 DROP TABLE dept30;
  • 75.
    READ - ONLYTABLES Read - only ou lectures seules des tables sont venus comme une amélioration dans Oracle 11g. IL permet les tables à utiliser pour un seul but de les lire. Dans les versions antérieures d'Oracle, des tables ont été faites en lecture seule par l'octroi d'un privilège SELECT pour les autres utilisateurs, mais le propriétaire avait encore la lecture écriture privilege.Mais maintenant, si une table est mis en lecture seule, même propriétaire n'a pas accès à la manipulation des données .(INSERT , UPDATE , DELETE , MERGE,). Syntaxe: •ALTER TALBE [TABLE NAME] READ ONLY Modifier la table en lecture seule ou on pourra seulement la lire •ALTER TALBE [TABLE NAME] READ WRITE Modifier la table en lecture écriture ou des modifications sont possible
  • 76.
    READ ONLY ETREAD WRITE - Creation de table ORATEST CREATE TABLE ORATEST (id NUMBER) - Ajout de lignes INSERT INTO ORATEST VALUES (1); - Modifier la table en lecture seule ALTER TABLE ORATEST READ ONLY; - Ajout de lignes INSERT INTO ORATEST VALUES (2); ERROR at line 1: erreur à la ligne les opérations LMD ne sont pas autorisées ORA-12081: update operation not allowed on table "TEST"."ORATEST“ Pour lever le Read only on utilise le Read write . Exemple : - Modifier la table ORATEST en READ WRITE ALTER TABLE ORATEST READ WRITE; Exemple: supprimer la table ORATEST DELETE FROM ORATEST;
  • 77.
    Les Contraintes Les Typesde contraintes valides dans Oracle : • NOT NULL : Une contrainte NOT NULL signifie qu'une ligne de données doit avoir une valeur pour la colonne spécifiée comme NOT NULL. • UNIQUE : contrainte UNIQUE chaque colonne peut être utilisée pour faire respecter cette règle et Oracle va rejeter toutes les lignes qui violent la contrainte et garantit que les valeurs de la colonne sont distincte , sans doublons • PRIMARY KEY: Chaque table doit normalement contenir une colonne ou un ensemble de colonnes qui identifie de façon unique des lignes de données qui sont stockées dans la colonne table. • FOREIGN KEY: Lorsque deux tables partagent la relation parent-enfant sur la base de colonne spécifique, la colonne se joindre à la table enfant est connu en tant que propriété Key • CHECK: exige que la condition de contrôle spécifié est vrai ou inconnue pour chaque ligne stockée dans la contrainte table.Check permet d'imposer une règle conditionnelle sur un colonne, qui doit être validé avant de données est inséré dans la colonne
  • 78.
    Conventions Applicables auxContraintes –Si vous ne nommez pas une contrainte, Oracle8 Server créera un nom au format SYS_Cn. –Vous pouvez créer une contrainte : •En même temps que la création de la table •Une fois que la table est créée –Définissez une contrainte peut être définie au niveau table ou colonne. –Consulter le dictionnaire de données pour retrouver une contrainte.
  • 79.
    Définir les Contraintes Syntaxe Contrainteniveau colonne: Contrainte niveau Table :
  • 80.
    Exemple d’utilisation deContraintes Exemple de Contrainte au niveau colonne Exemple de Contrainte au niveau Table
  • 81.
    Contrainte NOT NULL Unecontrainte NOT NULL signifie qu'une ligne de données doit avoir une valeur pour la colonne spécifiée comme NOT NULL.si une colonne est spécifiée comme NOT NULL, le SGBDR Oracle ne permettra pas de lignes à être stockés à la table des employés qui violent cette contrainte. Il ne peut être défini au niveau de la colonne, et non au niveau de la table . Syntaxe: •COLUMN [data type] [NOT NULL] Exemple : Matriule NUMBER (5) NOT NULL ;
  • 82.
    Contrainte de CléUnique Parfois, il est nécessaire de garantir l'unicité pour une valeur de colonne qui est pas une clé primaire contrainte UNIQUE colonne peut être utilisée pour faire respecter cette règle et Oracle va rejeter toutes les lignes qui violent la contrainte de contrainte . Syntaxe: Niveau Colonne : COLUMN [data type] [CONSTRAINT <name>] [UNIQUE] Exemple: CREATE TABLE TEST ( ... , NAME VARCHAR2(20) CONSTRAINT TEST_NAME_UK UNIQUE, ... ); Niveau table : CONTRAINTE [nom de la contrainte] UNIQUE (nom de colonne) Exemple : CREATE TABLE TEST ( ... , NAME VARCHAR2(20), STD VARCHAR2(20) , CONSTRAINT TEST_NAME_UK UNIQUE (NAME, STD) );
  • 83.
    Contrainte PRIMARY KEY Syntaxe: Niveaude la colonne: COLUMN [data type] [CONSTRAINT <constraint name> PRIMARY KEY] L'exemple suivant montre comment utiliser la contrainte de clé primaire au niveau de la colonne: CREATE TABLE TEST ( ID NUMBER CONSTRAINT TEST_PK PRIMARY KEY, ... ); Niveau de la table: CONSTRAINT [constraint name] PRIMARY KEY [column (s)] L'exemple suivant montre comment définir la clé primaire composite en utilisant la contrainte de clé primaire au niveau de la table. CREATE TABLE TEST ( ..., CONSTRAINT TEST_PK PRIMARY KEY (ID) );
  • 84.
    Contrainte FOREIGN KEY Syntaxe: NiveauColonne: • COLUMN [data type] [CONSTRAINT] [constraint name] [REFERENCES] [table name (column name)] Exemple : CREATE TABLE TEST (ccode varchar2(5) CONSTRAINT TEST_FK REFERENCES PARENT_TEST(ccode) , ... ); Niveau table: • CONSTRAINT [constraint name] [FOREIGN KEY (foreign key column name) REFERENCES] [referenced table name (referenced column name)]
  • 85.
    Mots-clés associés àla Contrainte FOREIGN KEY – FOREIGN KEY • Définit la colonne dans la table détail dans une contrainte de niveau table – REFERENCES • Identifie la table et la colonne de la table maître – ON DELETE CASCADE • Autorise la suppression d’une ligne dans la table maître et des lignes dépendantes dans la table détail
  • 86.
    Contrainte CHECK • Définitune condition que chaque ligne doit obligatoirement satisfaire Syntaxe: Niveau de la colonne: COLUMN [data type] CONSTRAINT [name] [CHECK (condition)] Exemple : CREATE TABLE TEST ( ..., GRADE char (1) CONSTRAINT TEST_CHK CHECK (upper (GRADE) in ('A','B','C')), ); Niveau de la table: CONSTRAINT [name] CHECK (condition) Exemple : CREATE TABLE TEST ( ..., CONSTRAINT TEST_CHK CHECK (stdate < = enddate), );
  • 87.
    Ajout d’une Contrainte Syntaxe: ALTER TABLE table ADD [CONSTRAINT constraint] type (column); • Vous pouvez ajouter ou supprimer une contrainte, mais pas la modifier • Vous pouvez activer ou désactiver des contraintes • Pour ajouter une contrainte NOT NULL, utilisez la clause MODIFY Exemple : Ajouter une contrainte FOREIGN KEY à la table EMP précisant qu'un manager doit déjà exister dans la table EMP en tant qu'employé valide . ALTER TABLE emp ADD CONSTRAINT emp_mgr_fk FOREIGN KEY(mgr) REFERENCES emp(empno);
  • 88.
    Suppression d'une Contrainte Exemple1: Supprimer de la table EMP la contrainte concernant le manager. ALTER TABLE emp DROP CONSTRAINT emp_mgr_fk; Exemple2 : Supprimer la contrainte PRIMARY KEY de la table DEPT, ainsi que la contrainte FOREIGN KEY associée définie sur la colonne EMP.DEPTNO ALTER TABLE dept DROP PRIMARY KEY CASCADE;
  • 89.
    Activation de Contraintes •Pour activer une contrainte d'intégrité actuellement désactivée dans la définition de la table, utiliser la clause ENABLE. Exemple: ALTER TABLE emp ENABLE CONSTRAINT emp_empno_pk; • Si vous activez une contrainte UNIQUE ou PRIMARY KEY, un index correspondant est automatiquement créé
  • 90.
    Désactivation de Contraintes •Pour désactiver une contrainte d'intégrité, utiliser la clause DISABLE de l'ordre ALTER TABLE. • Pour désactiver les contraintes d'intégrité dépendantes, ajouter l'option CASCADE. Exemple : ALTER TABLE emp DISABLE CONSTRAINT emp_empno_pk CASCADE;
  • 91.
    Chapitre III :Manipulation de données  Ajouter de nouvelles lignes à une table  Modifier les données d'une table  Supprimer les lignes d’une table  Utiliser les instructions TRUNCATE  Transactions de la base de données
  • 92.
    Langage de Manipulationdes Données • Un ordre du LMD est exécuté lorsque : – Vous ajoutez des lignes à une table – Vous modifiez des lignes existantes dans une table – Vous supprimez des lignes d'une table – Une transaction est un ensemble d'ordres du LMD formant une unité de travail logique.
  • 93.
    Ajouter des lignesd’une table L'ordre INSERT permet d'ajouter de nouvelles lignes dans une table. La commande INSERT est utilisé pour stocker des données dans des tables .La commande INSERT est souvent utilisé dans plus haut niveau des langages de programmation tels que Visual Basic.NET ou C ++ comme une commande SQL embarqué; - Cette syntaxe n'insère qu'une seule ligne à la fois
  • 94.
    Insertion de nouvelleslignes – Insérez une nouvelle ligne en précisant une valeur pour chaque colonne. – Eventuellement, énumérez les colonnes dans la clause INSERT. – Indiquez les valeurs dans l'ordre par défaut des colonnes dans la table. – Placez les valeurs de type caractère et date entre simples quottes
  • 95.
    Insertion de lignescontenant des valeurs NULL Méthode implicite : ne spécifiez pas la colonne dans la liste. Méthode explicite : spécifiez le mot-clé NULL.
  • 96.
    Insertion de datedans un format spécifique Ajout d'un nouvel employé. Vérification de l’ajout
  • 97.
    Modifier les lignesd’une table Utilisez l’ordre Update pour modifier des lignes existantes La commande de mise à jour modifie les données stockées dans une colonne il peut mettre à jour une ou plusieurs lignes à la fois en fonction de l'ensemble de résultats filtrés par les conditions spécifiées dans la clause WHERE Si nécessaire, vous pouvez modifier plusieurs lignes à la fois.
  • 98.
    Modifications de lignesd’une Table La clause WHERE permet de modifier une ou plusieurs lignes spécifiques. Si vous omettez la clause WHERE, toutes les lignes sont modifiées.
  • 99.
    Supprimer les lignesd’une table Vous pouvez supprimer des lignes d'une table au moyen de l'ordre DELETE. La commande DELETE est l'un des plus simple des instructions SQL. Il supprime une ou plusieurs lignes d'une table. Plusieurs tableau, supprimer les opérations ne sont pas autorisés dans SQL.
  • 100.
    Exemple Suppression deligne d’une table La clause WHERE permet de supprimer une ou plusieurs lignes spécifiques. Si vous omettez la clause WHERE, toutes les lignes sont supprimées.
  • 101.
    Vider une table •TRUNCATE ou Tronquée est une commande de DDL qui est utilisé pour débusquer tous les enregistrements d'une table, mais en conservant la structure de la table. Il ne supporte pas la condition WHERE pour supprimer les enregistrements sélectionnés . • Syntaxe • Exemple : vider la table copy_emp
  • 102.
    Transactions de laBases de Données Une transaction se compose des éléments suivants : – Ensemble d'ordres du LMD effectuant une modification cohérente des données – Un ordre du LDD – Un ordre du LCD Une transaction : – Commence à l'exécution du premier ordre SQL – Se termine par l'un des événements suivants : • COMMIT ou ROLLBACK • Exécution d'un ordre LDD ou LCD (validation automatique) • Fin de session utilisateur • Panne du système
  • 103.
    Avantages des OrdresCOMMIT et ROLLBACK – Garantit la cohérence des données – Possibilité d'afficher le résultat des modifications avant qu'elles ne soient définitives – Regroupement logique d'opérations
  • 104.
    Traitement Implicite desTransactions – Une validation automatique a lieu dans les situations suivantes : • Exécution d'un ordre du LDD • Exécution d'un ordre du LCD • Sortie normale de SQL*Plus, sans ordre COMMIT ou ROLLBACK explicite – Il se produit un rollback automatique en cas de sortie anormale de SQL*Plus ou d'une panne du système
  • 105.
    Etat des DonnéesAvant COMMIT ou ROLLBACK - Il est possible de restaurer l'état précédent des données. – L'utilisateur courant peut afficher le résultat des opérations du LMD au moyen de l'ordre SELECT. – Les résultats des ordres du LMD exécutés par l'utilisateur courant ne peuvent pas être affichés par d'autres utilisateurs. – Les lignes concernées sont verrouillées. Aucun autre utilisateur ne peut les modifier
  • 106.
    Etat des DonnéesAprès COMMIT – Les modifications des données dans la base sont définitives. – L'état précédent des données est irrémédiablement perdu. – Tous les utilisateurs peuvent voir le résultat des modifications. – Les lignes verrouillées sont libérées et peuvent de nouveau être manipulées par d'autres utilisateurs. – Tous les savepoints sont effacés.
  • 107.
    Annulation des ModificationsJusqu'à une Etiquette – Posez une étiquette dans la transaction courante au moyen de l'ordre SAVEPOINT. – Annulez la transaction jusqu'à cette étiquette en utilisant l'ordre ROLLBACK TO SAVEPOINT.
  • 108.
    Validation de données Effectuezles modifications Validez les modifications
  • 109.
    Etat des DonnéesAprès ROLLBACK • L'ordre ROLLBACK rejette toutes les modifications de données en instance. – Les modifications sont annulées. – L'état précédent des données est restauré. – Les lignes verrouillées sont libérées.
  • 110.
    Rollback au NiveauOrdre – Si un seul ordre du LMD dans la transaction échoue, seul cet ordre est annulé. – Oracle8 met en œuvre un savepoint implicite. – Toutes les autres modifications sont conservées. – L'utilisateur doit terminer explicitement les transactions en exécutant un ordre COMMIT ou ROLLBACK.
  • 111.
  • 112.
    Chapitre IV :Evolution d’un schéma  Ajouter de colonnes  Modifier de colonnes  Renommer de colonnes  Supprimer de colonnes
  • 113.
    L’ ordre ALTERTABLE Un DBA peut apporter des modifications aux définitions de structure de table ou de colonne après la table a été créée dans la base de données de commande ALTER TABLE DDL est utilisé pour effectuer une telle action. ALTER TABLE est utilisée d'ajouter, supprimer , renommer et modifier une colonne dans une table. • Utilisez l'ordre ALTER TABLE pour : – Ajouter une colonne – Modifier une colonne existante – Renommer une colonne – Supprimer colonne
  • 114.
    Ajout d’une Colonne Onutilisez la directive ADD pour ajouter des colonnes dans l’instruction ALTER TABLE Exemple : Ajouter une colonne dans la table dept30 ALTER TABLE dept30 ADD (job VARCHAR2(9)); Le ci-dessous ALTER TABLE ajoute une nouvelle TESTCOL de colonne à la table EMP_NEW ALTER TABLE EMP_NEW ADD (TESTCOL VARCHAR2 (100)) ;
  • 115.
    Modification de colonnes •Vouspouvez modifier le type de données, la taille et la valeur par défaut d'une colonne. Exemple : ALTER TABLE dept30 MODIFY (ename VARCHAR2(15)); la modification d’une valeur par défaut ne s’applique qu’aux insertions ultérieures dans la table. Vous pouvez : –Augmenter la largeur ou la précision d’une colonne numérique. –Réduire la largeur d’une colonne si elle ne contient pas de valeurs NULL ou si la table est vide. –Modifier le type de données d’une colonne si elle contient des valeurs NULL ou si la table est vide. –Convertir de CHAR à VARCHAR ou inversement si la colonne contient des valeurs NULL, si vous ne réduisez pas sa taille ou si la table est vide.
  • 116.
    Renommer colonne Pour renommerune colonne on utilise RENAME COLUMN dans l’instruction ALTER TABLE Exemple: Changer le nom de la colonne last_name en nom de la table employée ALTER TABLE employées RENAME COLUMN last_name to nom;
  • 117.
    Supprimer colonne Pour supprimerune colonne on utilise la directive DROP COLUMN dans l’instruction d’un ALTER TABLE. Exemple: Supprimer la colonne nom de la table employées. ALTER TABLE employées DROP COLUMN nom ;
  • 118.
    Chapitre V :Extraction des données avec SELECT  Enumérer les fonctionnalités des instructions SQL SELECT  Générer un état à partir du résultat d'une instruction SELECT de base  Utilisation des expressions arithmétiques et des valeurs NULL  Implémenter des alias de colonne  Utiliser des opérateurs de concaténation, des chaînes de caractères littérales,  l'opérateur de délimitation alternatif et le mot-clé DISTINCT  Afficher la structure d'une table à l'aide de la commande DESCRIBE
  • 119.
    Enumérer les fonctionnalitésdes instructions SQL SELECT Sélection Projection Table 1 Table 1 Jointure
  • 120.
    Capacités de l'instructionSQL SELECT Une instruction SELECT récupère les informations de la base de données. Avec une instruction SELECT, vous pouvez procédez comme suit: • Projection : Sélectionnez les colonnes dans un tableau ou table qui sont retournés par une requête. Sélectionnez aussi peu ou autant des colonnes selon les besoins. • Sélection: Sélectionnez les lignes d'une table qui sont retournés par une requête. Plusieurs critères peuvent être utilisés pour restreindre les lignes qui sont récupérés. • Jointures: Rassembler des données qui sont stockées dans des tables différentes en précisant le lien entre eux. SQL jointures sont couverts plus en détail dans la leçon intitulée "Résultats données dans plusieurs tables .
  • 121.
    Leçon 5: extractiondes données à l’aide d’instruction SELECT 2) Générer un état à partir du résultat d'une instruction SELECT de base 2-1) Déclaration de base SELECT La syntaxe de base pour une instruction SELECT est présentée ci-dessous. • SELECT identifie les colonnes à afficher. • from identifie la table contenant ces colonnes
  • 122.
    Déclaration de baseSELECT Dans sa forme la plus simple, une instruction SELECT doit inclure les éléments suivants : Dans la syntaxe : • SELECT qui spécifie les colonnes à afficher • * Sélectionne toutes les colonnes • DISTINCT supprime les doublons des colonnes. • FROM qui identifie la table contenant les colonnes qui sont répertoriés dans la clause SELECT . Remarque: Tout au long de ce cours, les mots clés, la clause, et la déclaration sont utilisés comme suit : Un mot se réfère à un exemple d'élément - pour SQL individuels, sélectionnez et FROM sont mots- clés. Une déclaration est une combinaison de deux ou plusieurs clauses - par exemple : afficher tous les employées SELECT * FROM employees ;
  • 123.
    Sélectionner toutes lescolonnes Comme résultats :
  • 124.
    Sélection de toutesles colonnes Vous pouvez afficher toutes les colonnes de données dans une table en suivant le mot-clé SELECT avec une astérisque (*) . Dans l'exemple de la diapositive, la table Departments contient quatre colonnes : DEPARTMENT_ID , Department_Name , manager_id et LOCATION_ID . La table contient huit lignes, une pour chaque département . Vous pouvez également afficher toutes les colonnes de la table en listant toutes les colonnes après le mot clé SELECT. Par exemple, l’instruction SQL suivante (comme l'exemple de la diapositive) affiche toutes les colonnes et toutes les lignes de la table départements: SELECT department_id , department_name , manager_id , location_id from departments Remarque : Dans SQL Developer , vous pouvez entrer votre instruction SQL dans une feuille de calcul SQL et cliquez sur le "Exécuter Déclaration " icône ou appuyez sur [ F9 ] pour exécuter l'instruction . La sortie de figurer sur les résultats la page à onglets apparaît comme indiqué dans la diapositive.
  • 125.
    Sélection d’une ouPlusieurs Colonnes Spécifiques Comme résultats :
  • 126.
    Les expressions arithmétiqueset les valeurs NULL dans l'instruction SELECT 1) Expressions Arithmétiques Avec l’expression arithmétique on a la possibilité de créer des expressions avec des données de type NUMBER et DATE au moyen d’opérateurs arithmétiques. Une expression arithmétique peut être crée en utilisant les noms de colonnes, les opérateurs et les valeurs constantes à intégrer une expression dans une instruction SELECT. L'opérateur applicable à une colonne dépend du type de données de colonne. Par exemple, les opérateurs arithmétiques ne rentre pas pour le caractère des valeurs littérales.
  • 127.
    Utilisation des OpérateursArithmétiques Comme résultats :
  • 128.
    Utilisation des OpérateursArithmétiques Priorité des Opérateurs Les opérateurs agissent sur les colonnes (connu comme opérandes) pour conduire à un résultat différent. En cas de plusieurs opérateurs dans une expression, de l'ordre d’évaluation est décidé par la priorité de l'opérateur. Voici les règles élémentaires de priorité : • Multiplication et la division se produisent avant multiplication et division. • Les opérateurs sur une même priorité sont évalués de gauche à droite. • Utilisez les parenthèses pour remplacer le comportement par défaut des opérateurs. * / + _
  • 129.
    Utilisation des OpérateursArithmétiques 1)Priorité des Opérateurs 2) Utilisation des parenthèses
  • 130.
    La valeur NULL NULLreprésente une valeur non disponible, non affectée, inconnue ou inapplicable. La valeur NULL est différente du zéro ou de l’espace.
  • 131.
    Définir une valeurNull Si une colonne ne possède pas une valeur définitive, il est considéré comme nulle. La valeur NULL représente inconnue ou indisponible. Il est non nulle pour les valeurs numériques, pas d'espace vide pour les valeurs de caractères. Les colonnes avec la valeur NULL peuvent être sélectionnées dans une requête SELECT et peuvent être la partie d'une expression arithmétique. Toute expression arithmétique en utilisant des valeurs NULL dans les résultats NULL. Pour cette raison, des colonnes par valeur NULL doivent être traités différemment en spécifiant leurs autres valeurs en utilisant Oracle , il fourni des fonctions comme NVL ou NULLIF.
  • 132.
    Valeurs NULL dansles Expressions Arithmétiques 1) Les expressions arithmétiques comportant une valeur NULL sont évaluées à NULL
  • 133.
    Implémenter des aliasde colonnes 1) alias de colonne - Renomme un en-tête de colonne - Est utile dans les calculs - Suit immédiatement le nom de la colonne ; - le mot-clé AS placé entre le nom et l’alias est optionnel - Doit obligatoirement être inclus entre guillemets s’il contient des espaces, des caractères spéciaux ou si les majuscules/minuscules doivent être différenciées 2) Définir l’alias de colonne Lors de l'affichage du résultat d'une requête , SQL Développer utilise normalement le nom de la colonne choisie comme tête de colonne. Cette rubrique peut ne pas être descriptive et, par conséquent , peut être difficile à comprendre. Vous pouvez modifier un titre de colonne en utilisant un alias de colonne . Spécifiez l'alias après la colonne dans la liste SELECT en utilisant l'espace vide comme un séparateur . Par défaut , les titres d'alias apparaissent en majuscules . Si l'alias contient des espaces ou des caractères spéciaux ( tels que # ou $ ) , ou si elle est sensible à la casse , joindre l'alias dans des guillemets doubles ( "")
  • 134.
  • 135.
    Utiliser des opérateursde concaténation, des chaînes de caractères littérales, 1) L’Opérateur de Concaténation – Concatène des colonnes ou chaînes de caractères avec d’autres colonnes – Est représenté par deux barres verticales (||) – La colonne résultante est une expression caractère
  • 136.
    Opérateurs de concaténation Opérateurde concaténation peut être utilisé pour joindre deux valeurs de chaîne ou des expressions dans une requête SELECT. Le symbole de la double barre verticale (| |) est utilisé comme opérateur de concaténation. Elle est applicable uniquement pour les valeurs de caractères et de colonnes de chaîne résultant en une nouvelle expression de caractères. Exemple : SELECT 'ORACLE ‘ || ' CERTIFICATION' FROM dual;
  • 137.
    Littéral Un littéral estun caractère, une expression, ou un nombre inclus dans la liste SELECT. Les valeurs littérales de type date et caractère doivent être placées entre simples quottes. Chaque littéral apparaît sur chaque ligne ramenée. SQL> SELECT first_name ||‘ earns ‘ || salary ||‘ as of '|| sysdate FROM employees Afficher le prénom des employés qui ont un salaire à partir de ce jour
  • 138.
    Utilisation des Chaînes deCaractères Littérales
  • 139.
    Opérateur de délimitationalternative Quote (q) L'opérateur de devis est utilisé pour spécifier le guillemet délimiteur de votre choix. Vous pouvez choisir un séparateur pratique, dépendant sur les données
  • 140.
    Alternative Opérateur Quote(q) Beaucoup utilisent des instructions SQL littéraux de caractères dans les expressions ou les conditions . Si le même littérale contient un guillemet simple , vous pouvez utiliser la citation ( q ) opérateur et choisir votre propre guillemet délimiteur . Vous pouvez choisir un séparateur pratique, un seul octet ou multi-octets , ou tout ce qui suit paires de caractères : [ ] , {} , ( ) , ou < > . Dans l'exemple illustré , la chaîne contient un guillemet simple , qui est normalement interprété comme un délimiteur d'une chaîne de caractères. En utilisant l'opérateur de q, cependant , entre crochets [] sont utilisés comme guillemet séparateurs . La chaîne entre les séparateurs de supports est interprété comme un littéral chaîne de caractères .
  • 141.
    Mot-clé DISTINCT 1) Doublons Pardéfaut, le résultat d’une requête affiche toutes les lignes, y compris les doublons
  • 142.
    Élimination des Doublons Pouréliminer les doublons il faut ajouter le mot-clé DISTINCT à la clause SELECT Afficher les numéros des départements et leurs fonctions de travail des employés en éliminant les doublons .
  • 143.
    Structure d’une tableavec DESCRIBE 1) Commande DESCRIBE Les métadonnées de structure d'une table peut être obtenu en interrogeant la base de données pour la liste des colonnes qui la composent en utilisant la commande DESCRIBE . Il liste les noms de colonnes utilisés, et leurs types de données. Syntaxe: DESC[RIBE] [SCHEMA].object name Exemple : DESC EMPLOYEE Affichera la structure de la table EMPLOYÉ c’est-à-dire des colonnes, leurs types de données, la précision et la propriété nullable.
  • 144.
    Utilisation de lacommande DESCRIBE
  • 145.
    Chapitre VI :Restreindre et trier des données :  Ecrire des interrogations avec une clause WHERE pour limiter les données extraites  Utiliser des opérateurs de comparaison et des opérateurs logiques  Décrire les règles de priorité des opérateurs de comparaison et des opérateurs logiques  Utilisation des littéraux de type chaîne de caractères dans la clause WHERE  Ecrire des interrogations avec une clause ORDER BY  Trier le résultat par ordre croissant et par ordre décroissant  Variables de substitution
  • 146.
    Ecrire des interrogationsavec une clause WHERE pour limiter les données extraites 1) Sélection des lignes Afficher tous les employés du départements 90
  • 147.
    Limiter la sélectiondes lignes Restreindre la sélection au moyen de la clause WHERE. La clause WHERE se place après la clause FROM
  • 148.
    Utilisation de laClause WHERE Remarque : On utilise jamais de alias dans la clause where
  • 149.
    Chaînes de Caractèreset Dates Les constantes chaînes de caractères et dates doivent être placées entre simples quotes. La recherche tient compte des majuscules et minuscules (pour les chaînes de caractère) et du format (pour les dates.) Le format de date par défaut est 'DD-MON-YY'.
  • 150.
  • 151.
    Utilisation des opérateursde comparaison Les opérateurs de comparaison sont utilisés dans des conditions pour comparer des expressions ou par des valeurs . Rq : les symboles != and ^= peuvent représenter aussi différent d’une condition la syntaxe : WHERE expr operator value . .. WHERE hire_date = '01-JAN-95' . .. WHERE salary >= 6000 . .. WHERE last_name = 'Smith‘
  • 152.
    L’opérateur BETWEEN L’opérateur BETWEENpeut être utilisé pour comparer une valeur de colonne dans une plage définie. Elle permet aussi de tester l’appartenance à une fourchette de valeurs.
  • 153.
    Utilisation de l’opérateurBETWEEN On peut aussi utiliser l’opérateur BETWEEN sur les valeurs des chaines de caractères .
  • 154.
    Utilisation de l’opérateurIN L’utilisation de l’opérateur IN permet de comparer une expression avec une liste de valeurs
  • 155.
    l’opérateur LIKE LIKE permetde rechercher des chaînes de caractères à l'aide de caractères génériques. Les conditions de recherche peuvent contenir des caractères ou des nombres littéraux: (%) représente zéro ou plusieurs caractères ( _ ) représente un caractère
  • 156.
    Utilisation de l’opérateurLIKE On peut combiner plusieurs caractères de recherche Exemple : On peut utiliser l’identifiant ESCAPE pour rechercher les symboles « % » ou « _ »
  • 157.
    Exemple de LIKE Onveut rechercher SA avec % et _ dans l’exemple en utilisant ESCAPE :
  • 158.
    L’utilisation de l’opérateurIS NULL Recherche de valeur NULL avec l’opérateur IS NULL
  • 159.
    Opérateur logique Plusieurs conditionsde filtrage peuvent être ajoutés au prédicat de clause WHERE. Plus d'une condition peut être combiné à l'aide des opérateurs logiques AND, OR et NOT. • AND: rejoint deux ou plusieurs conditions, et renvoie un résultat que lorsque toutes les conditions sont remplies. • OR: rejoint deux ou plusieurs conditions, et il renvoie des résultats lorsque l'une des conditions sont remplies. • NOT: nie l'expression qui le suit.
  • 160.
    Utilisation de l’opérateurAND Avec AND les deux conditions doivent être vraies.
  • 161.
    L’utilisation de l’opérateurOR Avec OR l’une ou l’autre des deux condition doit être vraie .
  • 162.
  • 163.
    Utilisation de NOT NOTpeut être utilisé dans d’autres opérateurs de SQL comme BETWEEN , LIKE , NULL ... WHERE job_id NOT IN ('AC_ACCOUNT', 'AD_VP') ... WHERE salary NOT BETWEEN 10000 AND 15000 ... WHERE last_name NOT LIKE '%A%' ... WHERE commission_pct IS NOT NULL
  • 164.
    Règle de priorité Lesparenthèses permettent de modifier les règles de priorités
  • 165.
    Exemple de règlede priorité Utilisation de la parenthèse pour forcer la priorité :
  • 166.
    Clause ORDER BY Trides lignes avec la clause ORDER BY • ASC : ordre croissant (par défaut) • DESC : ordre décroissant La clause ORDER BY se place à la fin de l’ordre SELECT
  • 167.
    TRI Tri par ordredécroissant Tri sur l’alias de colonne
  • 168.
    Exemple de TRI Utilisationde tri par la position des colonnes numériques Tri sur plusieurs colonnes
  • 169.
    Variable de Substitution Quandune requête SQL doit être exécutée plus d'une fois pour les différents ensembles d'entrées, les variables de substitution peuvent être utilisés. Les variables de substitution peuvent être utilisés pour demander entrées de l'utilisateur avant l'exécution de la requête Les variables de substitution sont préfixés par un symbole unique eCommercial (&) pour stocker temporairement des valeurs. Remarque: • Si la variable est destinée à remplacer une valeur de caractère ou de la date, les besoins littérales à être encadrées par des apostrophes. Une technique utile est d'enfermer la variable de substitution eCommercial guillemets simples lorsqu'ils traitent avec des valeurs de caractère et date. • Les deux SQL Développer et SQL * Plus peuvent soutenir les variables de substitution et les DEFINE / commandes UNDEFINE. Bien que SQL Développer ou SQL * Plus ne supporte pas les contrôles de validation (sauf pour le type de données) sur l'entrée de l'utilisateur. • Vous pouvez utiliser les variables de substitution non seulement dans la clause WHERE d'une instruction SQL, mais aussi comme substitution pour les noms de colonnes, des expressions ou texte.
  • 170.
    Utilisation de lasimple variable de Substitution On utilise la simple variable de substitution par le préfixe eCommercial« & » par l’entré en valeur de l’utilisateur
  • 171.
    Exemple de variablede substitution dans les chaines de caractères et dates Pour les chaines de caractères et dates on utilise & pour les variables de substitution .
  • 172.
    Spécification des nomsde colonne et expression On peut spécificité les noms de colonne pour rechercher une colonne avec une condition et mettant l’expression par ordre croissant ou décroissante.
  • 173.
    Utilisation de ladouble variable de substitution Lorsque la même variable de substitution est utilisé à plus d'un endroit, puis pour éviter la ré-entrer encore une fois les mêmes données, nous utilisons double substitution eCommercial. Dans de tels cas, la valeur de la variable de substitution, une fois saisi, serait substitué à tous les instants de l'utilisation.
  • 174.
    Chapitre VII: fonctionsmono-lignes pour personnaliser les résultats  Différences entre les fonctions mono-lignes et les fonctions multi-lignes  Manipuler des chaînes à l'aide de fonctions de type caractère  Manipuler des nombres à l'aide des fonctions ROUND, TRUNC et MOD  Effectuer des opérations arithmétiques avec des données de type date  Manipuler des dates à l'aide de fonctions de type date
  • 175.
    Fonctions Mono-ligne Une fonctionest une expression d’un type de données spécifique qui fait partie d’une instruction utilisée pour calculer une valeur.
  • 176.
    Utilisation des fonctionssimples Oracle SQL fournit une riche bibliothèque de fonctions en construction qui peuvent être utilisés pour diverses tâches. Les capacités essentielles des fonctions peuvent être la conversion de cas de chaînes, en chaîne ou des opérations de sous-chaînes, des calculs mathématiques sur des données numériques, et les opérations de date sur les valeurs de type date. Les Fonctions SQL prennent éventuellement des arguments de l'utilisateur et obligatoirement renvoient une valeur.
  • 177.
    Deux types defonctions en SQL • Fonctions mono-lignes : ceux sont des fonctions simples qui travaillent sur une rangée et retourner une sortie par ligne. Par exemple, des fonctions de conversion de longueur . • Fonctions multi-lignes ceux sont des fonctions de lignes qui fonctionnent sur un groupe de lignes et retourne un résultat pour l'ensemble des lignes. Ils sont également connus comme des fonctions de groupe.
  • 178.
    Fonction simples oumono-lignes • .Manipulent des éléments de données • Acceptent des arguments et ramènent une valeur • Agissent sur chacune des lignes rapportées • Ramènent un seul résultat par ligne • Peuvent modifier les types de données • Peuvent être imbriquées Syntaxe : Function_name : nom de la fonction avec l’expression de la colonne et les arg1, arg2 utilisés dans la fonction .
  • 179.
  • 180.
    Illustration des fonctionssimples Fonctions générales - contient habituellement des fonctions de manutention NULL. Les fonctions en vertu de la catégorie sont NVL, NVL2, NULLIF, COALESCE, CASE, décoder. Cas de fonctions de conversion - Accepte la saisie de caractères et retourne une valeur de caractère. Fonctions en vertu de la catégorie sont supérieures, inférieures et INITCAP. Fonction UPPER convertit une chaîne en majuscules. Fonction LOWER convertit une chaîne en minuscules. INITCAP fonction convertit uniquement les alphabets initiales d'une chaîne en majuscules. Fonctions de caractères - accepte la saisie de caractères et retourne numéro ou le caractère de valeur. Fonctions en vertu de la catégorie sont CONCAT, LONGUEUR, SUBSTR, INSTR, LPAD, RPAD, TRIM et le remplacer. Fonction CONCAT concatène deux valeurs de chaîne. Fonction LENGTH renvoie la longueur de la chaîne d'entrée. Fonction SUBSTR renvoie une partie d'une chaîne à partir d'un point de départ donné jusqu'à un point de fin. Fonction INSTR renvoie position numérique d'un caractère ou une chaîne dans une chaîne donnée. Fonctions de LPAD et RPAD de la chaîne donnée jusqu'à une longueur spécifique avec un caractère donné. Fonction TRIM versions d'entrée de chaîne à partir du début ou de fin. Fonction REPLACE remplace les caractères de la chaîne d'entrée avec un caractère donné.
  • 181.
    Illustration des fonctionssimples Fonctions de date - Date des opérations arithmétiques date ou des valeurs numériques renvoient. Fonctions en vertu de la catégorie sont MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY, LAST_DAY, rond et TRUNC. MONTHS_BETWEEN fonction renvoie le nombre de mois entre les deux dates. ADD_MONTHS fonctionnent ajouter 'n' nombre de mois d'une date d'entrée. NEXT_DAY fonction retourne le lendemain de la date spécifiée. LAST_DAY fonction retourne le dernier jour du mois de la date d'entrée. Fonctions de ROUND et TRUNC sont utilisés pour arrondir et tronque la valeur de date.  Fonctions numériques - accepte l'entrée numérique et retourne des valeurs numériques. Fonctions en vertu de la catégorie sont ronds, TRUNC et MOD. Fonctions de ROUND et TRUNC sont utilisés pour arrondir et tronquer la valeur du nombre. MOD est utilisé pour renvoyer le reste de l'opération de division entre deux nombres.
  • 182.
  • 183.
    Fonctions de ConversionsMajuscules/ Minuscules
  • 184.
    Utilisation des fonctionsde Conversions Afficher le numéros de l’employé , le nom et le numéros de départements de l’employé Higgins
  • 185.
  • 186.
    Utilisation des fonctionsde Manipulation des caractères
  • 187.
    Fonctions Numériques  ROUND: arrondie la valeur à la précision spécifiée ROUND(45.926, 2)  TRUNC : tronque la valeur à la précision spécifiée TRUNC(45.926, 2 )  MOD : ramène le reste d’une division 45.93 45.92 MOD(1600,300) 100
  • 188.
    Utilisation de lafonction ROUND Affichage de la valeur 45.923 arrondie au centième, à 0 décimale et à la dizaine supérieure.
  • 189.
    Utilisation de lafonction TRUNC Affichage de la valeur 45.923 tronquée au centième, à 0 décimale et à la dizaine.
  • 190.
    Utilisation de lafonction MOD La fonction MOD renvoie le reste du premier argument, divisé par le second argument. Exemple : calcule de Le reste du salaire 5000 par la division pour tous les Employé
  • 191.
    Utilisation des Dates Oraclestocke les dates dans un format numérique interne : siècle, année, mois, jour, heures, minutes, secondes. Le format de date par défaut est DD-MON-YY. La fonction SYSDATE ramène la date et l’heure courante. DUAL est une table factice qu'on peut utiliser pour visualiser SYSDATE ; On veut afficher le nom et la date des employés qui sont venus avant le 01/02/1988
  • 192.
    Utilisation de lafonction SYSDATE SYSDATE est une fonction qui retourne: . DATE . TEMPS
  • 193.
    Opérations arithmétiques surles dates - Ajout ou soustraction d’un nombre à une date pour obtenir un résultat de type date. - Soustraction de deux dates afin de déterminer le nombre de jours entre ces deux dates. - Ajout d’un nombre d’heures à une date en divisant le nombre d’heures par 24.  Exemple :
  • 194.
  • 195.
  • 196.
    Exemple de dates SELECTADD_MONTHS (sysdate,2), NEXT_DAY (sysdate , 6), LAST_DAY (sysdate) FROM dual; SELECT employee_id , last_name, trunc (MONTHS_BETWEEN (sysdate, hire_date)) Employment_months FROM employees
  • 197.
    Chapitre VIII :fonctions de conversions et des expressions conditionnelles  Conversions implicites et explicites de type de données  Décrire les fonctions de conversion TO_CHAR, TO_NUMBER et TO_DATE  Imbriquer plusieurs fonctions  Appliquer les fonctions NVL, NULLIF et COALESCE aux données  Utiliser la logique conditionnelle IF THEN ELSE
  • 198.
  • 199.
    Conversions de Typesde données implicites Pour les affectations, Oracle effectue automatiquement les conversions suivantes Une valeur VARCHAR2 ou CHAR peut être implicitement converti en nombre ou DATE valeur de type Oracle. De même, une valeur de type NUMBER ou les données peuvent être automatiquement converti en données de caractère par serveur Oracle. Notez que l'inter conversion impicit ne se produit que lorsque le personnage représente la valeur du type d'un numéro ou date valide respectivement.
  • 200.
    Conversions de typesde données explicites Fonctions de conversion SQL sont des fonctions simples de rangée qui sont capables de valeur de la colonne de typage, littérale ou une expression.TO_CHAR, TO_NUMBER et TO_DATE sont les trois fonctions qui effectuent modification transversale de types de données.
  • 201.
    Fonction TO_Char avecles dates - Doit être placé entre simples quottes et différencie les majuscules et minuscules. - Peut inclure tout élément valide de format date - Comporte un élément format model qui supprime les espaces de remplissage ou les zéros de tête - Est séparé de la valeur date par une virgule Exemple : SELECT employee_id, TO_CHAR(hire_date, 'MM/YY') Month_Hired FROM employees WHERE last_name = 'Higgins';
  • 202.
  • 203.
    Modèles de Formatpour les dates - Les éléments horaire formatent la partie horaire de la date - Pour ajouter des chaînes de caractères, les placer entre guillemets. - Différents suffixes existent pour les nombres.
  • 204.
    Utilisation de lafonction TO_CHAR avec les Dates TO_CHAR fonction est utilisé pour transtyper une entrée numérique ou de date de type de caractère avec un modèle de format (en option).
  • 205.
    Exemple de To_Charavec les dates SELECT last_name, TO_CHAR (hire_date, ' fmDdspth "of" Month YYYY fmHH:MI:SS AM') HIREDATE FROM employees ; Résultat :
  • 206.
    la fonction To_Charavec les nombres Utilisez les formats suivants avec TO_CHAR pour afficher un nombre sous la forme d'une chaîne de caractère.
  • 207.
    Utilisation de lafonction To_Char avec les nombres
  • 208.
    Fonction To_Number etTo_Date - Conversion d’une chaîne de caractères en format numérique avec la fonction - Conversion d’une chaîne de caractères en format date avec la fonction TO_DATE
  • 209.
    Fonctions Générales Fonctions généralessont utilisés pour gérer les valeurs NULL dans la base de données. L'objectif des fonctions générales de manutention NULL est de remplacer les valeurs NULL avec une autre valeur. Nous verrons brièvement grâce à ces fonctions ci-dessous. Convertit une valeur NULL en une valeur réelle - NVL (expr1, expr2) - NVL2 (expr1,expr2,expr3) - NULLIF (expr1,expr2) - COALESCE (expr1, expr2, ……,exprn)
  • 210.
    Fonctions NVL – Fonctionneavec les données de type date, caractère et numérique. – Les types de données doivent correspondre • NVL(comm,0) • NVL(hiredate,'01-JAN-97') • NVL(job,'No Job Yet')
  • 211.
    Exemple d’utilisation dela fonction NVL La fonction NVL substitue une autre valeur pour une valeur NULL.
  • 212.
    Exemple de lafonction NVL2 Comme une amélioration sur NVL, Oracle a introduit une fonction de la valeur de remplacement non seulement pour les valeurs de colonnes NULL, mais aussi pour les colonnes NOT NULL. NVL2 fonction peut être utilisée pour substituer une autre valeur NULL ainsi que la valeur NULL non.
  • 213.
    Exemple de lafonction NULLIF La fonction NULLIF compare deux arguments expr1 et expr2. Si expr1 et expr2 sont égales, elle renvoie NULL; d'autre, il retourne expr1.
  • 214.
    Exemple de COALESCE FonctionCOALESCE, une forme plus générique de NVL, renvoie la première expression non-nulle dans la liste d'arguments. Il prend un minimum de deux paramètres obligatoires, mais les arguments maximale n’ont pas de limite.
  • 215.
    Expression Conditionnelle Oracle fournitdeux méthodes d’expression conditionnelle : - CASE : Facilite les recherches conditionnelles en jouant le rôle de CASE ou IF-THEN-ELSE - DECODE: La fonction est l'équivalence SQL de if..then..else déclaration procédurale conditionnelle. DECODE travaille avec les valeurs / colonnes / expressions de tous les types de données.
  • 216.
  • 217.
  • 218.
    Chapitre IX: Manipulationdes données agrégées à l’aide des fonctions de groupe  Générer des états signicatifs à l'aide de fonctions d'agrégation  Utiliser les fonctions AVG, SUM, MIN et MAX  Comment manipuler des valeurs NULL dans une fonction de groupe ?  Répartir les données dans des groupes à l'aide de la clause GROUP BY  Exclure des groupes de dates à l'aide de la clause HAVING
  • 219.
    Les données agrégéesdes rapports en utilisant les fonctions du Groupe SQL a de nombreuses fonctions d'agrégats prédéfinis qui peuvent être utilisés pour écrire des requêtes pour produire exactement ce genre de informations de clause GROUP BY indique comment regrouper les lignes d'un tableau de données lors de l'agrégation des informations, alors que la clause HAVING filtre les lignes qui ne font pas partie de groupes spécifiés. Les fonctions d'agrégation exécutent diverses actions telles que compter toutes les lignes d'une table, en moyenne les données d'une colonne, et en additionnant les données numériques. Agrégats peuvent également rechercher une table pour trouver la plus haute "MAX" ou valeurs les plus basses "MIN" dans une colonne. Comme avec d'autres types de requêtes, vous pouvez limiter ou filtrer les lignes de ces fonctions agissent avec la clause WHERE. Par exemple, si un gestionnaire a besoin de savoir combien d'employés travaillent dans une organisation, la fonction d'agrégation COUNT nom (*) peut être utilisé pour produire des informations de cette COUNT (*) fonction indiquée dans la déclaration ci-dessous SELECT compte toutes les lignes dans une table.
  • 220.
    Types de fonctionde Groupe AVG ([DISTINCT|ALL]n) COUNT ({ *|[DISTINCT|ALL] expr}) MAX ([DISTINCT|ALL ]expr) MIN ([DISTINCT|ALL] expr) STDDEV ([DISTINCT|ALL]x) SUM ([DISTINCT|ALL]n) VARIANCE ([DISTINCT|ALL]x)
  • 221.
    Fonction de groupe Lesfonctions de groupe agissent sur des groupes de lignes et donnent un résultat par groupe : La syntaxe :
  • 222.
    Utilisation de AVGet SUM AVG et SUM est utilisé avec des données numériques
  • 223.
    Utilisation de MINet MAX MIN et MAX s’utilise avec tous les types de données numériques , caractères , dates. SELECT MIN (last_name), MAX(last_name) FROM employees;
  • 224.
    Utilisation de lafonction Count - COUNT(*) ramène le nombre de lignes d'une table. - COUNT( expr) ramène le nombre de lignes non NULL.
  • 225.
    Fonction de groupeet valeur NULL Les fonctions de groupe ignorent les valeurs NULL des colonnes La fonction NVL force la prise en compte des valeurs NULL dans les fonctions de groupe
  • 226.
    Création de groupede données avec GROUP BY Les fonctions d'agrégat sont normalement utilisés en conjonction avec une clause GROUP BY Divisez une table en groupes de lignes avec la clause GROUP BY.
  • 227.
    Utilisation de lafonction GROUP BY La clause GROUP BY doit inclure toutes les colonnes de la liste SELECT qui ne figurent pas dans des fonctions de groupe.
  • 228.
    Exemple de GROUPBY La colonne citée dans le GROUP BY ne doit pas nécessairement figuré dans la liste SELECT
  • 229.
    Utilisation de GROUPBY dans plusieurs colonnes
  • 230.
    EXCEPTION de GROUPBY (1) Toutes les colonnes ou les colonnes utilisées dans GROUP BY fonction doit former la base du groupement dépendantes, par conséquent doivent être inclus dans la clause GROUP BY également. • (2) la clause GROUP BY ne supporte pas l'utilisation des alias de colonne, mais les noms réels. • (3) la clause GROUP BY ne peut être utilisé avec des fonctions d'agrégation comme SUM, AVG, COUNT, MAX et MIN.il est utilisé avec des fonctions simples de rangée, Oracle lance et d'exception comme «ORA-00979: pas un GROUP BY expression" . • (4) Les fonctions d'agrégation ne peuvent pas être utilisées dans une clause GROUP BY. Oracle va retourner le "ORA-00934: fonction de groupe non autorisés" ici message d'erreur.
  • 231.
    Exclusion de groupesavec HAVING • Utilisez la clause HAVING pour restreindre les groupes • Les lignes sont regroupées. • La fonction de groupe est appliquée. • Les groupes qui correspondent à la clause HAVING sont affichés. La clause HAVING est utilisé pour les fonctions d'agrégation de la même manière qu'une clause WHERE est utilisée pour les noms de colonnes et expressions.
  • 232.
  • 233.
  • 234.
    Imbrication des fonctionsde Groupes Afficher le salaire moyen maximum.
  • 235.
    Chapitre X: Affichagedes données et des jointures  Ecrire des instructions SELECT pour accéder à des données provenant de plusieurs tables  Joindre des tables à l'aide de la syntaxe SQL:1999  Afficher des données qui ne répondent pas à une condition de jointure à l'aide de jointures externes  Joindre une table à elle-même à l'aide d'une auto-jointure  Créer des jointures croisées
  • 236.
    Affichage des donnéesdans plusieurs tables Les tables liées d'une grande base de données sont liés par l'utilisation de clés étrangères et primaires ou ce qu'on appelle souvent à colonnes communes. La possibilité de rejoindre les tables vous permettront d'ajouter plus de sens à la table de résultat qui est produite. Pour 'n' tables numériques pour être assemblés dans une requête, minimum (n-1) des conditions de jointure sont nécessaires. Sur la base des conditions de jointure, Oracle associe la paire de rangées d'adaptation et affiche celui qui satisfait à la condition de jointure.
  • 237.
    Les types dejointures •  Jointure naturelle (aussi connu comme une équijointure ou d'une simple jointure) - Crée une jointure en utilisant une colonne couramment nommée et définie. •  Non-égalité rejoindre - joint des tables quand il n'y a pas de lignes équivalentes dans les tables à joindre, par exemple, pour correspondre à des valeurs dans une colonne d'une table avec une gamme de valeurs dans une autre table. •  Auto-jointure - se joint à une table à elle-même. •  Jointure externe - Comprend enregistrements d'une table de la production quand il n'y a aucun enregistrement correspondant dans l'autre table. •  Cartésienne rejoindre (aussi connu comme un produit cartésien ou jointure croisée) - Réplique chaque ligne de la première table avec tous les rangs à partir du deuxième table. Crées une jointure entre les tables en affichant toutes les combinaisons possibles d'enregistrement.
  • 238.
    Utilisation de lajointure SQL:1999 L’utilisation de la jointure dans une requête de donnée
  • 239.
    NATURAL JOIN Le mot-cléNATURAL JOIN peut simplifier la syntaxe d'une equijoin.le NATURAL JOIN est possible lorsque deux (ou plus) les tables ont des colonnes avec le même nom, et les colonnes sont compatibles rejoignent, à savoir, les colonnes ont un domaine partagé des valeurs rejoindre opération rejoint les rangs de tables qui ont des valeurs de colonnes égales pour les mêmes colonnes nommées.
  • 240.
    Utilisation de USING USINGrejoint naturel, Oracle identifier implicitement colonnes pour former la base de rejoindre. De nombreuses situations nécessitent déclaration explicite des conditions de jointure. Dans de tels cas, nous utilisation USING clause pour spécifier les critères d'assemblage. Depuis, USING clause joint les tables fondées sur l'égalité de colonnes, il est également connu comme équijointure. Ils sont également connus comme les jointures internes ou la simple joint. Syntaxe:
  • 241.
  • 242.
    Utilisation de SELFJOIN Une opération de auto jointure produit une table de résultat lorsque la relation d'intérêts existe entre les rangées qui sont stockés dans une seule table. En d'autres termes, quand une table est jointe à elle-même, la jointure est appelée auto jointure.
  • 243.
    Utilisation de NonEquijointure Un non-égalité jointure est utilisée lorsque les colonnes connexes ne peuvent être rejoints avec un signe égal-qui signifie qu'il n'y a pas de lignes équivalentes dans les tables soient jointes
  • 244.
    Jointures Externes Une jointureexterne est utilisé pour identifier les situations où des rangées d'une table ne correspondent pas rangées dans un deuxième tableau, même si les deux tables sont liées. Il existe trois types de jointures externes: la GAUCHE, DROITE, et FULL OUTER JOIN. Ils commencent tous par une jointure interne, puis ils ajoutent retour certaines des lignes qui ont été abandonnées. Un LEFT OUTER JOIN ajoute retour toutes les lignes qui sont supprimés à partir du premier (à gauche) table dans la condition de jointure et les colonnes de sortie de la seconde (à droite) tableau sont mis à NULL. Un RIGHT OUTER JOIN ajoute retour toutes les lignes qui sont lâchés d'un deuxième (à droite) table dans la condition de jointure et les colonnes de sortie de la première (à gauche) tableau sont mis à NULL. FULL OUTER JOIN ajoute retour toutes les lignes qui sont lâchés d'un deux tables.
  • 245.
    LEFT OUTER JOIN UnLEFT OUTER JOIN ajoute retour toutes les lignes qui sont supprimés à partir du premier (à gauche) table dans la condition de jointure et les colonnes de sortie de la seconde (à droite) tableau sont mis à NULL. La requête démontré ci-dessus peut être utilisé pour démontrer la jointure externe gauche, en échangeant la position du signe (+).
  • 246.
    RIGHT OUTER JOIN UnRIGHT OUTER JOIN ajoute retour toutes les lignes qui sont lâchés d'un deuxième (à droite) table dans la condition de jointure et les colonnes de sortie de la première (à gauche) de la table sont mise à NULL.
  • 247.
    FULL OUTER JOIN FULLOUTER JOIN ajoute retour toutes les lignes qui sont lâchés une des deux tables.
  • 248.
    Produit cartésien Pour lesdeux entités A et B, A * B est appelé produit cartésien. Un produit cartésien constitué de toutes les combinaisons possibles des lignes de chacune des tables. Par conséquent, quand une table avec 10 lignes est jointe à une table avec 20 lignes, le produit cartésien est de 200 lignes (10 * 20 = 200) .Par exemple, de rejoindre la table des employés avec huit lignes et la table de service avec trois rangées va produire une table de produit cartésien de 24 lignes (8 * 3 = 24). Jointure croisée désigne le produit cartésien de deux tables. Il produit croisé de deux tables. La requête ci- dessus peut être écrit en utilisant la clause CROSS JOIN. Un cartésien table résultat du produit est généralement pas très utile. En fait, un tel tableau de résultat peut être terriblement trompeur.
  • 249.
    Condition de Produitcartésien – On obtient un produit cartésien lorsque : • Une condition de jointure est omise • Une condition de jointure est incorrecte – Toutes les lignes de la première table sont jointes à toutes les lignes de la seconde – Pour éviter un produit cartésien, toujours insérer une condition de jointure correcte dans la clause WHERE.
  • 250.
  • 251.
    CROSS JOIN Le crossjoin fait appel à deux tables comme le produit cartésien
  • 252.
    Chapitre XI :Utilisation des sous-interrogations et les résoudre  Utiliser une sous-interrogation pour résoudre un problème  Exécuter des sous-interrogations monolignes  Déployer des fonctions de groupe dans une sous-interrogation  Sous-interrogations multilignes  Utiliser les opérateurs ANY et ALL dans les sous-interrogations multilignes  Utiliser l'opérateur EXISTS
  • 253.
    Résoudre les sous-requêtesde requêtes Une sous-requête est mieux défini comme une requête dans une requête. Les sous-requêtes vous permettent d'écrire des requêtes qui sélectionnent les lignes de données pour les critères qui sont effectivement développées pendant que la requête est en cours d'exécution au moment de l'exécution. Plus formellement, il est l'utilisation d'une instruction SELECT à l'intérieur de l'une des clauses . Une Sous-interrogation est un ordre SELECT imbriqué dans une clause d’un autre ordre SELECT . Elles permettent de sélectionner des lignes d’une table lorsque la condition dépend des données de la table elle-même . Les sous-requêtes Peuvent être placées dans les clauses SQL suivantes : • WHERE • HAVING • FROM
  • 254.
    Sous-interrogations La Syntaxe : –La sous-interrogation (requête interne) est exécutée une fois avant la requête principale. – Le résultat de la sous-interrogation est utilisé par la requête principale (externe).
  • 255.
  • 256.
    Conventions d’utilisation desSous-interrogations - Placez les sous-interrogations entre parenthèses. - Placez les sous-interrogations à droite de l'opérateur de comparaison. - N'ajoutez jamais de clause ORDER BY à une sous-interrogation. - Utilisez les opérateurs mono-ligne avec les sous-interrogations mono-ligne. - Utilisez les opérateurs multi-ligne avec les sous-interrogations multi-ligne.
  • 257.
    Types de sous-requêtes •Sous-interrogation mono-lignes : Sous requête qui renvoie la sortie de rangée. Ils marquent l'utilisation des opérateurs de comparaison à une rangée, lorsqu'il est utilisé dans les conditions WHERE. • Sous-interrogation multi-lignes: Sous requête renvoyant sortie à lignes multiples. Ils font usage de plusieurs opérateurs de comparaison de ligne comme dans TOUT, Il peut y avoir des sous-requêtes renvoyant plusieurs colonnes aussi.
  • 258.
    Sous-interrogation Mono-ligne Une sous-requêteseule ligne est utilisée lorsque les résultats de la requête externe sont basées sur une seule valeur inconnue. Bien que ce type de requête est officiellement appelé "une seule ligne," le nom implique que la requête retourne plusieurs colonnes, mais seulement une ligne de résultats. Cependant, une sous- requête simple rangée peut renvoyer qu'une seule ligne de résultats composé de seulement une colonne à la requête externe.
  • 259.
    Utilisation de sous-interrogationMono-ligne – Ne ramènent qu'une seule ligne – Utilisent des opérateurs de comparaison mono-ligne
  • 260.
    Exemple de sous-interrogationMono-ligne Afficher les postes des employés occupant le même poste que le numéro de l’employé 141 . SELECT last_name , job_id FROM employees WHERE job_id = (SELECT job_id FROM employees WHERE employee_id = 141);
  • 261.
  • 262.
    Utilisation de fonctionsde groupe dans une sous interrogation
  • 263.
    Clause HAVING avecSous-interrogation – Oracle Server exécute les sous-interrogations en premier. – Oracle Server ramène les résultats dans la clause HAVING de la requête principale. – Une clause HAVING est utilisée lorsque les résultats du groupe d'une requête doivent être restreint selon une condition.
  • 264.
    Exemple de laclause HAVING dans une sous- interrogation
  • 265.
    Exemple de laclause HAVING Trouver le poste ayant le salaire moyen le moins élevé . Exemple : SELECT job_id, AVG(salary) FROM employees GROUP BY job_id HAVING AVG(salary) = (SELECT MIN(AVG(salary)) FROM employees GROUP BY job_id);
  • 266.
    Sous-interrogation Multi-lignes Sous-requêtes multi-lignessont les requêtes imbriquées qui peuvent renvoyer plus d'une ligne de résultats à la requête de parent. Sous-requêtes multi-lignes sont les plus couramment utilisés dans les clauses WHERE et HAVING. Depuis, il retourne de multiples lignes, il doit être manipulé par des opérateurs de comparaison de jeu (IN, ALL, ANY) . – Ramène plusieurs lignes – Utilise des opérateurs de comparaison multi-ligne
  • 267.
    Exemple Trouver les employésqui gagnent l’équivalent d’un salaire minimum de département . SELECT last_name, salary, department_id FROM employees WHERE salary IN (SELECT MIN(salary) FROM employees GROUP BY department_id);
  • 268.
    Utilisation de l’opérateurANY dans les sous- interrogations Multi-lignes
  • 269.
    Utilisation de l’opérateurALL dans les sous- interrogations Multi-lignes
  • 270.
    Résumé Les sous-interrogations sontutiles lorsqu'une requête fait appel à des valeurs inconnues
  • 271.
    Utilisation de l’opérateurEXISTS • Dès qu'il trouve une ligne par la sous-interrogation : – La recherche dans la requête interne est interrompue. – La condition est vraie (TRUE). • S'il ne trouve aucune ligne par la sous-interrogation : – La condition est fausse (FALSE).
  • 272.
    Exemple de EXISTS Recherchertous les employés ayant au moins une personne sous leur responsabilité
  • 273.
    Exemple de NOTEXISTS Recherchez tous les départements qui ne comprennent pas d’employé
  • 274.
    Chapitre XII :Opérateurs ensemblistes  Présentation des opérateurs ensemblistes  Utiliser un opérateur ensembliste pour combiner plusieurs interrogations en une seule  Utiliser les opérateurs UNION, UNION ALL, INTERSECT et MINUS  Utiliser la clause ORDER BY dans des opérations ensemblistes
  • 275.
  • 276.
    Règles des Opérateursde Set - Les expressions citées dans la clause SELECT doivent être égales en nombre et avoir des données du même type. - Les doublons sont automatiquement éliminés, sauf avec l'opérateur UNION ALL. - Les noms de colonnes apparaissant dans le résultat sont ceux de la première requête. -Par défaut, le résultat est trié par ordre croissant, sauf avec l’opérateur UNION ALL. - Utilisez des parenthèses pour modifier la séquence d'exécution.
  • 277.
    L’opérateur UNION Lorsque plusieursrequêtes SELECT sont jointes à l'aide de l'opérateur UNION, Oracle affiche le résultat combiné de toutes les requêtes SELECT composées, après le retrait de tous les doublons et dans l'ordre de tri (croissant par défaut), sans ignorer les valeurs NULL.
  • 278.
    L’opérateur UNION ALL UNIONet UNION ALL sont similaires dans leur fonctionnement avec une légère différence. Mais UNION ALL donne le jeu de résultats sans enlever les doubles emplois et le tri des données. Par exemple, dans l'union de la requête ci-dessus est remplacé par UNION ALL pour voir l'effet.
  • 279.
  • 280.
    L’opérateur INTERSECT Utilisation del'opérateur INTERSECT, Oracle affiche les lignes communes aux deux instructions SELECT, sans doublons et les données disposées dans l'ordre de tri (croissant par défaut).
  • 281.
    Opérateur MINUS Opérateur deMinus affiche les lignes qui sont présents dans la première requête mais absent dans la seconde requête, sans doublons et données disposées dans l'ordre croissant par défaut.
  • 282.
    Correspondance par l’instructionSELECT Il peut y avoir des scénarios où le composé instructions SELECT peuvent avoir comptage différente et le type de colonnes sélectionnées de données. Par conséquent, pour correspondre à la liste de la colonne explicitement, colonnes NULL sont insérées dans les positions manquantes afin de correspondre le nombre et le type de données des colonnes sélectionnées dans chaque instruction SELECT. Pour les colonnes numériques, zéro peut aussi être substitué pour correspondre au type des colonnes sélectionnées dans la requête.
  • 283.
  • 284.
    Exemple l’operateur UNION Utilisél’opérateur UNION pour afficher les numéros de l’employé , de fonctions et le salaire de tous les employés .
  • 285.
    Chapitre XIII :Création d’objet et schémas  Créer des simples et complexes vues  Extraction des données d’une vue  Créer , des séquences  Créer des indexes  Créer des synonymes privés et public
  • 286.
    Objet et Schémas Endehors de tables, d'autres objets de schéma sont essentiels vue, séquences, index et vue synonyms.A est une table logique ou virtuelle. Les synonymes sont des noms tout simplement alias pour objects.Synonyms de base de données simplifient également l'écriture de requêtes et fournissent un élément de la sécurité du système en déguisant le nom réel d'une base Object. Séquences sont des objets de base de données spéciale qui soutiennent la génération automatique de valeurs entières, et sont souvent utilisés pour générer des valeurs de clé primaire pour tables. Indexes sont créés sur des colonnes de la table afin de faciliter la récupération rapide de l'information à partir des tables.
  • 287.
    VIEW Une vue dela base de données est une table logique ou virtuelle basée sur une requête. Les vues sont interrogés tout comme les tables A quoi serve les vues • Limite l'accès à la base de données • Facilite la création de requêtes complexes • Garantit l'indépendance des données • Présente les mêmes données sous différentes formes Ils existent deux types de vues :
  • 288.
    Les différentes formesde vues - Vue simple : Une vue simple est créé sur le dessus d‘une table simple et c’ est une requête SELECT simple, sans fonctions ou clause de groupe, mais juste la sélection des colonnes de la table sans aucune transformation. Si une opération LMD est effectuée sur la vue, elle se reflète immédiatement dans la table de base. - Vue Complexe : Une vue complexe est créé sur plusieurs tables en utilisant des jointures. Il peut contenir des fonctions SQL, Groupe par fonction. Mais car la vue est sur de multiples données et la sélection des colonnes est également pas simple, elle ne permet pas le fonctionnement DML sur elle.
  • 289.
    Création de VIEW Imbriquerune sous-interrogation dans l'ordre CREATE VIEW. • La sous-requête peut contenir une syntaxe SELECT complexe. • Elle ne peut pas contenir une clause ORDER BY.
  • 290.
    Exemple de VIEW Créerla vue EMPVUE80 qui contient les détails de l’employé du département 80
  • 291.
    Exemple de vueavec les sous-interrogations Créez une vue à l'aide des alias de colonnes de la sous-interrogation. Exemple : CREATE OR REPLACE VIEW salvu50 (ID_NUMBER, NAME, ANN_SALARY) AS SELECT employee_id, last_name, salary*12 FROM employees WHERE department_id = 50; Sélectionnez les colonnes de cette vue par leur nom d'alias.
  • 292.
  • 293.
    Règles d'Exécution desOrdres du LMD dans une Vue • Vous pouvez exécuter des opérations du LMD dans des vues simples. • Vous ne pouvez pas supprimer une ligne si la vue contient : – Des fonctions de groupe – Une clause GROUP BY – Le mot-clé DISTINCT
  • 294.
    Utilisation de laClause WITH CHECK OPTION Vous pouvez garantir que le LMD reste dans le domaine de la vue à l'aide de la clause WITH CHECK OPTION. CREATE OR REPLACE VIEW empvu20 AS SELECT * FROM emp WHERE deptno = 20 WITH CHECK OPTION CONSTRAINT empvu20_ck; Toute tentative de modification du numéro de département dans une ligne de la vue échouera, car elle transgresse la contrainte WITH CHECK OPTION. Aucune opération du LMD ne pourra être exécutée si vous ajoutez l'option WITH READ ONLY dans la définition de votre vue. Toute tentative d'exécution d'un ordre du LMD sur une ligne de la vue génère l'erreur Oracle8 Server ORA- 01752.
  • 295.
    Suppréssion d’une VUE Lasuppression d'une vue n'entraîne pas la perte des données, car toute vue est basée sur des tables sous- jacentes de la base de données. Syntaxe : DROP VIEW view ; Exemple : DROP VIEW empvu10;
  • 296.
    Séquences Oracle offre lapossibilité de générer des séquences de numéros uniques pour ce type d'utilisation, et ils sont appelés sequences.Generalement , les séquences sont utilisés pour générer, les valeurs entières séquentielles uniques qui sont utilisés comme valeurs de clé primaire dans la base de données de séquence de nombres de tables.A être générée dans l'ordre croissant ou décroissant . On note qu'un certain nombre fois générée par la séquence ne peut pas être annulée. Syntaxe : de la création de Séquence CREATE SEQUENCE <sequence name> [INCREMENT BY < number >] [START WITH < start value number>] [MAXVALUE < MAXIMUM VLAUE NUMBER>] [NOMAXVALUE] [MINVALUE < minimum value number>] [CYCLE | NOCYCLE] [CACHE < number of sequence value to cache> | NOCACHE] [ORDER | NOORDER];
  • 297.
    Exemple de Séquences Créerune séquence dept_deptid_seq de la table department en utilisant la clé primaire de cette table . CREATE SEQUENCE DEPT_DEPTID_SEQ INCREMENT BY 10 START WITH 120 MAXVALUE 9999 NOCACHE NOCYCLE
  • 298.
    Pseudo colonnes NEXTVALet CURRVAL Valeurs de séquence sont générés par l'utilisation de deux colonnes de pseudo nommé currval et la colonne nextval Syntaxe: Sequence.NEXTVAL Sequence.CURRVAL
  • 299.
    Modification et Supprimerune Séquence Le propriétaire de séquence peut modifier une séquence pour modifier les attributs comme INCREMENT BY clauses valeur, MINVALUE, MAXVALUE, à vélo ou en mémoire cache uniquement. Notez que les modifications effectuées seront reflétées dans les numéros à venir. modification ALTER SEQUENCE DEPT_DEPTID_SEQ INCREMENT BY 20 START WITH MAXVALUE 999999 NOCACHE NOCYCL suppression DROP SEQUENCE DEPT_DEPTID_SEQ
  • 300.
    Création et Suppréssiond’INDEX Les index sont les objets de base de données qui sont utilisés pour optimiser les performances de la requête dans les SELECT. - Syntaxe : création de l’index CREATE [UNIQUE][BITMAP]INDEX index ON table (column [, column]...); Exemple : Création de l’index au niveau de la colonne de last_name de la table employees CREATE INDEX EMP_LAST_NAME idx ON EMPLOYEES(LAST_NAME); - Syntaxe de suppression: il faut avoir le privilège DROP ANY INDEX pour supprimer les index DROP INDEX index ; Exemple : il faut avoir DROP INDEX EMP_LAST_NAME idx;
  • 301.
    Création de Synonymes Unsynonyme est un alias, qui est, d'une forme de sténographie utilisé pour simplifier la tâche de référencement d'un objet Il existe deux catégories de synonymes, synonyme public et synonyme privé peut être utilisée pour permettre un accès facile à un objet pour tous les utilisateurs du système. En fait, l'individu créant un synonyme public ne détient pas le synonyme plutôt, il appartiendra au groupe de l'utilisateur PUBLIC qui existe au sein de synonymes Oracle. Synonyme privé d'autre part, appartiennent à l'utilisateur du système qui les crée et de séjourner dans ce le schéma de l'utilisateur.
  • 302.
    Exemple de Synonyme Unutilisateur du système peut accorder le privilège d'utiliser des synonymes privés qu'ils possèdent à l'autre fin. Pour créer un synonyme vous devez avoir le privilège CREATE SYNONYME .néanmoins vous devez avoir le privilège CREATE synonyme public dans le but de créer des synonymes publics .Si un synonyme est déclarée comme public, le nom de synonymes ne peut pas déjà être utilisé comme un synonyme. Syntaxe : CREATE [ PUBLIC ] SYNONYM synonym FOR OBJECT;
  • 303.
    Exemple de créationet de suppression de Synonyme - Création d’un Synonyme Exemple : Créer un synonyme de la vue DEPT_SUM_VU CREATE SYNONYM DEPT_SU FOR DEPT_SUM_VU - Suppréssion d’un Synonyme DROP SYNONYM DEPT_SU

Notes de l'éditeur

  • #9 Signification « g » : Grid :
  • #10 Signification « g » : Grid :
  • #11 Signification « g » : Grid :
  • #13 RAC: real application cluster ISO: organisation standards institut ANSI: American national standard institut
  • #37  IBM : XML :
  • #39 Approche non procédurale :
  • #41 Non procédural : Portabilité limité :
  • #42 Un schéma est un ensemble comprenant des structures de données Il appartient à un utilisateur de la base et porte le nom de ce dernier. Chaque utilisateur possède ainsi son propre schéma. Leurs éléments (Oracle les nomme d’une manière générique objects) sont créés et modifiés par des ordres SQL.
  • #43 Un schéma est un ensemble comprenant des structures de données Il appartient à un utilisateur de la base et porte le nom de ce dernier. Chaque utilisateur possède ainsi son propre schéma. Leurs éléments (Oracle les nomme d’une manière générique objects) sont créés et modifiés par des ordres SQL.
  • #44 Un schéma est un ensemble comprenant des structures de données Il appartient à un utilisateur de la base et porte le nom de ce dernier. Chaque utilisateur possède ainsi son propre schéma. Leurs éléments (Oracle les nomme d’une manière générique objects) sont créés et modifiés par des ordres SQL.
  • #46 Processus utilisateur: