프로그래밍 언어/SQL

<SQL> DML -JOIN-

창조적생각 2021. 9. 28. 21:02

1. Inner Join

 

2. Outer Join

 

1. Inner Join 

 

2개의 릴레이션에서 연관된 튜플들을 결합하여, 하나의 새로운 릴레이션을 반환한다.

 

형식

 

WHERE 절

1
SELECT 테이블명1.속성명, 테이블명2.속성명 FROM 테이블명1, 테이블명2 WHERE 테이블명1.속성명 = 테이블명2.
cs

 

NATURAL JOIN

1
SELECT 속성명, 속성명 FROM 테이블명1 NATURAL JOIN 테이블명2;
cs

 

JOIN ~ USING절

 

1
SELECT 속성명, 속성명 FROM 테이블명1 JOIN 테이블명2 USING(속성명);
cs

 

[사용예제]

 

사용한 테이블

학생
학과
등급

 

▷ 학생 테이블과 학과 테이블에서 학과코드 값이 같은 튜플을 JOIN하여 학번,이름,학과코드,학과명을 출력하는 SQL문을 작성하라

 

1) WHERE 절 사용

1
SELECT 학번,이름,학생.학과코드,학과명 FROM 학생,학과 WHERE 학생.학과코드=학과.학과코드;
cs

 

2) NATURAL JOIN

1
SELECT 학번,이름,학과코드,학과명 FROM 학생 NATURAL JOIN 학과;
cs

 

3) JOIN USING

1
SELECT 학번,이름,학과코드,학과명 FROM 학생 JOIN 학과 USING(학과코드);
cs

[실행결과]

▷학생 테이블과 성적등급 테이블을 JOIN하여 각 학생의 '학번','이름','성적','등급'을 출력하는 SQL문을 작성하시오

 

1
SELECT 학번,이름,성적,등급 FROM 학생,성적등급 WHERE 학생.성적 BETWEEN 성적등급.최저 AND 성적등급.최고;
cs

 

[실행결과]

2. OUTER JOIN

 

LEFT OUTER JOIN : INNER JOIN의 결과를 구한 후, 우측 항 릴레이션의 어떤 튜플과도 맞지 않는 좌측 항의 릴레이션에 있는 튜플들에 NULL값을 붙여서 INNER JOIN의 결과에 추가한다.

 

1
SELECT 테이블명1.속성명, 테이블명2.속성명 FROM 테이블명1 LEFT OUTER JOIN 테이블명2 ON 테이블명1.속성명 = 테이블명2.속성명;
cs

 

 

RIGHT OUTER JOIN: INNER JOIN의 결과를 구한 후, 좌측 항 릴레이션의 어떤 튜플과도 맞지 않는 우측 항의 릴레이션에 있는 튜플들에 NULL값을 붙여서 INNER JOIN의 결과에 추가한다.

1
SELECT 테이블명1.속성명, 테이블명2.속성명 FROM 테이블명1 RIGHT OUTER JOIN 테이블명2 ON 테이블명1.속성명 = 테이블명2.속성명;
cs

 

 

사용 예제

 

학생 테이블과 학과 테이블에서 학과코드 값이 같은 튜플을 조인하여 학번,이름,학과코드,학과명을 출력하는 SQL문을 작성

1
2
select 학번,이름,학생.학과코드,학과명 from 학생 left outer join 학과 on 학생.학과코드=학과.학과코드;
select 학번,이름,학생.학과코드,학과명 from 학생 right outer join 학과 on 학생.학과코드=학과.학과코드;
cs

 

728x90