SQL*PLUS = Oracle SQL + PL/SQL

ENTRÉR ET SORTIR DE SQL*PLUS
ENTRÉE: SQLPLUS
        SQLPLUS -s <nom-utilisateur>/<mot-passe> @<nomFichier>
SORTIE: EXIT

AFFICHER LA DERNIÈRE COMMANDE:
L[IST] [<option>]
<option>
sans option : Affiche la comande en entier.
n m         : Affiche la ligne n à la ligne m de la commande
n           : Affiche la ligne n de la commande
n LAST      : Affiche à partir de la ligne n jusqu'à la fin de la commande
n *         : Affiche la ligne n à la ligne courante
*           : Affiche la ligne courante
* n         : Affiche la ligne courante jusqu'à la ligne n
* LAST      : Affiche la ligne courante jusqu'à la fin de la commande
LAST        : Affiche la dernière ligne de la commande.

AJOUTER DES INSTRUCTIONS IMMÉDIATEMENT APRÈS LA FIN DU LIGNE
A[PPEND] <instruction>

AJOUTER DES INSTRUCTIONS APRÈS LA LIGNE COURANTE
I[NPUT] <instruction>

CHANGER LA LIGNE COURANTE:
C[HANGE] <sep><texte erroné><sep>nouveau texte<sep>
<sep> : Séparteur tel / ou !

CHARGER UN FICHIER DANS LA MISE EN TAMPON
GET <nomFichier>

DEMANDER UNE VARIABLE
ACCEPT <nomVariable>, <type> [PROMPT <indice>]

DEMANDER À L'UTILISATEUR DE PRESSEZ SUR UNE TOUCHE
PAUSE

DESCRIPTION D'UNE TABLE:
DESCRIBE <nomTable> | DESC <nomTable>

EFFACER
CL[EAR] <option>
<option>
 BREAKS   //  ENLEVE TOUS LES BREAKS DÉFINIS
 BUFF[ER] //  LE CONTENU DE LA ZONE TAMPON
 COLUMNS  //  EFFACE LES ATTRIBUTS DE TOUTES LES COLONNES
 COMPUTES //  EFFACE LES ATTRIBUTS DE TOUS LES COMPUTE
 SCREEN   //  L'ÉCRAN
EFFACER UN TEXTE DANS LA LIGNE COURANTE
CHANGE /<texte>

EXÉCUTION D'UNE COMMANDE EN MÉMOIRE
RUN | /
N.B. : RUN Affiche la commande et l'exécute

@<nomFichier>            // EXÉCUTION D'UN FICHIER .SQL
DEL [<instruction>]      // SUPPRIMER DES INSTRUCTION À LA LIGNE COURANTE
EDIT <nomFichier.sql>
HOST EDIT <nomFichier.sql>
     VI   <nomFichier.sql>
INSERT INTO <nomTable>   // INSERTION (demande des valeurs à l'invite):
          [ ( <nomChamp1> [, <nomChamp2> ...] ) ]
     VALUES ( &<valeur1> [, &'<valeurchar>' ...] );
PROMPT <message>         // INSERTION D'UN TEXTE D'INVITE À L'ÉCRAN
REM[ARK] <commentaire>   // INSÉRTION D'UN COMMENTAIRE
SAVE <nomFichier>        // SAUVEGARDER UNE COMMANDE:
SHOW <attribut_set>;
START <nomFichier>;      // EXÉCUTION D'UN FICHIER .SQL
SPOOL [<nomFichier>|OFF] //


RAPPORT:
BREAK                 // les attributs des break définis
BREAK ON {[<nom_colonne>]|ROW} [SKIP {<n_ligne_blanche>|PAGE}]
      [ON ...]
      [ON REPORT]
COLUMN <ancien_nom_colonne> HEADING <nouveau_nom>
COLUMN <nom_colonne> FORMAT <format>
COLUMN <nom_colonne> LIKE <autre_colonne> HEADING <nouveau_nom>
COLUMN <nom_colonne> // affiche les attributs d'une colonne
COLUMN <nom_colonne> OFF
COMPUTE              // affiche les compute définies
COMPUTE <fontion>[ <fontion2> ...] OF <col1>[ <col2> ...]
                  ON [ <col_break_on> | REPORT ]
SET
   -ECHO OFF
   -FEEDBACK OFF
   -HEADING OFF
   -LINESIZE <n>
   -NEWPAGE <n>
   -PAGESIZE <n>
   -PAUSE ON
   -SPACE <n>
   -UNDERLINE '<caractère>'


{T|B}TITLE <position> <titre> // {Top | Bottom}
           [<position> <titre> ...]
           [COL <n>, SKIP <n>, LEFT | CENTER | RIGHT, BOLD, FORMAT <format>]
{T|B}TITLE {ON|OFF}

<format>
 9 les zéros ne sont pas affiché
 0 affiche un zéro
 $ précède le nombre avec le signe$
 B N'affiche pas les zéros
 MI Affiche le signe moins après une valeur négative
 PR Affiche une valeur négative entre crochets
 ,  virgule
 .  point
 V  multiplie un nombe par 10n ou
    n est le nombre de 9 après V
 EEEE Affiche le nombre en notation scientifique
 DATE Affiche le nombre en format DATE (MM/DD/YY)
 A<n> : CHAR, DATE, LONG, VARCHAR sur n caractères

Variables système
SQL.LNO : Numéro de ligne
SQL.PNO : Numéro de page
SQL.RELEASE : Numéro de version d'ORACLE
SQL.USER    : Nom de l'utilisateur

SYS.USER_IND_COLUMNS
SYS.USER_INDEXES : Index des tables
SYS.USER_TAB_PRIVS : Privilège d'accès
SYS.USER_VIEWS : liste des vues
TABS           : listes des objets (tables, vues, index, grappes, séquences, ...)

PL/SQL

BEGIN
 open <nomProcédure>
  LOOP
   <instruction>
   IF <condition>
   ELSE
    EXIT
   END IF
  close <nomProcédure>
END;

Commande Oracle SQL

ALTER TABLE <nomTable>
[ADD (
      <nomChamp1> <type> [<contrainte_atomique>]
      [, <nomChamp2> <type> [<contrainte_atomique>] ... ]
     )
] |
[MODIFY (
         <nomChamp1> { <nouveau_type> | <type> <nouvelle_contrainte> }
        )
];

ALTER SESSION SET NLS_DATE_LANGUAGE = FRENCH;
              SET NLS_LANGUAGE = FRENCH;
ALTER USER <utilisateur> IDENTIFIED BY <nouveau mot_passe> ;

COMMIT;

CREATE INDEX <nomIndex>
          ON <nomTable> (<col [ordre] [, ...]);

CREATE SYNONYM <nom_synonyme> FOR <objet>
CREATE TABLE <nomTable>
(
 <nomChamp1> <type> [<contrainte_atomique>]
 [, <nomChamp2> <type> [<contrainte_atomique>] ... ]
);
// insere une colonne avec un numéro unique
// qui s'appelle ROWID (<blocfichierBD>.<ligne (0,N)>.<numeroFichier (1,n)>)

CREATE VIEW <nomVue>
 [<nomChamp1> [,...])
 AS <interrogation>
 [WITH CHECK OPTION];
// aucune mise à jour, insertion, suppresion si <interrogation>
// contient
// - opérateur de jointure, - SET, -groupe,
// - GROUP BY, CONNECT BY, START WITH
// - DISTINCT
// WITH CHECK OPTION : intégrité

DELETE FROM <nomTable> [ WHERE <condition> ];
// maximum 65,535 tables

DROP INDEX <nomIndex>;
DROP TABLE <nomTable>;
DROP VIEW  <nomVue>;

GRANT <privilège> [...] ON <objet> TO <utilisateur>
      [ WITH GRANT OPTION];
<privilège> : ALL, ALTER, DELETE, INDEX, INSERT, REFERENCES, SELECT, UPDATE (col[, ...])

INSERT INTO <nomTable>
          [ ( <nomChamp1> [, <nomChamp2> ...] ) ]
     VALUES ( <valeur1> [, <valeur2> ...] );

RENAME {<nomTable>|<nomVue>} TO {<nouveau_nomTable>|<nouveau_nomVue>};
REVOKE <privilège> [...] ON <objet> FROM <utilisateur>;

ROLLBACK { [WORK] | TO SAVEPOINT <nomSavePoint> };

SAVEPOINT <nomSavePoint>;

SELECT [DISTINCT] <données>
  FROM <tables>
  [WHERE <condition>]
  [ORDER BY <col>[, <col2>...]];

<données>
{*, | {[<colonne> | <constante> [,...]] [[AS] alias] } }

<tables>
  { <nomTable> | SELECT } [, ...] [[AS] alias] }

UPDATE {<nomTable>|<nomVue>}
       SET <nomChamp1> = <expression>
       [, <nomChamp2> = <expression> ...]
       [ WHERE <condition> ]

Type Oracle SQL

CHAR() | CHARACTER()  : Chaîne de caractères de longueur de 1 à 255.
DATE                  : Format fixe défini par votre système.
LONG                  : Longue chaîne de de caractère de
                        longueur maximale de 65,535 caractères.
NUMBER(x[,y])         : Numérique, x<=38,
                        x: longueur maximale, y: précision
RAW                   : Donnée binaire pouvant contenir jusqu'à 255
                        octets, (language de contrôle)
VARCHAR() | VARCHAR2(): Une chaîne de caractères d'une longueur
                        de 2000 caractères
// 254 ( dont 1 de type long)
// on peut changer le type seulement si la colonne est vide

Contraintes Oracle SQL

NOT NULL
PRIMARY KEY
UNIQUE
REFERENCES <nomTable> (nomChampClePrimaire)
// s'applique lorsque la contrainte s'applique immédiatement
// aucun tuple signifie aucune valeur null

Opérateurs Oracle SQL

=
!= | <> | ^=
<
>
<=
>=
IN | =ANY | =SOME
NOT IN
ANY
ALL
[NOT] BETWEEN x AND y
[NOT] EXISTS
[NOT] LIKE '{ * | _ }'
IS [NOT] NULL


<operateur_arithmetique>
+
* /
-

<operateur_logique>
 NOT
 AND
 OR

 AND   true  false null
 true  true  false null
 false false false false
 null  null  false null

 OR    true  false null
 true  true  true  true
 false true  false null
 null  true  null  null

<operateur_ensembliste>
 UNION
 UNION ALL
 INTERSECT
 MINUS

<priorite_operateur>
 +n -n
 * /
 + -
 <operateur_comparaison>
 NOT
 AND
 OR

Fonctions Oracle SQL

 <numerique>
  ABS(n)       : Valeur absolue de n
  CEIL(n)      : L'entier immédiatement supérieur ou égal à n
  FLOOR(n)     : L'entier immédiatement inférieur ou égal à n
  MOD(m,n)     : Modulo, ou le reste de la division de m/n;
  POWER(m,n)   : m à la puissance n.
  ROUND(n[,x]) : n arrondi au 10x -ième.
  SIGN(n)      : donne le signe de n (-1, 1, 0=NULL)
  SQRT(n)      : racine carré de n, null = si (n<0)
  TRUNC(n[,x]) : n tronquée de x places après le séparateur décimal

 <caractères>
  CHR(n)            : Caractère équivalent à la valeur ASCII n.
  CONCAT(ch1,ch2)   : Concaténation de ch1 avec ch2.
  INITCAP(ch)       : La première lettre de ch est capitalisée.
  LOWER(ch)         : Tous les caractères de ch sont en minuscule.
  LPAD(ch1,n[,ch2]) : ch1 est précédé de ch2 sur une longueur
                      totale de n positions.
  LTRIM(ch,[liste]) : La premier caractère de ch sera enlevé s'il
                      existe dans la liste. Le procédé continue
                      jusqu'à ce qu'on rencontre un caractère
                      n'existant pas dans la liste.
  REPLACE (ch,l1,l2): Remplace toute occurence l1 dans ch par l2.
  SOUNDEX (ch)      : Le mot dont l'intonation ressemble à celle spécifiée.
  SUBSTR(ch,m[,n])  : Affiche n caractères de ch, commencant par le
                      m^e caractère.
  SUBSTRB(ch,m[,n]) : Affiche les caractère de m à n.
  TRANSLATE (ch,    : Remplace toute occurence ancienne de ch
   ancienne,          par nouvelle (sert à encoder les données)
   nouvellle)
  UPPER(ch)         : Tous les caractères de ch sont en majuscule.

 <Caractère => Nombre)
  ASCII(ch)
  INSTR(ch1, ch2 [,n[,m]])
  LENGTH(ch)
  LENGTHB(ch)

 <Groupe ([DISTINCT|ALL])>
  AVG(n)
  COUNT(expr)
  MAX(expr)
  MIN(expr)
  STDDEV(n)
  SUM(n)
  VARIANCE(n)

 <date>
  ADD_MONTHS(date, n_mois)
  LAST_DAY(date)
  MONTHS_BETWEEN(date2, date1)
  NEW_TIME(d,z2,z1)
  NEXT_DAY(date,ch)
  SYSDATE
  ROUND(date[,précision])
  TRUNC(date[,format])

 <conversion>
  TO_CHAR(date[,fmt[,'nls_lang']])
  TO_CHAR(number[,fmt[,'nls_lang']])
  TO_DATE(char[,fmt[,'nls_lang']])
  TO_NUMBER(char[,fmt[,'nls_lang']])

 DECODE ( <colonne>,
          <val1>, <code1>
          [, <val1>, <code1>, ...]
          [, <val_defaut>]
        )