Oracle : extension du langage SQL

780 views
706 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
780
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
24
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

×