[11주차] SQL로 데이터 다루기 2

minLuna·2023년 5월 16일
0

엘리스 AI트랙 7기

목록 보기
55/62

본 자료는 Elice 플랫폼의 자료를 사용하여 정리하였습니다.

데이터 그룹 짓기

GROUP BY

  • SELECT COUNT(*) FROM 테이블명 GROUP BY 컬럼명;

데이터 그룹에 조건 적용하기

GROUP BY / HAVING

  • SELECT COUNT(*) FROM 테이블명 GROUP BY 컬럼명 HAVING 조건;

두 개의 테이블에서 조회하기

INNER JOIN

  • SELECT * FROM 테이블명1 INNER JOIN 테이블명2;

조건을 적용해 두 개의 테이블 조회하기

INNER JOIN

  • SELECT * FROM 테이블명1 INNER JOIN 테이블명2 ON 연결할 조건;

LEFT JOIN

LEFT JOIN

  • SELECT * FROM 테이블명1 LEFT JOIN 테이블명2 ON 연결할 조건;

INNER JOIN vs LEFT JOIN

RIGHT JOIN

RIGHT JOIN

  • SELECT * FROM 테이블명1 RIGHT JOIN 테이블명2 ON 연결할 조건;

LEFT JOIN vs RIGHT JOIN

서브쿼리

서브쿼리 정의

  • 하나의 쿼리 안에 포함된 또 하나의 쿼리
  • 메인 쿼리가 서브쿼리를 퐇마하는 종속적인 관계

서브쿼리의 특징

  • 알려지지 않은 기준을 이용한 검색에 유용
  • 메인쿼리가 실행되기 이전에 한 번만 실행
  • 한 문장에 여러 번 사용 가능

서브쿼리를 사용한 예시

SELECT * 
FROM employee
WHERE 급여 > (SELECT 급여
             FROM employee
             WHERE 이름 = 'elice');

서브쿼리 사용 시 주의사항

  • 서브쿼리는 괄호와 함께 사용되어야한다.
  • 서브쿼리 안에서 ORDER BY 절은 사용할 수 없다.
  • 서브쿼리는 연산자의 오른쪽에 사용되어야 한다.
  • 서브쿼리는 오로지 SELECT 문으로만 작성할 수 있다.

반환에 따른 분류

단일 행 서브쿼리 정의

  • 결과가 한 행만 나오는 서브쿼리
  • 서브쿼리가 결과를 1개의 값만 반환하고, 이 결과를 메인쿼리로 전달하는 쿼리

단일 행 서브쿼리 기본 문법

SELECT * 
FROM employee
WHERE 급여 > (SELECT 급여
             FROM employee
             WHERE 사원번호 = 1);
  • 연산자는 =, <>, >, >=, <, <=가 있다.

다중 행 서브쿼리 정의

  • 결과를 2개 이상 반환

다중 행 서브쿼리 기본 문법

SELECT * 
FROM employee
WHERE 급여 IN (SELECT MAX(급여)
              FROM employee
              GROUP BY 부서번호);
  • 연산자는 IN, ANY, ALL이 있다.

다중 행 연산자 사용 예시

1 in (1, 2, 3, 4)
10 <any (1, 2, 3, 4)
99 >=all (99, 100, 101)

위치에 따른 분류

스칼라 서브쿼리 정의

  • SELECT 절에서 사용하는 서브쿼리
  • 오직 한 행만 반환
  • 마치 JOIN을 사용한 것과 같은 결과를 나타낸다.

스칼라 서브쿼리 사용 방법

SELECT student.name, (SELECT math
					  FROM middle_test as m
                      WHERE m.student_id = students.student_id) AS middle_avg
FROM students;
profile
열심히

0개의 댓글