서버 개발/MySQL

MySQL - (3) VIEW

Johnny Yoon 2019. 8. 9. 20:08
728x90
반응형

 

MySQL 포스팅

(1) SELECT

(2) 집계함수

(3) VIEW

(4) 윈도우 함수

(5) 데이터 갱신

(6) 조건 분기

(7) JOIN


VIEW

SQL에서 VIEW란 SELECT문을 내장하는 가상 테이블을 만드는 것입니다.

실제 데이터를 저장하고 있는 것이 아니라, SELECT문을 저장하는 구조 입니다.

 

VIEW를 만드는 기본 문법은 다음과 같습니다.

CREATE VIEW 뷰이름
AS SELECT문

 

예제

지난번에 사용했던 데이터를 사용해 View를 만들어보도록 하겠습니다.

아래의 쿼리는 Customer데이터에서 이름과 나라를 골라 View를 만드는 예제입니다.

CREATE VIEW NameAndCountry(cname, country)
AS
(SELECT CustomerName, country FROM customers)

 

위와 같이 View를 생성하고, show tables를 사용해 테이블들을 출력하면, 아래와 같은 결과가 나옵니다.

따라서 View 역시 기본 테이블들과 같이 DROP VIEW를 사용해 삭제시키면 됩니다.

 

SELECT

View로 생성된 가상테이블에도 select문을 쿼리할 수 있습니다.

이것은 중첩된 select문과 같은 원리 입니다.

SELECT country, count(*)
FROM NameAndCountry
GROUP BY country;

 

위와 같이 실행하면, 나라 당 Customer의 수를 얻을 수 있습니다.

위 쿼리의 상위 5개 결과는 다음과 같습니다.

 

서브쿼리

위와 같이 View를 만들어 중첩된 쿼리를 할 수도 있지만, 익명의 View를 만들어 사용하는 방법도 있습니다.

이것은 단순하게 select문을 중첩해 사용하는 방식인데요, 이를 서브쿼리라고 합니다.

 

Select문을 실행하게 되면, 익명의 View가 생성되고, 이에 다시 쿼리를 날리는 형식입니다.

위에서 했던 예제와 같은 기능을 View를 생성하지 않고 하는 방법은 다음과 같습니다.

SELECT country, COUNT(*)
FROM (
	SELECT CustomerName AS cname, Country AS country FROM customers
) AS NameAndCountry
GROUP BY country;

FROM 뒤의 괄호를 보면  SELECT문을 사용해 customers에서 컬럼을 가져옵니다.

각 컬럼은 AS를 사용해 새로운 이름을 부여합니다.

그리고 괄호 뒤에는 AS를 사용해 View의 Alias를 만들어줍니다.

 

위의 쿼리의 실행 결과 중 상위 5개는 다음과 같습니다.

여기까지 View와 서브쿼리에 대해서 알아봤습니다.

 


MySQL 포스팅

(1) SELECT

(2) 집계함수

(3) VIEW

(4) 윈도우 함수

(5) 데이터 갱신

(6) 조건 분기

(7) JOIN


참고자료

https://www.w3schools.com/sql

SQL 레벨업 : DB 성능 최적화를 위한 SQL 실전 가이드, 한빛미디어

728x90
반응형

'서버 개발 > MySQL' 카테고리의 다른 글

MySQL - (6) 조건분기  (0) 2019.08.10
MySQL - (5) 데이터 갱신  (0) 2019.08.10
MySQL - (4) 윈도우 함수  (0) 2019.08.10
MySQL - (2) 집계함수  (0) 2019.08.08
MySQL - (1) SELECT  (0) 2019.08.08