c1 SQL

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 37

But du chapitre

Pour extraire des données de la base, vous devez utiliser l'instruction SQL (Structured Query
Language) SELECT. Il est parfois nécessaire de restreindre le nombre de colonnes à afficher. Ce
chapitre décrit toutes les instructions SQL nécessaires à l'exécution de ces actions.
Vous souhaiterez peut-être créer des instructions SELECT réutilisables. Ce chapitre aborde également
l'environnement iSQL*Plus dans lequel vous exécutez les instructions SQL.
Remarque : iSQL*Plus est un nouvel outil d'Oracle9i. Il s'agit d'un environnement de navigation
dans lequel vous exécutez des commandes SQL. Dans les versions antérieures d'Oracle, SQL*Plus
était l'environnement par défaut d'exécution des commandes SQL. SQL*Plus est toujours disponible.
Il est présenté dans l'annexe C.

Le langage SQL et l'outil iSQL 1-2


Différentes fonctions des instructions SQL SELECT
Une instruction SELECT permet d'extraire des informations d'une base de données. L'utilisation d'une
instruction SELECT offre les possibilités suivantes :
• Projection : Cette fonction de SQL permet de choisir les colonnes d'une table qu'une
interrogation doit renvoyer. Vous pouvez choisir autant de colonnes que vous le souhaitez.
• Sélection : Cette fonction de SQL permet de choisir les lignes d'une table qu'une interrogation
doit renvoyer. Divers critères de restriction sont disponibles à cet effet.
• Jointure : Cette fonction de SQL permet de joindre des données stockées dans différentes tables.
Les jointures seront décrites en détail dans un chapitre ultérieur.

Le langage SQL et l'outil iSQL 1-3


Instruction SELECT élémentaire
Dans sa forme la plus simple, une instruction SELECT comprend :
• une clause SELECT précisant les colonnes à afficher,
• une clause FROM spécifiant la table qui contient les colonnes répertoriées dans la clause SELECT.
Explication de la syntaxe :
SELECT désigne une liste répertoriant une ou plusieurs colonnes
* permet de sélectionner toutes les colonnes
DISTINCT permet de supprimer les doublons
column|expression permet de sélectionner la colonne désignée ou l'expression
alias permet d'attribuer des en-têtes différents aux colonnes
sélectionnées
FROM table permet de désigner la table contenant les colonnes
Remarque : Tout au long de ce cours, nous utiliserons les termes mot-clé, clause et instruction comme suit :
• Un mot-clé renvoie à un élément SQL individuel.
Par exemple, SELECT et FROM sont des mots-clés.
• Une clause est une partie d'une instruction SQL.
Par exemple, SELECT employee_id, last_name, ... est une clause.
• Une instruction est une combinaison d'au moins deux clauses.
Par exemple, SELECT * FROM employees est une instruction SQL.

Le langage SQL et l'outil iSQL 1-4


Sélectionner toutes les colonnes de toutes les lignes
Vous pouvez afficher toutes les colonnes de données d'une table en plaçant un astérisque (*) à la suite
du mot-clé SELECT. Dans l'exemple de la diapositive, la table des services (DEPARTMENTS)
comporte quatre colonnes : DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID et
LOCATION_ID. Elle contient sept lignes, une pour chaque service.
Vous pouvez également afficher l'ensemble des colonnes de la table en les énumérant toutes à la suite
du mot-clé SELECT. Par exemple, l'instruction SQL suivante, de même que l'exemple de la
diapositive, affiche toutes les colonnes et toutes les lignes de la table DEPARTMENTS :
SELECT department_id, department_name, manager_id, location_id
FROM departments;

Le langage SQL et l'outil iSQL 1-5


Sélectionner des colonnes spécifiques de toutes les lignes
Vous pouvez utiliser l'instruction SELECT pour afficher des colonnes spécifiques de la table. Pour
cela, indiquez les noms de colonne séparés par des virgules. L'exemple ci-dessus permet d'afficher
tous les numéros de service et d'emplacement de la table DEPARTMENTS.
Dans la clause SELECT, indiquez les colonnes dans l'ordre dans lequel vous souhaitez qu'elles
apparaissent. Par exemple, pour afficher, de gauche à droite, l'emplacement avant le numéro de
service, utilisez l'instruction suivante :
SELECT location_id, department_id
FROM departments;

Le langage SQL et l'outil iSQL 1-6


Ecrire des instructions SQL
Les règles et indications simples présentées ci-dessous permettent de créer des instructions correctes et
faciles à lire et à éditer.
• Sauf indication contraire, les instructions SQL peuvent être écrites indifféremment en
majuscules et/ou en minuscules.
• Les instructions SQL peuvent être saisies sur une ou plusieurs lignes.
• Les mots-clés ne doivent pas être scindés sur plusieurs lignes, ni abrégés.
• Les clauses sont généralement placées sur des lignes distinctes pour une lecture et une édition
aisées.
• Les indentations permettent une meilleure lisibilité du code.
• Généralement, les mots-clés sont saisis en majuscules et tous les autres termes, tels que les
noms de table et de colonne, sont saisis en minuscules.
Exécuter des instructions SQL
Dans l'environnement iSQL*Plus, cliquez sur le bouton Execute pour lancer la ou les
commandes figurant dans la fenêtre d'édition.

Le langage SQL et l'outil iSQL 1-7


Valeurs par défaut des en-têtes de colonne
Dans iSQL*Plus, les en-têtes de colonne s'affichent en majuscules et sont centrés.
SELECT last_name, hire_date, salary
FROM employees;

Vous pouvez remplacer l'affichage d'un en-tête de colonne par celui d'un alias. Les alias de colonne
sont décrits plus en détail dans la suite de ce chapitre.

Le langage SQL et l'outil iSQL 1-8


Expressions arithmétiques
Si nécessaire, vous pouvez modifier l'affichage des données, effectuer des calculs ou étudier différents
scénarios de simulation à l'aide d'expressions arithmétiques. Une expression arithmétique peut
contenir des noms de colonne, des constantes numériques et des opérateurs arithmétiques.
Opérateurs arithmétiques
Les opérateurs arithmétiques disponibles dans SQL sont présentés dans la diapositive. Vous pouvez
les utiliser dans n'importe quelle clause d'une instruction SQL, excepté FROM.

Le langage SQL et l'outil iSQL 1-9


Utiliser des opérateurs arithmétiques
L'exemple de la diapositive décrit l'utilisation de l'opérateur d'addition pour calculer une augmentation
de salaire de 300 $ applicable à tous les employés, avec affichage d'une nouvelle colonne
SALARY+300.
La colonne SALARY+300 qui résulte de ce calcul n'est pas une nouvelle colonne de la table
EMPLOYEES ; elle n'est que l'affichage d'un résultat. Par défaut, le nom d'une nouvelle colonne est
issu du calcul dont elle provient : dans ce cas précis, salary+300.
Remarque : Le serveur Oracle9i ignore les espaces situés avant et après l'opérateur arithmétique.

Le langage SQL et l'outil iSQL 1-10


Priorité des opérateurs
Lorsqu'une expression arithmétique comporte plusieurs opérateurs, les opérateurs de multiplication et
de division sont évalués en priorité. Lorsque les opérateurs d'une expression sont de priorité identique,
l'évaluation s'effectue de gauche à droite.
Vous pouvez placer une expression entre parenthèses pour forcer sa priorité d'évaluation.

Le langage SQL et l'outil iSQL 1-11


Priorité des opérateurs (suite)
L'exemple de la diapositive affiche le nom, le salaire mensuel et le revenu annuel des employés. Le
revenu annuel est calculé par multiplication du salaire mensuel par 12, puis ajout d'une prime
exceptionnelle de 100 $. La multiplication est effectuée avant l'addition.
Remarque : L'utilisation des parenthèses renforce l'ordre normal de priorité des opérateurs et
améliore la clarté. L'expression de la diapositive, par exemple, peut être écrite comme suit :
(12*salary)+100, sans que le résultat en soit modifié.

Le langage SQL et l'outil iSQL 1-12


Utiliser des parenthèses
Vous pouvez modifier les règles de priorité en utilisant des parenthèses pour préciser l'ordre dans
lequel les opérateurs doivent être évalués.
L'exemple de la diapositive affiche le nom, le salaire mensuel et le revenu annuel des employés. Le
calcul du revenu annuel est effectué par multiplication par 12 du salaire mensuel additionné d'une
prime mensuelle de 100 $. Les parenthèses rendent l'addition prioritaire sur la multiplication.

Le langage SQL et l'outil iSQL 1-13


Valeurs NULL
Lorsqu'il manque une valeur sur une ligne d'une colonne donnée, cette valeur est dite NULL.
Une valeur NULL est une valeur non disponible, non affectée, inconnue ou inapplicable. Elle est
différente du zéro ou de l'espace. Le zéro est un chiffre et l'espace est un caractère.
Toutes les colonnes peuvent contenir des valeurs NULL. Cependant, certaines contraintes, NOT
NULL et PRIMARY KEY, empêchent l'utilisation de ce type de valeur dans les colonnes.
Dans la colonne COMMISSION_PCT de la table EMPLOYEES, seuls le directeur commercial et les
représentants peuvent recevoir une commission. Les autres employés n'y ont pas droit. Une valeur
NULL représente cet état de fait.

Le langage SQL et l'outil iSQL 1-14


Valeurs NULL (suite)
Lorsqu'une valeur de colonne NULL est utilisée dans une expression arithmétique, le résultat de cette
expression est NULL. Lorsque vous tentez d'effectuer une division par zéro, une erreur est
déclenchée. En revanche, si vous divisez un nombre par une valeur NULL, le résultat est NULL ou
inconnu.
Dans l'exemple de la diapositive, l'employé King ne reçoit aucune commission. Puisque la valeur de la
colonne COMMISSION_PCT de l'expression arithmétique est NULL, le résultat est NULL.
Pour plus d'informations, voir Oracle9i SQL Reference, "Basic Elements of SQL".

Le langage SQL et l'outil iSQL 1-15


Alias de colonne
Lors de l'affichage des résultats d'une interrogation, iSQL*Plus prend généralement le nom de la
colonne sélectionnée comme en-tête de colonne. Cet en-tête n'est pas toujours explicite et s'avère donc
parfois difficile à comprendre. L'alias de colonne permet de modifier l'en-tête.
Placez l'alias à la suite du nom de colonne dans la liste SELECT en utilisant le caractère espace en tant
que séparateur. Par défaut, les alias sont en majuscules. Placez l'alias entre guillemets (" ") s'il contient
des espaces ou des caractères spéciaux (tels que # ou $), ou si les majuscules/minuscules doivent être
respectées.

Le langage SQL et l'outil iSQL 1-16


Alias de colonne (suite)
Le premier exemple affiche le nom et le pourcentage de commission de tous les employés. Le mot-clé
facultatif AS a été placé avant l'alias de colonne. L'utilisation ou l'omission de ce mot-clé ne modifie
pas le résultat de l'interrogation. Dans l'instruction SQL, les alias de colonne "name" et "comm" sont
spécifiés en minuscules, alors que les en-têtes de colonne apparaissent en majuscules dans le résultat
de l'interrogation. En effet, comme mentionné sur une diapositive précédente, les en-têtes de colonne
s'affichent par défaut en majuscules.
Le second exemple affiche le nom et le salaire annuel de tous les employés. L'alias Annual
Salary a été placé entre guillemets car il contient un espace. L'en-tête de colonne affiché est
identique à l'alias de colonne.

Le langage SQL et l'outil iSQL 1-17


Opérateur de concaténation
L'opérateur de concaténation (||) permet de lier des colonnes à d'autres colonnes, à des expressions
arithmétiques ou à des constantes afin de créer une expression alphanumérique. Les colonnes situées
de part et d'autre de l'opérateur se combinent pour former une colonne de résultats unique.

Le langage SQL et l'outil iSQL 1-18


Opérateur de concaténation (suite)
Dans cet exemple, LAST_NAME et JOB_ID sont concaténées et reçoivent l'alias Employees. Le
nom des employés et leur ID de poste sont combinés pour ne former qu'une colonne à l'affichage.
Le mot-clé AS placé devant l'alias simplifie la lecture de la clause SELECT.

Le langage SQL et l'outil iSQL 1-19


Chaînes de caractères littérales
Un littéral est une chaîne de caractères, un nombre ou une date inclus dans la liste SELECT, mais n'est
ni un nom de colonne, ni un alias de colonne. Il apparaît sur chaque ligne renvoyée. Des chaînes
littérales de type texte de format libre peuvent être intégrées au résultat de l'interrogation. Elles sont
traitées comme les colonnes dans la liste SELECT.
Contrairement aux littéraux numériques, les littéraux de type date et les littéraux alphanumériques
doivent être placés entre apostrophes (' ').

Le langage SQL et l'outil iSQL 1-20


Chaînes de caractères littérales (suite)
L'exemple de la diapositive affiche le nom et l'ID de poste de tous les employés. L'en-tête de la
colonne est Employee Details. Dans l'instruction SELECT, le littéral entre apostrophes est entouré
d'espaces pour une meilleure lisibilité des résultats.
Dans l'exemple suivant, le nom et le salaire de chaque employé sont concaténés à un littéral pour que
le résultat soit plus parlant.
SELECT last_name ||': 1 Month salary = '||salary Monthly
FROM employees;


Le langage SQL et l'outil iSQL 1-21
Doublons
Par défaut, iSQL*Plus affiche le résultat d'une interrogation sans éliminer les doublons. L'exemple
ci-dessus affiche la totalité des numéros de service de la table EMPLOYEES. Les numéros de service
apparaissent plusieurs fois.

Le langage SQL et l'outil iSQL 1-22


Doublons (suite)
Pour éliminer les doublons dans le résultat d'une interrogation, ajoutez le mot-clé DISTINCT dans la
clause SELECT, directement à la suite du mot-clé SELECT. Dans l'exemple ci-dessus, la table
EMPLOYEES comporte 20 lignes, mais on n'y distingue que sept numéros de service.
Vous pouvez spécifier plusieurs colonnes à la suite du mot-clé DISTINCT. Ce mot-clé agit sur toutes
les colonnes sélectionnées et le résultat correspond aux combinaisons distinctes de ces colonnes.
SELECT DISTINCT department_id, job_id
FROM employees;

Le langage SQL et l'outil iSQL 1-23


SQL et iSQL*Plus
SQL est un langage de commande permettant les communications entre un outil ou une application et
le serveur Oracle. Oracle SQL comporte de nombreuses extensions.
iSQL*Plus est un outil Oracle possédant son propre langage de commande, qui reconnaît les
instructions SQL et les soumet au serveur Oracle pour exécution.
SQL :
• peut être employé par de nombreux utilisateurs, y compris par ceux qui possèdent peu ou pas
d'expérience de programmation,
• est un langage non procédural,
• réduit le temps de création et de mise à jour des systèmes,
• est un langage proche de la langue anglaise.
iSQL*Plus :
• est accessible depuis un navigateur,
• accepte la saisie ad hoc d'instructions,
• offre un éditeur en ligne permettant la modification des instructions SQL,
• contrôle les paramètres d'environnement,
• présente les résultats des interrogations sous forme d'état élémentaire,

Le langage SQL et l'outil iSQL 1-24


• accède aux bases de données locales et distantes.

Le langage SQL et l'outil iSQL 1-‹N°›


SQL et iSQL*Plus (suite)
Le tableau ci-dessous compare SQL et iSQL*Plus :
SQL iSQL*Plus

Langage de communication avec le serveur Reconnaît les instructions SQL et les envoie au
Oracle pour l'accès aux données serveur
Basé sur le langage SQL conforme à la norme Interface propriétaire d'Oracle pour l'exécution
ANSI (American National Standards Institute) d'instructions SQL
Manipule les données et la définition des tables Interdit la manipulation des valeurs de la base de
de la base de données données
Ne présente pas de caractère de suite Présente un tiret (-) comme caractère de suite si
la commande dépasse une ligne
Abréviation impossible Abréviation possible

Utilise des fonctions de formatage Utilise des commandes de formatage de données

Le langage SQL et l'outil iSQL 1-25


iSQL*Plus
iSQL*Plus est un environnement dans lequel vous pouvez :
• exécuter des instructions SQL afin d'extraire, de modifier, d'ajouter et de supprimer des données
dans la base,
• formater, calculer, stocker et afficher les résultats des interrogations sous forme d'états,
• créer des fichiers script pour le stockage d'instructions SQL en vue d'une utilisation répétée.
Les commandes iSQL*Plus peuvent être réparties selon les catégories suivantes :
Catégorie Opération
Environnement Affecte le comportement général des instructions SQL pour la session
Format Formate les résultats des interrogations
Manipulation de Enregistre des instructions dans des fichiers script au format texte et
fichiers exécute ces instructions depuis ces fichiers
Exécution Envoie des instructions SQL du navigateur vers le serveur Oracle
Edition Modifie les instructions SQL dans la fenêtre d'édition
Interaction Permet de créer et de transmettre des variables aux instructions SQL, et
d'afficher des valeurs de variable et des messages
Divers Possède différentes commandes de connexion à la base de données, de
manipulation de l'environnement iSQL*Plus et d'affichage des
définitions de colonne
Le langage SQL et l'outil iSQL 1-26
Se connecter à iSQL*Plus
Pour vous connecter via un environnement de navigation :
1. Démarrez le navigateur.
2. Entrez l'URL de l'environnement iSQL*Plus.
3. Renseignez les champs de nom utilisateur (Username), de mot de passe (Password) et d'ID de
connexion Oracle (Connection Identifier).

Le langage SQL et l'outil iSQL 1-27


Environnement iSQL*Plus
Dans le navigateur Windows, la fenêtre iSQL*Plus présente plusieurs zones clés :
1. Fenêtre d'édition : zone de saisie des instructions SQL et des commandes iSQL*Plus.
2. Bouton Execute : cliquez sur ce bouton pour exécuter les instructions et les commandes de la
fenêtre d'édition.
3. Option Output : la valeur par défaut, Work Screen, affiche les résultats de l'instruction SQL sous
la fenêtre d'édition. Les autres options sont File et Window. File permet d'enregistrer les résultats
dans un fichier donné et Window de les afficher dans une fenêtre distincte.
4. Bouton Clear Screen : cliquez sur ce bouton pour effacer le texte de la fenêtre d'édition.
5. Bouton Save Script : permet d'enregistrer le contenu de la fenêtre d'édition dans un fichier.
6. Script Location : identifie le nom et l'emplacement d'un fichier script que vous souhaitez exécuter.
7. Bouton Browse : permet de rechercher un fichier script à l'aide de la boîte de dialogue d'ouverture
de fichier de Windows.
8. Icône Log Out : cliquez sur cette icône pour terminer la session iSQL*Plus et revenir à la fenêtre
de connexion correspondante.
9. Icône Help : permet d'accéder à la documentation d'aide d'iSQL*Plus.
10. Icône Password : permet de modifier votre mot de passe.

Le langage SQL et l'outil iSQL 1-28


Afficher la structure d'une table
Dans iSQL*Plus, vous pouvez afficher la structure d'une table à l'aide de la commande DESCRIBE.
Cette commande affiche le nom et le type de données des colonnes, et indique si celles-ci doivent
contenir des données ou non.
Explication de la syntaxe :
tablename correspond au nom d'une table, d'une vue ou d'un synonyme existant,
accessible à l'utilisateur

Le langage SQL et l'outil iSQL 1-29


Afficher la structure d'une table (suite)
L'exemple de la diapositive affiche des informations sur la structure de la table DEPARTMENTS.
Dans le résultat :
Null? indique si une colonne doit ou non contenir des données ; NOT NULL signifie
que la colonne doit contenir des données
Type affiche le type de données d'une colonne
Les types de données sont décrits dans le tableau suivant :
Type de données Description
NUMBER(p,s) Valeur numérique comportant jusqu'à p chiffres, dont s après la
virgule
VARCHAR2(s) Valeur alphanumérique de longueur variable d'une taille maximum
de s
DATE Date et heure comprises entre le 1er janvier 4712 av. J.-C. et le 31
décembre 9999 apr. J.-C.
CHAR(s) Valeur alphanumérique de longueur fixe de taille s

Le langage SQL et l'outil iSQL 1-30


Interagir avec des fichiers script
Placer des instructions et des commandes dans un fichier script au format texte
Pour enregistrer des commandes et des instructions depuis la fenêtre d'édition d'iSQL*Plus dans un fichier
script au format texte, procédez comme suit : :
1. Entrez les instructions SQL dans la fenêtre d'édition d'iSQL*Plus.
2. Cliquez sur le bouton Save Script. La boîte de dialogue d'enregistrement de fichier de Windows s'ouvre.
Indiquez le nom du fichier. Son extension par défaut est .html. Vous pouvez choisir le type de fichier
texte ou enregistrer le fichier au format .sql.

Le langage SQL et l'outil iSQL 1-31


Interagir avec des fichiers script (suite)
Utiliser les instructions et les commandes provenant d'un fichier script dans iSQL*Plus
Pour utiliser des commandes et des instructions enregistrées antérieurement dans un fichier script
depuis iSQL*Plus, procédez comme suit :
1. Entrez le nom et l'emplacement du fichier script ou cliquez sur le bouton Browse pour effectuer
une recherche.
2. Cliquez sur le bouton Load Script. Le contenu du fichier est chargé dans la fenêtre d'édition
d'iSQL*Plus.
3. Cliquez sur le bouton Execute pour exécuter le contenu de la fenêtre d'édition d'iSQL*Plus.

Le langage SQL et l'outil iSQL 1-32


Interagir avec des fichiers script (suite)
Enregistrer les résultats dans un fichier
Pour enregistrer dans un fichier les résultats générés à partir d'une instruction SQL ou d'une commande
iSQL*Plus, procédez comme suit :
1. Entrez les instructions SQL et les commandes iSQL*Plus dans la fenêtre d'édition d'iSQL*Plus.
2. Sélectionnez File dans la zone Output.
3. Cliquez sur le bouton Execute pour exécuter le contenu de la fenêtre d'édition d'iSQL*Plus. La
fenêtre d'enregistrement de fichier de Windows s'ouvre. Indiquez le nom du fichier. Son extension par
défaut est .html, mais vous pouvez changer son format. Les résultats sont enregistrés dans le fichier
indiqué.

Le langage SQL et l'outil iSQL 1-33


Instruction SELECT
Dans ce chapitre, vous avez appris à extraire des données d'une table de la base à l'aide de l'instruction
SELECT.

SELECT *|{[DISTINCT] column [alias],...}


FROM table;
Explication de la syntaxe :
SELECT introduit une liste répertoriant une ou plusieurs colonnes
* permet de sélectionner toutes les colonnes
DISTINCT permet de supprimer les doublons
column|expression permet de sélectionner la colonne désignée ou l'expression
alias permet d'attribuer des en-têtes différents aux colonnes sélectionnées
FROM table permet de désigner la table contenant les colonnes

iSQL*Plus
iSQL*Plus est un environnement d'exécution qui vous permet d'envoyer des instructions SQL au serveur de
bases de donnée, mais aussi de les éditer et de les sauvegarder. Les instructions peuvent être exécutées à l'invite
SQL ou depuis un fichier script.
Remarque : L'environnement SQL*Plus est présenté dans l'annexe C.

Le langage SQL et l'outil iSQL 1-34


Présentation de l'exercice 1
Cet exercice est le premier d'une longue série. Les solutions (si vous en avez besoin) se trouvent
dans l'annexe A. Les exercices ont pour objet de présenter tous les sujets abordés dans ce chapitre.
Répondez aux questions 2 à 4 par écrit.
Certains exercices contiennent des questions introduites par "S'il vous reste du temps" ou "Pour aller
plus loin". Ne les faites que si vous avez répondu à toutes les autres questions dans le temps imparti
et si vous souhaitez effectuer des exercices plus approfondis.
Commencez les exercices calmement et consciencieusement. Vous pouvez vous entraîner à
sauvegarder et à exécuter des fichiers de commandes. Si nécessaire, n'hésitez pas à poser des
questions à votre formateur.
Questions écrites
Pour les questions 2 à 4, entourez Vrai ou Faux.

Le langage SQL et l'outil iSQL 1-35


Le langage SQL et l'outil iSQL 1-40

Vous aimerez peut-être aussi