1cm

자바 프로그래밍_Day_35_DDL(CREATE)(2), DDL(ALTER, DROP) 본문

국비지원_Java/Java Programming_1

자바 프로그래밍_Day_35_DDL(CREATE)(2), DDL(ALTER, DROP)

dev_1cm 2021. 10. 15. 18:23
반응형

 

 

2021. 10. 07

 

 

 

     > FOREIGN KEY(외래 키) 삭제룰

       -> 부모 테이블의 데이터가 삭제 됐을 때의 옵션을 지정해 놓을 수 있다.

       -> 1) ON DELETE RESTRICT : 자식 테이블의 참조 키가 부모 테이블의 키 값을 참조하는 경우 주어진 상위 행을 삭제할 수 없다.(기본값)

       -> 2) ON DELETE SET NULL : 부모 테이블의 데이터 삭제 시 참조하고 있는 자식 테이블의 컬럼 값이 NULL로 변경된다.

       -> 3) ON DELETE CASCADE : 부모 테이블의 데이터가 삭제 시 참조하고 있는 자식 테이블의 컬럼 값이 존재하는 행 전체가 삭제된다.

 

 

       -> MEMBER_GRADE 테이블 안에 GRADE_CODE 컬럼에서 제공하는 값이 없는 경우 외래키 제약 조건에 위배 되어 오류 발생

 

 

 

       -> 자식 테이블의 외래키(GRADE_ID)와 부모 테이블의 기본키(GRADE_CODE)를 가지고 JOIN하는 구문

 

 

       -> 자식 테이블의 행들 중에 사용하고 있는 데이터 컬럼값이 있다면 삭제가 불가능하다.

 

 

 

       -> ROLLBACK : 메모리 버퍼에 임시 삭제한 데이터를 실제 테이블에 반영하지 않고 작업을 취소할 수 있다.

 

 

       -> ON DELETE SET NULL 옵션이 추가된 자식 테이블 생성

 

 

 

       -> 문제없이 행이 삭제 되고, 컬럼의 값이 NULL로 변경됨

 

       -> ON DELETE CASCADE 옵션이 추가된 자식 테이블 생성

 

 

 

       -> 자식 테이블 조회 시 삭제된 행을 참조하고 있던 컬럼의 행까지 모두 삭제된 것을 확인할 수 있다.

 

 


     -> 작성한 제약 조건 컬럼명까지 확인

 

 

 

     > SUBQUERY를 이용한 CREATE TABLE

       -> 서브 쿼리를 이용하여 테이블 생성 시 컬럼명, 데이터 타입, 값이 복사되고, 제약조건은 NOT NULL만 복사된다.

 

 

       -> 컬럼, 데이터 타입, 값, 제약 조건을 복사한 새로운 테이블 생성

 

 

       -> 구조만 복사되고, 모든 행에 대해서 매번 FALSE이기 때문에 데이터 값은 복사되지 않는다.

 

 

       -> 데이터 값 없이 구조만 복사.

 

 

       -> SELECT 절에 산술연산 또는 함수식이 들어간 경우 반드시 별칭을 지정해줘야 한다.

 

 

     > DDL (Data Definition Language)

       -> 데이터 정의 언어로 객체(OBJECT)를 만들고(CREATE), 수정하고(ALTER), 삭제(DROP)하는 구문을 말함

 

 

     > ALTER

       -> 테이블에 정의된 내용을 수정할 때 사용하는 데이터 정의어로 컬럼의 추가/삭제, 제약조건의 추가/삭제, 컬럼의 자료형 변경, DEFAULT 값 변경, 테이블 명 / 컬럼 명 / 제약 조건 명 변경 등을 할 수 있다.

 

 

     > DROP

       -> 데이터베이스 객체를 삭제하는 구문이다.

       -> 컬럼 삭제 시 참조하고 있는 컬럼이 있다면 컬럼 삭제가 불가능하다.

 

 

 

 

     > ALTER 실습 코드

 

       -> 기본값을 지정하지 않으면 새로 추가된 컬럼은 NULL값으로 채워진다.

 

 

 

       -> 컬럼에 기본값 지정하여 추가하는 구문

 

 

       -> 컬럼의 데이터 타입 변경

 

       -> 컬럼의 다중 수정

 

 

 

       -> 컬럼 삭제 : 삭제된 컬럼 복구가 불가능하며, 테이블에는 최소 한 개의 컬럼이 존재해야 하고, 참조되는 컬럼이 있다면 삭제가 불가능하다.

 

 

       -> 테이블 내에 최소 한 개의 컬럼은 존재해야 한다.

 

 

       -> 참조되고 있는 컬럼이 있다면 삭제가 불가능하지만, CASCADE CONSTRAINTS를 써주면 삭제가 가능하다.

 

       -> CASCADE : PRIMARY KEY 제약조건도 제거 되면서 같이 멤버 테이블에 있던 외래키 제약조건도 함께 제거된다.

          -> 부모 테이블을 삭제할 때 자식테이블에도 걸려있는 제약조건까지 연속적으로 삭제 시 사용한다.

 

 

       -> 삭제된 결과값 확인

 

 

 

 

 

     > 제약조건 추가 / 삭제

 

 

       -> NOT NULL 제약조건은 MODIFY를 붙여준다.

 

 

 

       -> DEPT_ID에 PK(PRIMARY KEY) 제약조건 추가, DEPT_TITLE에는 UNIQUE, NOT NULL 제약조건 추가

 

 

       -> 한 테이블 속 여러 컬럼에 FOREIGN KEY 제약조건 적용

 

 

       -> PK 제약조건 삭제

 

 

 

       -> UQ, NN 제약조건 삭제

       -> NOT NULL 제약조건은 'MODIFY 컬럼명 NULL'로 삭제할 수 있다.

       -> 제약조건 수정은 불가능하다. 즉, 삭제 후 다시 제약조건을 추가해야 한다.

 

 

 

       -> 컬럼명 변경

 

 

       -> 제약조건명 변경

 

       -> 테이블명 변경

 

       -> DROP : 데이터 베이스 객체를 삭제하는 구문

       -> 부모 테이블에서 자식 테이블을 참조하고 있기 때문에 참조무결성 유지가 되지 않으므로 오류가 발생한다.

 

 

       -> 1) 자식 테이블 먼저 삭제한 후 부모 테이블을 삭제하는 방법

       -> 2) 부모 테이블을 삭제할 때 제약조건도 함께 삭제하는 방법(CASCADE CONSTRAINT 사용) -> 제약조건, 테이블 모두 삭제

 

반응형
Comments