Example create emp dept original

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Script SQL*Plus d'exemple
Domaine Exemple DDL
Voir aussi Example create emp dept custom · Example create index · Example create not null constraints

Example create emp dept original reproduit le script de démonstration historique livré avec Oracle RDBMS (demobld.sql) : le schéma EMP/DEPT (complété par BONUS et SALGRADE) que l'on retrouve dans quasiment toute la documentation et les tutoriels Oracle depuis des décennies — les fameux employés SMITH, ALLEN, KING, etc. C'est le jeu de données minimal à connaître avant de lire des exemples SQL Oracle plus avancés.

Pour un schéma de démonstration alternatif — plus simple (deux tables seulement) mais avec une génération de données aléatoires en volume — voir Example create emp dept custom.

Script

Le script se connecte d'abord en SYSDBA pour nettoyer un synonyme public résiduel d'une exécution précédente, puis recrée le schéma sous un compte applicatif dédié.

-- Schéma de démonstration historique Oracle : EMP / DEPT / BONUS / SALGRADE

CONNECT / AS SYSDBA

DROP PUBLIC SYNONYM parts;

PROMPT Connexion au compte de démonstration...
CONNECT demo_user

CREATE TABLE dept (
    deptno  NUMBER(2)   CONSTRAINT pk_dept PRIMARY KEY
  , dname   VARCHAR2(14)
  , loc     VARCHAR2(13)
);

CREATE TABLE emp (
    empno     NUMBER(4)  CONSTRAINT pk_emp PRIMARY KEY
  , ename     VARCHAR2(10)
  , job       VARCHAR2(9)
  , mgr       NUMBER(4)
  , hiredate  DATE
  , sal       NUMBER(7,2)
  , comm      NUMBER(7,2)
  , deptno    NUMBER(2)  CONSTRAINT fk_deptno REFERENCES dept
);

INSERT INTO dept VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO dept VALUES (20, 'RESEARCH',   'DALLAS');
INSERT INTO dept VALUES (30, 'SALES',      'CHICAGO');
INSERT INTO dept VALUES (40, 'OPERATIONS', 'BOSTON');

INSERT INTO emp VALUES (7369, 'SMITH',  'CLERK',     7902, TO_DATE('17-12-1980', 'dd-mm-yyyy'), 800,  NULL, 20);
INSERT INTO emp VALUES (7499, 'ALLEN',  'SALESMAN',  7698, TO_DATE('20-02-1981', 'dd-mm-yyyy'), 1600, 300,  30);
INSERT INTO emp VALUES (7521, 'WARD',   'SALESMAN',  7698, TO_DATE('22-02-1981', 'dd-mm-yyyy'), 1250, 500,  30);
INSERT INTO emp VALUES (7566, 'JONES',  'MANAGER',   7839, TO_DATE('02-04-1981', 'dd-mm-yyyy'), 2975, NULL, 20);
INSERT INTO emp VALUES (7654, 'MARTIN', 'SALESMAN',  7698, TO_DATE('28-09-1981', 'dd-mm-yyyy'), 1250, 1400, 30);
INSERT INTO emp VALUES (7698, 'BLAKE',  'MANAGER',   7839, TO_DATE('01-05-1981', 'dd-mm-yyyy'), 2850, NULL, 30);
INSERT INTO emp VALUES (7782, 'CLARK',  'MANAGER',   7839, TO_DATE('09-06-1981', 'dd-mm-yyyy'), 2450, NULL, 10);
INSERT INTO emp VALUES (7788, 'SCOTT',  'ANALYST',   7566, TO_DATE('13-JUL-87',  'dd-mm-rr') - 85, 3000, NULL, 20);
INSERT INTO emp VALUES (7839, 'KING',   'PRESIDENT', NULL, TO_DATE('17-11-1981', 'dd-mm-yyyy'), 5000, NULL, 10);
INSERT INTO emp VALUES (7844, 'TURNER', 'SALESMAN',  7698, TO_DATE('08-09-1981', 'dd-mm-yyyy'), 1500, 0,    30);
INSERT INTO emp VALUES (7876, 'ADAMS',  'CLERK',     7788, TO_DATE('13-JUL-87',  'dd-mm-rr') - 51, 1100, NULL, 20);
INSERT INTO emp VALUES (7900, 'JAMES',  'CLERK',     7698, TO_DATE('03-12-1981', 'dd-mm-yyyy'), 950,  NULL, 30);
INSERT INTO emp VALUES (7902, 'FORD',   'ANALYST',   7566, TO_DATE('03-12-1981', 'dd-mm-yyyy'), 3000, NULL, 20);
INSERT INTO emp VALUES (7934, 'MILLER', 'CLERK',     7782, TO_DATE('23-01-1982', 'dd-mm-yyyy'), 1300, NULL, 10);

CREATE TABLE bonus (
    ename  VARCHAR2(10)
  , job    VARCHAR2(9)
  , sal    NUMBER
  , comm   NUMBER
);

CREATE TABLE salgrade (
    grade  NUMBER
  , losal  NUMBER
  , hisal  NUMBER
);

INSERT INTO salgrade VALUES (1, 700,  1200);
INSERT INTO salgrade VALUES (2, 1201, 1400);
INSERT INTO salgrade VALUES (3, 1401, 2000);
INSERT INTO salgrade VALUES (4, 2001, 3000);
INSERT INTO salgrade VALUES (5, 3001, 9999);

COMMIT;

Le compte de connexion et le nom d'employé "SCOTT" (habituellement le compte lui-même dans la version d'origine du script) ont été génériciés ici ; le reste des données — noms, dates, salaires — correspond au jeu d'exemple standard publié par Oracle et n'a rien de confidentiel.

Voir aussi