SlideShare une entreprise Scribd logo
LANGAGES SQL
Oracle
Historique
 1970 IBM => 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).
 1979 Relational Software, Inc (Oracle corp.) : première version
commerciale
 1986 recommandation AINSI
 ISO/CEI 9075:1987 => SQL1 : compromis entre constructeurs
 ISO/CEI 9075:1992 => SQL2 : entry – transitional –
intermediate – full level
 ISO/CEI 9075:1999 => SQL3 : concepts objets, collections,
entrepôts de données, séries temporelles, accès à des sources
non SQL, réplication des données, etc..
Caractéristiques
 Depuis 1986
 N’est pas complet : Impedance mismatch
 Peut être embedded : interfacé avec des
langages de 3ème génération (c, cobol ..) ou plus
(c++, java, c# ..)
 Langage déclaratif : décrire les résultats
attendus sans se soucier de la manière de les
obtenir
Utilisation
 Programme => middleware => sgbd
 Programme + embedded sql => sgbd
 Programme => sgbd + stored proc, triggers ..
Un langage plusieurs aspects
Ordres SQL Aspect du langage
CREATE – ALTER – DROP - COMMENT –
RENAME –TRUNCATE
Définition des données (LDD)
INSERT – UPDATE – DELETE – MERGE – LOCK
TABLE
Manipulation des données (LMD)
SELECT Interrogation des données (LID)
GRANT – REVOKE –COMMIT – ROLLBACK –
SAVEPOINT – SETTRANSACTION
Contrôle des données (LCD)
DDL : Tables
 Création de table
CREATETABLE [schéma.]nomTable
(
colonne1 type1 [DEFAULT valeur1] [NOT NULL]
[, colonne2 type2 [DEFAULT valeur2] [NOT NULL] ]
[CONSTRAINT nomContrainte1 typeContrainte1]…
) ;
DDL : Tables
● caractères (CHAR, NCHAR,VARCHAR2, NVARCHAR2, CLOB, NCLOB, LONG) ;
● valeurs numériques NUMBER ;
● date/heure (DATE, INTERVAL DAYTO SECOND, INTERVALYEARTO
MONTH,TIMESTAMP,TIMESTAMPWITHTIME ZONE,TIMESTAMPWITH
LOCALTIME ZONE) ;
● données binaires (BLOB, BFILE, RAW, LONG RAW) ;
DDL : contraintes
CONSTRAINT nomContrainte
• UNIQUE (colonne1 [,colonne2]…)
• PRIMARY KEY (colonne1 [,colonne2]…)
• FOREIGN KEY (colonne1 [,colonne2]…)
REFERENCES [schéma.]nomTablePere (colonne1 [,colonne2]…)
[ON DELETE { CASCADE | SET NULL }]
• CHECK (condition)
DDL : Index
CREATE INDEX
{ UNIQUE | BITMAP } [schéma.]nomIndex
ON [schéma.]nomTable ( {colonne1 |
expressionColonne1 } [ASC |DESC ] …) ;
Index
 Un index ralentit les rafraîchissements de la base
(conséquence de la mise à jour de l’arbre ou des
bitmaps). En revanche il accélère les accès ;
 Il est conseillé de créer des index sur des colonnes
(majoritairement des clés étrangères) utilisées dans
les clauses de jointures;
 Les index bitmaps sont conseillés quand il y a peu de
valeurs distinctes de la (ou des) colonne(s) à indexer.
Dans le cas inverse, utilisez un index B-tree.
 Les index sont pénalisants lorsqu’ils sont définis sur
des colonnes très souvent modifiées ou si la table
contient peu de lignes.
Les Vues
CREATEVIEW nom_vue
AS
SELECT colonne1, colonne2, ...
FROM tableWHERE condition
[ WITH CHECK OPTION ]
Modifications structurelles
 DROPTABLE [schéma.]nomTable [CASCADE CONSTRAINTS];
 RENAME ancienNomTO nouveauNom;
 ALTERTABLE ancienNom RENAMETO nouveauNom;
 ALTERTABLE Pilote ADD (compaVARCHAR2(4) DEFAULT 'AF',ville
VARCHAR2(30) DEFAULT 'Paris' NOT NULL);
 ALTERTABLE Pilote RENAME COLUMN villeTO adresse;
 ALTERTABLE Pilote MODIFY compa CHAR(4) NOT NULL;
 ALTERTABLE Pilote DROP COLUMN adresse;
 ALTERTABLE Pilote SET UNUSED COLUMN compa;
ALTERTABLE Pilote DROP UNUSED COLUMNS;
Modification comportementales
 ALTERTABLE [schéma.]nomTable
ADD [CONSTRAINT nomContrainte] typeContrainte;
 ALTERTABLE [schéma.]nomTable DROP CONSTRAINT
nomContrainte [CASCADE];
 ALTERTABLE [schéma.]nomTable
DISABLE CONSTRAINT nomContrainte
[CASCADE] [ { KEEP | DROP } INDEX ] ;
 ALTERTABLE [schéma.]nomTable
ENABLE [VALIDATE | NOVALIDATE ] CONSTRAINT
nomContrainte
[USING INDEX ClauseIndex] [EXCEPTIONS INTO tableErreurs];
ALTERTABLEAvion ENABLE CONSTRAINT pk_Avion
USING INDEX (CREATE UNIQUE INDEX pk_Avion ON Avion (immat));
ALTERTABLEAvion ENABLE CONSTRAINT nn_proprio;
Modification comportementales
 ENABLE vérifie les mises à jour à venir (insertions et nouvelles
modifications de la table) ;
 DISABLE autorise toute mise à jour ;
 VALIDATE vérifie que les données courantes de la table respectent la
contrainte ;
 NOT DEFERRABLE INITIALLY IMMEDIATE.
 DEFERRABLE INITIALLY DEFERRED
 DEFERRABLE INITIALLY IMMEDIATE
 SET CONSTRAINT fk_Avion_comp_Compag DEFERRED;
 SET CONSTRAINTSALL DEFERRED;
 ALTER SESSION SET CONSTRAINTS = { IMMEDIATE | DEFERRED
| DEFAULT }
Manipulation : Insertion
 INSERT INTO table VALUES (val1,...,valn )
 INSERT INTO table (col1,..., coln )
VALUES (val1,...,valn )
 INSERT INTO table (col1,..., coln )
SELECT ...
Manipulation : Modification
 UPDATE table
SET col1 = exp1, col2 = exp2, ...
WHERE prédicat
 UPDATE table
SET (col1, col2,...) = (SELECT ...)
WHERE prédicat
Manipulation : Suppression
 DELETE FROM table
WHERE prédicat
Interrogation des données
SELECT projection
FROM jointure
WHERE prédicat
GROUP BY agrégation
HAVING prédicat
ORDER BY champs asc|desc
Select : projection
 Liste des champs (schema.table.colonne)
séparé par des virgules
Select client.nom, produit.nom, prix
 Expression (calcul, conversion, appel de
fonction …)
Select prix * qte as montant, to_char(date_achat,’YYYY-MM-DD’) as « date d’achat »
 Une constante (valeur)
select nom, ‘dirigeant’ as role
From : Jointure
 Après la clause from on met une liste de
tables
 Par défaut le SGBD effectuera le produit
cartésien (cross join) de toutes les tables
 Il faut indiquer la jointure join/ natural join /
inner join / left|right outer join
 On utilisera des alias de tables (synonymes)
pour une jointure réflexive (table ayant
plusieurs sens: employé =subordonné et
supérieur, membre = acheteur et vendeur … )
Where : prédicat
 =, <>, <, >, <=, >=
 and , or , not
 expression between val1 and val2
 Is NULL, is not NULL
 In (val1, val2 , val3, …., valn)
 not in (…)
 Like ,% , _
Agrégation
 Fonctions : SUM, COUNT, MIN, MAX, AVG
 Mettre les champs de groupement dans la
clause GROUP BY
 Les conditions sur les fonctions d’agrégation
dans la clause HAVING
 La fonction COUNT compte le nombre
d’enregistrements et non le nombre de valeur
du champs en paramètre
Extensions SQL
 La pseudo-colonne ROWNUM
 La pseudo-table DUAL
 Sysdate
 Concaténation ||
 Les Conversions
 TO_NUMBER
 TO_CHAR
 TO_DATE (to_date('11/07/1997 19:13:00','DD/MM/YYYY HH24:MI:SS'))
 NVL(exp1,exp2) -prend lexp2 si exp1 est nulle
Date et Heure
MM Numeric month (e.g., 07)
MON Abbreviated month name (e.g., JUL)
MONTH Full month name (e.g., JULY)
DD Day of month (e.g., 24)
DY Abbreviated name of day (e.g., FRI)
YYYY 4-digit year (e.g., 1998)
YY Last 2 digits of the year (e.g., 98)
RR
LikeYY, but the two digits are ``rounded'' to a year in the range
1950 to 2049.Thus, 06 is considered 2006 instead of 1906
AM (or PM) Meridian indicator
HH Hour of day (1-12)
HH24 Hour of day (0-23)
MI Minute (0-59)
SS Second (0-59)
Extensions SQL : les fonctions
 abs(nombre) valeur absolue de nombre
 ceil(nombre) plus petit entier plus grand ou égal à nombre
 floor(nombre) plus grand entier inférieur ou égal à nombre
 mod(nombre1,nombre2) reste de la division entière (le quotient est
entier) de nombre1 par nombre2
 power(nombre1,nombre2) nombre1 élevé à la puissance nombre2
qui doit être entier
 round(nombre1,nombre2) arrondit nombre1 à nombre2 chiffres
après la virgule si nombre2>0, à -nombre2 chiffres avant la virgule
si nombre2<0.
 sign(nombre) -1 si nombre<0 0 si nombre=0 +1 si nombre>0
 sqrt(nombre) racine carrée de nombre si nombre>=0 NULL si
nombre<0
 trunc(nombre1,nombre2) nombre1 est tronqué à nombre2 chiffres
après la virgule si nombre2>0 ou à -nombre2 chiffres avant la
virgule si nombre2<0.
Extensions SQL : les fonctions
 chr(nombre) caractère de code ASCII nombre
 initcap(chaine) Met tous les mots de chaîne en minuscules sauf la
première lettre mise en majuscule
 lower(chaine) met chaine en minuscules (<>upper)
 lpad(chaine1,n,chaine2) met chaine1 sur n positions, chaine1 étant
cadrée à droite. Les caractères restant à gauche sont remplis par
chaine2.
 ltrim(chaine1,chaine2) Les caractères de gauche de chaine1 sont
supprimés jusqu'à rencontrer un caractère qui ne se trouve pas
dans chaine2.
 replace(chaine1,chaine2,chaine3) remplace chaine2 par chaine3
dans chaine1.
 rpad(chaine1,n,chaine2) idem lpad mais à droite
 trim(chaine1,chaine2) idem ltrim mais à droite
Extensions SQL : les fonctions
 substr(chaine,p,nombre) sous-chaîne de chaine de nombre
caractères commençant en position p.
 translate(chaine,texte,traduction) remplace dans chaîne tout
caractère se trouvant dans texte par le caractère correspondant se
trouvant dans
 ascii(caractère) code ASCII de caractère
 instr(chaine1,chaine2,p,o) position de la o ième occurrence de
chaine2 dans chaine1, la recherche commençant à la position p de
chaine1.
 length(chaine) nombre de caractères de chaine
 addate(date,n) date augmentée de n mois. Le résultat est une
date.
addate('01-jan-91',3)='01-apr-91'
 last_day(date) date du dernier jour du mois contenu dans date
last_day('01-jan-91')='31-jan-91'
 months_between(date1,date2) nombre de mois entre date1 et
date2. La partie décimale représente le pourcentage d'un mois de
31 jours. Si date1<date2 le résultat est >0 sinon il est <0.
month_between('01-jan-91','14-feb-91')=-1.4193548
 next_day(date,jour) donne la date du jour indiqué dans la semaine
qui suit date. next_day('01-jan-91','monday')='07-jan-91'
Extensions SQL : les fonctions
 trunc(date,[format]) tronque date selon le format
indiqué. Par défaut, c'est la composante heure qui
est supprimée.
Formats :
 year : tronque au 1er janvier de l'année de date
 month : tronque au 1er du mois de date
 day : tronque au dimanche qui précède date.
 round(date,format) date arrondie selon le format
précisé
Formats :
 year : arrondit au 1er janvier le plus proche
 month : arrondit au 1er du mois le plus proche
 day : arrondit au dimanche le plus proche
Extensions SQL : les fonctions

Contenu connexe

PPTX
C# 7 - Nouveautés
PPTX
Matlab formation Sound and image Processing
PDF
R fait du la tex
PPT
Manipulation des Données , cours sql oracle
PDF
PDF
Exports de r vers office
PPTX
Une Introduction à R
PDF
Fltau r interface
C# 7 - Nouveautés
Matlab formation Sound and image Processing
R fait du la tex
Manipulation des Données , cours sql oracle
Exports de r vers office
Une Introduction à R
Fltau r interface

Tendances (15)

PDF
Bases de php - Partie 4
PPTX
Excel : Les fonctions mathématiques
PDF
Excel formules-et-fonctions
PDF
Programmes et objets informatiques (Prof. Ch. Rapin, Juillet 1989)
PDF
Telecharger Exercices corrigés sqlplus
PDF
Matlab by Prof.Keang Sè Pouv
PDF
Pl/sql - interaction avec la base de données & structures de contrôle
PDF
Développement informatique : Chaines de caractères et expressions regulières
PPTX
Présentation de data.table
PDF
Programmation Fonctionnelle
PDF
SQL partie III
PPT
Première approche de cartographie sous R
PDF
Programmation fonctionnelle
PDF
Le langage plsql
PDF
01 l'ordre select élémentaire
Bases de php - Partie 4
Excel : Les fonctions mathématiques
Excel formules-et-fonctions
Programmes et objets informatiques (Prof. Ch. Rapin, Juillet 1989)
Telecharger Exercices corrigés sqlplus
Matlab by Prof.Keang Sè Pouv
Pl/sql - interaction avec la base de données & structures de contrôle
Développement informatique : Chaines de caractères et expressions regulières
Présentation de data.table
Programmation Fonctionnelle
SQL partie III
Première approche de cartographie sous R
Programmation fonctionnelle
Le langage plsql
01 l'ordre select élémentaire
Publicité

En vedette (20)

DOC
Reinosa
DOC
Ficha de análisis de la obra
PPT
Pinturas
DOCX
Cuarto nivel
PPTX
Acceso a la propiedad
PPTX
Eduardo Núñez
PPTX
Comment HWC accompagne ses bâtisseurs de réseau
PDF
ET10 - usage du numérique pendant un événement MICE
PDF
5 feb2015 karmo
ODP
DIAPORAMA C2I NANTES
DOC
Glosario de gc
PPT
Els tres porquets (Maria)
PPT
Experiencia de uso de redes sociales en la política electoral, Perú: el ca…
PPT
Presentación educacion virtual y distancia jun16
PPTX
Voayge en train en inde
PDF
El oficio del político. Identificando el perfil del nuevo líder democrático e...
PPTX
Presentación 3 Heidy
PDF
PPTX
Tecnología y sociedad
PPTX
Acceso a la propiedad
Reinosa
Ficha de análisis de la obra
Pinturas
Cuarto nivel
Acceso a la propiedad
Eduardo Núñez
Comment HWC accompagne ses bâtisseurs de réseau
ET10 - usage du numérique pendant un événement MICE
5 feb2015 karmo
DIAPORAMA C2I NANTES
Glosario de gc
Els tres porquets (Maria)
Experiencia de uso de redes sociales en la política electoral, Perú: el ca…
Presentación educacion virtual y distancia jun16
Voayge en train en inde
El oficio del político. Identificando el perfil del nuevo líder democrático e...
Presentación 3 Heidy
Tecnología y sociedad
Acceso a la propiedad
Publicité

Similaire à Oracle : extension du langage SQL (20)

PDF
Base de données S6 - CM5 - SQL (Partie 1)
PPT
Support_Cours_SQL.ppt
PPT
PPTX
Administration des bases de données Licence 2
PPTX
SQL_3IIR_2024_2025.pptxjioiiouhuihuihuihuihui
PDF
Chapitre 1 rappel
PDF
Base de données S6 - CM5 - SQL (Partie 1)
PDF
SQLcouredesqlapplicationSQLcmdes-LDD.pdf
PPTX
Theme 9(bis)
PDF
ch7_les chaines de caractères.pdf
PDF
Chapitre5.pdf
PDF
Chapitre8_Optimisation_de requêteSQL.pdf
PDF
Mat lab1
PPTX
PL LSQL.pptx
PDF
Cours_SQLpour débutant il vous aidra.pdf
PDF
Chapitre 1 rappel
PDF
Introduction au langage SQL
PPT
TABLEUR Excel
PDF
SQL-ORACLE.pdf
Base de données S6 - CM5 - SQL (Partie 1)
Support_Cours_SQL.ppt
Administration des bases de données Licence 2
SQL_3IIR_2024_2025.pptxjioiiouhuihuihuihuihui
Chapitre 1 rappel
Base de données S6 - CM5 - SQL (Partie 1)
SQLcouredesqlapplicationSQLcmdes-LDD.pdf
Theme 9(bis)
ch7_les chaines de caractères.pdf
Chapitre5.pdf
Chapitre8_Optimisation_de requêteSQL.pdf
Mat lab1
PL LSQL.pptx
Cours_SQLpour débutant il vous aidra.pdf
Chapitre 1 rappel
Introduction au langage SQL
TABLEUR Excel
SQL-ORACLE.pdf

Oracle : extension du langage SQL

  • 2. Historique  1970 IBM => 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).  1979 Relational Software, Inc (Oracle corp.) : première version commerciale  1986 recommandation AINSI  ISO/CEI 9075:1987 => SQL1 : compromis entre constructeurs  ISO/CEI 9075:1992 => SQL2 : entry – transitional – intermediate – full level  ISO/CEI 9075:1999 => SQL3 : concepts objets, collections, entrepôts de données, séries temporelles, accès à des sources non SQL, réplication des données, etc..
  • 3. Caractéristiques  Depuis 1986  N’est pas complet : Impedance mismatch  Peut être embedded : interfacé avec des langages de 3ème génération (c, cobol ..) ou plus (c++, java, c# ..)  Langage déclaratif : décrire les résultats attendus sans se soucier de la manière de les obtenir
  • 4. Utilisation  Programme => middleware => sgbd  Programme + embedded sql => sgbd  Programme => sgbd + stored proc, triggers ..
  • 5. Un langage plusieurs aspects Ordres SQL Aspect du langage CREATE – ALTER – DROP - COMMENT – RENAME –TRUNCATE Définition des données (LDD) INSERT – UPDATE – DELETE – MERGE – LOCK TABLE Manipulation des données (LMD) SELECT Interrogation des données (LID) GRANT – REVOKE –COMMIT – ROLLBACK – SAVEPOINT – SETTRANSACTION Contrôle des données (LCD)
  • 6. DDL : Tables  Création de table CREATETABLE [schéma.]nomTable ( colonne1 type1 [DEFAULT valeur1] [NOT NULL] [, colonne2 type2 [DEFAULT valeur2] [NOT NULL] ] [CONSTRAINT nomContrainte1 typeContrainte1]… ) ;
  • 7. DDL : Tables ● caractères (CHAR, NCHAR,VARCHAR2, NVARCHAR2, CLOB, NCLOB, LONG) ; ● valeurs numériques NUMBER ; ● date/heure (DATE, INTERVAL DAYTO SECOND, INTERVALYEARTO MONTH,TIMESTAMP,TIMESTAMPWITHTIME ZONE,TIMESTAMPWITH LOCALTIME ZONE) ; ● données binaires (BLOB, BFILE, RAW, LONG RAW) ;
  • 8. DDL : contraintes CONSTRAINT nomContrainte • UNIQUE (colonne1 [,colonne2]…) • PRIMARY KEY (colonne1 [,colonne2]…) • FOREIGN KEY (colonne1 [,colonne2]…) REFERENCES [schéma.]nomTablePere (colonne1 [,colonne2]…) [ON DELETE { CASCADE | SET NULL }] • CHECK (condition)
  • 9. DDL : Index CREATE INDEX { UNIQUE | BITMAP } [schéma.]nomIndex ON [schéma.]nomTable ( {colonne1 | expressionColonne1 } [ASC |DESC ] …) ;
  • 10. Index  Un index ralentit les rafraîchissements de la base (conséquence de la mise à jour de l’arbre ou des bitmaps). En revanche il accélère les accès ;  Il est conseillé de créer des index sur des colonnes (majoritairement des clés étrangères) utilisées dans les clauses de jointures;  Les index bitmaps sont conseillés quand il y a peu de valeurs distinctes de la (ou des) colonne(s) à indexer. Dans le cas inverse, utilisez un index B-tree.  Les index sont pénalisants lorsqu’ils sont définis sur des colonnes très souvent modifiées ou si la table contient peu de lignes.
  • 11. Les Vues CREATEVIEW nom_vue AS SELECT colonne1, colonne2, ... FROM tableWHERE condition [ WITH CHECK OPTION ]
  • 12. Modifications structurelles  DROPTABLE [schéma.]nomTable [CASCADE CONSTRAINTS];  RENAME ancienNomTO nouveauNom;  ALTERTABLE ancienNom RENAMETO nouveauNom;  ALTERTABLE Pilote ADD (compaVARCHAR2(4) DEFAULT 'AF',ville VARCHAR2(30) DEFAULT 'Paris' NOT NULL);  ALTERTABLE Pilote RENAME COLUMN villeTO adresse;  ALTERTABLE Pilote MODIFY compa CHAR(4) NOT NULL;  ALTERTABLE Pilote DROP COLUMN adresse;  ALTERTABLE Pilote SET UNUSED COLUMN compa; ALTERTABLE Pilote DROP UNUSED COLUMNS;
  • 13. Modification comportementales  ALTERTABLE [schéma.]nomTable ADD [CONSTRAINT nomContrainte] typeContrainte;  ALTERTABLE [schéma.]nomTable DROP CONSTRAINT nomContrainte [CASCADE];  ALTERTABLE [schéma.]nomTable DISABLE CONSTRAINT nomContrainte [CASCADE] [ { KEEP | DROP } INDEX ] ;  ALTERTABLE [schéma.]nomTable ENABLE [VALIDATE | NOVALIDATE ] CONSTRAINT nomContrainte [USING INDEX ClauseIndex] [EXCEPTIONS INTO tableErreurs]; ALTERTABLEAvion ENABLE CONSTRAINT pk_Avion USING INDEX (CREATE UNIQUE INDEX pk_Avion ON Avion (immat)); ALTERTABLEAvion ENABLE CONSTRAINT nn_proprio;
  • 14. Modification comportementales  ENABLE vérifie les mises à jour à venir (insertions et nouvelles modifications de la table) ;  DISABLE autorise toute mise à jour ;  VALIDATE vérifie que les données courantes de la table respectent la contrainte ;  NOT DEFERRABLE INITIALLY IMMEDIATE.  DEFERRABLE INITIALLY DEFERRED  DEFERRABLE INITIALLY IMMEDIATE  SET CONSTRAINT fk_Avion_comp_Compag DEFERRED;  SET CONSTRAINTSALL DEFERRED;  ALTER SESSION SET CONSTRAINTS = { IMMEDIATE | DEFERRED | DEFAULT }
  • 15. Manipulation : Insertion  INSERT INTO table VALUES (val1,...,valn )  INSERT INTO table (col1,..., coln ) VALUES (val1,...,valn )  INSERT INTO table (col1,..., coln ) SELECT ...
  • 16. Manipulation : Modification  UPDATE table SET col1 = exp1, col2 = exp2, ... WHERE prédicat  UPDATE table SET (col1, col2,...) = (SELECT ...) WHERE prédicat
  • 17. Manipulation : Suppression  DELETE FROM table WHERE prédicat
  • 18. Interrogation des données SELECT projection FROM jointure WHERE prédicat GROUP BY agrégation HAVING prédicat ORDER BY champs asc|desc
  • 19. Select : projection  Liste des champs (schema.table.colonne) séparé par des virgules Select client.nom, produit.nom, prix  Expression (calcul, conversion, appel de fonction …) Select prix * qte as montant, to_char(date_achat,’YYYY-MM-DD’) as « date d’achat »  Une constante (valeur) select nom, ‘dirigeant’ as role
  • 20. From : Jointure  Après la clause from on met une liste de tables  Par défaut le SGBD effectuera le produit cartésien (cross join) de toutes les tables  Il faut indiquer la jointure join/ natural join / inner join / left|right outer join  On utilisera des alias de tables (synonymes) pour une jointure réflexive (table ayant plusieurs sens: employé =subordonné et supérieur, membre = acheteur et vendeur … )
  • 21. Where : prédicat  =, <>, <, >, <=, >=  and , or , not  expression between val1 and val2  Is NULL, is not NULL  In (val1, val2 , val3, …., valn)  not in (…)  Like ,% , _
  • 22. Agrégation  Fonctions : SUM, COUNT, MIN, MAX, AVG  Mettre les champs de groupement dans la clause GROUP BY  Les conditions sur les fonctions d’agrégation dans la clause HAVING  La fonction COUNT compte le nombre d’enregistrements et non le nombre de valeur du champs en paramètre
  • 23. Extensions SQL  La pseudo-colonne ROWNUM  La pseudo-table DUAL  Sysdate  Concaténation ||  Les Conversions  TO_NUMBER  TO_CHAR  TO_DATE (to_date('11/07/1997 19:13:00','DD/MM/YYYY HH24:MI:SS'))  NVL(exp1,exp2) -prend lexp2 si exp1 est nulle
  • 24. Date et Heure MM Numeric month (e.g., 07) MON Abbreviated month name (e.g., JUL) MONTH Full month name (e.g., JULY) DD Day of month (e.g., 24) DY Abbreviated name of day (e.g., FRI) YYYY 4-digit year (e.g., 1998) YY Last 2 digits of the year (e.g., 98) RR LikeYY, but the two digits are ``rounded'' to a year in the range 1950 to 2049.Thus, 06 is considered 2006 instead of 1906 AM (or PM) Meridian indicator HH Hour of day (1-12) HH24 Hour of day (0-23) MI Minute (0-59) SS Second (0-59)
  • 25. Extensions SQL : les fonctions  abs(nombre) valeur absolue de nombre  ceil(nombre) plus petit entier plus grand ou égal à nombre  floor(nombre) plus grand entier inférieur ou égal à nombre  mod(nombre1,nombre2) reste de la division entière (le quotient est entier) de nombre1 par nombre2  power(nombre1,nombre2) nombre1 élevé à la puissance nombre2 qui doit être entier  round(nombre1,nombre2) arrondit nombre1 à nombre2 chiffres après la virgule si nombre2>0, à -nombre2 chiffres avant la virgule si nombre2<0.  sign(nombre) -1 si nombre<0 0 si nombre=0 +1 si nombre>0  sqrt(nombre) racine carrée de nombre si nombre>=0 NULL si nombre<0  trunc(nombre1,nombre2) nombre1 est tronqué à nombre2 chiffres après la virgule si nombre2>0 ou à -nombre2 chiffres avant la virgule si nombre2<0.
  • 26. Extensions SQL : les fonctions  chr(nombre) caractère de code ASCII nombre  initcap(chaine) Met tous les mots de chaîne en minuscules sauf la première lettre mise en majuscule  lower(chaine) met chaine en minuscules (<>upper)  lpad(chaine1,n,chaine2) met chaine1 sur n positions, chaine1 étant cadrée à droite. Les caractères restant à gauche sont remplis par chaine2.  ltrim(chaine1,chaine2) Les caractères de gauche de chaine1 sont supprimés jusqu'à rencontrer un caractère qui ne se trouve pas dans chaine2.  replace(chaine1,chaine2,chaine3) remplace chaine2 par chaine3 dans chaine1.  rpad(chaine1,n,chaine2) idem lpad mais à droite  trim(chaine1,chaine2) idem ltrim mais à droite
  • 27. Extensions SQL : les fonctions  substr(chaine,p,nombre) sous-chaîne de chaine de nombre caractères commençant en position p.  translate(chaine,texte,traduction) remplace dans chaîne tout caractère se trouvant dans texte par le caractère correspondant se trouvant dans  ascii(caractère) code ASCII de caractère  instr(chaine1,chaine2,p,o) position de la o ième occurrence de chaine2 dans chaine1, la recherche commençant à la position p de chaine1.  length(chaine) nombre de caractères de chaine
  • 28.  addate(date,n) date augmentée de n mois. Le résultat est une date. addate('01-jan-91',3)='01-apr-91'  last_day(date) date du dernier jour du mois contenu dans date last_day('01-jan-91')='31-jan-91'  months_between(date1,date2) nombre de mois entre date1 et date2. La partie décimale représente le pourcentage d'un mois de 31 jours. Si date1<date2 le résultat est >0 sinon il est <0. month_between('01-jan-91','14-feb-91')=-1.4193548  next_day(date,jour) donne la date du jour indiqué dans la semaine qui suit date. next_day('01-jan-91','monday')='07-jan-91' Extensions SQL : les fonctions
  • 29.  trunc(date,[format]) tronque date selon le format indiqué. Par défaut, c'est la composante heure qui est supprimée. Formats :  year : tronque au 1er janvier de l'année de date  month : tronque au 1er du mois de date  day : tronque au dimanche qui précède date.  round(date,format) date arrondie selon le format précisé Formats :  year : arrondit au 1er janvier le plus proche  month : arrondit au 1er du mois le plus proche  day : arrondit au dimanche le plus proche Extensions SQL : les fonctions