CREATE OR REPLACE VIEW
기존 뷰가 있으면 새 SELECT 정의로 교체하고 조회/DML 가능성을 확인한다.
기존 뷰가 있으면 새 SELECT 정의로 교체하고 조회/DML 가능성을 확인한다. 뷰는 복잡한 SELECT를 재사용하게 해 주고, 테이블스페이스는 저장 위치를 분리해 관리할 수 있게 해 준다.
뷰는 실제 데이터를 복사하는 테이블이 아니므로 원본 테이블 구조와 권한, 조인 여부에 따라 수정 가능성이 달라진다. 테이블스페이스는 물리 저장 관리와 관련되므로 실습 환경과 운영 환경을 구분해서 다루어야 한다.
| 작업 | 의미 | 확인 명령 |
|---|---|---|
| CREATE VIEW | 새 뷰를 만든다 | SHOW FULL TABLES |
| CREATE OR REPLACE VIEW | 있으면 교체, 없으면 생성 | SHOW CREATE VIEW |
| DESCRIBE v_name | 뷰 컬럼 구조 확인 | DESCRIBE v_usertbl |
| UPDATE view | 가능한 단순 뷰에서 원본 수정 | 원본 테이블 SELECT |
| CHECK TABLE view | 뷰 상태 검사 | CHECK TABLE v_userbuytbl |
WITH CHECK OPTION은 뷰의 WHERE 조건을 벗어나는 INSERT나 UPDATE를 막는다. 예를 들어 height >= 177 조건을 가진 뷰라면 height가 155인 행은 뷰를 통해 넣을 수 없다.
| 입력값 | 뷰 조건 | 결과 |
|---|---|---|
| height 180 | height >= 177 | 통과 가능 |
| height 177 | height >= 177 | 통과 가능 |
| height 155 | height >= 177 | 거부 |
| height NULL | height >= 177 | 조건 불만족 |
| 문법 | 역할 | 주의 |
|---|---|---|
| CREATE TABLESPACE | 저장 공간 단위 생성 | 파일명 중복 주의 |
| ADD DATAFILE | 테이블스페이스 파일 지정 | 경로와 권한 확인 |
| TABLESPACE ts_a | 테이블 생성 시 저장 위치 지정 | 테이블스페이스 존재 필요 |
| ALTER TABLE ... TABLESPACE | 기존 테이블 이동 | 대용량이면 시간 소요 |
| SHOW TABLE STATUS | 테이블 상태 확인 | 저장 정보 비교 |
| 뷰 형태 | 수정 가능성 | 이유 |
|---|---|---|
| 단일 테이블 단순 컬럼 뷰 | 상대적으로 가능 | 원본 행과 대응이 명확하다. |
| 조인 뷰 | 제한적 또는 불가 | 어느 테이블에 값을 넣을지 애매하다. |
| 집계 뷰 | 대체로 불가 | GROUP BY 결과는 원본 행 하나와 대응되지 않는다. |
| CHECK OPTION 뷰 | 조건 안에서만 가능 | 뷰 WHERE 조건을 벗어나면 거부된다. |
뷰는 정의와 조회 결과를 함께 확인한다. 테이블스페이스는 생성 여부뿐 아니라 테이블이 어느 저장 공간에 배치되었는지까지 확인해야 실습이 완성된다.
| 실수 | 증상 | 해결 |
|---|---|---|
| 뷰 교체 후 정의 미확인 | 예전 SELECT라고 착각 | SHOW CREATE VIEW 확인 |
| CHECK OPTION 조건 밖 INSERT | 입력 실패 | WHERE 조건을 만족하는 값 사용 |
| 조인 뷰에 무리한 INSERT | 수정 불가 오류 | 원본 테이블에 직접 INSERT |
| 원본 테이블 삭제 후 뷰 조회 | 뷰 조회 실패 | CHECK TABLE로 상태 확인 |
| 테이블스페이스 파일명 충돌 | 생성 실패 | 고유한 DATAFILE 이름 사용 |
CREATE OR REPLACE VIEW는 편리하지만 기존 뷰 정의를 덮어쓴다. 운영 환경에서는 교체 전 SHOW CREATE VIEW 결과를 백업해 두는 것이 안전하다.
테이블스페이스는 저장소 관리와 관련된 기능이므로 학습 환경에서 동작을 확인하고, 실제 운영에서는 스토리지 정책과 백업 정책을 함께 검토해야 한다.
| 결과 | 정상 해석 | 다음 확인 |
|---|---|---|
| DESCRIBE에 컬럼 3개 표시 | 뷰가 의도한 컬럼으로 만들어짐 | SELECT 결과 확인 |
| SHOW CREATE VIEW가 새 SELECT 표시 | OR REPLACE 적용됨 | 권한과 의존성 확인 |
| CHECK OPTION INSERT 실패 | 조건 위반 차단 | 입력값 수정 |
| CHECK TABLE 오류 | 원본 객체 문제 가능 | 원본 테이블 존재 확인 |
| TABLESPACE 이동 성공 | 저장 위치 변경됨 | SHOW TABLE STATUS 확인 |
| 체크 | 통과 기준 |
|---|---|
| 기존 title 유지 | HTML title을 바꾸지 않았다. |
| 원본 코드 포함 | md의 핵심 SQL을 본문에 반영했다. |
| 정의 확인 | DESCRIBE 또는 SHOW CREATE 명령을 안내했다. |
| 오류 해석 | 수정 불가, 조건 위반, 원본 삭제 오류를 구분했다. |
| 실습 정리 | 검산 쿼리와 판정 기준을 함께 제공했다. |
| 상황 | 문법 | 핵심 |
|---|---|---|
| 뷰를 덮어쓰기 | CREATE OR REPLACE VIEW | 기존 정의가 교체된다. |
| 뷰 조건 강제 | WITH CHECK OPTION | WHERE 조건 밖 변경을 막는다. |
| 뷰 정의 확인 | SHOW CREATE VIEW | 저장된 SELECT를 본다. |
| 테이블 저장 위치 지정 | TABLESPACE ts_a | 물리 저장 공간을 분리한다. |
| 뷰 상태 검사 | CHECK TABLE | 원본 객체 문제를 확인한다. |
| 작업 전 | 작업 후 | 확인 포인트 |
|---|---|---|
| 반복 SELECT | VIEW로 이름 부여 | 원본 SELECT와 결과 비교 |
| 기존 뷰 정의 | OR REPLACE로 교체 | SHOW CREATE VIEW 확인 |
| 조건 없는 변경 | CHECK OPTION으로 제한 | 조건 밖 INSERT 실패 확인 |
| 기본 저장 위치 | TABLESPACE 지정 | SHOW TABLE STATUS 확인 |
| 원본 테이블 의존 | 원본 삭제 시 뷰 오류 | CHECK TABLE로 상태 확인 |
뷰와 테이블스페이스 실습은 생성 명령만으로 끝내지 않는다. 정의 확인 명령과 실패 케이스를 함께 실행해야 이후에 같은 오류를 빠르게 해석할 수 있다.
핵심 요약
Tags
'php' 카테고리의 다른 글
| MySQL WITH CHECK OPTION — 뷰 삽입 제약 · CHECK TABLE 완전 정리 (0) | 2026.07.01 |
|---|---|
| MySQL TABLESPACE — 테이블스페이스로 물리 파일 분리 완전 정리 (0) | 2026.07.01 |
| MySQL INSERT · UPDATE — 데이터 추가·수정 완전 정리 (0) | 2026.07.01 |
| MySQL JOIN 복습 — INNER · LEFT OUTER 비교 완전 정리 (0) | 2026.07.01 |
| MySQL SQLDB 풀세트 — DB생성·테이블·데이터 한꺼번에 완전 정리 (0) | 2026.07.01 |
왕진 블로그

댓글