t echnologies o racle ordres de base © sebvita.com
TRANSCRIPT
TECHNOLOGIES ORACLE
Ordres de base
© sebvita.com
Objectifs
En suivant ce cours, vous serez capable :• D’exécuter un ordre
SELECT de base• De limiter et trier les
lignes retournées par une requête
© sebvita.com
Ordre SELECT
© sebvita.com
© sebvita.com
L’ordre SELECT ?
Syntaxe :
• SELECT liste les colonnes qui sont affichées• FROM indique la table d’où sont issues les
colonnes
© sebvita.com
SELECT *|{[DISTINCT] column|expression [alias],...}FROM table;
L’ordre SELECT ?
Sélectionner toutes les colonnes d’une table
© sebvita.com
SELECT *FROM departments;
L’ordre SELECT ?
Sélectionner certaines colonnes d’une table
© sebvita.com
SELECT department_id, location_idFROM departments;
L’ordre SELECT ?Directives• Non sensibles à la casse• Écrits sur une ou plusieurs lignes• Mots clés ne peuvent être abrégés ou
coupés sur plusieurs lignes• Clauses placées sur de nouvelles lignes• Indentation du code• Requêtes se terminent par un point-
virgule
© sebvita.com
Expressions arithmétiques
Operateur Description
+ Add
- Subtract
Multiply
Divide
*
/
© sebvita.com
Expressions arithmétiques
SELECT last_name, salary, salary + 300FROM employees;
© sebvita.com
Expressions arithmétiques
SELECT last_name, salary, 12*salary+100FROM employees;
SELECT last_name, salary, 12*(salary+100)FROM employees;
© sebvita.com
Expressions arithmétiquesDéfinir les valeurs NULL• Une valeur NULL est indisponible, non
assignée, inconnue ou inutilisable• Ce n’est pas comme un zéro ou un espace
SELECT last_name, job_id, salary, commission_pctFROM employees;
© sebvita.com
Expressions arithmétiquesUtiliser les valeurs NULL• Une expression arithmétique qui
contient une valeur NULL retourne NULL
SELECT last_name, 12*salary*commission_pctFROM employees;
© sebvita.com
Les alias de colonnes
• Changent les entêtes de colonnes• Sont utiles avec les calculs• Suivent directement le nom de la
colonne (ou le mot clé AS)• Nécessitent des doubles quotes (" ")
si contient un espace, un caractère spécial ou est sensible à la casse
© sebvita.com
Les alias de colonnes
SELECT last_name AS name , commission_pct commFROM employees;
SELECT last_name "Name" , salary*12 "Annual Salary"FROM employees;
© sebvita.com
Opérateur de concaténation• Lie les colonnes ou chaînes de
caractères à d’autres colonnes• Se présente avec deux barres (||)• Crée une colonne à l’affichage
SELECT last_name || job_id AS "Employees"FROM employees;
© sebvita.com
Chaînes de caractères littérales• Un littéral est un caractère, un
nombre ou une date qui est inclus dans un SELECT
• Les dates et caractères littéraux doivent être entre simples quotes (' ')
• Chaque chaîne de caractères est affichée une fois pour chaque ligne retournée
© sebvita.com
Chaînes de caractères littérales
SELECT last_name || ' is a ' || job_id AS "Employee Details"FROM employees;
© sebvita.com
Opérateur de quote alternative• Spécifie son propre délimiteur
SELECT department_name || q'[, it's assigned Manager Id: ]' || manager_id AS "Department and Manager"FROM departments;
© sebvita.com
Lignes dupliquées• Par défaut, toutes les lignes sont
affichées, même les doublonsSELECT department_idFROM employees;
SELECT DISTINCT department_idFROM employees;
© sebvita.com
Afficher la structure d’une table
DESCRIBE employees
DESC[RIBE] tablename
Exemple :
© sebvita.com
© sebvita.com
VOUS AVEZ DES QUESTIONS ?
Ordre SELECT
© sebvita.com
Introduction to SQL*Plus
© sebvita.com
Commandes d’éditionLe buffer
© sebvita.com
Commandes d’édition• Ouvre le bloc notes pour modifier le
SQL
• Bloque l’environnement de travail• afiedt.buf ne peut contenir d’ordres
SQL*Plus• Pour ajouter du SQL*Plus, utiliser un
script SQL
ED[IT]
© sebvita.com
Commandes d’éditions
Liste non exhaustive• A[PPEND] text• C[HANGE] / old / new• CL[EAR] BUFF[ER]• CL[EAR] SCR[EEN]• DEL• DEL n• DEL m n
• I[NPUT]• I[NPUT] text• L[IST]• L[IST] n• L[IST] m n• R[UN]• n• n text• 0 text
© sebvita.com
Commandes d’édition
SQL> LIST 1 SELECT last_name 2* FROM employees
SQL> 1 1* SELECT last_name
SQL> A , job_id 1* SELECT last_name, job_id
SQL> L 1 SELECT last_name, job_id 2* FROM employees
© sebvita.com
Commandes d’édition
SQL> L 1 SELECT * FROM employees
SQL> c/employees/departments 1* SELECT * FROM departments
SQL> L 1 SELECT * FROM departments
© sebvita.com
Manipulation de fichiers
Liste non exhaustive• SAV[E] filename[.ext] [RE[PLACE]]|[APP[END]]• GET filename[.ext]• STA[RT] filename[.ext]• @ filename[.ext]• ED[IT] [filename[.ext]]• SPO[OL] filename[.ext] [OFF|OUT]• EXIT
© sebvita.com
Personnalisation d’environnement
• Utiliser SET pour contrôler la session
• Vérifier la configuration avec SHOW
SET system_variable value
SQL> SET ECHO ONSQL> SHOW ECHO
echo ON
© sebvita.com
Personnalisation d’environnement
ARRAYSIZE {15 | n}FEEDBACK {6 | n | OFF | ON}HEADING {OFF | ON}LONG {80 | n | ON | text}LINESIZE {80 | n}PAGESIZE {14 | n}
SQL> SET HEADING OFFSQL> SHOW HEADING
heading OFF
© sebvita.com
Commandes de formatage
COL[UMN] [column option]TTITLE [text | OFF | ON]BTITLE [text | OFF | ON]BREAK [ON report_element]
© sebvita.com
Commandes de formatage• Pour contrôler l’affichage des colonnes
• CLE[AR] : Supprime le formatage d’une colonne
• HEA[DING] text : Change l’entête• FOR[MAT] format : Modifie l’affichage d’une
colonne• NOPRINT | PRINT : Afficher ou non une
colonne• NULL : Remplace les valeurs NULL
COL[UMN] [{column | alias} [option]]
© sebvita.com
Commandes de formatage• Créer un entête de colonne
• Afficher la configuration de la colonne last_name
• Supprimer la configuration de la colonne
COLUMN last_name HEADING 'Employee|Name'COLUMN salary JUSTIFY LEFT FORMAT $99,990.00COLUMN manager FORMAT 999999999 NULL 'No manager'
COLUMN last_name
COLUMN last_name CLEAR
© sebvita.com
Commandes de formatage• Modèles de formatage
Élément
9
0
$
L
.
,
Résultat
1234
001234
$1234
L1234
1234.00
1,234
Exemple
999999
099999
$9999
L9999
9999.99
9,999
Description
Represents a number
Adds 0
Dollar currency
Locale currency
Decimal position
Thousands separator
© sebvita.com
Commandes de formatage• La commande BREAK évite les
doublons à l’affichageBREAK ON job_id
© sebvita.com
Commandes de formatage• Afficher des entêtes de page
• Configurer les pieds de page
TTI[TLE] [text | OFF | ON]
TTITLE 'Salary|Report'
BTITLE 'Confidential'
© sebvita.com
Création de rapportsCréer un fichier de script (.sql) pour générer un rapport1. Créer et tester l’ordre SQL2. Sauver l’ordre dans un fichier (.sql)3. Modifier le fichier dans un éditeur de texte4. Ajouter les commandes de formatage5. Vérifier la présence du point virgule final6. Supprimer les commandes de formatage
après l’ordre7. Sauvegarder8. Charger et exécuter le script
© sebvita.com
Création de rapports
© sebvita.com
© sebvita.com
VOUS AVEZ DES QUESTIONS ?
Restriction et tri des données
© sebvita.com
Restreindre les données
« Récupère tousles employés du département 90 »
© sebvita.com
Restreindre les données• Restreindre les lignes retournées
avec la clause WHERE
• La clause WHERE suit la clause FROM.
SELECT *|{[DISTINCT] column|expression [alias],...} FROM table[WHERE condition(s)] ;
© sebvita.com
Restreindre les données• Utiliser la clause WHERE
SELECT employee_id, last_name, job_id, department_idFROM employeesWHERE department_id = 90 ;
© sebvita.com
Restreindre les données
Chaînes de caractères et dates :• Doivent être en simples quotes (' ')• Chaînes de caractères sensibles à la
casse• Dates sensibles au format• Format de date par défaut– En français : DD/MM/RR– En américain : DD-MON-RRSELECT last_name, job_id, department_idFROM employeesWHERE last_name = 'Whalen' ;
© sebvita.com
Conditions de comparaison
Operateur Signification
= Égal à
> Plus grand que
Plus grand ou égal à
Plus petit que
>=
<
<= Plus petit ou égal à
Non égal à
Entre deux valeurs (inclues)
<>
BETWEEN … AND …
IN (set) Correspond à une valeur de la liste
Correspond à une recherche
Est une valeur NULL
LIKE
IS NULL
© sebvita.com
Conditions de comparaison• Exemple :
SELECT last_name, salaryFROM employeesWHERE salary <= 3000 ;
© sebvita.com
Conditions de comparaison• Utiliser la condition BETWEEN :
SELECT last_name, salaryFROM employeesWHERE salary BETWEEN 2500 AND 3500 ;
Limite inférieureLimite supérieure
© sebvita.com
Conditions de comparaison• Utiliser la condition IN :
SELECT employee_id, last_name, salary, manager_idFROM employeesWHERE manager_id IN (100, 101, 201) ;
© sebvita.com
Conditions de comparaison• Utiliser la condition LIKE :• La condition de recherche pour
contenir des caractères littéraux ou des nombres– % représente zéro, un ou plusieurs
caractères– _ représente un et un seul caractèreSELECT first_nameFROM employeesWHERE first_name LIKE 'S%' ;
© sebvita.com
Conditions de comparaison• Utiliser la condition LIKE :
SELECT first_nameFROM employeesWHERE first_name LIKE '_o%' ;
© sebvita.com
Conditions de comparaison• Utiliser l’identifiant ESCAPE :• Permet de rechercher les caractères
% et _SELECT employee_id, job_idFROM employeesWHERE job_id LIKE 'SA\_R%' ESCAPE '\';
© sebvita.com
Conditions de comparaison• Utiliser la condition IS NULL :
SELECT last_name, manager_idFROM employeesWHERE manager_id IS NULL ;
© sebvita.com
Conditions logiques
Operateur Signification
AND Returne TRUE si les deux conditions sont vraies
OR Returne TRUE si au moins une des conditions est vraie
Returne TRUE si la condition suivante est fausse
NOT
© sebvita.com
Conditions logiques• Utiliser l’opérateur AND :
SELECT employee_id, last_name, job_id, salaryFROM employeesWHERE salary >= 10000AND job_id LIKE '%MAN%';
© sebvita.com
Conditions logiques• Utiliser l’opérateur OR :
SELECT employee_id, last_name, job_id, salaryFROM employeesWHERE salary >= 10000OR job_id LIKE '%MAN%';
© sebvita.com
Conditions logiques• Utiliser l’opérateur NOT :
SELECT last_name, job_idFROM employeesWHERE job_id NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP');
© sebvita.com
Conditions logiques• Règles de priorité
• Possibilité d’utiliser les parenthèses
Order Operators
1 Arithmetic operators
2 Concatenation operator
Comparison conditions
IS [NOT] NULL, LIKE, [NOT] IN
3
4
5 [NOT] BETWEEN
Not equal to
NOT logical condition
6
7
8 AND logical condition
OR logical condition9
© sebvita.com
Conditions logiques
SELECT last_name, job_id, salaryFROM employeesWHERE job_id = 'SA_REP'OR job_id = 'AD_PRES'AND salary > 15000;
SELECT last_name, job_id, salaryFROM employeesWHERE (job_id = 'SA_REP'OR job_id = 'AD_PRES')AND salary > 15000;
© sebvita.com
Tri des données• Trier les lignes avec la clause ORDER BY :– ASC : ordre ascendant, par défaut– DESC : ordre descendant
• ORDER BY est la dernière clause du SELECTSELECT last_name, job_id, department_id, hire_dateFROM employeesORDER BY hire_date;
© sebvita.com
Tri des données• Tri par ordre descendant
• Tri par les alias de colonnes
• Tri d’après plusieurs colonnes
SELECT last_name, job_id, department_id, hire_dateFROM employeesORDER BY hire_date DESC ;
SELECT last_name, department_id, salaryFROM employeesORDER BY department_id, salary DESC;
SELECT employee_id, last_name, salary*12 annsalFROM employeesORDER BY annsal ;
© sebvita.com
Variables de substitution
... salary = ? ...
... department_id = ? ...
... last_name = ? ...
I want to query differentvalues.
© sebvita.com
Variables de substitution• Utiliser les variables de substitution
pour :– Stocker temporairement des valeurs– Simple « et commercial » (« & »)– Double « et commercial » (« && »)SELECT employee_id, last_name, salary, department_idFROM employeesWHERE employee_id = &employee_num ;
© sebvita.com
Variables de substitution
21
© sebvita.com
Variables de substitution• Pour les chaînes de caractères et les
dates, utiliser des doubles quotesSELECT last_name, department_id, salary*12FROM employeesWHERE job_id = '&job_title';
© sebvita.com
Variables de substitution
SELECT employee_id, last_name, job_id, &column_nameFROM employeesWHERE &conditionORDER BY &order_column ;
© sebvita.com
Variables de substitution• Utiliser le double « et commercial »
pour réutiliser la valeurSELECT employee_id, last_name, job_id, &&column_nameFROM employeesORDER BY &column_name ;
© sebvita.com
Variables de substitution• Utiliser DEFINE pour créer et
assigner une valeur à une variable• Utiliser UNDEFINE pour supprimer la
variable
DEFINE employee_num = 200
SELECT employee_id, last_name, salary, department_idFROM employeesWHERE employee_id = &employee_num ;
UNDEFINE employee_num
© sebvita.com
Variables de substitution• Utiliser la commande VERIFY pour
afficher ou non les remplacements de la variable de substitutionSET VERIFY ON
SELECT employee_id, last_name, salary, department_idFROM employeesWHERE employee_id = &employee_num;
old 3: WHERE employee_id = &employee_numnew 3: WHERE employee_id = 200
© sebvita.com
© sebvita.com
VOUS AVEZ DES QUESTIONS ?
Restriction et tri des données
© sebvita.com
Résumé
Restreindre les données
Écrire un ordre SELECT
de base
Formater des
rapports
© sebvita.com
Trier les données
Ressources• http://www.oracle.com• http://otn.oracle.com
© sebvita.com