안녕하세요 연봉 1억 개발자 dev-woo 입니다.
오늘은 DB에서 많이 쓰고 있는 View 테이블(가상 테이블)에 대해서 알아 보겠습ㄴ디ㅏ
가상 테이블은 실제로 데이터를 저장하고 있는 것은 아니지만, 외부 테이블을 조회한 결과를 가상으로 생성하는 역할을 합니다.
가상 테이블이란?
가상 테이블은 실제로 데이터를 저장하고 있는 것은 아니지만, 외부 테이블을 조회한 결과를 가상으로 생성하는 역할을 합니다. 이를 통해 사용자는 여러 개의 테이블을 하나의 뷰(View)로 볼 수 있고, 뷰를 통해 데이터를 조회하거나 수정할 수 있습니다.
가상 테이블은 일종의 필터 역할을 하며, 특정 조건에 부합하는 데이터만을 추출할 수 있습니다. 또한, 가상 테이블은 데이터 무결성과 보안 측면에서도 효과적인 역할을 합니다. 만약 뷰를 통해 조회 가능한 테이블에 대해 보안 상의 이슈가 발생한다면, 해당 뷰만 변경하면 되기 때문입니다.
가상 테이블 생성 방법
가상 테이블을 생성하는 방법은 간단합니다. 다음과 같은 SQL 문장을 사용하면 됩니다.
CREATE VIEW [뷰 이름] AS
SELECT [컬럼 1], [컬럼 2], ... ,[컬럼 n]
FROM [테이블 이름]
WHERE [조건];
위 문장에서 [뷰 이름]은 생성하고자 하는 가상 테이블의 이름을, [컬럼 1], [컬럼 2], ... ,[컬럼 n]은 조회하고자 하는 컬럼의 이름을, [테이블 이름]은 조회할 실제 테이블의 이름을, [조건]은 조회할 데이터의 조건을 의미합니다.
예를 들어, 고객 정보를 보유한 Customers 테이블에서 이름, 전화번호, 이메일 정보만을 추출하는 가상 테이블을 생성하고자 한다면 다음과 같은 SQL문을 사용할 수 있습니다.
CREATE VIEW customer_info AS
SELECT name, phone, email
FROM Customers;
위 SQL 문장을 실행하면 customer_info 라는 이름의 가상 테이블이 생성되며, 해당 테이블을 조회할 경우에는 Customers 테이블에서 조회한 결과를 가상으로 생성한 것을 확인할 수 있습니다.
가상 테이블의 활용
가상 테이블은 여러 가지 방식으로 활용될 수 있습니다. 예를 들어, 가상 테이블을 이용하여 복잡한 SQL 문장을 간단하게 작성하거나, 여러 개의 테이블을 일원화하여 간편하게 데이터를 처리하는 등의 방식이 있습니다.
가상 테이블을 이용하여 복잡한 SQL 문장을 간단하게 작성할 수 있는 경우는, 여러 개의 테이블에서 조인(Join)을 사용하여 데이터를 추출해야 하는 경우입니다. 조인을 사용하면 데이터를 추출하는 문장이 복잡해지기 때문에, 이를 간단하게 작성하기 위해서는 가상 테이블을 활용할 수 있습니다.
예를 들어, 대출 상태를 보유한 Customers 테이블과 대출 정보를 나타내는 Loans 테이블이 있을 경우, 다음과 같은 SQL 문장을 사용하여 두 테이블의 데이터를 추출할 수 있습니다.
SELECT Customers.name, Loans.loan_id, Loans.amount
FROM Customers, Loans
WHERE Customers.customer_id = Loans.customer_id
AND Loans.status = 'PENDING';
위 SQL 문장은 Customers 테이블과 Loans 테이블을 조인하여, 대출 상태가 'PENDING'인 데이터만을 추출하고 있습니다. 하지만 이를 간단하게 작성하기 위해서는 가상 테이블을 사용할 수 있습니다. 즉, 다음과 같이 대출 상태가 'PENDING'인 데이터만을 추출하는 가상 테이블(pending_loans)을 생성하여, 해당 테이블을 조회하는 방식으로 데이터를 추출할 수 있습니다.
CREATE VIEW pending_loans AS
SELECT *
FROM Customers, Loans
WHERE Customers.customer_id = Loans.customer_id
AND Loans.status = 'PENDING';
SELECT name, loan_id, amount
FROM pending_loans;
위 코드에서는 먼저 Customers 테이블과 Loans 테이블을 조인하여 뷰를 생성한 후, 해당 뷰(pending_loans)를 조회하여 데이터를 추출하고 있습니다. 이를 통해 복잡한 SQL 문장을 간단하게 작성할 수 있습니다.
또한, 가상 테이블은 여러 개의 테이블을 일원화하여 간편하게 데이터를 처리하는데에도 효과적입니다. 예를 들어, 고객 정보와 대출 정보가 저장되어 있는 Customers 테이블과 Loans 테이블이 있을 경우, 다음과 같은 가상 테이블을 생성하여 각각의 정보를 하나의 테이블로 통합할 수 있습니다.
CREATE VIEW customer_loan_info AS
SELECT Customers.name, Customers.age, Loans.loan_id, Loans.amount, Loans.status
FROM Customers, Loans
WHERE Customers.customer_id = Loans.customer_id;
위 코드에서는 Customers 테이블과 Loans 테이블을 조인하여, 각각의 정보를 하나의 테이블로 통합한 customer_loan_info 라는 이름의 가상 테이블을 생성하고 있습니다. 이를 활용하면, 각각의 테이블에서 데이터를 추출하여 이를 병합하는 번거로움을 피할 수 있습니다.
결론
가상 테이블은 실제로 데이터를 저장하고 있는 것은 아니지만, 외부 테이블을 조회한 결과를 가상으로 생성하여 데이터를 필터링하고, 외부 테이블을 일원화하여 처리함으로써 데이터 처리의 효율성을 높일 수 있습니다. 따라서, SQL을 활용하는 개발자라면 가상 테이블의 개념과 활용 방법에 대해 꼭 숙지하여 데이터 조회 및 처리에 활용할 수 있도록 해야 합니다.
댓글