오라클 scott 예제 스키마

    오라클을 설치 시 scott 예제 스키마가 설치되어 있고 그 계정에는  emp, dept, bonus, salgrade라는 네 개의 테이블이 들어있다. 만약 scott 계정이 설치되지 않았다면 다음의 스크립트를 실행하여 계정 scott를 생성하라.

    스크립트는 사용자 생성 권한이 있는 DBA 계정으로 접속해서 실행해야 한다.

     

    -scott 계정 생성

    % sqlplus / as sysdba
    REM scott 계정 생성
    CREATE USER scott IDENTIFIED BY tiger;
    ALTER USER scott DEFAULT TABLESPACE USERS;
    ALTER USER scott QUOTA UNLIMITED ON USERS;
    GRANT RESOURCE, CONNECT TO scott;

     

    다음은 예제 테이블과 예제 테이터를 생성하는 스크립트이다.

    REM scott 계정으로 접속
    CONN scott/tiger
    
    CREATE TABLE emp
    (empno NUMBER(4) NOT NULL,
    ename VARCHAR2(10),
    job VARCHAR2(9),
    mgr NUMBER(4),
    hiredate DATE,
    sal NUMBER(7,2),
    comm NUMBER(7,2),
    deptno NUMBER(2));
    
    INSERT INTO emp VALUES(7369, 'SMITH', 'CLERK', 7902, DATE'1980-12-17', 800, NULL, 20);
    INSERT INTO emp VALUES(7499, 'ALLEN', 'SALESMAN', 7698, DATE'1981-02-20', 1600, 300, 30);
    INSERT INTO emp VALUES(7521, 'WARD', 'SALESMAN', 7698, DATE'1981-02-22', 1250, 500, 30);
    INSERT INTO emp VALUES(7566, 'JONES', 'MANAGER', 7839, DATE'1981-04-02', 2975, NULL, 20);
    INSERT INTO emp VALUES(7654, 'MARTIN', 'SALESMAN', 7698, DATE'1981-09-28', 1250, 1400, 30);
    INSERT INTO emp VALUES(7698, 'BLAKE', 'MANAGER', 7839, DATE'1981-05-01', 2850, NULL, 30);
    INSERT INTO emp VALUES(7782, 'CLARK', 'MANAGER', 7839, DATE'1981-06-09', 2450, NULL, 10);
    INSERT INTO emp VALUES(7788, 'SCOTT', 'ANALYST', 7566, DATE'1987-04-19', 3000, NULL, 20);
    INSERT INTO emp VALUES(7839, 'KING', 'PRESIDENT', NULL, DATE'1981-11-17', 5000, NULL, 10);
    INSERT INTO emp VALUES(7844, 'TURNER', 'SALESMAN', 7698, DATE'1981-09-08', 1500, 0, 30);
    INSERT INTO emp VALUES(7876, 'ADAMS', 'CLERK', 7788, DATE'1987-05-23', 1100, NULL, 20);
    INSERT INTO emp VALUES(7900, 'JAMES', 'CLERK', 7698, DATE'1981-12-03', 950, NULL, 30);
    INSERT INTO emp VALUES(7902, 'FORD', 'ANALYST', 7566, DATE'1981-12-03', 3000, NULL, 20);
    INSERT INTO emp VALUES(7934, 'MILLER', 'CLERK', 7782, DATE'1982-01-23', 1300, NULL, 10);
    
    SELECT * FROM EMP;
    
    CREATE TABLE dept
    (deptno NUMBER(2),
    dname VARCHAR2(14),
    loc VARCHAR2(13) );
    
    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');
    
    SELECT * FROM dept;
    
    
    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;

     

    오라클 예제인 스키마 scott의 테이블 4개에는 있어야 할 인덱스와 제약조건이 존재하지 않으므로 생성해주자.

    CREATE UNIQUE INDEX dept_pk ON dept(deptno);
    ALTER TABLE dept ADD CONSTRAINT dept_pk PRIMARY KEY(deptno);
    
    CREATE UNIQUE INDEX emp_pk ON emp(empno);
    ALTER TABLE emp ADD CONSTRAINT emp_pk PRIMARY KEY(empno);
    CREATE UNIQUE INDEX emp_ename_uk ON emp(ename);
    ALTER TABLE emp ADD CONSTRAINT emp_ename_uk UNIQUE(ename);
    
    
    CREATE UNIQUE INDEX bonus_pk ON bonus(ename);
    ALTER TABLE bonus ADD CONSTRAINT bonus_pk PRIMARY KEY(ename);
    
    CREATE UNIQUE INDEX salgrade_pk ON salgrade(grade);
    ALTER TABLE salgrade ADD CONSTRAINT salgrade_pk PRIMARY KEY(grade);

     

    'DATABASE > SQL, PL-SQL' 카테고리의 다른 글

    PL/SQL 개념  (0) 2021.01.16
    익명 PL/SQL 예제  (0) 2021.01.16
    윈도우 10에서 Oracle 11g 설치(express버젼)  (0) 2021.01.16
    SQL 서브쿼리 예제  (0) 2020.11.14
    SQL 조인(JOIN)  (0) 2020.11.14

    댓글