https://www.oracle.com/database/technologies/xe-prior-release-downloads.html
/************************** 만약 테이블이 있을 경우 삭제 *****************************/
DROP TABLE 직원연락처;
DROP TABLE 직원주소;
DROP TABLE 직원;
DROP TABLE 부서;
/*************************** 테이블 생성 *********************************/
--1. 직원
-- 컬럼 : 직원ID , 패스워드 , 이름 , 성별 , 나이 , 입사일시 , 주민등록번호 , 연봉 , 부서ID(FK)
CREATE TABLE 직원 (
직원ID VARCHAR2(10) ,
패스워드 VARCHAR2(20) NOT NULL ,
이름 VARCHAR2(30) ,
성별 CHAR(3) ,
나이 NUMBER(3) ,
입사일시 DATE ,
주민등록번호 VARCHAR2(15) NOT NULL ,
연봉 NUMBER ,
부서ID VARCHAR2(5)
);
--2. 직원연락처
-- 컬럼 : 직원ID , 구분코드 , 연락처
CREATE TABLE 직원연락처 (
직원ID VARCHAR2(10) ,
구분코드 VARCHAR2(10) ,
연락처 VARCHAR2(15) NOT NULL
) ;
--3. 직원주소
-- 컬럼 : 직원ID , 구분코드 , 주소
CREATE TABLE 직원주소 (
직원ID VARCHAR2(10) ,
구분코드 VARCHAR2(10) ,
주소 VARCHAR2(100) NOT NULL
) ;
--4. 부서
-- 컬럼 : 부서ID , 부서명
CREATE TABLE 부서 (
부서ID VARCHAR2(5) NOT NULL ,
부서명 VARCHAR2(50) NOT NULL ,
근무지 VARCHAR2(100) NOT NULL
);
/*************************** 테이블 생성 종료*********************************/
/****************** 제약 조건 (PRIMARY KEY , 식별자 설정하기) *****************/
--1. 직원 테이블 식별자 설정 (직원ID)
ALTER TABLE 직원 ADD CONSTRAINT PK_직원
PRIMARY KEY(직원ID) ;
--2. 직원연락처 테이블 식별자 설정 (직원ID , 구분코드)
ALTER TABLE 직원연락처 ADD CONSTRAINT PK_직원연락처
PRIMARY KEY(직원ID , 구분코드) ;
--3. 직원주소 테이블 식별자 설정 (직원ID , 구분코드)
ALTER TABLE 직원주소 ADD CONSTRAINT PK_직원주소
PRIMARY KEY(직원ID, 구분코드) ;
--4. 부서 테이블 식별자 설정 (부서ID)
ALTER TABLE 부서 ADD CONSTRAINT PK_부서
PRIMARY KEY(부서ID) ;
--5. 학생인적사항 테이블 식별자 설정 (학생ID)
ALTER TABLE 학생인적사항 ADD CONSTRAINT PK_학생인적사항
PRIMARY KEY(학생ID) ;
/****************** 제약 조건 설정 완료 (PRIMARY KEY , 식별자 설정하기) *****************/
/******************** 제약 조건 (FOREIGN KEY , 외래키 설정하기) *********************/
--1. 직원연락처엔터티의 [직원ID] 속성은 직원엔터티의 [직원ID]를 참조한다.
ALTER TABLE 직원연락처 ADD CONSTRAINT FK_직원연락처_REF_직원
FOREIGN KEY (직원ID) REFERENCES 직원(직원ID) ;
--2. 직원주소엔터티의 [직원ID] 속성은 직원엔터티의 [직원ID]를 참조한다.
ALTER TABLE 직원주소 ADD CONSTRAINT FK_직원주소_REF_직원
FOREIGN KEY (직원ID) REFERENCES 직원(직원ID) ;
--3. 직원엔터티의 [부서ID] 속성은 부서엔터티의 [부서ID] 를 참조한다.
ALTER TABLE 직원 ADD CONSTRAINT FK_직원_REF_부서
FOREIGN KEY (부서ID) REFERENCES 부서(부서ID) ;
/******************** 제약 조건 설정 완료 (FOREIGN KEY , 외래키 설정하기) *********************/
/******************* 제약 조건 (CHECK 설정하기) *********************/
ALTER TABLE 직원 ADD CONSTRAINT 직원_CHECK_성별 CHECK ( 성별 IN ( '남' , '여') );
/*************** 제약 조건 설정 완료 (CHECK 설정하기)****************/
/************************** 데이터 등록하기 **********************************/
--1. 부서 테이블 6건 데이터 등록
INSERT INTO 부서 ( 부서ID , 부서명 , 근무지 ) VALUES ( 'D001' , '인사부' , '서울');
INSERT INTO 부서 ( 부서ID , 부서명 , 근무지 ) VALUES ( 'D002' , '급여부' , '서울');
INSERT INTO 부서 ( 부서ID , 부서명 , 근무지 ) VALUES ( 'D003' , '전략기획부' , '경기');
INSERT INTO 부서 ( 부서ID , 부서명 , 근무지 ) VALUES ( 'D004' , 'SI사업부' , '경기');
INSERT INTO 부서 ( 부서ID , 부서명 , 근무지) VALUES ( 'D005' , '사업부' , '제주');
INSERT INTO 부서 ( 부서ID , 부서명 , 근무지) VALUES ( 'D006' , '인프라서비스부' , '서울');
COMMIT;
--2. 직원 테이블 10건 데이터 등록
INSERT INTO 직원 ( 직원ID , 패스워드 , 이름 , 성별 , 나이 , 입사일시 , 주민등록번호 , 연봉 , 부서ID )
VALUES ( 'A0001' , 12345 , '김철수' , '남' , 25 , DATE '2022-12-06' - 260 , '991212-1566123' , 2800 , 'D001' ) ;
INSERT INTO 직원 ( 직원ID , 패스워드 , 이름 , 성별 , 나이 , 입사일시 , 주민등록번호 , 연봉 , 부서ID )
VALUES ( 'A0002' , 'hello123!' , '강홍수' , '남' , 28 , DATE '2022-12-06' - 450 , '950223-1562867' , 3000 , 'D002' ) ;
INSERT INTO 직원 ( 직원ID , 패스워드 , 이름 , 성별 , 나이 , 입사일시 , 주민등록번호 , 연봉 , 부서ID )
VALUES ( 'A0003' , 'nono132' , '이현정' , '여' , null , DATE '2022-12-06' - 30 , '000112-4566123' , 2600 , 'D003' ) ;
INSERT INTO 직원 ( 직원ID , 패스워드 , 이름 , 성별 , 나이 , 입사일시 , 주민등록번호 , 연봉 , 부서ID )
VALUES ( 'A0004' , '123123!!' , '김선미' , '여' , null , DATE '2022-12-06' - 1000 , '930722-2766443' , 4500 , 'D004' ) ;
INSERT INTO 직원 ( 직원ID , 패스워드 , 이름 , 성별 , 나이 , 입사일시 , 주민등록번호 , 연봉 )
VALUES ( 'A0005' , 'test123' , '문현철' , '남' , 34 , NULL , '891231-1786155' , 5000 ) ;
INSERT INTO 직원 ( 직원ID , 패스워드 , 이름 , 성별 , 나이 , 입사일시 , 주민등록번호 , 연봉 , 부서ID )
VALUES ( 'A0006' , '774433' , '송대주' , '남' , 44 , DATE '2022-12-06' - 2700 , '790903-1566127' , 7500 , 'D001' ) ;
INSERT INTO 직원 ( 직원ID , 패스워드 , 이름 , 성별 , 나이 , 입사일시 , 주민등록번호 , 연봉 , 부서ID )
VALUES ( 'A0007' , 'pwd123' , '메이슨' , '남' , 40 , DATE '2022-12-06' - 2300 , '830629-1676551' , 6200 , 'D002' ) ;
INSERT INTO 직원 ( 직원ID , 패스워드 , 이름 , 성별 , 나이 , 입사일시 , 주민등록번호 , 연봉 , 부서ID )
VALUES ( 'A0008' , 'anjffhgkwl123' , '송진아' , '여' , 47 , DATE '2022-12-06' - 2700 , '761212-2508143' , 7500 , 'D003' ) ;
INSERT INTO 직원 ( 직원ID , 패스워드 , 이름 , 성별 , 나이 , 입사일시 , 주민등록번호 , 연봉 , 부서ID )
VALUES ( 'A0009' , 'test123' , '이서연' , '여' , 50 , DATE '2022-12-06' - 3300 , '730317-259616' , 9000 , 'D004' ) ;
INSERT INTO 직원 ( 직원ID , 패스워드 , 이름 , 성별 , 나이 , 입사일시 , 주민등록번호 , 연봉 , 부서ID )
VALUES ( 'A0010' , 'coffeegood!' , '김홍민' , '남' , 52 , DATE '2022-12-06' - 3300 , '710513-1572876' , 9300 , 'D005' ) ;
COMMIT;
--3. 직원연락처 테이블 13건 등록
-- 5명은 휴대폰 ,집전화 모두 존재
-- 3명은 휴대폰만 존재
-- 2명은 휴대폰 입력을 안했음
INSERT INTO 직원연락처 (직원ID , 구분코드 , 연락처 ) VALUES ( 'A0001' , '집전화' , '062-123-1234' );
INSERT INTO 직원연락처 (직원ID , 구분코드 , 연락처 ) VALUES ( 'A0001' , '휴대폰' , '010-1231-1234' );
INSERT INTO 직원연락처 (직원ID , 구분코드 , 연락처 ) VALUES ( 'A0002' , '집전화' , '062-254-6342' );
INSERT INTO 직원연락처 (직원ID , 구분코드 , 연락처 ) VALUES ( 'A0002' , '휴대폰' , '010-2544-6342' );
INSERT INTO 직원연락처 (직원ID , 구분코드 , 연락처 ) VALUES ( 'A0003' , '집전화' , '062-776-5231' );
INSERT INTO 직원연락처 (직원ID , 구분코드 , 연락처 ) VALUES ( 'A0003' , '휴대폰' , '010-7766-5231' );
INSERT INTO 직원연락처 (직원ID , 구분코드 , 연락처 ) VALUES ( 'A0004' , '집전화' , '062-443-5522' );
INSERT INTO 직원연락처 (직원ID , 구분코드 , 연락처 ) VALUES ( 'A0004' , '휴대폰' , '010-4433-5522' );
INSERT INTO 직원연락처 (직원ID , 구분코드 , 연락처 ) VALUES ( 'A0005' , '집전화' , '062-998-7273' );
INSERT INTO 직원연락처 (직원ID , 구분코드 , 연락처 ) VALUES ( 'A0005' , '휴대폰' , '010-9988-7273' );
INSERT INTO 직원연락처 (직원ID , 구분코드 , 연락처 ) VALUES ( 'A0006' , '휴대폰' , '010-8373-5511' );
INSERT INTO 직원연락처 (직원ID , 구분코드 , 연락처 ) VALUES ( 'A0007' , '휴대폰' , '010-2323-1133' );
INSERT INTO 직원연락처 (직원ID , 구분코드 , 연락처 ) VALUES ( 'A0008' , '휴대폰' , '010-8877-0087' );
COMMIT;
--4. 직원주소 테이블 15건 등록
-- 5명 집주소 입력
INSERT INTO 직원주소 ( 직원ID , 구분코드 , 주소 ) VALUES ( 'A0006' , '집' , '동구 충장로 예술로 12');
INSERT INTO 직원주소 ( 직원ID , 구분코드 , 주소 ) VALUES ( 'A0007' , '집' , '서울 중구 423');
INSERT INTO 직원주소 ( 직원ID , 구분코드 , 주소 ) VALUES ( 'A0008' , '집' , '서울 관악구 청룡로 66');
INSERT INTO 직원주소 ( 직원ID , 구분코드 , 주소 ) VALUES ( 'A0009' , '집' , '남구 송원로 812');
INSERT INTO 직원주소 ( 직원ID , 구분코드 , 주소 ) VALUES ( 'A0010' , '집' , '동구 백서로 53');
COMMIT;