MySQL DB View - 자주 쓰는 쿼리 저장하기
페이지 정보
본문
View(뷰)
- 자주 쓰는 쿼리를 저장할 수 있다. (매일 확인하는 용도?)
- 쿼리 상에서만 존재하는 테이블이다.
테이블처럼 행동하고, 테이블에 할 수 있는 조작을 똑같이 수행할 수 있기 때문에
가상 테이블이라고도 한다.
하지만 가상 테이블은 DB 내에 존재하지 않는다. 가상 테이블은 View를 사용할 때 생성되고 후에 지워진다.
- 뷰를 사용하면 새 열이 데이터베이스에 추가될 때마다 새 정보가 뷰에 반영된다.
- Update, Insert, Delete에도 쓸 수 있다.(그러나 테이블에 바로 사용하는 편이 낫다.)
View 생성
Create View 뷰이름 AS
Select column From table1
Where title = 'ABC';
View 호출
Select * From 뷰이름
예)
생성 : 쿼터만을 가진 행을 출력하게 해주는 뷰를 작성한다.
Create View pb_quarters AS
Select * From piggy_bank
Where coin = 'Q';
호출 : 쿼터만을 가진 행만 출력하게 된다.
Select * From pb_quarters;
View 삭제
Drop View 뷰이름;
View 구조 보기
Desc 뷰이름;
모든 View 보기 (테이블과 같이 나온다)
Show tables;
* 참고
- 실제로 뷰는 서브쿼리처럼 동작한다.
아래 예를 참고하자
예)
Select * From web_designers;
를 분해해보면
Select * From
(Select mc.first_name, mc.last_name, mc.phone, mc.email
From my_contacts mc
Natural Join job_desired jd
Where jd.title = 'Web Designer') AS web_designers;
와 같다. 끝에 AS web_designers를 붙이는 이유는
From 절에는 테이블이 나와 있어야 하기 때문이다.
Select문이 가상 테이블을 반환하기는 하지만 별명(Alias)이 없이는 SQL이
이 테이블(뷰)에 접근할 방법이 없기 때문이다.
View의 장점
1. 데이터베이스의 구조를 변경하여도 테이블에 의존하는 어플리케이션을 변경할 필요가 없다.
2. 복잡한 쿼리를 간단한 명령으로 단순하게 만들 수 있어 편리하다.
3. 사용자에게 필요없는 정보를 숨기는 뷰를 만들 수 있다.
View 사용시 주의사항
1. 뷰가 집계 값(SUM, COUNT, AVG 같은)을 사용한다면, 데이터의 변경에 뷰를 사용할 수 없다.
2. 뷰에 Group By, Distinct, Having이 포함되어 있는 경우 데이터를 변경할 수 없다.
3. 테이블을 삭제하기전에 반드시 뷰를 먼저 삭제해야한다.
데이터베이스 시스템마다 다르나 MySQL의 경우 뷰에 관련된 테이블이 존재하지 않으면
그 뷰를 Drop할 수 없다.
업데이트 가능한 View
- 뷰와 관련 테이블의 데이터를 변경할 수 있는 뷰이다.
- 관련 테이블들의 Not Null 인 열들만을 포함하고 있어야 한다.
업데이트 불가능한 View
- 뷰와 관련된 테이블에 데이터를 Insert하거나 Update하는데 이용할 수 없는 뷰이다.
자료출처
http://warmz.tistory.com/281
댓글목록
등록된 댓글이 없습니다.