● DDL(Data Definition Language)
- 데이터 정의어
- 데이터 구조 정의(객체 생성, 삭제, 변경) 언어
- CREATE(객체 생성),ALTER(객체 변경), DROP(객체 삭제), TRUNCATE(데이터 삭제)
- AUTO COMMIT(명령어 수행하면 즉시 저장, 원복 불가)
● CREATE
- 테이블이나 인덱스와 같은 객체를 생성하는 명령어
- 테이블 생성 시 테이블명, 칼럼명, 칼럼순서, 칼럼크기, 칼럼의 데이터타입 정의 필수
- 테이블 생성 시 각 컬럼의 제약조건 및 기본값은 생략 가능
- 테이블 생성 시 소유자 명시 가능(생략 시 명령어 수행 계정 소유)
- 숫자컬럼의 경우 컬럼 사이즈 생략 가능(날짜 컬럼은 사이즈 명시 X)
** 문법 1

** 문법 2(테이블 복제)

** 특징
- 복제테이블의 컬럼명과 컬럼의 데이터 타입이 복제됨
- SELECT 문에서 컬럼별칭 사용 시 컬럼별칭 이름으로 생성
- CREATE 문에서 컬럼명 변경 가능
- NULL 속성도 복제됨
- 테이블에 있는 제약조건,INDEX 등은 복제되지 X
● 데이터타입

☞ SQL Server 의 경우도 유사, VARCHAR2 => VARCHAR 사용, NUMBER => NUMERIC 사용
☞ SQL Server 의 경우 문자타입도 사이즈 생략 가능(생략 시 1)
※ NUMBER(7,2)의 경우 총 자리수가 7을 초과할 수 없음

예제) MERGE_OLD 테이블 만들기

예제)EMP 테이블을 복제하여 TEST 테이블 만들기

예제)EMP 테이블 데이터 없이 구조만 복제

☞ 항상 거짓인 조건을 SELECT 절에 전달하면, 데이터는 아무것도 출력되지 않지만 컬럼 정보들은 출력
따라서 테이블 내용은 제외하고 구조만 복제할 때 주로 사용!!
예제) 테이블 복제 시 컬럼명 변경 가능

< 결과 >

● ALTER
- 테이블 구조 변경(컬럼명, 컬럼 데이터타입, 컬럼사이즈, default 값, 컬럼삭제, 컬럼추가, 제약조건)
- 컬럼순서 변경 불가(재생성으로 해결)
1. 컬럼 추가
- 새로 추가된 컬럼위치는 맨 마지막(절대 중간 위치에 추가 불가)
- 컬럼 추가 시 데이터타입 필수, default 값, 제약조건을 명시할 수 있음
- 여러 컬럼 동시 추가 가능(반드시 괄호 사용)
** 문법)

예제) 컬럼 추가

※ 동시에 여러 컬럼을 추가할 경우 반드시 괄호와 함께 전달!

※ 컬럼 추가시 NOT NULL 속성 전달 불가(컬럼 추가 시 모두 NULL 인 값을 갖고 추가되므로)

※ 컬럼 추가시 DEFAULT 을 선언하면 NOT NULL 속성을 갖는 컬럼 추가 가능

※ 순서 주의(NOT NULL 은 DEFAULT 값 선언 뒤)
2. 컬럼(속성) 변경
- 컬럼 사이즈, 데이터타입, default 값 변경 가능
- 여러 컬럼 동시 변경 가능
** 문법

☞ 괄호 생략 가능
1) 컬럼 사이즈 변경
- 컬럼 사이즈 증가는 항상 가능
- 컬럼 사이즈 축소는 데이터 존재 여부에 따라 제한(데이터가 있는 경우 데이터의 최대 사이즈 만큼 축소
가능)
- 동시 변경 가능(반드시 괄호 필요)
예제) 여러 컬럼 사이즈 수정

☞ 최대 길이보다 크거나 같은 사이즈로는 변경 가능
2) 데이터 타입 변경
- 빈 컬럼일 경우 데이터 타입 변경 가능
- CHAR, VARCHAR 타입일 경우 데이터가 있어도 서로 변경 가능
예제) 데이터타입 변경
< 테이블 구조 및 데이터 >


< 컬럼 데이터 타입 변경 >

예제) CHAR <-> VARCHAR 데이터타입 변경
< 테이블 구조 및 데이터 >


< 컬럼 데이터 타입 변경 >

3) DEFAULT 값 변경
- DEFAULT 값이란 특정 컬럼에 값이 생략될 경우(입력 시 언급되지 않을 경우) 자동으로 부여되는 값
- INSERT 시 DEFAULT 값이 선언된 컬럼에 NULL을 직접 입력할 때는 DEFAULT 값이 아닌 NULL이 입력됨
- 이미 데이터가 존재하는 테이블에 DEFAULT 값 선언 시 기존 데이터 수정 안됨(이후 입력된 데이터부터)
- DEFAULT 값 해제 시 DEFAULT 값을 NULL 로 선언
예제) DEFAULT 값 변경 및 적용
< TEST DATA 생성 >

< DEFAULT 값 수정 >

<새로운 값 입력 >

< 데이터 확인 >

☞ PARK 는 SAL 값이 DEFAULT 값이 아닌 NULL 로 입력됨
☞ CHOI 는 SAL 값이 DEFAULT 값으로 입력됨(입력 시 SAL 컬럼 언급 안됐기 때문)
3. 컬럼 이름 변경
- 항상 가능
- 동시 여러 컬럼 이름 변경 불가(괄호 전달 불가)
- ALTER ... RENAME 명령어로 처리
** 문법

예제) 컬럼 이름 변경
< 테이블 구조 >

< 컬럼 이름 변경 >

4. 컬럼 삭제
- 데이터 존재 여부와 상관없이 언제나 가능
- RECYCLEBIN 에 남지 X(FLASHBACK 으로 복구 불가)
- 동시 삭제 불가
예제)COL_A 컬럼의 삭제

☞ 정상
예제) 2개 이상 컬럼 삭제 시도 시 에러 발생

☞ 괄호로 묶어서 전달하여도 동시 삭제 불가
● DROP
- 객체(테이블, 인덱스 등) 삭제
- DROP 후에는 조회 불가
** 문법

※ PURGE 로 테이블 삭제시 RECYCLEBIN 에서 조회 불가
예제) TEST 테이블 DROP 후 조회 결과


☞ 테이블 또는 뷰가 존재하지 않는다는 에러 발생
● TRUNCATE
- 구조 남기고 데이터만 즉시 삭제, 즉시 반영(AUTO COMMIT)
- RECYCLEBIN 에 남지 않음
** 문법

예제) TRUNCATE 사용하여 데이터 전부 삭제

< 삭제 후 데이터 조회 >

☞ 구조(테이블 명, 컬럼 등)만 남고 데이터는 삭제된 것을 확인할 수 있음
● DELETE / DROP / TRUNCATE 차이
- DELETE : 데이터 일부 또는 전체 삭제, 롤백 가능
- TRUNCATE : 데이터 전체 삭제만 가능(일부 삭제 불가), 즉시 반영(롤백 불가)
- DROP : 데이터와 구조를 동시 삭제, 즉시 반영(롤백 불가)
● 제약 조건
- 데이터 무결성을 위해 각 컬럼에 생성하는 데이터의 제약 장치
- 테이블 생성 시 정의 가능, 컬럼 추가 시 정의 가능, 이미 생성된 컬럼에 제약조건만 추가 가능
● PRIMARY KEY(기본키)
- 유일한 식별자(각 행을 구별할 수 있는 식별자 기능)
- 중복 허용 X NULL 허용 X => UNIQUE + NOT NULL
- 특정 컬럼에 PRIMARY KEY 생성하면 NOT NULL 속성 자동 부여(CTAS 로 테이블 복사 시 복사되지 X)
- 하나의 테이블에 여러 기본키를 생성할 수 없음
- 하나의 기본키를 여러 컬럼을 결합하여 생성할 수 있음
- PRIMARY KEY 생성 시 자동으로 UNIQUE INDEX 생성
** 문법
1) 테이블 생성 시 제약조건 생성

2) 컬럼 추가 시 제약 조건 생성

3) 이미 생성 된 컬럼에 제약조건만 추가

4) 제약조건 삭제

예제) 테이블 생성 시 제약조건 설정(이름 전달 없이)

☞ 제약조건 생성 시 이름을 설정하지 않으면 자동으로 부여

☞ CREATE 문 밑에 제약조건 이름과 함께 전달 가능!
예제) 테이블 생성 시 제약조건 설정(이름과 함께 전달)

예제) 컬럼 추가 시 제약조건 생성

예제) 이미 있는 컬럼에 제약조건만 생성

2. UNIQUE
- 중복을 허용하지 않음
- NULL은 허용
- UNIQUE INDEX 자동 생성
예제) UNIQUE KEY 가 생성된 컬럼의 값 입력
< UNIQUE KEY가 생성 >

< 값의 입력 >

3. NOT NULL
- 다른 제약조건과 다르게 컬럼의 특징을 나타냄 => CTAS 로 복제 시 따라감
- 컬럼 생성 시 NOT NULL 을 선언하지 않으면 Nullabie 컬럼으로 생성됨
- 이미 만들어진 컬럼에 NOT NULL 선언 시 제약조건 생성이 안니 컬럼 수정(MODIFY)으로 해결
예제) NOT NULL 선언

4. FOREIGN KEY
- 참조테이블의 참조 컬럼에 있는 데이터를 확인하면서 본 테이블 데이터를 관리할 목적으로 생성
- 반드시 참조(부모)테이블의 참조 컬럼(REFERENCE KEY)이 사전에 PK 혹은 UNIQUE KEY를 가져야 함
** 문법

예제) FOREIGN KEY 테스트
** 테스트 테이블 생성

** 부모 테이블(DEPT_TEST1)에 REFERENCE KEY(참조대상)에 PK 설정!

** 자식 테이블(EMP_TEST1)에 FOREIGN KEY 생성

TEST1) 자식 테이블(EMP_TEST1)에서 10번 부서원 삭제 시도

TEST2) 자식 테이블(EMP_TEST1)에서 20번 부서원 50번으로 변경 시도(불가)

☞ 부모 테이블에 50번 부서번호가 정의되어 있지 않아 자식 테이블에 해당 값으로 수정 불가!
TEST3 자식 테이블(EMP_TEST1)에서 50 번 부서원(나머지 정보 자유) 입력 시도(불가)

☞ 부모 테이블에 50번 부서번호가 정의되어 있지 않아 자식 테이블에 해당 값으로 입력 불가!
TEST4) 부모 테이블(DEPT_TEST1)에 10번 부서원 삭제 시도(불가)

☞ 20 번 부서 정보가 자식 테이블에 존재하므로 삭제 불가
TEST5) 부모 테이블(DEPT_TEST1)에 20번 부서원의 부서번호를 60 변경 시도(불가)

☞ 20 번 부서 정보가 자식 테이블에 존재하므로 다른 값으로 변경 불가
● FOREGIN KEY 옵션(생서 시 정의,변경 불가 => 재생성)
1. ON DELETE CASCADE : 부모 데이터 삭제 시 자식 데이터 함께 삭제
2. ON DELETE SET NULL : 부모 데이터 삭제 시 자식 데이터의 참조값은 NULL 로 수정
예제) FOREIGN KEY 옵션 TEST(ON DELETE CASCADE)
< FOREIGN KEY 재생성(ON DELETE CASCADE) >

< 부모 데이터 삭제 >

☞ 부모 데이터 삭제 시, 자식 데이터도 함께 삭제 됨!
예제) FOREIGN KEY 옵션 TEST(ON DELETE SET NULL)
< FOREIGN KEY 재생성(ON DELETE SET NULL) >

< 부모 데이터 삭제 >

☞ 자식 테이블의 데이터도 함께 삭제되지 않음(NULL 로 수정)
5. CHECK
- 직접적으로 데이터의 값 제한(양수,(1,2,3,4 중 하나)
예제) EMP_TEST1 테이블의 SAL 값은 0 이상이어야 한다는 CHECK 제약조건 추가

● 기타 오브젝트
1) 뷰(VIEW)
- 저장공간을 가지지는 않지만 테이블처럼 조회 및 수정할 수 있는 객체
** 뷰(VIEW)의 종류
- 단순뷰: 하나의 테이블 조회 뷰(VIEW)
- 복합뷰 : 둘 이상의 테이블 조인 뷰(VIEW)
** 뷰(VIEW)의 특징
- 뷰(VIEW)는 기본 테이블로부터 유도된 테이블이기에 기본 테이블과 같은 형태의 구조를 가지고 있으며, 조작도 기본 테이블과 거의 같음
- 뷰는 가상의 테이블이기에 물리적으로 구현되어 있지 않으며 저장공간을 차지하지 않음
- 데이터를 안전하게 보호가능
- 이미 정의되어 있는 뷰(VIEW)는 다른 뷰(VIEW)의 정의에 기초가 될 수 있음
- 기본 테이블이 삭제되면 그 테이블을 참조하여 만든 뷰 역시 삭제됨
** 뷰(VIEW)의 장점
- 논리적 독립성을 제공
- 데이터의 접근을 제어 함으로써 보안유지
- 사용자의 데이터 관리 단순화
- 데이터의 다양한 지원 가능
** 뷰(VIEW)의 단점
- 뷰의 정의 변경 불가
- 삽입,삭제,갱신 연산에 제한
- 인덱스 구성 불가
** 문법

** 뷰(VIEW)의 삭제

예제) 뷰 생성 및 조회
< 생성 >

☞ EMP 테이블과 DEPT 테이블에서 가져올 데이터를 선택
< 조회 >

2) 시퀸스(SEQUENCE)
- 자동으로 연속적인 숫자 부여해주는 개체

3) 시노님(SYNONYM)
- 테이블 별칭 생성
EX) HR 계정에서 SCOTT.EMP 를 EMP 로 조회하는 방법
** 문법

☞ OR REPLACE : 기존에 같은 이름으로 시노님이 생성되어 있는 경우 대체
☞ PUBLIC : 시노님을 생성한 유저만 사용 가능한 PRIVATE SYNONYM 의 반대(누구나 사용 가능)
☞ PUBLIC 으로 생성한 시노님은 반드시 PUBLIC 으로 삭제
예제) 시노님 생성 전 후 테이블 조회비교(HR 계정으로 조회)
< 시노님 생성 >

< 시노님 생성 전 HR 계정에서 EMP 조회 >

'MySQLD 자격증 공부' 카테고리의 다른 글
2 - 20 (0) | 2024.08.23 |
---|---|
2 - 18 (0) | 2024.08.22 |
2 - 17 (0) | 2024.08.22 |
함수의 종류 (암기용) (0) | 2024.08.19 |
2 - 16 (0) | 2024.08.18 |
● DDL(Data Definition Language)
- 데이터 정의어
- 데이터 구조 정의(객체 생성, 삭제, 변경) 언어
- CREATE(객체 생성),ALTER(객체 변경), DROP(객체 삭제), TRUNCATE(데이터 삭제)
- AUTO COMMIT(명령어 수행하면 즉시 저장, 원복 불가)
● CREATE
- 테이블이나 인덱스와 같은 객체를 생성하는 명령어
- 테이블 생성 시 테이블명, 칼럼명, 칼럼순서, 칼럼크기, 칼럼의 데이터타입 정의 필수
- 테이블 생성 시 각 컬럼의 제약조건 및 기본값은 생략 가능
- 테이블 생성 시 소유자 명시 가능(생략 시 명령어 수행 계정 소유)
- 숫자컬럼의 경우 컬럼 사이즈 생략 가능(날짜 컬럼은 사이즈 명시 X)
** 문법 1

** 문법 2(테이블 복제)

** 특징
- 복제테이블의 컬럼명과 컬럼의 데이터 타입이 복제됨
- SELECT 문에서 컬럼별칭 사용 시 컬럼별칭 이름으로 생성
- CREATE 문에서 컬럼명 변경 가능
- NULL 속성도 복제됨
- 테이블에 있는 제약조건,INDEX 등은 복제되지 X
● 데이터타입

☞ SQL Server 의 경우도 유사, VARCHAR2 => VARCHAR 사용, NUMBER => NUMERIC 사용
☞ SQL Server 의 경우 문자타입도 사이즈 생략 가능(생략 시 1)
※ NUMBER(7,2)의 경우 총 자리수가 7을 초과할 수 없음

예제) MERGE_OLD 테이블 만들기

예제)EMP 테이블을 복제하여 TEST 테이블 만들기

예제)EMP 테이블 데이터 없이 구조만 복제

☞ 항상 거짓인 조건을 SELECT 절에 전달하면, 데이터는 아무것도 출력되지 않지만 컬럼 정보들은 출력
따라서 테이블 내용은 제외하고 구조만 복제할 때 주로 사용!!
예제) 테이블 복제 시 컬럼명 변경 가능

< 결과 >

● ALTER
- 테이블 구조 변경(컬럼명, 컬럼 데이터타입, 컬럼사이즈, default 값, 컬럼삭제, 컬럼추가, 제약조건)
- 컬럼순서 변경 불가(재생성으로 해결)
1. 컬럼 추가
- 새로 추가된 컬럼위치는 맨 마지막(절대 중간 위치에 추가 불가)
- 컬럼 추가 시 데이터타입 필수, default 값, 제약조건을 명시할 수 있음
- 여러 컬럼 동시 추가 가능(반드시 괄호 사용)
** 문법)

예제) 컬럼 추가

※ 동시에 여러 컬럼을 추가할 경우 반드시 괄호와 함께 전달!

※ 컬럼 추가시 NOT NULL 속성 전달 불가(컬럼 추가 시 모두 NULL 인 값을 갖고 추가되므로)

※ 컬럼 추가시 DEFAULT 을 선언하면 NOT NULL 속성을 갖는 컬럼 추가 가능

※ 순서 주의(NOT NULL 은 DEFAULT 값 선언 뒤)
2. 컬럼(속성) 변경
- 컬럼 사이즈, 데이터타입, default 값 변경 가능
- 여러 컬럼 동시 변경 가능
** 문법

☞ 괄호 생략 가능
1) 컬럼 사이즈 변경
- 컬럼 사이즈 증가는 항상 가능
- 컬럼 사이즈 축소는 데이터 존재 여부에 따라 제한(데이터가 있는 경우 데이터의 최대 사이즈 만큼 축소
가능)
- 동시 변경 가능(반드시 괄호 필요)
예제) 여러 컬럼 사이즈 수정

☞ 최대 길이보다 크거나 같은 사이즈로는 변경 가능
2) 데이터 타입 변경
- 빈 컬럼일 경우 데이터 타입 변경 가능
- CHAR, VARCHAR 타입일 경우 데이터가 있어도 서로 변경 가능
예제) 데이터타입 변경
< 테이블 구조 및 데이터 >


< 컬럼 데이터 타입 변경 >

예제) CHAR <-> VARCHAR 데이터타입 변경
< 테이블 구조 및 데이터 >


< 컬럼 데이터 타입 변경 >

3) DEFAULT 값 변경
- DEFAULT 값이란 특정 컬럼에 값이 생략될 경우(입력 시 언급되지 않을 경우) 자동으로 부여되는 값
- INSERT 시 DEFAULT 값이 선언된 컬럼에 NULL을 직접 입력할 때는 DEFAULT 값이 아닌 NULL이 입력됨
- 이미 데이터가 존재하는 테이블에 DEFAULT 값 선언 시 기존 데이터 수정 안됨(이후 입력된 데이터부터)
- DEFAULT 값 해제 시 DEFAULT 값을 NULL 로 선언
예제) DEFAULT 값 변경 및 적용
< TEST DATA 생성 >

< DEFAULT 값 수정 >

<새로운 값 입력 >

< 데이터 확인 >

☞ PARK 는 SAL 값이 DEFAULT 값이 아닌 NULL 로 입력됨
☞ CHOI 는 SAL 값이 DEFAULT 값으로 입력됨(입력 시 SAL 컬럼 언급 안됐기 때문)
3. 컬럼 이름 변경
- 항상 가능
- 동시 여러 컬럼 이름 변경 불가(괄호 전달 불가)
- ALTER ... RENAME 명령어로 처리
** 문법

예제) 컬럼 이름 변경
< 테이블 구조 >

< 컬럼 이름 변경 >

4. 컬럼 삭제
- 데이터 존재 여부와 상관없이 언제나 가능
- RECYCLEBIN 에 남지 X(FLASHBACK 으로 복구 불가)
- 동시 삭제 불가
예제)COL_A 컬럼의 삭제

☞ 정상
예제) 2개 이상 컬럼 삭제 시도 시 에러 발생

☞ 괄호로 묶어서 전달하여도 동시 삭제 불가
● DROP
- 객체(테이블, 인덱스 등) 삭제
- DROP 후에는 조회 불가
** 문법

※ PURGE 로 테이블 삭제시 RECYCLEBIN 에서 조회 불가
예제) TEST 테이블 DROP 후 조회 결과


☞ 테이블 또는 뷰가 존재하지 않는다는 에러 발생
● TRUNCATE
- 구조 남기고 데이터만 즉시 삭제, 즉시 반영(AUTO COMMIT)
- RECYCLEBIN 에 남지 않음
** 문법

예제) TRUNCATE 사용하여 데이터 전부 삭제

< 삭제 후 데이터 조회 >

☞ 구조(테이블 명, 컬럼 등)만 남고 데이터는 삭제된 것을 확인할 수 있음
● DELETE / DROP / TRUNCATE 차이
- DELETE : 데이터 일부 또는 전체 삭제, 롤백 가능
- TRUNCATE : 데이터 전체 삭제만 가능(일부 삭제 불가), 즉시 반영(롤백 불가)
- DROP : 데이터와 구조를 동시 삭제, 즉시 반영(롤백 불가)
● 제약 조건
- 데이터 무결성을 위해 각 컬럼에 생성하는 데이터의 제약 장치
- 테이블 생성 시 정의 가능, 컬럼 추가 시 정의 가능, 이미 생성된 컬럼에 제약조건만 추가 가능
● PRIMARY KEY(기본키)
- 유일한 식별자(각 행을 구별할 수 있는 식별자 기능)
- 중복 허용 X NULL 허용 X => UNIQUE + NOT NULL
- 특정 컬럼에 PRIMARY KEY 생성하면 NOT NULL 속성 자동 부여(CTAS 로 테이블 복사 시 복사되지 X)
- 하나의 테이블에 여러 기본키를 생성할 수 없음
- 하나의 기본키를 여러 컬럼을 결합하여 생성할 수 있음
- PRIMARY KEY 생성 시 자동으로 UNIQUE INDEX 생성
** 문법
1) 테이블 생성 시 제약조건 생성

2) 컬럼 추가 시 제약 조건 생성

3) 이미 생성 된 컬럼에 제약조건만 추가

4) 제약조건 삭제

예제) 테이블 생성 시 제약조건 설정(이름 전달 없이)

☞ 제약조건 생성 시 이름을 설정하지 않으면 자동으로 부여

☞ CREATE 문 밑에 제약조건 이름과 함께 전달 가능!
예제) 테이블 생성 시 제약조건 설정(이름과 함께 전달)

예제) 컬럼 추가 시 제약조건 생성

예제) 이미 있는 컬럼에 제약조건만 생성

2. UNIQUE
- 중복을 허용하지 않음
- NULL은 허용
- UNIQUE INDEX 자동 생성
예제) UNIQUE KEY 가 생성된 컬럼의 값 입력
< UNIQUE KEY가 생성 >

< 값의 입력 >

3. NOT NULL
- 다른 제약조건과 다르게 컬럼의 특징을 나타냄 => CTAS 로 복제 시 따라감
- 컬럼 생성 시 NOT NULL 을 선언하지 않으면 Nullabie 컬럼으로 생성됨
- 이미 만들어진 컬럼에 NOT NULL 선언 시 제약조건 생성이 안니 컬럼 수정(MODIFY)으로 해결
예제) NOT NULL 선언

4. FOREIGN KEY
- 참조테이블의 참조 컬럼에 있는 데이터를 확인하면서 본 테이블 데이터를 관리할 목적으로 생성
- 반드시 참조(부모)테이블의 참조 컬럼(REFERENCE KEY)이 사전에 PK 혹은 UNIQUE KEY를 가져야 함
** 문법

예제) FOREIGN KEY 테스트
** 테스트 테이블 생성

** 부모 테이블(DEPT_TEST1)에 REFERENCE KEY(참조대상)에 PK 설정!

** 자식 테이블(EMP_TEST1)에 FOREIGN KEY 생성

TEST1) 자식 테이블(EMP_TEST1)에서 10번 부서원 삭제 시도

TEST2) 자식 테이블(EMP_TEST1)에서 20번 부서원 50번으로 변경 시도(불가)

☞ 부모 테이블에 50번 부서번호가 정의되어 있지 않아 자식 테이블에 해당 값으로 수정 불가!
TEST3 자식 테이블(EMP_TEST1)에서 50 번 부서원(나머지 정보 자유) 입력 시도(불가)

☞ 부모 테이블에 50번 부서번호가 정의되어 있지 않아 자식 테이블에 해당 값으로 입력 불가!
TEST4) 부모 테이블(DEPT_TEST1)에 10번 부서원 삭제 시도(불가)

☞ 20 번 부서 정보가 자식 테이블에 존재하므로 삭제 불가
TEST5) 부모 테이블(DEPT_TEST1)에 20번 부서원의 부서번호를 60 변경 시도(불가)

☞ 20 번 부서 정보가 자식 테이블에 존재하므로 다른 값으로 변경 불가
● FOREGIN KEY 옵션(생서 시 정의,변경 불가 => 재생성)
1. ON DELETE CASCADE : 부모 데이터 삭제 시 자식 데이터 함께 삭제
2. ON DELETE SET NULL : 부모 데이터 삭제 시 자식 데이터의 참조값은 NULL 로 수정
예제) FOREIGN KEY 옵션 TEST(ON DELETE CASCADE)
< FOREIGN KEY 재생성(ON DELETE CASCADE) >

< 부모 데이터 삭제 >

☞ 부모 데이터 삭제 시, 자식 데이터도 함께 삭제 됨!
예제) FOREIGN KEY 옵션 TEST(ON DELETE SET NULL)
< FOREIGN KEY 재생성(ON DELETE SET NULL) >

< 부모 데이터 삭제 >

☞ 자식 테이블의 데이터도 함께 삭제되지 않음(NULL 로 수정)
5. CHECK
- 직접적으로 데이터의 값 제한(양수,(1,2,3,4 중 하나)
예제) EMP_TEST1 테이블의 SAL 값은 0 이상이어야 한다는 CHECK 제약조건 추가

● 기타 오브젝트
1) 뷰(VIEW)
- 저장공간을 가지지는 않지만 테이블처럼 조회 및 수정할 수 있는 객체
** 뷰(VIEW)의 종류
- 단순뷰: 하나의 테이블 조회 뷰(VIEW)
- 복합뷰 : 둘 이상의 테이블 조인 뷰(VIEW)
** 뷰(VIEW)의 특징
- 뷰(VIEW)는 기본 테이블로부터 유도된 테이블이기에 기본 테이블과 같은 형태의 구조를 가지고 있으며, 조작도 기본 테이블과 거의 같음
- 뷰는 가상의 테이블이기에 물리적으로 구현되어 있지 않으며 저장공간을 차지하지 않음
- 데이터를 안전하게 보호가능
- 이미 정의되어 있는 뷰(VIEW)는 다른 뷰(VIEW)의 정의에 기초가 될 수 있음
- 기본 테이블이 삭제되면 그 테이블을 참조하여 만든 뷰 역시 삭제됨
** 뷰(VIEW)의 장점
- 논리적 독립성을 제공
- 데이터의 접근을 제어 함으로써 보안유지
- 사용자의 데이터 관리 단순화
- 데이터의 다양한 지원 가능
** 뷰(VIEW)의 단점
- 뷰의 정의 변경 불가
- 삽입,삭제,갱신 연산에 제한
- 인덱스 구성 불가
** 문법

** 뷰(VIEW)의 삭제

예제) 뷰 생성 및 조회
< 생성 >

☞ EMP 테이블과 DEPT 테이블에서 가져올 데이터를 선택
< 조회 >

2) 시퀸스(SEQUENCE)
- 자동으로 연속적인 숫자 부여해주는 개체

3) 시노님(SYNONYM)
- 테이블 별칭 생성
EX) HR 계정에서 SCOTT.EMP 를 EMP 로 조회하는 방법
** 문법

☞ OR REPLACE : 기존에 같은 이름으로 시노님이 생성되어 있는 경우 대체
☞ PUBLIC : 시노님을 생성한 유저만 사용 가능한 PRIVATE SYNONYM 의 반대(누구나 사용 가능)
☞ PUBLIC 으로 생성한 시노님은 반드시 PUBLIC 으로 삭제
예제) 시노님 생성 전 후 테이블 조회비교(HR 계정으로 조회)
< 시노님 생성 >

< 시노님 생성 전 HR 계정에서 EMP 조회 >

'MySQLD 자격증 공부' 카테고리의 다른 글
2 - 20 (0) | 2024.08.23 |
---|---|
2 - 18 (0) | 2024.08.22 |
2 - 17 (0) | 2024.08.22 |
함수의 종류 (암기용) (0) | 2024.08.19 |
2 - 16 (0) | 2024.08.18 |