[데이터처리와활용] 5강. 조인과 고급 검색, inline view, NVL 함수 정리

SQL 실습 — 조인과 고급 검색, inline view, NVL 함수 정리

이번 글에서는 SQL 실습을 통해
조인(JOIN), 별칭(alias), 집계 정렬, 결과 개수 제한, inline view, NVL 함수 사용법을 익혀보겠습니다.
데이터베이스 초보자분도 쉽게 이해할 수 있도록 개념부터 예제까지 차근차근 설명합니다.

테이블 별칭과 테이블 정식 이름 사용

SQL에서 테이블을 긴 이름 대신 짧게 별칭(alias)으로 지정해 사용하면
쿼리를 더 간결하게 작성할 수 있습니다.

1
2
3
select s.sname, s.dname
from student s
where s.eyear=2020;
cs

여기서 s가 student 테이블의 별칭입니다.

질의 결과 개수 한정 (rownum, limit)

결과 행의 개수를 제한하는 방법입니다.

  • Oracle: rownum

  • MySQL: limit

예시 (MySQL)

1
2
3
select * from student
where eyear=2020
limit 5;
cs

조인 (JOIN)

두 개 이상의 테이블을 연결하는 방식입니다.

1. INNER JOIN

조건을 만족하는 값만 출력합니다.

1
2
3
select s.sname, t.cno
from student s, take_course t
where s.sno = t.sno;
cs

2. OUTER JOIN

조건이 없어도 한쪽 테이블의 데이터를 모두 보여주는 방식입니다.

  • LEFT OUTER JOIN: 왼쪽 테이블을 모두 표시

  • RIGHT OUTER JOIN: 오른쪽 테이블을 모두 표시

1
2
3
4
select p.pname, c.cno
from professor p
left outer join teach_course c
on p.pno = c.pno;
cs

where 절 위치에 따라 결과가 달라지므로 주의합니다.

집계 정렬과 NVL 함수

NVL 함수

NULL 값을 다른 값으로 대체하는 함수입니다.

1
2
select pname, nvl(salary, 0)
from professor;
cs

NULL 값이면 0으로 표시합니다.

inline view (인라인뷰)

쿼리 내부에서 가상 테이블을 만들어 사용하는 방법입니다.

예시

1
2
3
select cname
from (select cno, cname from course where dname=‘컴공학과’)
where cno > 3000;
cs

위에서 select cno, cname from course where dname='컴공학과' 부분이 인라인뷰입니다.

View와 Inline View의 차이점

구분 View Inline View
정의 데이터베이스에 고정적으로 정의해 두는 가상 테이블 SQL 실행 시 즉석에서 만들어지는 가상 테이블
생성 CREATE VIEW 문으로 생성 SELECT문 안에 FROM 절에 서브쿼리 형태로 작성
저장여부 데이터베이스에 저장 저장 안 함, 일회성
재사용성 여러 쿼리에서 재사용 가능 해당 쿼리에서만 사용 가능
주 사용 목적 자주 사용하는 복잡한 질의를 간단하게 재사용 복잡한 질의 중 특정 부분의 결과를 임시 테이블로 활용

 


2019~2020년 강의한 교수, 과목, 학생정보 조회 실습

1. 2019년 강의 교수

1
2
3
select pno, cno
from teach_course
where eyear=2019;
cs

2. 2020년 같은 과목 강의 확인

1
2
3
select pno, cno
from teach_course
where eyear=2020;
cs

3. 2019년 이전 입학한 학생 조회

1
2
3
select *
from student
where eyear < 2019;
cs

중요 내용 정리

구분 설명
table alias 테이블 별칭
rownum/limit 결과 개수 제한
inner join 조건 만족 데이터만 조회
outer join 한쪽 테이블 데이터 모두 표시
nvl 함수 NULL 값 대체
inline view 가상 테이블
정렬 order by
집계 정렬 group by, having

객관식 3문제 + 정답과 해설

Q1. 다음 중 inner join의 특징은 무엇인가요?

① 한쪽 테이블 데이터를 모두 출력
② 조인조건을 만족하는 데이터만 출력
③ null 값을 모두 대체
④ limit 없이 결과 모두 표시

정답: ②
해설: inner join은 조건을 만족하는 데이터만 보여줍니다.

Q2. null 값을 다른 값으로 바꿀 때 사용하는 함수는?

① avg
② nvl
③ rownum
④ count

정답: ②
해설: nvl 함수는 null 값을 대체합니다.

Q3. 결과 개수 제한할 때 MySQL에서 사용하는 문법은?

① order by
② limit
③ group by
④ having

정답: ②
해설: limit를 사용해 결과 행 수를 제한합니다.

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다