Notice
Recent Posts
Recent Comments
Link
관리 메뉴

데브마우스

[SQL] 뷰(View) 정리 본문

데이터베이스/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, ...);