[MySQL] SELECT문

🚀 기본 조회하기: SELECT ~ FROM

💡 SELECT문 기본 형식

SELECT  열_이름
  FROM  테이블_이름
  WHERE 조건식
  GROUP BY  열_이름
  HAVING  조건식
  ORDER BY  열_이름
  LIMIT 숫자 [OFFSET 숫자]

💡 [WHERE] BETWEEN ~ AND

SELECT  mem_name, height
  FROM  member
  WHERE height >= 163 AND height <= 165;
SELECT  mem_name, height
  FROM  member
  WHERE height BETWEEN 163 AND 165;

💡 [WHERE] IN()

SELECT  mem_name, addr
  FROM  member
  WHERE addr = '경기' OR addr = '전남' OR addr = '경남';
SELECT  mem_name, addr
  FROM  member
  WHERE addr IN ('경기', '전남', '경남');

💡 [WHERE] LIKE

  • 문자열의 일부 글자 검색시 LIKE 사용

  • 무엇이든 허용(%)

SELECT  *
  FROM    member
  WHERE   mem_name LIKE '우%';
  • 한 글자와 매치하기 위해 언더바(_) 사용
SELECT  *
  FROM    member
  WHERE   mem_name LIKE '__핑크';

🚀 ORDER BY 절

  • 결과 값이나 개수에 대해서는 영향을 미치지 않지만, 결과가 출력되는 순서를 조절
  • 기본값(DEFAULE)은 ASC(Ascending, 오름차순), DESC(Descending, 내림차순)
SELECT  mem_id, mem_name, debut_date, height
  FROM  member
  WHERE height >= 164
  ORDER BY height DESC, debut_date ASC;  -- 정렬 우선순위 설정 가능

💡 LIMIT

  • 출력 개수 제한
  • LIMIT 은 첫 데이터를 0번으로 설정하고 시작

LIMIT 형식

LIMIT 시작, 개수
LIMIT 개수 OFFSET 시작 -- 위와 동일한 결과
SELECT  mem_name, height
  FROM  member
  ORDER BY height DESC
  LIMIT 3, 2;   -- 3번째부터 2건만 조회

💡 DISTINCT

  • 중복된 결과 제거하고 결과값을 1개만 남김
SELECT DISTINCT addr
  FROM  member;

🚀 GROUP BY 절

💡 집계함수(Aggregate Function)

  • 주로 GROUP BY 절과 함께 쓰이며 데이터를 그룹화(grouping) 해주는 기능
  함수명   설명
SUM() 합계를 구합니다.
AVG() 평균을 구합니다.
MIN() 최소값을 구합니다.
MAX() 최대값을 구합니다.
COUNT() 행의 개수를 셉니다.
COUNT(DISTINCT) 행의 개수를 셉니다(중복은 1개만 인정).  

1️⃣ 회원별 총 구매 개수

SELECT  mem_id "회원 아이디", SUM(amount) "총 구매 개수"
  FROM  buy
  GROUP BY mem_id;

2️⃣ 회원이 구매한 금액의 총합

SELECT  mem_id "회원 아이디", SUM(price * amount) "총 구매 금액"
  FROM  buy
  GROUP BY mem_id;

3️⃣ 각 회원의 평균 구매 개수

SELECT  mem_id, AVG(amount) "평균 구매 개수"
  FROM  buy
  GROUP BY mem_id;

4️⃣ 연락처가 “있는” 회원의 수만 카운트

SELECT  COUNT(phone1) "연락처가 있는 회원"
  FROM  member;

💡 Having 절

  • WHERE와 비슷한 개념으로 조건을 제한하는 것이지만, 집계함수에 대해 조건을 제한하는 것
  • 반드시 GROUP BY 절 다음에 나와야 함
  • 회원별 총 구매액이 1000보다 큰 회원만 추출
SELECT  mem_id "회원 아이디", SUM(price * amount) "총 구매 금액"
  FROM  buy
  GROUP BY mem_id
  HAVING SUM(price * amount) > 1000;

Categories:

Updated:

Leave a comment