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.
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.
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
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
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;
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;
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
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.
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.
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.
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
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 ;
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.
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.
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.
* / + _
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 ( "")
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
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 .
É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.
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'.
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 :
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.
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
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
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 .
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.
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 :
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
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';
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.
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.
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
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.
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:
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.
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).
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.
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);
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);
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).
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
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.
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.
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.
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
#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.