WHERE, FUNCTION, GROUP BY

김현송·2023년 3월 9일
0

WHERE

형식

SELECT [DISTINCT/ALL] 칼럼명 [ALIAS명] FROM 테이블명 WHERE 조건식;

연산자의 종류

비교 연산자

  • 부정 비교 연산자 <> : 같지 않다. (ISO 표준, 모든 운영체제에서 사용가능)

논리연산자 ( 생략 )

SQL 연산자

  • BETWEEN a AND b : a 와 b의 값 사이에 있으면 된다. (a, b 값이 포함됨)
  • IN (list) : 리스트에 있는 값 중에서 어느 하나라도 일치하면 된다.
  • LIKE "(%)비교문자열(%)" : 비교문자열과 형태가 일치하면 된다. ('_' 언더바는 글자수 제한)

연산자의 우선순위

  1. 괄호
  2. NOT 연산자
  3. 비교 연산자, SQL 비교 연산자
  4. AND
  5. OR

문자 유형 비교방법

비교 연산자의 양쪽이 모두 CHAR 유형 타입인 경우

  • 길이가 서로 다른 CHAR형 타입이면 작은 쪽에 SPACE를 추가하여 길이를 같게 한 후 비교
  • 서로 다른 문자가 나올 때까지 비교한다.
  • 달라진 첫 번째 문자의 값에 따라 크기를 결정한다.
  • BLANK의 수만 다르면 서로 같은 값으로 결정한다.

비교 연산자의 어느 한 쪽이 VARCHAR 유형 타입인 경우

  • 길이가 다르다면 짧은 것이 끝날 때 까지만 비교한 후에 길이가 긴 것이 크다고 판단한다.
  • 길이가 같고 다른 것이 없다면 같다고 판단한다.
  • VARCHAR는 NOT NULL까지의 길이를 말한다.

상수 값과 비교할 경우

  • 상수 쪽을 변수 타입과 동일하게 바꾸고 비교한다

ROWNUM, TOP

행의 개수 제한 목적으로 사용한다.

#Oracle
SELECT PLAYER_NAME FROM PLAYER WHERE ROWNUM = 1;
#SQL
TOP (Expression) [PERCENT][WITH TIES]
# - Expression : 반환할 행의 수를 지정하는 숫자
# - PERCENT : 쿼리 결과 집합에서 처음 Expression%의 행만 반환됨을 나타낸다.
# - WITH TIES : ORDER BY 절이 지정된 경우에만 사용할 수 있으며 , 마지막 행과 가튼 값이 있는 경우 추가 행이 출력되도록 지정할 수 있다.

FUNCTION

단일행 함수

종류내용함수의 예
문자형 함수문자을 입력하면, 문자나 숫자 값을 반환한다.LOWER, UPPER, SUBSTR/SUBSTRING, LENGTH/LEN, LTRIM, RTRIM, TRIM, ASCII
숫자형 함수숫자를 입력하면 숫자 값을 반환한다.ABS, MOD, ROUND, TRUNC, SIGN, CHR/CHAR, CEIL/CEILING, FLOOR, EXP, LOG, LN, POWER, SIN, COS, TAN
날짜형 함수DATE 타입의 값을 연산한다.SYSDATE/GETDATE, EXTRACT/DATEPART, TO_NUMBER(TO_CHAR(d, 'YYYY'|'MM'|'DD'))/ YEAR|MONTH|DAY
변환형 함수문자, 숫자, 날짜형 값의 데이터 타입을 변환한다.TO_NUMBER, TO_CHAR, TO_DATE/ CAST, CONVERT
NULL 관련 함수NULL을 처리하기 위한 함수NVL/ISNULL, NULLIF, COALESCE

단일행 함수의 특징

  • SELECT, WHERE, ORDER BY 절에 사용 가능하다.
  • 각 행들에 대해 개별적으로 작용하여 데이터 값들을 조작하고, 각각의 행에 대한 조작 결과를 리턴한다.
  • 여러 인자를 입력해도 단 하나의 결과만 리턴한다.
  • 함수의 인자로 상수, 변수, 표현식이 사용 가능하고, 여러 개의 인수를 가질 수도 있다.
  • 특별한 경우가 아니면 인자로 함수를 사용하는 중첩이 가능하다.

CASE

Oracle의 Decode 함수와 같은 기능

# Oracle 에서만 사용
DECODE(표현식, 조건1,1, 조건2,2...., 디폴트 값)
# SQL
CASE SIMPLE_CASE_EXPRESSION 조건 ELSE 표현절

GROUP BY, HAVING 절

1. 집계함수

여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 다중행 함수

  • 여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 함수이다
  • GROUP BY 절은 행들을 소그룹화 한다
  • SELECT 절 HAVING 절 ORDER BY 절에 사용할 수 있다.
집계함수사용 목적
COUNT(*)NULL 값을 포함한 행의 수를 출력한다.
COUNT(표현식)표현식의 값이 NULL 값인 것을 제외한 행의 수를 출력한다.
SUM([DISTINCT|ALL])표현식의 NULL 값을 제외한 합계를 출력한다.
AVG([DISTINCT|ALL])표현식의 NULL 값을 제외한 평균을 출력한다.
MAX([DISTINCT|ALL])표현식의 최대값 출력한다.
MIN([DISTINCT|ALL])표현식의 최소값 출력한다.
STDDEV([DISTINCT|ALL] 표현식)표현식의 표준 편차를 출력한다.
VARIAN([DISTINCT|ALL] 표현식)표현식의 분산을 출력한다.

2. GROUP BY 절

SQL문에서 FROM 절과 WHERE 절 뒤에 오며, 데이터들을 작은 그룹으로 분류하여 소그룹에 대한 항목별로 통계 정보를 얻을 때 추가로 사용한다.

  • ALIAS 명을 사용할 수 없다.
  • WHERE 절은 전체 테이터를 GROUP으로 나누기 전에 행들을 미리 제거시킨다.
  • HAVING 절은 GROUP BY 절의 기준 항목이나 소그룹 집계 함수를 이용한 조건을 표시할 수 있다.
  • HAVING 절은 일반적으로 GROUP BY 절 뒤에 위치한다.

3. HAVING 절

WHERE 절에 사용할 수 없는 집계함수를 HAVING에서 사용한다.

profile
안녕하세요

0개의 댓글