본문 바로가기
DB/MySQL

뷰(view) 작성

by avvin 2019. 5. 5.

뷰(view) 작성


city 테이블에서 경기도의 id, name, population을 표시하는 'citykyonggi 뷰 테이블 작성하기


create view citykyonggi as select id, name, population from city where countrycode='KOR' and district='Kyonggi';


select * from citykyonggi;





서브쿼리 실행해보기


*서브쿼리(subquery)

쿼리 결과를 테이블 또는 값으로 외부 쿼리에서 사용할 수 있게끔 도와주는 쿼리(sql문 안의 sql문)


한국의 도시만을 가진 뷰 작성


create view citykorea as select id, name, district, population from city where countrycode='KOR';

 

select count(*) from citykorea where population > (select avg(population) from citykorea);



select district, name, population from citykorea as c1 

where population > (select avg(population) from citykorea as c2 where c1.district = c2.district group by district );

????


(임시저장)


뷰의 작성과 서브쿼리 및 결합


뷰를 사용하는 이점

뷰는 sql 시점에서 보면 테이블과 동일하지만 테이블과 같은 데이터는 가지고 있지 않으묘 테이블에 대한 SELECT를 가지고 있다.


1. 복잡한 SELECT 문을 일일이 매번 기술할 필요가 없다.

2. 필요한 열과 행만 사용자에게 보여줄 수 있고 갱신 시에도 뷰 정의에 따른 갱신으로 한정할 수 있다.

3. 1과 2의 이점을 데이터 저장 없이(기억장치의 용량을 사용하지 않고) 실현할 수 있다. 

   또한 뷰를 제거해도 참조하는 테이블은 영향을 받지 않는다.


뷰 작성


CREATE VIEW 뷰 명 (열명1, 열명2, ...) AS SELECT  ;


VIEW의 입력, 갱신에는 제한이 붙는다.



서브쿼리의 실행이란


SELECT문의 결과는 택한 열과 행으로 구성된 테이블 형식. 

이 형식으로 하나의 열과 행으로 구성된 테이블 즉, 단일값으로 구성된 SELECT문의 결과를 데이터처럼 다뤄 조건문에 이용

이러한 쿼리를 메인 쿼리와 대비하여 서브쿼리하고 한다.



결합(JOIN)


하나의 테이블에 있는 열만으로는 데이터가 충족되지 않는 경우에 다른 테이블에서 열을 가지고 오는 조작



내부 결합(Inner Join)


결합은 2개의 테이블에서 필요한 열을 가지고 올 때 행을 결합하기 위한 조전을 ON으로 지정


SELECT 선택하고싶은 열 리스트 FROM 첫 번째 테이블명 INNER JOIN 두 번째 테이블명 ON 결합조건;


select countrylanguage.*, country.name from countrylanguage inner join country 

on countrylanguage.countrycode = country.code where language = 'Korean';



선택하고싶은 열 리스트 : countrylanguage.*, country.name


첫 번째 테이블명 INNER JOIN 두 번째 테이블명 :  countrylanguage inner join country 


ON 결합조건 : countrylanguage.countrycode = country.code//비교하고자하는 열 앞에 dot으로 구분하여 참조 테이블 표시




외부결합(Outer Join)









'DB > MySQL' 카테고리의 다른 글

[이것이 MySQL이다] 07. SQL 고급(1)  (0) 2019.07.25
mysql function 생성하기  (0) 2019.07.25
MySQL 시퀀스 사용  (0) 2019.07.25
MySQL - DB/테이블 관리 기본 명령어  (0) 2019.07.23
HeidiSQL을 이용해 DB 테이블 생성  (0) 2019.05.03