[TIL] SQL로 다수의 테이블 제어하기

meek·2023년 3월 15일
0

/*elice*/

목록 보기
4/21

데이터 그룹 짓기

🐢 GROUP BY

    
	SELECT (컬럼명), COUNT(*)
    FROM (테이블명)
    GROUP BY (컬럼명); // 그룹의 기준 컬럼
    
👉 select (컬럼명) 후에 ','를 꼭 붙여야 한다.
👉 count(*)는 count와 괄호 간의 띄어쓰기가 없이 붙여서 작성해야 한다.
  • SUM, AVG, COUNT, MAX, MIN을 활용하면 더 잘 활용할 수 있다.
  // 그룹함수 활용 방법
  SELECT user_id, SUM(컬럼명) FROM rental GROUP BY user_id;
  // 컬럼의 내용을 다 더한 값을 출력

  SELECT user_id, AVG(컬럼명) FROM rental GROUP BY user_id;
  // 컬럼의 평균을 출력

  SELECT user_id, MAX(컬럼명) FROM rental GROUP BY user_id;
  // 컬럼명이 가장 큰 값을 출력

  SELECT user_id, MIN(컬럼명) FROM rental GROUP BY user_id;
  // 컬럼명이 가장 작은 값을 출력

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

🐢 HAVING

  • GROUP BY에 조건을 적용하고 싶을 때 사용한다.
	SELECT (컬럼명), COUNT(*)
    FROM (테이블명)
    GROUP BY (컬럼명)
    HAVING COUNT(컬럼명) > (숫자);
  • GROUP BY (컬럼명)을 기준으로 묶게 된다.
  • SELECT (컬럼명)과 GROUP BY(컬럼명)의 컬럼명은 동일하지만 HAVING 절에 들어가는 컬럼명은 다르게 들어갈 수도 있다.

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

  • 테이블하나를 크게 만드는 것은 용량이 크고, 관리도 어렵고, 분석하는 사람도 힘듦.-> 테이블의 기능이나 특징별로 나눠서 줄이는 편

  • 우리나라 데이터 관련 법상 한 사람을 특정할 수 있는 모든 데이터를 한 테이블에 넣으면 안됨 -> 해킹을 당했을 경우 개인정보법 관련한 이슈 발생 위험

🐢 INNER JOIN

  • join : 여러 개의 테이블을 서로 연결하는 것이다. inner join, left join, right join의 종류가 있다.
	SELECT (검색할 컬럼명)
    FROM (테이블명1)
    INNER JOIN (테이블명2);
    // 테이블명1과 테이블명2를 연결(join)
🐢 INNER JOIN 에서 조건 ON 추가하기
	SELECT (검색할 컬럼명)
    FROM (테이블명1)
    INNER JOIN (연결할 테이블2)
    ON(조건추가) (연결할 테이블명2).(컬럼명) = (테이블명 1).(컬럼명);
    
    // 테이블이름. 컬럼명으로 구분
  • join을 할 때마다 많은 테이블이 있다. (테이블).(컬럼)을 해주지 않으면 열의 정의가 애매합니다라는 에러가 발생한다.

🐢 LEFT JOIN

  • 테이블들을 join했는데 값이 없을 때 null을 넣는다. 예를 들어 테이블1에서 a에 해당하는 값이 있지만, 테이블 2에는 a에 해당하는 값이 없을 때 null을 넣는 것이다. null은 어차피 데이터가 없는 것인데 필요할까?라고 생각할 수도 있지만 실무에서는 유의미할 때도 있다. 그래서 left join을 사용한다.
	// 기본 문법은 INNER JOIN, RIGHT JOIN과 동일
    SELECT (검색할 컬럼명)
    FROM (테이블1)
    LEFT JOIN (연결할 테이블)
    ON (테이블1).(컬럼명) = (연결할 테이블).(컬럼명);
  • from 뒤에는 더 중점을 둬야하는 쪽, 더 중요한 쪽에 해당하는 테이블을 입력한다.
INNER JOIN과 LEFT JOIN 비교
  • Inner Join은 교집합, 두 데이터 중 겹치는 부분만 조회한다. Left Join은 왼쪽 데이터와 겹치는 부분을 모두 조회한다는 큰 차이점이 있다.

🐢 RIGHT JOIN

	SELECT *
    FROM (테이블1)
    RIGHT JOIN (연결할 테이블)
    ON (테이블1).(컬럼명) = (테이블2).(컬럼명);
  • right join에서도 from 뒤에 더 중요한 쪽에 해당하는 테이블명을 입력한다.

정리

✨ 데이터 그룹 짓기 : GROUP BY
✨ 데이터 그룹 짓기 + 조건 추가하기 : having
✨ 두 개의 테이블 조회하기 : inner join, left join, right join
✨ 두 개의 테이블 조회하기 + 조건 추가하기 : on

profile
hello, world!

0개의 댓글