가장 많이 쓰는 데이터 형식(자료형)

숫자

문자

날짜와 시간

 

 

 

테이블 생성 ( usertbl , buytbl )

-- 형식
CREATE TABLE [테이블명] (
	[컬럼명] [자료형] [제약조건],
	[컬럼명2] [자료형] [제약조건]

FOREIGN KEY [컬럼명] REFERENCES [테이블명] [컬럼명]  -- 외래키 설정  

);

CREATE TABLE usertbl -- 회원 테이블
( userID  	CHAR(8) NOT NULL PRIMARY KEY, -- 사용자 아이디(PK)
  name    	VARCHAR(10) NOT NULL, -- 이름
  birthYear   INT NOT NULL,  -- 출생년도
  addr	  	CHAR(2) NOT NULL, -- 지역(경기,서울,경남 식으로 2글자만입력)
  mobile1	CHAR(3), -- 휴대폰의 국번(011, 016, 017, 018, 019, 010 등)
  mobile2	CHAR(8), -- 휴대폰의 나머지 전화번호(하이픈제외)
  height    	SMALLINT,  -- 키
  mDate    	DATE  -- 회원 가입일
);


CREATE TABLE buytbl -- 회원 구매 테이블(Buy Table의 약자)
(  num 		INT AUTO_INCREMENT NOT NULL PRIMARY KEY, -- 순번(PK)
   userID  	CHAR(8) NOT NULL, -- 아이디(FK)
   prodName 	CHAR(6) NOT NULL, --  물품명
   groupName 	CHAR(4)  , -- 분류
   price     	INT  NOT NULL, -- 단가
   amount    	SMALLINT  NOT NULL, -- 수량
   FOREIGN KEY (userID) REFERENCES usertbl(userID)
);

 

 

mySQL 제약조건

PRIMARY KEY

  • 대부분의 테이블은 기본키를 하나씩 가지고 있다.
  • 절대 중복될 수 없는 값
  • NULL 이 입력될 수 없다.
  • 많은 행의 데이터를 구분할 수 있는 식별자이다.

FOREIGN KEY

  • 두 테이블 사이의 관계를 선언함.
  • 하나의 테이블이 다른 테이블에 의존하게 됨.
  • 외래키 테이블이 참조하는 테이블의 기준 열은 반드시 Primary Key 거나 Unique 제약조건이 설정되어 있어야한다.

UNIQUE

  • 중복되지 않는 유일한 값
  • Primary Key 와 차이점은. NULL을 허용한다.

CHECK

  • 입력되는 데이터를 점검하는 기능이다.
--형식
CREATE TABLE usertbl -- 회원 테이블
( userID  	CHAR(8)
  name    	VARCHAR(10) 
  birthYear   INT CHECK ( birthYear > 1996 )
);

 

DEFAULT

  • 값을 입력하지 않았을 때, 자동으로 입력되는 기본 값을 정의한다.
--형식
CREATE TABLE usertbl -- 회원 테이블
( userID  	CHAR(8) 
  name    	VARCHAR(10) DEFAULT '이름없음' 
  birthYear   INT 
);

NULL / NOT NULL

  • NULL 을 허용 / 비허용 하게 해주는 제약조건이다.
CREATE TABLE usertbl -- 회원 테이블
( userID  	CHAR(8) NOT NULL
  name    	VARCHAR(10)
  birthYear   INT 
);

 

 

 

 

테이블 삭제 DROP TABLE

--형식
DROP TABLE [테이블명];

 

테이블 수정 ALTER TABLE

-- 열의 추가
ALTER TABLE [테이블명]
	ADD [컬럼명] [자료형] [제약조건];

-- 열의 삭제
ALTER TABLE [테이블명]
	DROP COLUMN [컬럼명];

-- 열의 이름 및 데이터 형식 변경
ALTER TABLE [테이블명]
	CHANGE COLUMN [기존컬럼명] [변경할컬럼명] [변경할자료형] [제약조건];

-- 스키마 명으로 제약조건 조회
select * from information_schema.table_constraints
where CONSTRAINT_SCHEMA = '스키마명'; 

-- 테이블 명으로 제약조건 조회  ( 제약조건 삭제 할 때 필요함 )
select * from information_schema.table_constraints
where TABLE_NAME  = '테이블명';    -- WHERE 절 이기때문에 따옴표 필수

-- 열의 제약조건 추가 및 삭제
ALTER TABLE [테이블명]
	ADD PRIMARY KEY (컬럼명);  -- 기본키 추가
  ADD FOREIGN KEY (컬럼명) REFERENCES 테이블명(컬럼명);  -- 외래키 추가
	ADD UNIQUE KEY (컬럼명);    -- 유니크 키 추가
	ADD CHECK (조건식);    -- 체크 추가
	ALTER COLUMN 컬럼명 SET DEFAULT 값;    -- 디폴트값 추가

ALTER TABLE [테이블명]
	DROP PRIMARY KEY;  -- 기본키 제약조건 삭제
	DROP FOREIGN KEY [제약조건명];  -- 외래키 제약조건 삭제
	DROP INDEX | KEY [제약조건명];  -- 유니크 제약조건 삭제 (INDEX , KEY 둘 다 같은 명령어)
  DROP CHECK [제약조건명];   -- 체크 제약조건 삭제
  ALTER COLUMN 컬럼명 DROP DEFAULT;   -- 디폴트값 제거

 

 

외래키 생성 시 추가옵션

-- 바로 위에있는 테이블 수정에서 코드를 일부 가져 옴.

ALTER TABLE [테이블명]
  ADD FOREIGN KEY (컬럼명) REFERENCES 테이블명(컬럼명)
	ON DELETE CASCADE   -- 기존 테이블 삭제 시, 제약조건 테이블도 자동 삭제 
	ON UPDATE CASCADE  -- 기존 테이블 변경 시, 제약조건 테이블도 자동 변경

-- 옵션을 추가하지 않고 삭제 / 수정 요청시 , 무결성 제약조건에 위배된다는 오류와 
-- 함께 수행되지 않습니다.

DROP TABLE EMPLOYEE;
DROP TABLE DEPARTMENT;
DROP TABLE JOB;
DROP TABLE LOCATION;
DROP TABLE NATIONAL;
DROP TABLE SAL_GRADE;

--------------------------------------------------------
--  DDL for Table DEPARTMENT
--------------------------------------------------------

  CREATE TABLE "EMPLOYEE"."DEPARTMENT" 
   ( "DEPT_ID" CHAR(2 BYTE), 
"DEPT_TITLE" VARCHAR2(35 BYTE), 
"LOCATION_ID" CHAR(2 BYTE)
   ) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM" ;

   COMMENT ON COLUMN "EMPLOYEE"."DEPARTMENT"."DEPT_ID" IS '부서코드';
   COMMENT ON COLUMN "EMPLOYEE"."DEPARTMENT"."DEPT_TITLE" IS '부서명';
   COMMENT ON COLUMN "EMPLOYEE"."DEPARTMENT"."LOCATION_ID" IS '지역코드';
   COMMENT ON TABLE "EMPLOYEE"."DEPARTMENT"  IS '부서';
-- REM INSERTING into EMPLOYEE.DEPARTMENT
-- SET DEFINE OFF;
Insert into EMPLOYEE.DEPARTMENT (DEPT_ID,DEPT_TITLE,LOCATION_ID) values ('D1','인사관리부','L1');
Insert into EMPLOYEE.DEPARTMENT (DEPT_ID,DEPT_TITLE,LOCATION_ID) values ('D2','회계관리부','L1');
Insert into EMPLOYEE.DEPARTMENT (DEPT_ID,DEPT_TITLE,LOCATION_ID) values ('D3','마케팅부','L1');
Insert into EMPLOYEE.DEPARTMENT (DEPT_ID,DEPT_TITLE,LOCATION_ID) values ('D4','국내영업부','L1');
Insert into EMPLOYEE.DEPARTMENT (DEPT_ID,DEPT_TITLE,LOCATION_ID) values ('D5','해외영업1부','L2');
Insert into EMPLOYEE.DEPARTMENT (DEPT_ID,DEPT_TITLE,LOCATION_ID) values ('D6','해외영업2부','L3');
Insert into EMPLOYEE.DEPARTMENT (DEPT_ID,DEPT_TITLE,LOCATION_ID) values ('D7','해외영업3부','L4');
Insert into EMPLOYEE.DEPARTMENT (DEPT_ID,DEPT_TITLE,LOCATION_ID) values ('D8','기술지원부','L5');
Insert into EMPLOYEE.DEPARTMENT (DEPT_ID,DEPT_TITLE,LOCATION_ID) values ('D9','총무부','L1');
--------------------------------------------------------
--  DDL for Index 엔터티1_PK2
--------------------------------------------------------

  CREATE UNIQUE INDEX "EMPLOYEE"."엔터티1_PK2" ON "EMPLOYEE"."DEPARTMENT" ("DEPT_ID") 
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM" ;
--------------------------------------------------------
--  Constraints for Table DEPARTMENT
--------------------------------------------------------

  ALTER TABLE "EMPLOYEE"."DEPARTMENT" ADD CONSTRAINT "DEPARTMENT_PK" PRIMARY KEY ("DEPT_ID")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM"  ENABLE;
  ALTER TABLE "EMPLOYEE"."DEPARTMENT" MODIFY ("LOCATION_ID" NOT NULL ENABLE);
  ALTER TABLE "EMPLOYEE"."DEPARTMENT" MODIFY ("DEPT_ID" NOT NULL ENABLE);

--------------------------------------------------------
--  DDL for Table EMPLOYEE
--------------------------------------------------------

  CREATE TABLE "EMPLOYEE"."EMPLOYEE" 
   ( "EMP_ID" VARCHAR2(3 BYTE), 
"EMP_NAME" VARCHAR2(20 BYTE), 
"EMP_NO" CHAR(14 BYTE), 
"EMAIL" VARCHAR2(25 BYTE), 
"PHONE" VARCHAR2(12 BYTE), 
"DEPT_CODE" CHAR(2 BYTE), 
"JOB_CODE" CHAR(2 BYTE), 
"SAL_LEVEL" CHAR(2 BYTE), 
"SALARY" NUMBER, 
"BONUS" NUMBER, 
"MANAGER_ID" VARCHAR2(3 BYTE), 
"HIRE_DATE" DATE, 
"ENT_DATE" DATE, 
"ENT_YN" CHAR(1 BYTE) DEFAULT 'N'
   ) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM" ;

   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."EMP_ID" IS '사원번호';
   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."EMP_NAME" IS '직원명';
   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."EMP_NO" IS '주민등록번호';
   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."EMAIL" IS '이메일';
   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."PHONE" IS '전화번호';
   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."DEPT_CODE" IS '부서코드';
   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."JOB_CODE" IS '직급코드';
   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."SAL_LEVEL" IS '급여등급';
   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."SALARY" IS '급여';
   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."BONUS" IS '보너스율';
   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."MANAGER_ID" IS '관리자사번';
   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."HIRE_DATE" IS '입사일';
   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."ENT_DATE" IS '퇴사일';
   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."ENT_YN" IS '재직여부';
   COMMENT ON TABLE "EMPLOYEE"."EMPLOYEE"  IS '사원';
-- REM INSERTING into EMPLOYEE.EMPLOYEE
-- SET DEFINE OFF;
Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('200','선동일','621235-1985634','sun_di@uni.or.kr','01099546325','D9','J1','S1',8000000,0.3,null,to_date('90/02/06','RR/MM/DD'),null,'N');
Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('201','송종기','631156-1548654','song_jk@uni.or.kr','01045686656','D9','J2','S1',6000000,null,'200',to_date('01/09/01','RR/MM/DD'),null,'N');
Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('202','노옹철','861015-1356452','no_hc@uni.or.kr','01066656263','D9','J2','S4',3700000,null,'201',to_date('01/01/01','RR/MM/DD'),null,'N');
Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('203','송은희','631010-2653546','song_eh@uni.or.kr','01077607879','D6','J4','S5',2800000,null,'204',to_date('96/05/03','RR/MM/DD'),null,'N');
Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('204','유재식','660508-1342154','yoo_js@uni.or.kr','01099999129','D6','J3','S4',3400000,0.2,'200',to_date('00/12/29','RR/MM/DD'),null,'N');
Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('205','정중하','770102-1357951','jung_jh@uni.or.kr','01036654875','D6','J3','S4',3900000,null,'204',to_date('99/09/09','RR/MM/DD'),null,'N');
Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('206','박나라','630709-2054321','pack_nr@uni.or.kr','01096935222','D5','J7','S6',1800000,null,'207',to_date('08/04/02','RR/MM/DD'),null,'N');
Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('207','하이유','690402-2040612','ha_iy@uni.or.kr','01036654488','D5','J5','S5',2200000,0.1,'200',to_date('94/07/07','RR/MM/DD'),null,'N');
Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('208','김해술','870927-1313564','kim_hs@uni.or.kr','01078634444','D5','J5','S5',2500000,null,'207',to_date('04/04/30','RR/MM/DD'),null,'N');
Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('209','심봉선','750206-1325546','sim_bs@uni.or.kr','0113654485','D5','J3','S4',3500000,0.15,'207',to_date('11/11/11','RR/MM/DD'),null,'N');
Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('210','윤은해','650505-2356985','youn_eh@uni.or.kr','0179964233','D5','J7','S5',2000000,null,'207',to_date('01/02/03','RR/MM/DD'),null,'N');
Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('211','전형돈','830807-1121321','jun_hd@uni.or.kr','01044432222','D8','J6','S5',2000000,null,'200',to_date('12/12/12','RR/MM/DD'),null,'N');
Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('212','장쯔위','780923-2234542','jang_zw@uni.or.kr','01066682224','D8','J6','S5',2550000,0.25,'211',to_date('15/06/17','RR/MM/DD'),null,'N');
Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('213','하동운','621111-1785463','ha_dh@uni.or.kr','01158456632',null,'J6','S5',2320000,0.1,null,to_date('99/12/31','RR/MM/DD'),null,'N');
Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('214','방명수','856795-1313513','bang_ms@uni.or.kr','01074127545','D1','J7','S6',1380000,null,'200',to_date('10/04/04','RR/MM/DD'),null,'N');
Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('215','대북혼','881130-1050911','dae_bh@uni.or.kr','01088808584','D5','J5','S4',3760000,null,null,to_date('17/06/19','RR/MM/DD'),null,'N');
Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('216','차태연','770808-1364897','cha_ty@uni.or.kr','01064643212','D1','J6','S5',2780000,0.2,'214',to_date('13/03/01','RR/MM/DD'),null,'N');
Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('217','전지연','770808-2665412','jun_jy@uni.or.kr','01033624442','D1','J6','S4',3660000,0.3,'214',to_date('07/03/20','RR/MM/DD'),null,'N');
Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('218','이오리','870427-2232123','loo_or@uni.or.kr','01022306545',null,'J7','S5',2890000,null,null,to_date('16/11/28','RR/MM/DD'),null,'N');
Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('219','임시환','660712-1212123','im_sw@uni.or.kr',null,'D2','J4','S6',1550000,null,null,to_date('99/09/09','RR/MM/DD'),null,'N');
Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('220','이중석','770823-1113111','lee_js@uni.or.kr',null,'D2','J4','S5',2490000,null,null,to_date('14/09/18','RR/MM/DD'),null,'N');
Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('221','유하진','800808-1123341','yoo_hj@uni.or.kr',null,'D2','J4','S5',2480000,null,null,to_date('94/01/20','RR/MM/DD'),null,'N');
Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('222','이태림','760918-2854697','lee_tr@uni.or.kr','01033000002','D8','J6','S5',2436240,0.35,'100',to_date('97/09/12','RR/MM/DD'),to_date('17/09/12','RR/MM/DD'),'Y');
--------------------------------------------------------
--  DDL for Index 엔터티1_PK
--------------------------------------------------------

  CREATE UNIQUE INDEX "EMPLOYEE"."엔터티1_PK" ON "EMPLOYEE"."EMPLOYEE" ("EMP_ID") 
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM" ;
--------------------------------------------------------
--  Constraints for Table EMPLOYEE
--------------------------------------------------------

  ALTER TABLE "EMPLOYEE"."EMPLOYEE" ADD CONSTRAINT "EMPLOYEE_PK" PRIMARY KEY ("EMP_ID")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM"  ENABLE;
  ALTER TABLE "EMPLOYEE"."EMPLOYEE" MODIFY ("SAL_LEVEL" NOT NULL ENABLE);
  ALTER TABLE "EMPLOYEE"."EMPLOYEE" MODIFY ("JOB_CODE" NOT NULL ENABLE);
  ALTER TABLE "EMPLOYEE"."EMPLOYEE" MODIFY ("EMP_NO" NOT NULL ENABLE);
  ALTER TABLE "EMPLOYEE"."EMPLOYEE" MODIFY ("EMP_NAME" NOT NULL ENABLE);
  ALTER TABLE "EMPLOYEE"."EMPLOYEE" MODIFY ("EMP_ID" NOT NULL ENABLE);

--------------------------------------------------------
--  DDL for Table JOB
--------------------------------------------------------

  CREATE TABLE "EMPLOYEE"."JOB" 
   ( "JOB_CODE" CHAR(2 BYTE), 
"JOB_NAME" VARCHAR2(35 BYTE)
   ) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM" ;

   COMMENT ON COLUMN "EMPLOYEE"."JOB"."JOB_CODE" IS '직급코드';
   COMMENT ON COLUMN "EMPLOYEE"."JOB"."JOB_NAME" IS '직급명';
   COMMENT ON TABLE "EMPLOYEE"."JOB"  IS '직급';
-- REM INSERTING into EMPLOYEE.JOB
-- SET DEFINE OFF;
Insert into EMPLOYEE.JOB (JOB_CODE,JOB_NAME) values ('J1','대표');
Insert into EMPLOYEE.JOB (JOB_CODE,JOB_NAME) values ('J2','부사장');
Insert into EMPLOYEE.JOB (JOB_CODE,JOB_NAME) values ('J3','부장');
Insert into EMPLOYEE.JOB (JOB_CODE,JOB_NAME) values ('J4','차장');
Insert into EMPLOYEE.JOB (JOB_CODE,JOB_NAME) values ('J5','과장');
Insert into EMPLOYEE.JOB (JOB_CODE,JOB_NAME) values ('J6','대리');
Insert into EMPLOYEE.JOB (JOB_CODE,JOB_NAME) values ('J7','사원');
--------------------------------------------------------
--  DDL for Index 엔터티1_PK1
--------------------------------------------------------

  CREATE UNIQUE INDEX "EMPLOYEE"."엔터티1_PK1" ON "EMPLOYEE"."JOB" ("JOB_CODE") 
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM" ;
--------------------------------------------------------
--  Constraints for Table JOB
--------------------------------------------------------

  ALTER TABLE "EMPLOYEE"."JOB" ADD CONSTRAINT "JOB_PK" PRIMARY KEY ("JOB_CODE")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM"  ENABLE;
  ALTER TABLE "EMPLOYEE"."JOB" MODIFY ("JOB_CODE" NOT NULL ENABLE);

--------------------------------------------------------
--  DDL for Table LOCATION
--------------------------------------------------------

  CREATE TABLE "EMPLOYEE"."LOCATION" 
   ( "LOCAL_CODE" CHAR(2 BYTE), 
"NATIONAL_CODE" CHAR(2 BYTE), 
"LOCAL_NAME" VARCHAR2(40 BYTE)
   ) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM" ;

   COMMENT ON COLUMN "EMPLOYEE"."LOCATION"."LOCAL_CODE" IS '지역코드';
   COMMENT ON COLUMN "EMPLOYEE"."LOCATION"."NATIONAL_CODE" IS '국가코드';
   COMMENT ON COLUMN "EMPLOYEE"."LOCATION"."LOCAL_NAME" IS '지역명';
   COMMENT ON TABLE "EMPLOYEE"."LOCATION"  IS '지역';
-- REM INSERTING into EMPLOYEE.LOCATION
-- SET DEFINE OFF;
Insert into EMPLOYEE.LOCATION (LOCAL_CODE,NATIONAL_CODE,LOCAL_NAME) values ('L1','KO','ASIA1');
Insert into EMPLOYEE.LOCATION (LOCAL_CODE,NATIONAL_CODE,LOCAL_NAME) values ('L2','JP','ASIA2');
Insert into EMPLOYEE.LOCATION (LOCAL_CODE,NATIONAL_CODE,LOCAL_NAME) values ('L3','CH','ASIA3');
Insert into EMPLOYEE.LOCATION (LOCAL_CODE,NATIONAL_CODE,LOCAL_NAME) values ('L4','US','AMERICA');
Insert into EMPLOYEE.LOCATION (LOCAL_CODE,NATIONAL_CODE,LOCAL_NAME) values ('L5','RU','EU');
--------------------------------------------------------
--  DDL for Index 엔터티1_PK3
--------------------------------------------------------

  CREATE UNIQUE INDEX "EMPLOYEE"."엔터티1_PK3" ON "EMPLOYEE"."LOCATION" ("LOCAL_CODE") 
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM" ;
--------------------------------------------------------
--  Constraints for Table LOCATION
--------------------------------------------------------

  ALTER TABLE "EMPLOYEE"."LOCATION" ADD CONSTRAINT "LOCATION_PK" PRIMARY KEY ("LOCAL_CODE")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM"  ENABLE;
  ALTER TABLE "EMPLOYEE"."LOCATION" MODIFY ("NATIONAL_CODE" NOT NULL ENABLE);
  ALTER TABLE "EMPLOYEE"."LOCATION" MODIFY ("LOCAL_CODE" NOT NULL ENABLE);

--------------------------------------------------------
--  DDL for Table NATIONAL
--------------------------------------------------------

  CREATE TABLE "EMPLOYEE"."NATIONAL" 
   ( "NATIONAL_CODE" CHAR(2 BYTE), 
"NATIONAL_NAME" VARCHAR2(35 BYTE)
   ) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM" ;

   COMMENT ON COLUMN "EMPLOYEE"."NATIONAL"."NATIONAL_CODE" IS '국가코드';
   COMMENT ON COLUMN "EMPLOYEE"."NATIONAL"."NATIONAL_NAME" IS '국가명';
   COMMENT ON TABLE "EMPLOYEE"."NATIONAL"  IS '국가';
-- REM INSERTING into EMPLOYEE.NATIONAL
-- SET DEFINE OFF;
Insert into EMPLOYEE.NATIONAL (NATIONAL_CODE,NATIONAL_NAME) values ('KO','한국');
Insert into EMPLOYEE.NATIONAL (NATIONAL_CODE,NATIONAL_NAME) values ('JP','일본');
Insert into EMPLOYEE.NATIONAL (NATIONAL_CODE,NATIONAL_NAME) values ('CH','중국');
Insert into EMPLOYEE.NATIONAL (NATIONAL_CODE,NATIONAL_NAME) values ('US','미국');
Insert into EMPLOYEE.NATIONAL (NATIONAL_CODE,NATIONAL_NAME) values ('RU','러시아');
--------------------------------------------------------
--  DDL for Index 엔터티1_PK4
--------------------------------------------------------

  CREATE UNIQUE INDEX "EMPLOYEE"."엔터티1_PK4" ON "EMPLOYEE"."NATIONAL" ("NATIONAL_CODE") 
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM" ;
--------------------------------------------------------
--  Constraints for Table NATIONAL
--------------------------------------------------------

  ALTER TABLE "EMPLOYEE"."NATIONAL" ADD CONSTRAINT "NATIONAL_PK" PRIMARY KEY ("NATIONAL_CODE")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM"  ENABLE;
  ALTER TABLE "EMPLOYEE"."NATIONAL" MODIFY ("NATIONAL_CODE" NOT NULL ENABLE);

--------------------------------------------------------
--  DDL for Table SAL_GRADE
--------------------------------------------------------

  CREATE TABLE "EMPLOYEE"."SAL_GRADE" 
   ( "SAL_LEVEL" CHAR(2 BYTE), 
"MIN_SAL" NUMBER, 
"MAX_SAL" NUMBER
   ) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM" ;

   COMMENT ON COLUMN "EMPLOYEE"."SAL_GRADE"."SAL_LEVEL" IS '급여등급';
   COMMENT ON COLUMN "EMPLOYEE"."SAL_GRADE"."MIN_SAL" IS '최소급여';
   COMMENT ON COLUMN "EMPLOYEE"."SAL_GRADE"."MAX_SAL" IS '최대급여';
   COMMENT ON TABLE "EMPLOYEE"."SAL_GRADE"  IS '급여등급';
-- REM INSERTING into EMPLOYEE.SAL_GRADE
-- SET DEFINE OFF;
Insert into EMPLOYEE.SAL_GRADE (SAL_LEVEL,MIN_SAL,MAX_SAL) values ('S1',6000000,10000000);
Insert into EMPLOYEE.SAL_GRADE (SAL_LEVEL,MIN_SAL,MAX_SAL) values ('S2',5000000,5999999);
Insert into EMPLOYEE.SAL_GRADE (SAL_LEVEL,MIN_SAL,MAX_SAL) values ('S3',4000000,4999999);
Insert into EMPLOYEE.SAL_GRADE (SAL_LEVEL,MIN_SAL,MAX_SAL) values ('S4',3000000,3999999);
Insert into EMPLOYEE.SAL_GRADE (SAL_LEVEL,MIN_SAL,MAX_SAL) values ('S5',2000000,2999999);
Insert into EMPLOYEE.SAL_GRADE (SAL_LEVEL,MIN_SAL,MAX_SAL) values ('S6',1000000,1999999);
--------------------------------------------------------
--  DDL for Index 엔터티2_PK
--------------------------------------------------------

  CREATE UNIQUE INDEX "EMPLOYEE"."엔터티2_PK" ON "EMPLOYEE"."SAL_GRADE" ("SAL_LEVEL") 
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM" ;
--------------------------------------------------------
--  Constraints for Table SAL_GRADE
--------------------------------------------------------

  ALTER TABLE "EMPLOYEE"."SAL_GRADE" ADD CONSTRAINT "엔터티2_PK" PRIMARY KEY ("SAL_LEVEL")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM"  ENABLE;
  ALTER TABLE "EMPLOYEE"."SAL_GRADE" MODIFY ("SAL_LEVEL" NOT NULL ENABLE);


COMMIT;

 

INNER JOIN 과 OUTER JOIN - 두 개 이상의 테이블을 조인할 때, 일치하는 값이 없는 행은 조인에서 제외된다. 이것을 INNER JOIN이라고 하며, 

명시적으로 사용하지 않을 시에는 기본적으로 INNER JOIN 이다. 

 

하지만 일치하지 않은 값 또한 JOIN에 포함 시킬 수도 있다. 이것을 OUTER JOIN이라고 하며, 반드시 OUTER JOIN임을 명시해야 한다. 

 

꽤 중요한 문장들이 많습니다

 

 

 

조인 완벽 이해가능한 예제 ( 일반적인 INNER JOIN , 다중조인 )

 

-- 직급이 대리이면서 아시아 지역에 근무하는 직원조회   EMPLOYEE  JOB  LOCATION  + DEPARTMENT

-- 사번, 이름 , 직급명, 부서명, 근무지역명, 급여를 조회하세요 

-- (조회시에는 모든 컬럼에 테이블 별칭을 사용하는것이 좋다. )

 

 

 

 

 

 

실행 결과

 

 

 

 

여기부터여기부터여기부터여기부터여기부터여기부터여기부터여기부터여기부터여기부터여기부터여기부터여기부터 

여기부터여기부터여기부터여기부터여기부터여기부터여기부터여기부터여기부터 

여기부터여기부터여기부터여기부터여기부터여기부터여기부터 

 

서브쿼리 시작   서브쿼리 시작   서브쿼리 시작   서브쿼리 시작   서브쿼리 시작   서브쿼리 시작    

--@서브쿼리(SubQuery)

/*하나의 SQL 문안에 포함되어있는 또다른 SQL 문

알려지지 않은 조건에 근거한 값들을 검색하는 SELECT 문장을 작성하는데 유용함

메인쿼리가 서브쿼리를 포함하는 종속적인 관계

서브쿼리는 반드시 소괄호 로 묶어야함

-> (SELECT...) 형태*/

 

 

 

※ 전 직원의 급여 평균

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

--서브쿼리의 유형

--단일행 서브쿼리 : 서브쿼리의 조회 결과값이 1개 행일때

--다중행 서브쿼리 : 서브쿼리의 조회 결과값의 행이 여러개일때

--다중열 서브쿼리 : 서브쿼리의 조회 결과값의 컬럼이 여러개일때

--다중행 다중열 서브쿼리 : 조회경로가 행 수와 열수가 여러개일때

--상(호연)관서브쿼리 : 서브쿼리가 만든 결과값을 메인쿼리가 비교 연산할때 

--                  메인쿼리의 값이 변경되면 서브쿼리의 결과값도 바뀌는 서브쿼리 

--스칼라 서브쿼리 : 상관쿼리이면서 결과값이 하나인 서브쿼리 

 

--* 서브쿼리의 유형에 따라 서브쿼리 앞에 붙은 연산자가 다름 

 

 

 

--1. 단일행 서브쿼리 

-- 단일행서브쿼리앞에는 일반비교 연산자사용

-- >,<,>=,<=,=, !=,<>,^= (서브쿼리)

 

--노옹철 사원의 급여보다 많이 받는 직원의 

--사번, 이름 , 부서, 직급, 급여를 조회하세요           

 

-- 가장 적은 급여를 받는 직원의

-- 사번, 이름, 직급, 부서, 급여, 입사일을 조회하세요 

 

-- 서브쿼리는 SELECT, FROM, WHERE, HAVING, ORDER BY에도 사용 가능             

-- 부서별 급여의 합계가 가장 큰 부서의 부서명, 급여 합계를 구하세요   

 

--부서별 최고 급여를 받는 직원의 이름, 직급, 부서 , 급여 조회 
 
1 단계  ( 서브 쿼리 먼저 작성 )

 

 

 

2 단계 ( 메인 쿼리 작성 )

 

 

 

 

 

 

 

 

 

 

 

 

3 단계  :    1, 2단계 합체

다중행 서브쿼리 라서 IN 사용

메인 쿼리에서  WHERE    급여  IN   부서별 최고 급여

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-- 관리자에 해당하는 직원에 대한 정보와 관리자가 아닌 직원의 정보를 추출하여 조회 

-- 사번, 이름 , 부서명 , 직급명, '관리자' AS 구분 / '직원' AS 구분

 

 

 

 

풀이 방법 : 서브쿼리문 부터 천천히 해석 해야 한다.

 

 

 

 

1. (EMPLOYEE 에서 MANAGER_ID가 NULL이 아닌 중복 없이 MANAGER_ID 출력 )  = 서브쿼리 부분  ( AND EMP_ID IN 뒤 괄호 )

 

2. EMP_ID 와  1. (EMPLOYEE 에서 MANAGER_ID가 NULL이 아닌 중복 없이 MANAGER_ID 출력 ) 들 중 일치하는 EMP_ID 들의 사번, 이름, 부서명, 직급명, 구분을 출력하라 !!

 

 

 

 

 

 

UNION

 

 

 

 

-- ANY : 서브쿼리의 결과중에서  하나라도 참이면 참 

/*  > ANY : 최소값 보다 크면

   >= ANY : 최소값보다 크거나 같으면

   < ANY : 최대값보다 작으면

   <= ANY : 최대값보다 작거나 같으면

   = ANY : IN과 같은 효과

   != ANY : NOT IN과 같은 효과 */

 

 

 

--ALL : 서브 쿼리의 결과중에서 모두 참이면 참 (ANY 와는 약간 다른 개념 ) 

/*  > ALL : 최대값 보다 크면

   >= ALL : 최대값보다 크거나 같으면

   < ALL : 최소값보다 작으면

   <= ALL : 최소값보다 작거나 같으면

   = ALL : SUBSELECT의 결과가 1건이면 상관없지만 여러건이면 오류가 발생

   != ALL : 위와 마찬가지로 결과가 여러건이면 오류 발생

*/

 

--EXISTS : 서브쿼리의 결과 중에서 만족하는 값이 하나라도 존재하면 참

-- 참, 거짓 서브쿼리안에 값이 있는지 없는지 

-- 서브쿼리 결과가 참이면 메인쿼리를 실행, 서브쿼리 결과가 거짓이면 메인쿼리를 실행하지않는다.

 

 

-- 다중열 서브쿼리 

--> 서브쿼리의 조회결과 컬럼의 개수가 여러개일때 (다중행하고는 다르게 결과값이 컬럼이 여러개!!)

 

 

-- 퇴사한 여직원과 같은부서, 같은 직급에 해당하는 사원의 이름 , 직급코드 ,부서코드, 입사일을 조회              

 

 

 

SUBSTR   EMP_NO    = 2   주민번호 뒷자리 2 (여직원) 인거 비교

 

 

 

 

 

 

-- 상[호연]관 서브쿼리

-- 일반적으로는 서브쿼리가 만든 결과값을 메인쿼리가 비교 연산

-- 메인쿼리가 사용하는 테이블의 값을 서브쿼리가 이용해서 결과를 만듬

-- 메인쿼리의 테이블 값이 변경되면, 서브쿼리의 결과값도 바뀌게 됨

 

--메인쿼리에 있는것을 서브쿼리에서 가져다쓰면 상관 서브쿼리

--서브쿼리가 독단적으로 사용이 되면 일반서브쿼리 

 

 

 

 

 

 

 

-- 스칼라 서브쿼리 = 단일행 서브쿼리 + 상관쿼리(-> 상관쿼리 이면서 결과값이 1개인 서브쿼리)

-- ( 행이 1개만 필요로하는 ) SELECT절, WHERE절, ORDER BY절 사용 가능

 

 

-- WHERE절에서 스칼라 서브쿼리 이용

 

-- 동일 직급의 급여 평균보다 급여를 많이 받고 있는 직원의

-- 사번, 직급코드, 급여를 조회하세요

 

-- 동일 직급의 급여 평균

 

 

 

 

-- 동일 직급의 급여 평균보다 급여를 많이 받고 있는 직원의

-- 사번, 직급코드, 급여를 조회하세요

 

 

 

 

 

 

 

 

 

--SELECT 절에서 스칼라 서브쿼리 이용 

-- 모든 사원의 사번, 이름, 관리자 사번, 관리자명 조회

 

 

 

-- ORDER BY 절에서 스칼라 서브쿼리 이용 

 

-- 모든 직원의 사번, 이름 , 소속 부서코드 조회

-- 단 부서명 내림차순 정렬 

 

 

 

 

 

 

 

-- 서브쿼리의 사용 위치 : 

-- SELECT절, FROM절, WHERE절, HAVING절, GROUP BY절, ORDER BY절

-- DML 구문 : INSERT문, UPDATE문

-- DDL 구문 : CREATE TABLE문, CREATE VIEW문

 

-- FROM 절에서 서브쿼리를 사용할 수 있다 : 테이블 대신에 사용

-- 인라인 뷰(INLINE VIEW)라고 함

-- : 서브쿼리가 만든 결과집합(RESULT SET)에 대한 출력 화면

 

 

 

--JOB 코드별 월급 평균(TRUNC(AVG(E2.SALARY), -5))을 구하고 

--월급이 이와 일치하는 사원정보 이름, 직급명,월급 구하기

 

 

 

 

 

 

 

-- 부서명이 인사관리부인 사원명  , 부서명, 직급이름 을 구하시오 (인라인뷰사용) 

 

 

 

 

 

 

 

 

/*우선 TOP-N 분석에 대해 알아보자

# TOP-N 분석이란?

   TOP-N 질의는 columns에서 가장 큰 n개의 값 또는 가장 작은 n개의 값을 요청할 때

   사용됨

   예) 가장 적게 팔린 제품 10가지는? 또는 회사에서 가장 소득이 많은 사람 3명은?

*/

-- 인라인뷰를 활용한 TOP-N분석

-- ORDER BY 한 결과에 ROWNUM을 붙임

-- ROWNUM은 행 번호를 의미함 (ROWNUM 은 출력되는 SELECT 된 행마다 자동으로 순차적인 번호를 붙여주는 값)

 

 

--ex) --TOP-N 분석 : 회사에서 연봉이 가장 높은 사람 5명은? 

 

 

 

인라인 뷰로 먼저 정렬한 뒤 ROWNUM을 붙인다. 

인라인 뷰를 안 썼다면 ROWNUM이 붙여진 뒤 정렬을 하기 때문에 뒤죽박죽이 되었을 것

 

 

-- 급여 평균 3위안에드는 부서의 부서코드와 부서명 , 평균급여를 조회하세요 (인라인뷰를 활용한 TOP-N분석 사용 ) 

 

 

 

 

위 문제 인라인 뷰만 따로 

 

 

 

 

 

-- RANK() OVER(정렬기준) / DENSE_RANK() OVER(정렬기준)

--    보다 쉽게 순위 매기는 함수

-- RANK() OVER : 동일한 순위 이후의 등수를 동일한 인원 수 만큼 건너뛰고 순위 계산

--               EX) 공동 1위가 2명이면 다음 순위는 2위가 아니라 3위

-- DENSE_RANK() OVER : 동일한 순위 이후의 등수를 무조건 1씩 증가시키는

--              EX) 공동 1위가 2명이더라도 다음 순위는 2위

 

 

-- 직원 테이블에서 보너스 포함한 연봉이 높은 5명의 RANK() OVER

-- 사번, 이름, 부서명, 직급명, 입사일을 조회하세요

 

 

 

 

 

 

-- WITH 이름 AS (쿼리문)

-- 서브쿼리에 이름을 붙여주고 사용시 이름을 사용하게 됨

-- 인라인뷰로 사용될 서브쿼리에서 이용됨

-- 같은 서브쿼리가 여러번 사용될 경우 중복 작성을 줄일 수 있다.

 

 

 

 

 

WITH << 꼭 함수 처럼 생겼다 

 

 

 

-- 부서별 급여 합계가 전체 급여의 총 합의 20%보다 많은

-- 부서의 부서명과, 부서별 급여 합계 조회

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

/*@ 데이터 딕셔너리 (Data Dictionary)

-> 자원을 효율적으로 관리하기 위한 다양한 정보를 저장하는 시스템 테이블

-> 데이터 딕셔너리는 사용자가 테이블을 생성하거나 사용자를 변경하는 등의

작업을 할 때 데이터베이스 서버에 의해 자동으로 갱신되는 테이블

-> 사용자는 데이터 딕셔너리의 내용을 직접 수정하거나 삭제할 수 없음

-> 데이터 딕셔너리 안에는 중요한 정보가 많이 있기 때문에 사용자는 이를 활용하기 위해

데이터 딕셔너리 뷰를 사용하게 됨

   

   ※ 뷰(VIEW)는 뒤에 배우겠지만 미리 말씀 드리면 원본 테이블을 

   커스터마이징해서 보여주는 원본테이블의 가상의 TABLE 객체

 

 

@ 3개의 데이터 딕셔너리 뷰 (Data Dictionary View)

 

 

1. DBA_XXXX : 데이터 베이스 관리자만 접근이 가능한 객체 등의 정보 조회

   (DBA는 모든 접근이 가능하므로 결국 디비에 있는 모든 객체에 대한 조회가 됨) 

 

2. ALL_XXXX : 자신의 계정이 소유하거나 권한을 부여받은 객체 등에 관한 정보 조회

 

3. USER_XXXX : 자신의 계정이 소유한 객체 등에 관한 정보 조회

 

*/

 

 

 

 

 

SQL에서 정해진 예약어 !!!  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FROM절 연산에서 ROWNUM 이 먼저 정해지고  그다음 ORDER BY 가 수행되기 때문에 ROWNUM 순으로 정렬이 되어있지 않다 ( 4번 5번)

 

 

 

 

 

 

 

이렇게 수정해야 한다

FROM 에도  서브쿼리가 적용이 되는군요 !!

SELECT

리터럴 ( 큰따옴표 : 컬럼에 별칭 , 작은 따옴표 : 데이터로 사용가능)

DISTINCT

 

 

비교 연산자

연산자         설명

   =         같다

   >,<         크다/작다

   >=,=<         크거나 같다/작거나 같다

   <>,!=,^=      같지 않다

   BETWEEN AND      특정 범위에 포함되는지 비교

 

   LIKE / NOT LIKE      문자 패턴 비교

 

 

LIKE 연산자: 문자 패턴이 일치하는 값을 조회 할때 사용 

--컬럼명 LIKE '문자패턴'

--문자패턴  : '글자%'(글자로 시작하는 값)

--           '%글자%'(글자가 포함된 값)

--           '%글자'(글자로 끝나는 값)

 

'%' 와 '_' 와일드 카드 로 사용할수있다 

와일드 카드 : 아무거나 대체해서 사용할수 있는 것 

_: 한문자

%:모든것

 

 

--EMPLOYEE 테이블에서 _앞글자가 3자리인 이메일 주소를 가진 사원의

--사번, 이름, 이메일 주소를 조회 

--ESCAPE 

--LIKE '%[문자][실제문자로인식시킬문자]%' ESCAPE '[문자]

-- _ << 이 키워드를 문자로 인식시키기 위해서 임의로 특수문자 (#)을 지정했다. 

-- # 뒤에있는 키워드는 글자로 처리해주세요~ 라는 뜻 .

SELECT EMP_ID, EMP_NAME, EMAIL

FROM EMPLOYEE

WHERE EMAIL LIKE '___#_%' ESCAPE '#';

 

 

   IS NULL / IS NOT NULL   NULL 여부 비교

   IN / NOT IN      비교 값 목록에 포함/미포함 되는지 여부 비교

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

함수를 사용할수 있는 위치 : SELECT 절, WHERE 절, GROUP BY 절, HAVING절, ORDER BY 절 

 

INSTR =  문자열 속에서 문자/문자열 찾기        리턴 값 = 좌표 (숫자)

 

INSTR('문자열' | 컬럼명,'문자', 찾을 위치의 시작값 ,[빈도])

파라미터         설명

STRING         문자 타입 컬럼 또는 문자열

STR         찾으려는 문자(열)

POSITION      찾을 위치 시작 값 (기본값 1)

       (양수)  POSITION > 0 : STRING의 시작부터 끝 방향으로 찾음

       (음수)  POSITION < 0 : STRING의 끝부터 시작 방향으로 찾음

OCCURRENCE      검색된 STR의 순번(기본값 1), 음수 사용 불가

 

 

 

 

 

뒤에서 부터 'o' 를 찾는다. (마지막 파라미터 기본값이 1이므로 제일 처음 나오는 'o' 의 인덱스를 리턴 한다. )

INSTR(EMAIL, 'O', -1 , 1 ) 인셈 

 

뒤에서 찾긴 하지만 인덱스를 세는건 앞에서부터 센다.

 

 

 

 

 

 

 

앞에서 부터 두 번째로 나오는 'o' 의 인덱스를 리턴 한다.

 

 

 

 

 

 

LTRIM , RTRIM , TRIM

 

 

 

 

 

 

 

 

★ 

SUBSTR 

 

--SUBSTR: 컬럼이나 문자열에서 지정한 위치로 부터 지정한 문자열을 잘라서 리턴하는 함수  

리턴 값 : 문자열

--SUBSTR('문자열', 시작 위치, 자를 길이)

 

 

 

출력 결과

 

THEMONEY

 

THE

 

 

 

 

--LOWER/UPPER/INITCAP : 대소문자 변경해주는 함수

--LOWER(문자열| 컬럼) : 소문자로 변경해주는 함수

 

 

--CONCAT : 문자열 혹은 컬럼두개를 입력받아 하나로 합친후 리턴 

 

 

 

-- REPLACE : 컬럼혹은 문자열을 입력받아 변경하고자 하는 문자열을 변경 

 

 

 

 

 

-- 숫자 처리 함수 : ABS, MOD, ROUND, FLOOR, TRUNC , CEIL

-- ABS(숫자 | 숫자 로 된 컬럼명 ) :절대값 구하는 함수

 

-- MOD(숫자 | 숫자로된 컬럼명, 숫자 | 숫자로된컬럼명) : 두 수를 나누어서 나머지를 구하는 함수 

-- 첫 인자는 나누어지는 수, 두 번째 인자는 나눌 수

 

-- ROUND( 숫자 | 숫자로된 컬럼명, [위치]) : 반올림해서 리턴하는 함수

-- 소수점의 첫 번째 자리가  0번 인덱스다.   -1 은 정수 첫 번째 자리이다.

 

-- FLOOR(숫자 | 숫자로된 컬럼명)

--: 내림처리 하는 함수 (인자로 전달받은 숫자 혹은 컬럼의 소수점 자리수를 버리는 함수)

 

 

-- TRUNC(숫자 | 숫자로된 컬럼명 , [위치])

--: 내림처리 (절삭) 함수(인자로 전달받은 숫자 혹은 컬럼의 지정한 위치 이후의 소수점 자리수를 버리는 함수 )

 

 

-- CEIL (숫자 | 숫자로된 컬럼명): 올림처리함수(소수점 기준으로 올림처리) 

 

 

 

-- 날짜 함수 : SYSDATE, MONTHS_BETWEEN, ADD_MONTH

--            , NEXT_DAY, LAST_DAY, EXTRACT

 

-- SYSDATE : 시스템에 저장되어있는 날짜를 반환하는함수 

-- MONTHS_BETWEEN(날짜, 날짜) : 두날짜의 개월수 차이를 숫자로 리턴하는 함수 

-- ADD_MONTHS(날짜, 숫자): 날짜에 숫자만큼 개월수를 더해서 리턴 

 

-- NEXT_DAY(기준날짜, 요일(문자|숫자)) : 

-- 기준날짜에서 구하려는 요일에 가장가까운 날짜리턴

 

5 : 목요일

SYSDATE     NEXT_DAY

22/07/26      22/07/28

 

 

--LAST_DAY(날짜 ) : 해당월의 마지막 날짜를 구하여 리턴

 

LAST_DAY(SYSDATE)     LAST_DAY(200910)

22/07/31                        20/09/30

 

 

 

 

-- EXTRACT : 년, 월,일 정보를 추출하여 리턴 하는 함수 

-- EXTRACT(YEAR FROM 날짜) : 년도만 추출

-- EXTRACT(MONTH FROM 날짜) : 월만추출

-- EXTRACT(DAY FROM 날짜) : 날짜만 추출

 

 

 

출력 결과

 

 

 

 

--형변환 함수 

--TO_CHAR(날짜, [포멧]) : 날짜형데이터를 문자형 데이터로 변환

--TO_CHAR(숫자, [포멧]) : 숫자형데이터를 문자형 데이터로 변환 

 

 

--Format       예시         설명

--,(comma)   9,999      콤마 형식으로 변환

--.(period)   99.99      소수점 형식으로 변환

--0      09999      왼쪽에 0을 삽입

--$      $9999      $ 통화로 표시

--L      L9999      Local 통화로 표시(한국의 경우 \)

--9:자릿수를 나타내며 ,자릿수가 많지않아도 0으로채우지않는다

--0:자릿수를나타내며, 자릿수가 많지 않을 경우 0으로 채워준다.

--EEEE 과학 지수 표기법 

 

 

 

 

 

 

 

 

 

-- RR과 YY의 차이

-- RR은 두자리 년도를 네자리로 바꿀 때

-- 바꿀 년도가 50년 미만 2000년을 적용, 

-- 50년 이상이면 1900년 적용

 

-- 년도 바꿀 때(TO_DATE 사용시) Y를 적용하면

-- 현재 세기(2000년)가 적용된다.

-- R은 50년 이상이면 이전 세기(1900년),

-- 50년 미만이면 현재 세기(2000년) 적용

-- * TO_CHAR 를 이용하여 뽑아오는것은 동일

 

 

 

 출력 결과

 

YY

 

 

RR

 

 

 

-- 오늘 날짜에서 일만 출력  

 

 

 

 

 

 

 

 

--NULL처리 함수

--NVL(컬럼 명, 컬럼 값이 NULL일 때 바꿀 값)

 

--NVL2(컬럼 명, 바꿀 값1, 바꿀 값2)

-- 해당 컬럼이 값이 있으면 바꿀 값 1로 변경

-- 해당 컬럼이 값이 NULL일 경우 바꿀 값 2로 변경 

 

 

-- 선택함수 

-- DECODE(계산식 | 컬럼명, 조건값1, 선택값1, 조건값2, 선택값2...,[DEFAULT])

 

 

주민등록번호 8번째 자리로부터 1글자를 잘라내서 (뒷자리 첫 번째 자리) 1이면 남자, 2면 여자를 리턴

 

 

 

 

 

조건값 - 결과값   대응되는거 없는 맨 마지막 인자는 디폴트값이 된다

 

 

 

 

 

-- CASE문

/* CASE

        WHEN 조건식 THEN 결과값

        WHEN 조건식 THEN 결과값

    ELSE 결과값

    END

*/

 

 

 

 

 

 

 

 

--그룹함수 : SUM, AVG, MAX, MIN, COUNT         

 

-- SUM(숫자가 기록된 컬럼명 ): 합계를 구하여 리턴

-- AVG(숫자가 기록된 컬럼명): 평균을 구하여 리턴 

-- MIN(컬럼명): 컬럼에서 가장 작은 값 리턴 (자료형 ANY TYPE) 

-- MAX(컬럼명): 컬럼에서 가장 큰값 리턴 (자료형 ANY TYPE) 

 

 

--COUNT(* |컬럼명 ): 행의 갯수를 리턴

--COUNT([DISTINCT] 컬러명):중복을 제거한 행 갯수 리턴 

--COUNT(*) :NULL 을 포함한 전체 갯수 리턴 

--COUNT(컬럼명): NULL 을 제외한 실제값이 기록된 행의 갯수 리턴

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

03_ ORDER BY , HAVING

 

/*ORDER BY  절: SELECT 한 컬럼을 가지고 정렬을 할때 사용함

ORDER BY 컬럼명| 컬럼별칭 | 컬럼나열 순번 [ASC] | DESC 

ORDER BY 컬럼명 정렬방식, 컬럼명 정렬방식, 컬럼명 정렬방식.....

첫번째 기준으로 하는 컬럼에 대해서 정렬하고, 같은 값들에대해 두번째 기준으로 하는 컬럼에 대해 다시 정렬, 

SELECT 구문 맨마지막에 위치하고, 실행순서도 맨 마지막에 실행됨.*/

 

 

/*

 5 : SELECT 컬럼명 AS 별칭, 계산식, 함수식..

 1 : FROM 참조할 테이블

 2 : WHERE 컬럼명 | 함수식 비교연산자 비교값 (조건)

 3 : GROUP BY 그룹으로 묶을 컬럼명

 4 : HAVING 그룹함수식 비교연산자 비교값 ( 그룹핑된 대상에 대한 조건 )

 6 : ORDER BY 컬럼명| 컬럼별칭 | 컬럼나열 순번 [ASC] | DESC  |[NULLS FIRST | LAST]

 */

 

 

 

--GROUP BY 절 : 같은 값들이 여러개 기록된 컬럼을 가지고 하나의 그룹으로 묶음 

--GROUP BY 컬럼명 | 함수식 ....

--GROUP BY 에 명시된 값 이 SELECT 절에 명시되어있어야한다. 

 

 

--HAVING 절 : 그룹 함수로 구해올 그룹에 대해 조건을 설정할때 사용

--HAVING 컬럼명 | 함수식 | 비교연산자 |비교값

 

 

 

-- EMPLOYEE테이블에서  부서별 그룹의 급여 합계중 9백만원을 초과하는 부서코드와 급여합계를 조회 

 

 

 

 

GROUP BY 만 했을 때

 

 

 

 

 

HAVING 으로 GROUP 에 대한 조건 설정을 했을 때

 

 

 

 

 

--집계함수 

 

--ROLLUP 함수 : 그룹별로 중간 집계 처리를 하는 함수 

--CUBE 함수 : 그룹별 산출한 결과를 집계하는 함수이다.  

--GROUP BY 절에서만 사용 

-- 그룹별로 묶여진 값에 중간집계와 총집계를 구할때 사용

-- 그룹별로 계산된 값에대한 총집계가 자동으로 추가된다. 

-- 인자로 전달한 그룹중에서 가장 먼저 지정한 그룹(컬럼)별 합계와 총합계 

 

 

 

 

 --GROUPING  함수 : ROLLUP이나 CUBE 에 의한 산출물이 

-- 인자로 전달받은 컬럼집합의 산출물이면 0

-- 아니면 1을 반환하는 함수

 

 

 

 

 

 

 

 

 

 

 

--@SET SPERATION(집합연산)

-- 두개이상의 테이블에서 조인을 사용하지않고 연관된 데이터를 조회하는 방법

-- 여러개의 질의 결과를 연결하여 하나로 결합하는 방식 

-- 각테이블의 조회결과를 하나의 테이블에 합쳐서 반환함 

 

-- 조건 : SELECT 절의 "컬럼수가 동일"해야함 ★★★★★★

--       SELECT 절의 동일 위치에 존재하는 "컬럼의 데이터 타입이 상호호환"가능해야함.

 

-- UNION, UNION ALL, INTERSECT, MINUS

 

-- UNION : 여러개의 쿼리결과를 하나로 합치는 연산자이다. 

--         중복된 영역의 제외하여 하나로 합친다.

 

 

-- UNION ALL : 여러개의 쿼리결과를 하나로 합치는 연산자

            -- UNION 과의 차이점은 중복영역을 모두 포함시킨다.

 

 

--INTERSECT : 여러개의 SELECT 한 결과에서 공통된 부분만 결과로 추출

-- 수학에서 교집합과 비슷 

 

 

--MINUS : 선행 SELECT 결과에서 다음 SELECT 결과와 겹치는 부분을 제외한 나머지 부분만추출

-- 수학에서 차집합과 비슷 하다

'더존 노션 필기 옮기기 > SQL' 카테고리의 다른 글

MySQL 튜토리얼  (1) 2022.12.07
Oracle EMPLOYEE DDL DML  (0) 2022.11.22
SQL 3일차 오라클 DB3 조인, 서브쿼리  (0) 2022.08.30
SQL 1일차 오라클DB 설치 및 설정  (0) 2022.08.30

1. https://www.oracle.com/database/technologies/xe-prior-release-downloads.html

2. Products – Oracle Database – Oracle Database 11g Express Edition 다운로드 

3. 설치 및 관리자 계정 암호 설정 

4. DB 접속확인 및 SQLplus 실행 

5. 관리자 계정 로그인 

 

안되면 ORACLE_HOME , PATH 환경 변수 설정

 

관리자 계정 : SYSTEM

비밀번호 : 다운로드 할 때 설정한 비밀번호 ( 강의실에는 ORACLE로 설정해 둠 )

 

 

 

SQL Developer 설치

1. www.oracle.com 접속 

2. Products – Oracle Database – SQL Developer 다운로드 

3. 압축 해제 후 바로 실행 

 

 

- CREATE USER GREEDY IDENTIFIED BY GREEDY;   -- 아이디 / 비밀번호

- GRANT RESOURCE, CONNECT TO GREEDY;   

 

- CREATE USER EMPLOYEE IDENTIFIED BY EMPLOYEE;

- GRANT RESOURCE, CONNECT TO EMPLOYEE;

 

 

EMPLOYEE.sql

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

DROP TABLE EMPLOYEE;

DROP TABLE DEPARTMENT;

DROP TABLE JOB;

DROP TABLE LOCATION;

DROP TABLE NATIONAL;

DROP TABLE SAL_GRADE;

 

--------------------------------------------------------

--  DDL for Table DEPARTMENT

--------------------------------------------------------

 

  CREATE TABLE "EMPLOYEE"."DEPARTMENT" 

   ( "DEPT_ID" CHAR(2 BYTE), 

"DEPT_TITLE" VARCHAR2(35 BYTE), 

"LOCATION_ID" CHAR(2 BYTE)

   ) SEGMENT CREATION IMMEDIATE 

  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING

  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  TABLESPACE "SYSTEM" ;

 

   COMMENT ON COLUMN "EMPLOYEE"."DEPARTMENT"."DEPT_ID" IS '부서코드';

   COMMENT ON COLUMN "EMPLOYEE"."DEPARTMENT"."DEPT_TITLE" IS '부서명';

   COMMENT ON COLUMN "EMPLOYEE"."DEPARTMENT"."LOCATION_ID" IS '지역코드';

   COMMENT ON TABLE "EMPLOYEE"."DEPARTMENT"  IS '부서';

REM INSERTING into EMPLOYEE.DEPARTMENT

SET DEFINE OFF;

Insert into EMPLOYEE.DEPARTMENT (DEPT_ID,DEPT_TITLE,LOCATION_ID) values ('D1','인사관리부','L1');

Insert into EMPLOYEE.DEPARTMENT (DEPT_ID,DEPT_TITLE,LOCATION_ID) values ('D2','회계관리부','L1');

Insert into EMPLOYEE.DEPARTMENT (DEPT_ID,DEPT_TITLE,LOCATION_ID) values ('D3','마케팅부','L1');

Insert into EMPLOYEE.DEPARTMENT (DEPT_ID,DEPT_TITLE,LOCATION_ID) values ('D4','국내영업부','L1');

Insert into EMPLOYEE.DEPARTMENT (DEPT_ID,DEPT_TITLE,LOCATION_ID) values ('D5','해외영업1부','L2');

Insert into EMPLOYEE.DEPARTMENT (DEPT_ID,DEPT_TITLE,LOCATION_ID) values ('D6','해외영업2부','L3');

Insert into EMPLOYEE.DEPARTMENT (DEPT_ID,DEPT_TITLE,LOCATION_ID) values ('D7','해외영업3부','L4');

Insert into EMPLOYEE.DEPARTMENT (DEPT_ID,DEPT_TITLE,LOCATION_ID) values ('D8','기술지원부','L5');

Insert into EMPLOYEE.DEPARTMENT (DEPT_ID,DEPT_TITLE,LOCATION_ID) values ('D9','총무부','L1');

--------------------------------------------------------

--  DDL for Index 엔터티1_PK2

--------------------------------------------------------

 

  CREATE UNIQUE INDEX "EMPLOYEE"."엔터티1_PK2" ON "EMPLOYEE"."DEPARTMENT" ("DEPT_ID") 

  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 

  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  TABLESPACE "SYSTEM" ;

--------------------------------------------------------

--  Constraints for Table DEPARTMENT

--------------------------------------------------------

 

  ALTER TABLE "EMPLOYEE"."DEPARTMENT" ADD CONSTRAINT "DEPARTMENT_PK" PRIMARY KEY ("DEPT_ID")

  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 

  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  TABLESPACE "SYSTEM"  ENABLE;

  ALTER TABLE "EMPLOYEE"."DEPARTMENT" MODIFY ("LOCATION_ID" NOT NULL ENABLE);

  ALTER TABLE "EMPLOYEE"."DEPARTMENT" MODIFY ("DEPT_ID" NOT NULL ENABLE);

 

--------------------------------------------------------

--  DDL for Table EMPLOYEE

--------------------------------------------------------

 

  CREATE TABLE "EMPLOYEE"."EMPLOYEE" 

   ( "EMP_ID" VARCHAR2(3 BYTE), 

"EMP_NAME" VARCHAR2(20 BYTE), 

"EMP_NO" CHAR(14 BYTE), 

"EMAIL" VARCHAR2(25 BYTE), 

"PHONE" VARCHAR2(12 BYTE), 

"DEPT_CODE" CHAR(2 BYTE), 

"JOB_CODE" CHAR(2 BYTE), 

"SAL_LEVEL" CHAR(2 BYTE), 

"SALARY" NUMBER, 

"BONUS" NUMBER, 

"MANAGER_ID" VARCHAR2(3 BYTE), 

"HIRE_DATE" DATE, 

"ENT_DATE" DATE, 

"ENT_YN" CHAR(1 BYTE) DEFAULT 'N'

   ) SEGMENT CREATION IMMEDIATE 

  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING

  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  TABLESPACE "SYSTEM" ;

 

   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."EMP_ID" IS '사원번호';

   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."EMP_NAME" IS '직원명';

   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."EMP_NO" IS '주민등록번호';

   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."EMAIL" IS '이메일';

   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."PHONE" IS '전화번호';

   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."DEPT_CODE" IS '부서코드';

   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."JOB_CODE" IS '직급코드';

   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."SAL_LEVEL" IS '급여등급';

   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."SALARY" IS '급여';

   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."BONUS" IS '보너스율';

   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."MANAGER_ID" IS '관리자사번';

   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."HIRE_DATE" IS '입사일';

   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."ENT_DATE" IS '퇴사일';

   COMMENT ON COLUMN "EMPLOYEE"."EMPLOYEE"."ENT_YN" IS '재직여부';

   COMMENT ON TABLE "EMPLOYEE"."EMPLOYEE"  IS '사원';

REM INSERTING into EMPLOYEE.EMPLOYEE

SET DEFINE OFF;

Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('200','선동일','621235-1985634','sun_di@uni.or.kr','01099546325','D9','J1','S1',8000000,0.3,null,to_date('90/02/06','RR/MM/DD'),null,'N');

Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('201','송종기','631156-1548654','song_jk@uni.or.kr','01045686656','D9','J2','S1',6000000,null,'200',to_date('01/09/01','RR/MM/DD'),null,'N');

Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('202','노옹철','861015-1356452','no_hc@uni.or.kr','01066656263','D9','J2','S4',3700000,null,'201',to_date('01/01/01','RR/MM/DD'),null,'N');

Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('203','송은희','631010-2653546','song_eh@uni.or.kr','01077607879','D6','J4','S5',2800000,null,'204',to_date('96/05/03','RR/MM/DD'),null,'N');

Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('204','유재식','660508-1342154','yoo_js@uni.or.kr','01099999129','D6','J3','S4',3400000,0.2,'200',to_date('00/12/29','RR/MM/DD'),null,'N');

Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('205','정중하','770102-1357951','jung_jh@uni.or.kr','01036654875','D6','J3','S4',3900000,null,'204',to_date('99/09/09','RR/MM/DD'),null,'N');

Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('206','박나라','630709-2054321','pack_nr@uni.or.kr','01096935222','D5','J7','S6',1800000,null,'207',to_date('08/04/02','RR/MM/DD'),null,'N');

Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('207','하이유','690402-2040612','ha_iy@uni.or.kr','01036654488','D5','J5','S5',2200000,0.1,'200',to_date('94/07/07','RR/MM/DD'),null,'N');

Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('208','김해술','870927-1313564','kim_hs@uni.or.kr','01078634444','D5','J5','S5',2500000,null,'207',to_date('04/04/30','RR/MM/DD'),null,'N');

Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('209','심봉선','750206-1325546','sim_bs@uni.or.kr','0113654485','D5','J3','S4',3500000,0.15,'207',to_date('11/11/11','RR/MM/DD'),null,'N');

Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('210','윤은해','650505-2356985','youn_eh@uni.or.kr','0179964233','D5','J7','S5',2000000,null,'207',to_date('01/02/03','RR/MM/DD'),null,'N');

Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('211','전형돈','830807-1121321','jun_hd@uni.or.kr','01044432222','D8','J6','S5',2000000,null,'200',to_date('12/12/12','RR/MM/DD'),null,'N');

Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('212','장쯔위','780923-2234542','jang_zw@uni.or.kr','01066682224','D8','J6','S5',2550000,0.25,'211',to_date('15/06/17','RR/MM/DD'),null,'N');

Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('213','하동운','621111-1785463','ha_dh@uni.or.kr','01158456632',null,'J6','S5',2320000,0.1,null,to_date('99/12/31','RR/MM/DD'),null,'N');

Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('214','방명수','856795-1313513','bang_ms@uni.or.kr','01074127545','D1','J7','S6',1380000,null,'200',to_date('10/04/04','RR/MM/DD'),null,'N');

Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('215','대북혼','881130-1050911','dae_bh@uni.or.kr','01088808584','D5','J5','S4',3760000,null,null,to_date('17/06/19','RR/MM/DD'),null,'N');

Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('216','차태연','770808-1364897','cha_ty@uni.or.kr','01064643212','D1','J6','S5',2780000,0.2,'214',to_date('13/03/01','RR/MM/DD'),null,'N');

Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('217','전지연','770808-2665412','jun_jy@uni.or.kr','01033624442','D1','J6','S4',3660000,0.3,'214',to_date('07/03/20','RR/MM/DD'),null,'N');

Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('218','이오리','870427-2232123','loo_or@uni.or.kr','01022306545',null,'J7','S5',2890000,null,null,to_date('16/11/28','RR/MM/DD'),null,'N');

Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('219','임시환','660712-1212123','im_sw@uni.or.kr',null,'D2','J4','S6',1550000,null,null,to_date('99/09/09','RR/MM/DD'),null,'N');

Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('220','이중석','770823-1113111','lee_js@uni.or.kr',null,'D2','J4','S5',2490000,null,null,to_date('14/09/18','RR/MM/DD'),null,'N');

Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('221','유하진','800808-1123341','yoo_hj@uni.or.kr',null,'D2','J4','S5',2480000,null,null,to_date('94/01/20','RR/MM/DD'),null,'N');

Insert into EMPLOYEE.EMPLOYEE (EMP_ID,EMP_NAME,EMP_NO,EMAIL,PHONE,DEPT_CODE,JOB_CODE,SAL_LEVEL,SALARY,BONUS,MANAGER_ID,HIRE_DATE,ENT_DATE,ENT_YN) values ('222','이태림','760918-2854697','lee_tr@uni.or.kr','01033000002','D8','J6','S5',2436240,0.35,'100',to_date('97/09/12','RR/MM/DD'),to_date('17/09/12','RR/MM/DD'),'Y');

--------------------------------------------------------

--  DDL for Index 엔터티1_PK

--------------------------------------------------------

 

  CREATE UNIQUE INDEX "EMPLOYEE"."엔터티1_PK" ON "EMPLOYEE"."EMPLOYEE" ("EMP_ID") 

  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 

  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  TABLESPACE "SYSTEM" ;

--------------------------------------------------------

--  Constraints for Table EMPLOYEE

--------------------------------------------------------

 

  ALTER TABLE "EMPLOYEE"."EMPLOYEE" ADD CONSTRAINT "EMPLOYEE_PK" PRIMARY KEY ("EMP_ID")

  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 

  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  TABLESPACE "SYSTEM"  ENABLE;

  ALTER TABLE "EMPLOYEE"."EMPLOYEE" MODIFY ("SAL_LEVEL" NOT NULL ENABLE);

  ALTER TABLE "EMPLOYEE"."EMPLOYEE" MODIFY ("JOB_CODE" NOT NULL ENABLE);

  ALTER TABLE "EMPLOYEE"."EMPLOYEE" MODIFY ("EMP_NO" NOT NULL ENABLE);

  ALTER TABLE "EMPLOYEE"."EMPLOYEE" MODIFY ("EMP_NAME" NOT NULL ENABLE);

  ALTER TABLE "EMPLOYEE"."EMPLOYEE" MODIFY ("EMP_ID" NOT NULL ENABLE);

 

--------------------------------------------------------

--  DDL for Table JOB

--------------------------------------------------------

 

  CREATE TABLE "EMPLOYEE"."JOB" 

   ( "JOB_CODE" CHAR(2 BYTE), 

"JOB_NAME" VARCHAR2(35 BYTE)

   ) SEGMENT CREATION IMMEDIATE 

  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING

  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  TABLESPACE "SYSTEM" ;

 

   COMMENT ON COLUMN "EMPLOYEE"."JOB"."JOB_CODE" IS '직급코드';

   COMMENT ON COLUMN "EMPLOYEE"."JOB"."JOB_NAME" IS '직급명';

   COMMENT ON TABLE "EMPLOYEE"."JOB"  IS '직급';

REM INSERTING into EMPLOYEE.JOB

SET DEFINE OFF;

Insert into EMPLOYEE.JOB (JOB_CODE,JOB_NAME) values ('J1','대표');

Insert into EMPLOYEE.JOB (JOB_CODE,JOB_NAME) values ('J2','부사장');

Insert into EMPLOYEE.JOB (JOB_CODE,JOB_NAME) values ('J3','부장');

Insert into EMPLOYEE.JOB (JOB_CODE,JOB_NAME) values ('J4','차장');

Insert into EMPLOYEE.JOB (JOB_CODE,JOB_NAME) values ('J5','과장');

Insert into EMPLOYEE.JOB (JOB_CODE,JOB_NAME) values ('J6','대리');

Insert into EMPLOYEE.JOB (JOB_CODE,JOB_NAME) values ('J7','사원');

--------------------------------------------------------

--  DDL for Index 엔터티1_PK1

--------------------------------------------------------

 

  CREATE UNIQUE INDEX "EMPLOYEE"."엔터티1_PK1" ON "EMPLOYEE"."JOB" ("JOB_CODE") 

  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 

  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  TABLESPACE "SYSTEM" ;

--------------------------------------------------------

--  Constraints for Table JOB

--------------------------------------------------------

 

  ALTER TABLE "EMPLOYEE"."JOB" ADD CONSTRAINT "JOB_PK" PRIMARY KEY ("JOB_CODE")

  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 

  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  TABLESPACE "SYSTEM"  ENABLE;

  ALTER TABLE "EMPLOYEE"."JOB" MODIFY ("JOB_CODE" NOT NULL ENABLE);

 

--------------------------------------------------------

--  DDL for Table LOCATION

--------------------------------------------------------

 

  CREATE TABLE "EMPLOYEE"."LOCATION" 

   ( "LOCAL_CODE" CHAR(2 BYTE), 

"NATIONAL_CODE" CHAR(2 BYTE), 

"LOCAL_NAME" VARCHAR2(40 BYTE)

   ) SEGMENT CREATION IMMEDIATE 

  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING

  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  TABLESPACE "SYSTEM" ;

 

   COMMENT ON COLUMN "EMPLOYEE"."LOCATION"."LOCAL_CODE" IS '지역코드';

   COMMENT ON COLUMN "EMPLOYEE"."LOCATION"."NATIONAL_CODE" IS '국가코드';

   COMMENT ON COLUMN "EMPLOYEE"."LOCATION"."LOCAL_NAME" IS '지역명';

   COMMENT ON TABLE "EMPLOYEE"."LOCATION"  IS '지역';

REM INSERTING into EMPLOYEE.LOCATION

SET DEFINE OFF;

Insert into EMPLOYEE.LOCATION (LOCAL_CODE,NATIONAL_CODE,LOCAL_NAME) values ('L1','KO','ASIA1');

Insert into EMPLOYEE.LOCATION (LOCAL_CODE,NATIONAL_CODE,LOCAL_NAME) values ('L2','JP','ASIA2');

Insert into EMPLOYEE.LOCATION (LOCAL_CODE,NATIONAL_CODE,LOCAL_NAME) values ('L3','CH','ASIA3');

Insert into EMPLOYEE.LOCATION (LOCAL_CODE,NATIONAL_CODE,LOCAL_NAME) values ('L4','US','AMERICA');

Insert into EMPLOYEE.LOCATION (LOCAL_CODE,NATIONAL_CODE,LOCAL_NAME) values ('L5','RU','EU');

--------------------------------------------------------

--  DDL for Index 엔터티1_PK3

--------------------------------------------------------

 

  CREATE UNIQUE INDEX "EMPLOYEE"."엔터티1_PK3" ON "EMPLOYEE"."LOCATION" ("LOCAL_CODE") 

  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 

  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  TABLESPACE "SYSTEM" ;

--------------------------------------------------------

--  Constraints for Table LOCATION

--------------------------------------------------------

 

  ALTER TABLE "EMPLOYEE"."LOCATION" ADD CONSTRAINT "LOCATION_PK" PRIMARY KEY ("LOCAL_CODE")

  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 

  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  TABLESPACE "SYSTEM"  ENABLE;

  ALTER TABLE "EMPLOYEE"."LOCATION" MODIFY ("NATIONAL_CODE" NOT NULL ENABLE);

  ALTER TABLE "EMPLOYEE"."LOCATION" MODIFY ("LOCAL_CODE" NOT NULL ENABLE);

 

--------------------------------------------------------

--  DDL for Table NATIONAL

--------------------------------------------------------

 

  CREATE TABLE "EMPLOYEE"."NATIONAL" 

   ( "NATIONAL_CODE" CHAR(2 BYTE), 

"NATIONAL_NAME" VARCHAR2(35 BYTE)

   ) SEGMENT CREATION IMMEDIATE 

  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING

  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  TABLESPACE "SYSTEM" ;

 

   COMMENT ON COLUMN "EMPLOYEE"."NATIONAL"."NATIONAL_CODE" IS '국가코드';

   COMMENT ON COLUMN "EMPLOYEE"."NATIONAL"."NATIONAL_NAME" IS '국가명';

   COMMENT ON TABLE "EMPLOYEE"."NATIONAL"  IS '국가';

REM INSERTING into EMPLOYEE.NATIONAL

SET DEFINE OFF;

Insert into EMPLOYEE.NATIONAL (NATIONAL_CODE,NATIONAL_NAME) values ('KO','한국');

Insert into EMPLOYEE.NATIONAL (NATIONAL_CODE,NATIONAL_NAME) values ('JP','일본');

Insert into EMPLOYEE.NATIONAL (NATIONAL_CODE,NATIONAL_NAME) values ('CH','중국');

Insert into EMPLOYEE.NATIONAL (NATIONAL_CODE,NATIONAL_NAME) values ('US','미국');

Insert into EMPLOYEE.NATIONAL (NATIONAL_CODE,NATIONAL_NAME) values ('RU','러시아');

--------------------------------------------------------

--  DDL for Index 엔터티1_PK4

--------------------------------------------------------

 

  CREATE UNIQUE INDEX "EMPLOYEE"."엔터티1_PK4" ON "EMPLOYEE"."NATIONAL" ("NATIONAL_CODE") 

  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 

  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  TABLESPACE "SYSTEM" ;

--------------------------------------------------------

--  Constraints for Table NATIONAL

--------------------------------------------------------

 

  ALTER TABLE "EMPLOYEE"."NATIONAL" ADD CONSTRAINT "NATIONAL_PK" PRIMARY KEY ("NATIONAL_CODE")

  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 

  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  TABLESPACE "SYSTEM"  ENABLE;

  ALTER TABLE "EMPLOYEE"."NATIONAL" MODIFY ("NATIONAL_CODE" NOT NULL ENABLE);

 

--------------------------------------------------------

--  DDL for Table SAL_GRADE

--------------------------------------------------------

 

  CREATE TABLE "EMPLOYEE"."SAL_GRADE" 

   ( "SAL_LEVEL" CHAR(2 BYTE), 

"MIN_SAL" NUMBER, 

"MAX_SAL" NUMBER

   ) SEGMENT CREATION IMMEDIATE 

  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING

  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  TABLESPACE "SYSTEM" ;

 

   COMMENT ON COLUMN "EMPLOYEE"."SAL_GRADE"."SAL_LEVEL" IS '급여등급';

   COMMENT ON COLUMN "EMPLOYEE"."SAL_GRADE"."MIN_SAL" IS '최소급여';

   COMMENT ON COLUMN "EMPLOYEE"."SAL_GRADE"."MAX_SAL" IS '최대급여';

   COMMENT ON TABLE "EMPLOYEE"."SAL_GRADE"  IS '급여등급';

REM INSERTING into EMPLOYEE.SAL_GRADE

SET DEFINE OFF;

Insert into EMPLOYEE.SAL_GRADE (SAL_LEVEL,MIN_SAL,MAX_SAL) values ('S1',6000000,10000000);

Insert into EMPLOYEE.SAL_GRADE (SAL_LEVEL,MIN_SAL,MAX_SAL) values ('S2',5000000,5999999);

Insert into EMPLOYEE.SAL_GRADE (SAL_LEVEL,MIN_SAL,MAX_SAL) values ('S3',4000000,4999999);

Insert into EMPLOYEE.SAL_GRADE (SAL_LEVEL,MIN_SAL,MAX_SAL) values ('S4',3000000,3999999);

Insert into EMPLOYEE.SAL_GRADE (SAL_LEVEL,MIN_SAL,MAX_SAL) values ('S5',2000000,2999999);

Insert into EMPLOYEE.SAL_GRADE (SAL_LEVEL,MIN_SAL,MAX_SAL) values ('S6',1000000,1999999);

--------------------------------------------------------

--  DDL for Index 엔터티2_PK

--------------------------------------------------------

 

  CREATE UNIQUE INDEX "EMPLOYEE"."엔터티2_PK" ON "EMPLOYEE"."SAL_GRADE" ("SAL_LEVEL") 

  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 

  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  TABLESPACE "SYSTEM" ;

--------------------------------------------------------

--  Constraints for Table SAL_GRADE

--------------------------------------------------------

 

  ALTER TABLE "EMPLOYEE"."SAL_GRADE" ADD CONSTRAINT "엔터티2_PK" PRIMARY KEY ("SAL_LEVEL")

  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 

  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)

  TABLESPACE "SYSTEM"  ENABLE;

  ALTER TABLE "EMPLOYEE"."SAL_GRADE" MODIFY ("SAL_LEVEL" NOT NULL ENABLE);

 

 

COMMIT;

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

+ Recent posts