데이터베이스/SQL: 정리
[SQL] 뷰(View) 정리
데브마우스
2024. 1. 4. 12:09
뷰는 무엇인가요?
뷰는 '가상의 테이블'이라 부를 수 있습니다. 그렇다면 가상의 의미는 무엇일까요? '실체가 없다. 기능은 같다.'라는 의미를 가지고 있으며 IT에서는 가상 현실, 가상 화폐 등 많은 부분에서 사용되고 있습니다.
뷰의 특징은 다음과 같습니다.
- 가상의 테이블입니다.
- 데이터가 있는 주소를 가집니다. 윈도우즈의 바로가기 아이콘에 비유할 수 있습니다.
- 실제 테이블에 연결되어 있습니다.
- 뷰인지 알아 볼 수 있게 이름 앞에 v_를 붙이는 것이 일반적입니다.
뷰는 2가지로 나눌 수 있습니다: 단순 뷰(테이블 1개)와 복합 뷰(테이블 2개 이상)로 나눌 수 있습니다.
뷰는 어떻게 사용하나요?
뷰의 예제 코드는 다음과 같습니다.
-- 뷰 코드 형식
CREATE VIEW 뷰_이름
AS
SELECT 문;
뷰는 어떻게 작동하나요?
|
사용자
OR Java의 pstmt |
1. 조회 또는 변경 |
SELECT 문
|
2. 쿼리 실행 → |
테이블
|
||
| 4. 결과 ← | 3.쿼리 결과값 | |||||
뷰를 사용하는 이유는 무엇인가요?
- 보안(Security)을 위해서 사용합니다. 특정 컬럼의 접근을 제한하는 뷰를 생성할 수 있습니다.
- 복잡한 SQL을 단순하게 만들 수 있습니다. 자주 사용하는 SELECT문을 view로 단순하게 만들 수 있습니다.
뷰의 실제 생성, 수정, 삭제하는 방법입니다.
| 뷰 생성 코드 |
create view v_viewtest1
AS SELECT B.mem_id 'Member ID', M.mem_name as 'Member Name', B.prod_name "Product Name", concat(M.phone1, M.phone2) as "Office Phone" FROM buy B inner join member M ON B.mem_id = M.mem_id; |
| 뷰 수정 코드 |
alter view v_viewtest1
as select B.mem_id '회원 아이디', M.mem_name AS '회원 이름', B.prod_name "제품 이름", concat(M.phone1, M.phone2) AS "연락처" FROM buy B INNER JOIN member M ON B.mem_id = M.mem_id; |
| 뷰 삭제 코드 |
drop view v_viewtest1;
|
뷰의 정보를 확인하는 방법입니다.
-- DESC는 PK 등의 정보는 확인되지 않습니다.
DESCRIBE 뷰_이름;
DESC 뷰_이름;
-- 뷰의 소스 코드를 확인합니다.
SHOW CREATE VIEW 뷰_이름;
뷰를 통해 데이터를 수정 및 삭제하는 방법입니다.
뷰를 통해 데이터를 수정하는 방법입니다.
UPDATE v_member SET addr = '부산' WHERE mem_id = 'mouse';
뷰를 통해 데이터를 삭제하는 방법입니다.
DELETE FROM 뷰_이름 WHERE 조건식;
뷰를 통해 데이터를 입력하는 방법입니다.
뷰를 통해 데이터를 입력한다고 한다면 입력이 될 수도 있고 안될수도 있습니다.
주어진 뷰를 제외하고 원본 테이블의 NOT NULL처럼 필수로 입력해야하는 열(Column)이 있다면 뷰를 통해서 데이터를 입력할 수 없습니다.
뷰를 통해 데이터를 입력할 때는 아래 코드 형식을 따릅니다.
INSERT INTO 뷰_이름 VALUES(컬럼1, 컬럼2, ...);