SQL 기본 문법 WHERE, GROUP BY, HAVING, ORDER BY, JOIN

yy·2024년 3월 28일
0

잡동산이

목록 보기
16/21

WHERE

1. 비교 연산자

= : 같음.
< : 작음.
<= : 작거나 같음.
> : 큼.
>= : 크거나 같음.


2. 부정 비교 연산자

!= : 같지 않음.
^= : 같지 않음.
<> : 같지 않음.
NOT 컬럼명 = : 같지 않음.
NOT 컬럼명 > : 크지 않음.


3. SQL 연산자

BETWEEN A AND B : A와 B의 사이(A,B 포함)
LIKE '비교 문자열' : 비교 문자열을 포함
IN (LIST) : LIST 중 하나와 일치
IS NULL : NULL값


4. 부정 SQL 연산자

NOT BETWEEN A AND B : A와 B의 사이가 아님(A,B 미포함)
NOT IN (LIST) : LIST 중 일치하는 것이 없음
IS NOT NULL : NULL값이 아님


5. 논리 연산자

AND : 모든 조건이 TRUE여야 함
OR : 하나 이상의 조건이 TRUE여야 함
NOT : TRUE면 FALSE이고 FALSE이면 TRUE



GROUP BY, HAVING

1. 집계함수

COUNT(*) : 전체 ROW를 COUNT하여 반환
COUNT(컬럼) : 컬럼값 NULL인 ROW 제외 후 COUNT 반환
COUNT(DISTINCT 컬럼) : 컬럼값이 NULL이 아닌 ROW에서 중복 제거 후 COUNT 반환
SUM(컬럼) : 컬럼값들 합계 반환
AVG(컬럼) : 컬럼값들 평균 반환
MIN(컬럼) : 컬럼값들 중 최솟값 반환
MAX(컬럼) : 컬럼값들 중 최댓값 반환


2. HAVING

  • GROUP BY절을 사용시 WHERE 절처럼 사용하는 조건절. 주로 데이터를 그룹핑 후 특정 그룹을 골라낼때 사용.
  • HAVING절은 논리적으로 SELECT절 전에 수행되기에 SELECT절에 명시되지 않은 집계함수로도 조건을 부여할 수 있음.
  • 주의점: WHERE절을 사용해도 되는 조건까지 HAVING을 사용해버리면 성능상 불리할 수 있음. WHERE절에서 필터링이 선행되어야 GROUP BY할 데이터량이 줄어들기 때문. GROUP BY는 비교적 많은 비용이 드는 작업이므로 수행 전 데이터량을 최소로 줄여놓는 것이 바람직.



ORDER BY

  • ORDER BY절을 사용하여 SELECT한 데이터 정렬 가능. ORDER BY절을 따로 명시하지않으면 데이터는 임의의 순서대로 출력. ORDER BY절 뒤에 정렬의 기준으 되는 컬럼을 오게할 수 있음.
  • ORDER BY절은 논리적으로 SELECT 다음 수행되므로 SELECT에서 정의한 ALIAS를 사용할 수 있음.
  • ASC : 오름차순 (옵션 생략 시 ASC가 기본값)
  • DESC : 내림차순



JOIN

1. EQUI JOIN

  • EQUAL 조건으로 JOIN.
SELECT A.PRODUCT_CODE,
	   A.PRODUCT_NAME,
       B.MEMBER_ID,
       B.CONTENT,
       B.REG_DATE
  FROM PRODUCT A,
  	   PRODUCT_REVIEW B
 WHERE A.PRODUCT_CODE = B.PRODUCT_CODE; 

2. NON EQUI JOIN

  • EQUAL 조건이 아닌 다른 조건(BETWEEN, >, >=, <, <=)으로 JOIN.
SELECT A.EVENT_NAME,
	   B.MEMBER_ID,
       B.CONTENT,
       B.REG_DATE
  FROM EVENT A,
  	   PRODUCT_REVIEW B
 WHERE B.REG_DATE BETWEEN A.START_DATE AND A.END_DATE;

3. JOIN

  • LEFT OUTER JOIN의 경우 : LEFT TABLE과 RIGHT TABLE의 데이터 중 JOIN에 성공한 데이터와 JOIN에 성공하지 못한 나머지 LEFT TABLE의 데이터가 함께 출력됨.
  • 오라클에서는 모든 행이 출력되는 테이블의 반대편 테이블의 옆에 + 기호를 붙여 작성해주면됨.
profile
시간이 걸릴 뿐 내가 못할 건 없다.

0개의 댓글