'SQL 첫걸음' 공부 -Day 7

윤현묵·2021년 12월 14일
0

MySQL

목록 보기
8/12
post-thumbnail

[학습 DAY - 7]

22강 그룹화 - GROUP BY

  • GROUP BY로 그룹화
    -. 열에서 같은 값을 가진 행끼리 묶어 그룹화 가능
    -. DISTINCT와 같이 중복 제거 효과

    • SELECT * FROM sample51;
    • SELECT name FROM sample51 GROUP BY name;
  • HAVING 구로 조건 지정
    -. 내부 처리 순서가 WHERE → GROUP BY → SELECT → ORDER BY 순이기 때문에 WHERE구 사용 불가 → HAVING구를 사용하여 조건식 지정
    -. GROUP BY 뒤에 WHERE구와 같이 사용

  • 복수열의 그룹화
    -. GROUP BY에 지정하지 않은 열은 SELECT에 기술하면 안됨(어떤 값을 반환해야 할 지 모름)

  • 결과값 정렬은 ORDER BY구로 지정하여 정렬

23강 서브쿼리

  • SELECT 명령어에 의한 데이터 질의로 상부가 아닌 하부의 부수적인 질의를 의미

  • DELETE의 WHERE 구에서 서브쿼리 사용하기

    • 테이블의 최소값 삭제하기
      DELETE FROM sample54 WHERE a = (SELECT MIN(a) FROM sample54);
      → 아래 테이블의 최소값 a=20 삭제
  • 스칼라 값
    -. SELECT 명령이 하나의 값만 반환하는 것을 스칼라 값을 반환한다고 함(단일 행, 단일 열)
    -. =연산자를 사용하여 비교할 경우에는 스칼라 값끼리 비교

  • SELECT, SET 구에서 서브쿼리 사용하기
    -. SELECT 구, UPDATE의 SET 구 등 다양한 구 안에서 지정 가능
    -. SELECT 구에서 서브쿼리를 지정할 때는 스칼라 서브쿼리 필요

    • SELECT (SELECT COUNT() FROM sample51) AS sq1, (SELECT COUNT() FROM sample54) AS sq2;
  • FROM 구에서 서브쿼리 사용하기
    -. FROM 구에서도 서브쿼리 사용 가능
    -. 서브쿼리 기술방법: 괄호로 SELECT 명령을 묶음
    -. SELECT 구, SET 구에서는 스칼라 서브쿼리를 지정해야 하지만 FROM 구에 기술할 경우에는 스칼라 값을 반환하지 않아도 됨
    -. SELECT 명령 안에 SELECT 명령이 들어있는 듯 한 구조를 네스티드(nested)구조 또는 중첩구조, 내포구조라고 부름
    -. sq는 테이블의 별명으로, Sub Query

    • 사용 예시
  • INSERT 명령과 서브쿼리
    -. INSERT 명령과 서브쿼리 조합하여 사용 가능
    -. INSERT 명령에는 VALUES 구의 일부로 서브쿼리를 사용하는 경우와, VALUES 구 대신 SELECT 명령을 사용하는 두 가지 방법이 있음
    -. INSERT INTO ~~ VALUES(~~) or INSERT INTO ~~ SELECT ~~

profile
진정성 있는 개발자를 꿈꾼다

0개의 댓글