[오라클] 부모테이블과 자식테이블
본문 바로가기
IT. 컴퓨터

[오라클] 부모테이블과 자식테이블

by 솔기잇 2020. 5. 7.

-- **데이터의 값을 변경하기 **--

 

() TBL_SAWONINFO 테이블에서 사원번호 1005 직원의 직급을 '차장'으로 변경하세요.

 

()

UPDATE  TBL_SAWONINFO SET JIK = '차장'

WHERE  SANO = 1003;

 

 

 

ROLLBACK; -- 업데이트 전으로 (COMMIT 하기 전에 상태로)

 

 

구글 이미지

 

 

--부모테이블과 자식테이블 --

 

 

<<TBL_DEPT>>  1   부모테이블

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

 DEPTNO                                      DNAME LOC      DTEL

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

  10                               영업부    안산       031-845-1234

  20                                관리부    수원       031-777-8787

  30                                총무부    인천       032-545-1234

  40                                 영업부    부천       032-745-1234

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

 

 

참조받는 컬럼(DEPTNO) 반드시 고유한 값을 가지는 컬럼이어야만 한다.

, 중복된 값이 들어올 없다.

그러므로 DEPTNO 컬럼에는 고유한 값만 들어오는 PRIMARY KEY 또는 UNIQUE 제약을 걸어야 한다.

그런데 참조받는 컬럼(DEPTNO)에는 NULL값이 들어올 수가 없다.

그러므로 참조 받는 컬럼(DEPTNO)에는 PRIMARY KEY

또는 NOT NULL UNIQUE 제약을 걸어야 한다.

 

 

 

<<TBL_SAWON>> 다행    자식테이블

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

SANO       JUBUN               SANAME       JIK          SAL     DEPRNO

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

1008    7710092234567             이사         9999                 10

1001    7010091234567           홍길동    사장       5000                  20

1002    7110091234567           이순신    부장       4000                  20

1003    7210091234567           안중근    과장       3000                  20

1004    7310092234567           김옥빈    부장       4000                  30

1005    7410091234567             차장         5000                30

1006    7510092234567           하지원    대리       2000                  40

1007    7610092234567           이나영    사원       2000                  40

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

참조하는 컬럼(TBL_SAWON 테이블의 DEPTNO)

참조받는 컬럼의 데이터를 조회해서 데이터값만 들어와야 한다.

이렇게 하려면 FOREIN KEY(외부키제약조건을 걸어야 한다.

 

 

 

--부서테이블을 만들어 보려고 한다.

CREATE TABLE TBL_DEPT

(DEPTNO     NUMBER(10)

,DNAME      VARCHAR2(10)

,LOC          VARCHAR2(10)

,DTEL         VARCHAR2(20)

);

 

INSERT INTO TBL_DEPT VALUES

(10, '영업부', '안산', '031-845-1234')

INSERT INTO TBL_DEPT VALUES

(20, '관리부', '경기도', '031-775-1287')

INSERT INTO TBL_DEPT VALUES

(30, '생산부', '수원', '032-655-6734')

INSERT INTO TBL_DEPT VALUES

(40, '무역부', '인천', '031-995-9234')

 

 

 

--사원테이블을 만들어 보려고 한다..

CREATE  TABLE  TBL_SAWON

(SANO                 NUMBER(4)

,JUBUN                CHAR(13)

,SANAME     VARCHAR2(10)

,JIK                          VARCHAR2(10)

,SAL                       NUMBER(4)

,DEPTNO           NUMBER(2)

,CONSTRAINT TBL_SAWON_SANO_PK PRIMARY KEY(SANO)

,CONSTRAINT TBL_SAWON_JUBUN_UQ UNIQUE(JUBUN)

,CONSTRAINT TBL_DEPT_DEPTNO_FK FOREIGN KEY(DEPTNO) REFERENCES TBL_SAWON(SANO)

);--,CONSTRAINT TBL_SAWON_SANO_PK PRIMARY KEY(SANO)

--,CONSTRAINT TBL_SAWON_JUBUN_PK PRIMARY KEY(JUBUN) -->프라이 머리키는 한번만 사용할 있다.

 

 

INSERT INTO TBL_SAWON VALUES

(1008, '7710092234567', '  ', '이사', 9999, 70);

-->ORA-02291: 무결성 제약조건(NEWSCOTT.TBL_SAWON_DEPTNO_FK) 위배되었습니다- 부모 키가 없습니다

INSERT INTO TBL_SAWON VALUES

(1008,'7710092234567','태연','이사',9999,10);

INSERT INTO TBL_SAWON VALUES

(NULL,'7010091234567','홍길동','사장',5000,20);

--ORA-01400: NULL ("NEWSCOTT"."TBL_SAWON"."SANO") 안에 삽입할 없습니다

INSERT INTO TBL_SAWON VALUES

(1001,'7010091234567','홍길동','사장',5000,20);

INSERT INTO TBL_SAWON VALUES

(1002,NULL,'이순신','부장',4000,20);

INSERT INTO TBL_SAWON VALUES

(1003,NULL,'안중근','과장',3000,20);

INSERT INTO TBL_SAWON VALUES

(1004,'7010091234567','김옥빈','부장',4000,30);

--ORA-00001: 무결성 제약 조건(NEWSCOTT.TBL_SAWON_JUBUN_UQ) 위배됩니다 (같은 주번)

INSERT INTO TBL_SAWON VALUES

(1004,'7310092234567','김옥빈','부장',4000,30)

 

 

 

-- 삭제하기

DELETE  TBL_SAWON;

 

-- 테이블 삭제하기

DROP TABLE TBL_SAWON;

 

 

-- *** 필수암기 ***  --

INSERT, UPDATE, DELETE, MERGE DML(Date Manuplation Languge = 데이터 조작어)문이라고 부른다.

 

CREATE, ALTER, DROP 으로 시작하는 문을 DDL(Data Definition Language = 데이터 정의어) 문이라고 부른다.

 

GRANT, REVOKE 으로 시작하는 문을 DCL(Date Control LANGUAGE = 데이터 제어) 문이라고 부른다.

 

DDL 문과 DCL 문을 실행하면 속에는 COMMIT 포함되어져 있다.

DML 문만 실행하면 그속에는 COMMIT 이나  ROLLBACK 포함되어 있지 않다.;


close