hyeonga_code

Database_08_오라클 데이터베이스 sqldeveloper 인사관리 환경 설정 본문

Oracle Database

Database_08_오라클 데이터베이스 sqldeveloper 인사관리 환경 설정

hyeonga 2023. 7. 10. 05:59
반응형

- 인사 관리 계정으로 접속합니다.
    - '+' 접속 클릭 > 새접속- Name : 인사관리
    - 사용자 정보    
        - 사용자 이름 : hr    
        - 비밀번호 : hr    
        - 롤 : 기본값- 세부 정보    
        - 호스트 이름 : localhost    
        - 포트 : 1521    
        - SID : xe> 접속

 - 사용할 예제 데이터 생성
    - 인사관리 데이터베이스 > 테이블 선택- 아무런 데이터가 없습니다.
'인사관리' 
=====
DROP TABLE regions CASCADE CONSTRAINTS PURGE;
DROP TABLE locations CASCADE CONSTRAINTS PURGE;
DROP TABLE departments CASCADE CONSTRAINTS PURGE;
DROP TABLE jobs CASCADE CONSTRAINTS PURGE;
DROP TABLE employees CASCADE CONSTRAINTS PURGE;
DROP TABLE job_history CASCADE CONSTRAINTS PURGE;
DROP TABLE job_grades CASCADE CONSTRAINTS PURGE;
DROP TABLE countries CASCADE CONSTRAINTS PURGE;

REM ********************************************************************
REM Create the REGIONS table to hold region information for locations
REM HR.LOCATIONS table has a foreign key to this table.

Prompt ******  Creating REGIONS table ....

CREATE TABLE regions
    ( region_id      NUMBER 
       CONSTRAINT  region_id_nn NOT NULL 
       CONSTRAINT reg_id_pk PRIMARY KEY
     , region_name    VARCHAR2(25) 
    );

REM ********************************************************************
REM Create the COUNTRIES table to hold country information for customers
REM and company locations. 
REM OE.CUSTOMERS table and HR.LOCATIONS have a foreign key to this table.

Prompt ******  Creating COUNTRIES table ....

CREATE TABLE countries 
    ( country_id      CHAR(2) 
       CONSTRAINT  country_id_nn NOT NULL 
    , country_name    VARCHAR2(40) 
    , region_id       NUMBER 
    , CONSTRAINT     country_c_id_pk       PRIMARY KEY (country_id) 
    ) 
    ORGANIZATION INDEX; 

ALTER TABLE countries
ADD ( CONSTRAINT countr_reg_fk  FOREIGN KEY (region_id)     REFERENCES regions(region_id) 
    ) ;

REM ********************************************************************
REM Create the LOCATIONS table to hold address information for company departments.
REM HR.DEPARTMENTS has a foreign key to this table.

Prompt ******  Creating LOCATIONS table ....

CREATE TABLE locations
    ( location_id    NUMBER(4) CONSTRAINT loc_id_pk PRIMARY KEY
    , street_address VARCHAR2(40)
    , postal_code    VARCHAR2(12)
    , city       VARCHAR2(30)
CONSTRAINT     loc_city_nn  NOT NULL
    , state_province VARCHAR2(25)
    , country_id     CHAR(2)  CONSTRAINT loc_c_id_fk REFERENCES countries(country_id)
    ) ;

REM ********************************************************************
REM Create the DEPARTMENTS table to hold company department information.
REM HR.EMPLOYEES and HR.JOB_HISTORY have a foreign key to this table.

Prompt ******  Creating DEPARTMENTS table ....

CREATE TABLE departments
    ( department_id    NUMBER(4) CONSTRAINT dept_id_pk PRIMARY KEY
    , department_name  VARCHAR2(30)
CONSTRAINT  dept_name_nn  NOT NULL
    , manager_id       NUMBER(6)
    , location_id      NUMBER(4) CONSTRAINT dept_loc_fk REFERENCES locations (location_id)
    ) ;


REM ********************************************************************
REM Create the JOBS table to hold the different names of job roles within the company.
REM HR.EMPLOYEES has a foreign key to this table.

Prompt ******  Creating JOBS table ....

CREATE TABLE jobs
    ( job_id         VARCHAR2(10) CONSTRAINT job_id_pk PRIMARY KEY
    , job_title      VARCHAR2(35)
CONSTRAINT     job_title_nn  NOT NULL
    , min_salary     NUMBER(6)
    , max_salary     NUMBER(6)
    ) ;

REM ********************************************************************
REM Create the EMPLOYEES table to hold the employee personnel 
REM information for the company.
REM HR.EMPLOYEES has a self referencing foreign key to this table.

Prompt ******  Creating EMPLOYEES table ....

CREATE TABLE employees
    ( employee_id    NUMBER(6) CONSTRAINT     emp_emp_id_pk PRIMARY KEY
    , first_name     VARCHAR2(20)
    , last_name      VARCHAR2(25)
 CONSTRAINT     emp_last_name_nn  NOT NULL
    , email          VARCHAR2(25)
CONSTRAINT     emp_email_nn  NOT NULL
    , phone_number   VARCHAR2(20)
    , hire_date      DATE
CONSTRAINT     emp_hire_date_nn  NOT NULL
    , job_id         VARCHAR2(10)
CONSTRAINT     emp_job_nn  NOT NULL     CONSTRAINT     emp_job_fk REFERENCES jobs (job_id)
    , salary         NUMBER(8,2)
    , commission_pct NUMBER(2,2)
    , manager_id     NUMBER(6) 
    , department_id  NUMBER(4) CONSTRAINT     emp_dept_fk REFERENCES departments
    , CONSTRAINT     emp_salary_min             CHECK (salary > 0) 
    , CONSTRAINT     emp_email_uk             UNIQUE (email)
    ) ;

REM ********************************************************************
REM Create the JOB_HISTORY table to hold the history of jobs that 
REM employees have held in the past.
REM HR.JOBS, HR_DEPARTMENTS, and HR.EMPLOYEES have a foreign key to this table.

Prompt ******  Creating JOB_HISTORY table ....

CREATE TABLE job_history
    ( employee_id   NUMBER(6)
 CONSTRAINT    jhist_employee_nn  NOT NULL
    , start_date    DATE
CONSTRAINT    jhist_start_date_nn  NOT NULL
    , end_date      DATE
CONSTRAINT    jhist_end_date_nn  NOT NULL
    , job_id        VARCHAR2(10)
CONSTRAINT    jhist_job_nn  NOT NULL
    , department_id NUMBER(4)
    , CONSTRAINT    jhist_date_interval            CHECK (end_date > start_date)
    ) ;

CREATE UNIQUE INDEX jhist_emp_id_st_date_pk 
ON job_history (employee_id, start_date) ;

ALTER TABLE job_history
ADD ( CONSTRAINT jhist_emp_id_st_date_pk
      PRIMARY KEY (employee_id, start_date)
    , CONSTRAINT     jhist_job_fk             FOREIGN KEY (job_id)             REFERENCES jobs
    , CONSTRAINT     jhist_emp_fk             FOREIGN KEY (employee_id)             REFERENCES employees
    , CONSTRAINT     jhist_dept_fk             FOREIGN KEY (department_id)             REFERENCES departments
    ) ;

CREATE TABLE job_grades
(grade_level VARCHAR2(3),
 lowest_sal  NUMBER,
 highest_sal NUMBER);

Insert into REGIONS (REGION_ID,REGION_NAME) values (1,'Europe');
Insert into REGIONS (REGION_ID,REGION_NAME) values (2,'Americas');
Insert into REGIONS (REGION_ID,REGION_NAME) values (3,'Asia');
Insert into REGIONS (REGION_ID,REGION_NAME) values (4,'Middle East and Africa');


Insert into COUNTRIES (COUNTRY_ID,COUNTRY_NAME,REGION_ID) values ('CA','Canada',2);
Insert into COUNTRIES (COUNTRY_ID,COUNTRY_NAME,REGION_ID) values ('DE','Germany',1);
Insert into COUNTRIES (COUNTRY_ID,COUNTRY_NAME,REGION_ID) values ('UK','United Kingdom',1);
Insert into COUNTRIES (COUNTRY_ID,COUNTRY_NAME,REGION_ID) values ('US','United States of America',2);


Insert into LOCATIONS (LOCATION_ID,STREET_ADDRESS,POSTAL_CODE,CITY,STATE_PROVINCE,COUNTRY_ID) 
values (1400,'2014 Jabberwocky Rd','26192','Southlake','Texas','US');
...
Insert into LOCATIONS (LOCATION_ID,STREET_ADDRESS,POSTAL_CODE,CITY,STATE_PROVINCE,COUNTRY_ID) 
values (2500,'Magdalen Centre, The Oxford Science Park','OX9 9ZB','Oxford','Oxford','UK');


Insert into DEPARTMENTS (DEPARTMENT_ID,DEPARTMENT_NAME,MANAGER_ID,LOCATION_ID) values (10,'Administration',200,1700);
...
Insert into DEPARTMENTS (DEPARTMENT_ID,DEPARTMENT_NAME,MANAGER_ID,LOCATION_ID) values (190,'Contracting',null,1700);


Insert into JOBS (JOB_ID,JOB_TITLE,MIN_SALARY,MAX_SALARY) values ('AD_PRES','President',20000,40000);
...
Insert into JOBS (JOB_ID,JOB_TITLE,MIN_SALARY,MAX_SALARY) values ('MK_REP','Marketing Representative',4000,9000);


Insert into EMPLOYEES (EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,JOB_ID,SALARY,COMMISSION_PCT,MANAGER_ID,DEPARTMENT_ID) values (100,'Steven','King','SKING','515.123.4567',to_date('02/06/17','RR/MM/DD'),'AD_PRES',24000,null,null,90);
...
Insert into EMPLOYEES (EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,JOB_ID,SALARY,COMMISSION_PCT,MANAGER_ID,DEPARTMENT_ID) values (206,'William','Gietz','WGIETZ','515.123.8181',to_date('09/06/07','RR/MM/DD'),'AC_ACCOUNT',8300,null,205,110);


Insert into JOB_HISTORY (EMPLOYEE_ID,START_DATE,END_DATE,JOB_ID,DEPARTMENT_ID) values (102,to_date('08/01/13','RR/MM/DD'),to_date('13/07/24','RR/MM/DD'),'IT_PROG',60);
...
Insert into JOB_HISTORY (EMPLOYEE_ID,START_DATE,END_DATE,JOB_ID,DEPARTMENT_ID) values (200,to_date('09/07/01','RR/MM/DD'),to_date('13/12/31','RR/MM/DD'),'AC_ACCOUNT',90);

Insert into JOB_GRADES (GRADE_LEVEL,LOWEST_SAL,HIGHEST_SAL) values ('A',1000,2999);
...
Insert into JOB_GRADES (GRADE_LEVEL,LOWEST_SAL,HIGHEST_SAL) values ('F',25000,40000);

COMMIT;

ALTER TABLE departments
ADD ( CONSTRAINT dept_mgr_fk
        FOREIGN KEY (manager_id)
         REFERENCES employees (employee_id)
    ) ;

REM ********************************************************************
REM Create the EMPL_DEMO table

DROP TABLE empl_demo PURGE;

CREATE TABLE empl_demo
AS
SELECT * FROM employees
WHERE 1=2;

INSERT INTO empl_demo VALUES ( 100, 'Steven', 'King', 'SKING', '515.123.4567', TO_DATE('17-06-1987', 'dd-mm-yyyy'), 'AD_PRES', 24000, NULL, NULL, 90);
...
INSERT INTO empl_demo VALUES ( 206, 'William', 'Gietz', 'WGIETZ', '515.123.8181', TO_DATE('07-06-1994', 'dd-mm-yyyy'), 'AC_ACCOUNT', 8300, NULL, 205, 110);

COMMIT;
SELECT COUNT(*)  NUM_EMP FROM employees;
SELECT COUNT(*)  NUM_DEP FROM departments;
SELECT COUNT(*)  NUM_LOC FROM locations;
SELECT COUNT(*)  NUM_REG FROM regions;
SELECT COUNT(*)  NUM_CTR FROM countries;
SELECT COUNT(*)  NUM_JOB FROM jobs;
SELECT COUNT(*)  NUM_JH FROM job_history;

    >>> 실행합니다.

    - 워크시트의 코드를 지우려면 지우개 기호를 클릭하면 모두 지워집니다.

반응형