LANGAGES SQL
Oracle
Historique
 1970 IBM => System-R, a implanté le modèle relationnel au
travers du langage SEQUEL (Stuctured English as QUE...
Caractéristiques
 Depuis 1986
 N’est pas complet : Impedance mismatch
 Peut être embedded : interfacé avec des
langages...
Utilisation
 Programme => middleware => sgbd
 Programme + embedded sql => sgbd
 Programme => sgbd + stored proc, trigge...
Un langage plusieurs aspects
Ordres SQL Aspect du langage
CREATE – ALTER – DROP - COMMENT –
RENAME –TRUNCATE
Définition de...
DDL : Tables
 Création de table
CREATETABLE [schéma.]nomTable
(
colonne1 type1 [DEFAULT valeur1] [NOT NULL]
[, colonne2 t...
DDL : Tables
● caractères (CHAR, NCHAR,VARCHAR2, NVARCHAR2, CLOB, NCLOB, LONG) ;
● valeurs numériques NUMBER ;
● date/heur...
DDL : contraintes
CONSTRAINT nomContrainte
• UNIQUE (colonne1 [,colonne2]…)
• PRIMARY KEY (colonne1 [,colonne2]…)
• FOREIG...
DDL : Index
CREATE INDEX
{ UNIQUE | BITMAP } [schéma.]nomIndex
ON [schéma.]nomTable ( {colonne1 |
expressionColonne1 } [AS...
Index
 Un index ralentit les rafraîchissements de la base
(conséquence de la mise à jour de l’arbre ou des
bitmaps). En r...
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;
 ALTERT...
Modification comportementales
 ALTERTABLE [schéma.]nomTable
ADD [CONSTRAINT nomContrainte] typeContrainte;
 ALTERTABLE [...
Modification comportementales
 ENABLE vérifie les mises à jour à venir (insertions et nouvelles
modifications de la table...
Manipulation : Insertion
 INSERT INTO table VALUES (val1,...,valn )
 INSERT INTO table (col1,..., coln )
VALUES (val1,.....
Manipulation : Modification
 UPDATE table
SET col1 = exp1, col2 = exp2, ...
WHERE prédicat
 UPDATE table
SET (col1, col2...
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 cham...
Select : projection
 Liste des champs (schema.table.colonne)
séparé par des virgules
Select client.nom, produit.nom, prix...
From : Jointure
 Après la clause from on met une liste de
tables
 Par défaut le SGBD effectuera le produit
cartésien (cr...
Where : prédicat
 =, <>, <, >, <=, >=
 and , or , not
 expression between val1 and val2
 Is NULL, is not NULL
 In (va...
Agrégation
 Fonctions : SUM, COUNT, MIN, MAX, AVG
 Mettre les champs de groupement dans la
clause GROUP BY
 Les conditi...
Extensions SQL
 La pseudo-colonne ROWNUM
 La pseudo-table DUAL
 Sysdate
 Concaténation ||
 Les Conversions
 TO_NUMBE...
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...
Extensions SQL : les fonctions
 abs(nombre) valeur absolue de nombre
 ceil(nombre) plus petit entier plus grand ou égal ...
Extensions SQL : les fonctions
 chr(nombre) caractère de code ASCII nombre
 initcap(chaine) Met tous les mots de chaîne ...
Extensions SQL : les fonctions
 substr(chaine,p,nombre) sous-chaîne de chaine de nombre
caractères commençant en position...
 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) da...
 trunc(date,[format]) tronque date selon le format
indiqué. Par défaut, c'est la composante heure qui
est supprimée.
Form...
Prochain SlideShare
Chargement dans…5
×

Oracle : extension du langage SQL

928 vues

Publié le

Publié dans : Technologie
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
928
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3
Actions
Partages
0
Téléchargements
27
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Oracle : extension du langage SQL

  1. 1. LANGAGES SQL Oracle
  2. 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. 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. 4. Utilisation  Programme => middleware => sgbd  Programme + embedded sql => sgbd  Programme => sgbd + stored proc, triggers ..
  5. 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. 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. 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. 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. 9. DDL : Index CREATE INDEX { UNIQUE | BITMAP } [schéma.]nomIndex ON [schéma.]nomTable ( {colonne1 | expressionColonne1 } [ASC |DESC ] …) ;
  10. 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. 11. Les Vues CREATEVIEW nom_vue AS SELECT colonne1, colonne2, ... FROM tableWHERE condition [ WITH CHECK OPTION ]
  12. 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. 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. 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. 15. Manipulation : Insertion  INSERT INTO table VALUES (val1,...,valn )  INSERT INTO table (col1,..., coln ) VALUES (val1,...,valn )  INSERT INTO table (col1,..., coln ) SELECT ...
  16. 16. Manipulation : Modification  UPDATE table SET col1 = exp1, col2 = exp2, ... WHERE prédicat  UPDATE table SET (col1, col2,...) = (SELECT ...) WHERE prédicat
  17. 17. Manipulation : Suppression  DELETE FROM table WHERE prédicat
  18. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×