SlideShare une entreprise Scribd logo
1  sur  29
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

Tendances

01 l'ordre select élémentaire
01 l'ordre select élémentaire 01 l'ordre select élémentaire
01 l'ordre select élémentaire
ENSAM Casablanca
 

Tendances (15)

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

En vedette

Ficha de análisis de la obra
Ficha de análisis de la obraFicha de análisis de la obra
Ficha de análisis de la obra
2005Johana
 
Eduardo Núñez
Eduardo NúñezEduardo Núñez
Eduardo Núñez
ndiperu
 
Presentación 3 Heidy
Presentación 3 HeidyPresentación 3 Heidy
Presentación 3 Heidy
heidysolovadu
 

En vedette (20)

Reinosa
ReinosaReinosa
Reinosa
 
Ficha de análisis de la obra
Ficha de análisis de la obraFicha de análisis de la obra
Ficha de análisis de la obra
 
Pinturas
Pinturas  Pinturas
Pinturas
 
Cuarto nivel
Cuarto nivelCuarto nivel
Cuarto nivel
 
Acceso a la propiedad
Acceso a la propiedadAcceso a la propiedad
Acceso a la propiedad
 
Eduardo Núñez
Eduardo NúñezEduardo Núñez
Eduardo Núñez
 
Comment HWC accompagne ses bâtisseurs de réseau
Comment HWC accompagne ses bâtisseurs de réseauComment HWC accompagne ses bâtisseurs de réseau
Comment HWC accompagne ses bâtisseurs de réseau
 
ET10 - usage du numérique pendant un événement MICE
ET10 - usage du numérique pendant un événement MICEET10 - usage du numérique pendant un événement MICE
ET10 - usage du numérique pendant un événement MICE
 
5 feb2015 karmo
5 feb2015 karmo5 feb2015 karmo
5 feb2015 karmo
 
DIAPORAMA C2I NANTES
DIAPORAMA C2I NANTESDIAPORAMA C2I NANTES
DIAPORAMA C2I NANTES
 
Glosario de gc
Glosario de gcGlosario de gc
Glosario de gc
 
Els tres porquets (Maria)
Els tres porquets (Maria)Els tres porquets (Maria)
Els tres porquets (Maria)
 
Experiencia de uso de redes sociales en la política electoral, Perú: el ca…
Experiencia de uso de redes sociales en la política electoral, Perú: el ca…Experiencia de uso de redes sociales en la política electoral, Perú: el ca…
Experiencia de uso de redes sociales en la política electoral, Perú: el ca…
 
Presentación educacion virtual y distancia jun16
Presentación educacion virtual y distancia jun16Presentación educacion virtual y distancia jun16
Presentación educacion virtual y distancia jun16
 
Voayge en train en inde
Voayge en train en indeVoayge en train en inde
Voayge en train en inde
 
El oficio del político. Identificando el perfil del nuevo líder democrático e...
El oficio del político. Identificando el perfil del nuevo líder democrático e...El oficio del político. Identificando el perfil del nuevo líder democrático e...
El oficio del político. Identificando el perfil del nuevo líder democrático e...
 
Presentación 3 Heidy
Presentación 3 HeidyPresentación 3 Heidy
Presentación 3 Heidy
 
¿Qué es el GESCIT?
¿Qué es el GESCIT?¿Qué es el GESCIT?
¿Qué es el GESCIT?
 
Tecnología y sociedad
Tecnología y sociedadTecnología y sociedad
Tecnología y sociedad
 
Acceso a la propiedad
Acceso a la propiedadAcceso a la propiedad
Acceso a la propiedad
 

Similaire à Oracle : extension du langage SQL

Theme 9(bis)
Theme 9(bis)Theme 9(bis)
Theme 9(bis)
salmazen
 
Mat lab1
Mat lab1Mat lab1
Mat lab1
fouadDD
 
QuelquesCommandesMySQL.pdf
QuelquesCommandesMySQL.pdfQuelquesCommandesMySQL.pdf
QuelquesCommandesMySQL.pdf
Moez Moezm
 

Similaire à Oracle : extension du langage SQL (20)

Support_Cours_SQL.ppt
Support_Cours_SQL.pptSupport_Cours_SQL.ppt
Support_Cours_SQL.ppt
 
12 fr
12 fr12 fr
12 fr
 
Chapitre 1 rappel
Chapitre 1   rappelChapitre 1   rappel
Chapitre 1 rappel
 
Theme 9(bis)
Theme 9(bis)Theme 9(bis)
Theme 9(bis)
 
ch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdfch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdf
 
Chapitre5.pdf
Chapitre5.pdfChapitre5.pdf
Chapitre5.pdf
 
Cours de Matlab
Cours de MatlabCours de Matlab
Cours de Matlab
 
Mat lab1
Mat lab1Mat lab1
Mat lab1
 
PL LSQL.pptx
PL LSQL.pptxPL LSQL.pptx
PL LSQL.pptx
 
Chapitre 1 rappel
Chapitre 1 rappelChapitre 1 rappel
Chapitre 1 rappel
 
Introduction au langage SQL
Introduction au langage SQLIntroduction au langage SQL
Introduction au langage SQL
 
TABLEUR Excel
TABLEUR ExcelTABLEUR Excel
TABLEUR Excel
 
SQL-ORACLE.pdf
SQL-ORACLE.pdfSQL-ORACLE.pdf
SQL-ORACLE.pdf
 
SQL-ORACLE.pptx
SQL-ORACLE.pptxSQL-ORACLE.pptx
SQL-ORACLE.pptx
 
MariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQLMariaDB une base de donnees NewSQL
MariaDB une base de donnees NewSQL
 
1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf1-pl-sql 2021 2022.pdf
1-pl-sql 2021 2022.pdf
 
Cours3 gdm sql
Cours3 gdm sqlCours3 gdm sql
Cours3 gdm sql
 
QuelquesCommandesMySQL.pdf
QuelquesCommandesMySQL.pdfQuelquesCommandesMySQL.pdf
QuelquesCommandesMySQL.pdf
 
SQL.pdf
SQL.pdfSQL.pdf
SQL.pdf
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de données
 

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