2021-11-5 데이터베이스 첫걸음 (9주차)
뷰를 작성하고 복수 테이블에서 선택
- 뷰를 작성할 때는 ‘CREATE VIEW’를 사용한다
CREATE VIEW citykyonggi as select id, name, population from city where
countrycode='KOR' and district='Kyonggi';
city테이블에서 경기도의 id name poulation을 표시하는 뷰(citykyonggi)를 작성
select * from citykyonggi; //설렉트로 조회 가능
- 서브쿼리
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
grout by district);
//각 행정구역 내에서 인구가 평균보다 많은 도시 표시
- 결합(내부결합, 외부결합)
- 위의 표는 한국어를 사용하는 국가를 조회한것이지만 국가코드로만 국가를 알아보기 힘들지만 국가코드로 국가명을 검색해서 조회
select countrylanguage.*, country.name from countrylanguage inner join country
on countrylanguage.countrycode = country.code where language = 'Korean';
뷰를 사용하는 이점
- 테이블과 동일하지만 테이블과 같은 데이터는 가지고있지 않으며 테이블에 대한 SELECT를 가지고 있다
- 복잡합 SELECT 문을 일일이 매번 기술할 필요가 없다
- 필요한 열과 행만 사용자에게 보여줄 수 있다, 뷰를 제거해도 참조하는 테이블은 영향이 없다
조인
- 2개의 태이블의 행을 결합
- Inner Join
- 행을 결합하기 위한 조건을 ON으로 지정한다. 내부결합에서는 지정한 조건에 일치하는 행만 가져온다
- OUTER JOIN
- 한 쪽 테이블 기준으로 천체 행을 표시하고 다른테이블은 값이 있으면 표시하고싶을 경우 자주 사용
- SELECT 열 FROM 첫번째 테이블 LEFT OUTER JOIN 두번쨰 테이블 ON 결합조건;
- 왼쪽테이블 전체 표시하고 일치하는값이 없으면 오른쪽엔 NULL
Written on November 5, 2021