3 분 소요

DML(SELECT 1)

DML문의 꽃인 SELECT문을 알아보자.

SELECT 문을 통해 특정 칼럼이나 특정 행만을 조회한다.

기본 사용법

SELECT 칼럼명,칼럼명 from 테이블명 where 여러 조건;

-- 칼럼명 대신 *을 사용하면 모든 칼럼을 가져온다

SELECT 칼럼명||'x' from 테이블명 where 여러 조건 ;

-- ||'x' 의 형식을 통해 가져온 칼럼의 속성 뒤에 x를 붙여서 가져온다.

SELECT 칼럼명 *10 as '곱하기10' from 테이블명 where 여러조건 ;

-- 위의 쿼리로 칼럼의 값에 *10을 한 결과값에 곱하기10이라는 칼럼명으로 조회가 가능하다.

정렬과 중복데이터 제외

ORDER BY를 이용한 정렬

  • order by를 통해 데이터를 정렬 할 수 있다.

  • default는 오름차순으로 정렬하며 DESC 를 추가해 내림차순으로 정렬이 가능함

  • 데이터 출력 바로 직전이 실행됨

  • 메모리를 많이 사용하여 정렬로 인한 성능 저하가 발생함

SELECT 칼럼명 from 테이블명 where 조건 order by desc ;

기본키를 index number로 사용하여 정렬로 인한 메모리 과부하를 피할 수 있음.

Distinct

Distinct 문을 통해 칼럼명 앞에 지정하여 중복된 데이터를 한번씩만 조회하게 한다.

특정 칼럼내의 도메인에 대한 정보를 확인할 때 유용하게 사용가능하다.

SELECT DISTINCT 칼럼명 FROM 테이블 ;
-- 예를들어 칼럼에 10 20 30 40 10 20 여섯개의 row가 존재할 때 중복 값을 제외하고
-- 10 20 30 40 4개의 row만 출력해준다.

WHERE문 사용

Where 문에는 비교, 부정비교, 논리, SQL,부정 SQL 이렇게 다섯 가지의 연산자가 존재한다.

비교 연산자, 부정 SQL 연산자를 제외하고 나머지 3가지의 연산자를 알아본 후 세부적인 연산자 사용법을 알아보자.

부정 비교 연산자

부정 비교 연산자 설명
!= 같지 않은 것을 조회
^= 같지 않은 것을 조회
<> 같지 않은 것을 조회
not 칼럼명 = 같지 않은 것을 조회
not 칼럼명 > 크지 않은 것을 조회

논리 연산자

논리 연산자 설명
AND 조건이 모두 만족해야 참
OR 조건중 하나만 만족해도 참
NOT 참->거짓, 거짓-> 참으로 변경

SQL 연산자

SQL 연산자 설명
LIKE ‘%비교문자열%’ 비교 문자열을 조회한다. ‘%’는 모든 값을 의미
BETWEEN A and B A와 B사이의 값을 조회
IN(list) OR를 의미하며 list 값 중에 하나만 일치해도 조회
IS NULL NULL 값을 조회

LIKE문 사용법

LIKE문은 와일드 카드를 사용해서 데이터를 조회할 수 있다.

SELECT 칼럼명 FROM 테이블명 WHERE 칼럼명A LIKE '%윤정호';
-- 칼럼A의 속성중에 윤정호로 끝나는 모든 속성을 조회
SELECT 칼럼명 FROM 테이블명 WHERE 칼럼명A LIKE '윤정호%';
-- 칼럼A의 속성중에 윤정호로 시작하는 모든 속성을 조회
SELECT 칼럼명 FROM 테이블명 WHERE 칼럼명A LIKE '%윤정호%';
-- 칼럼A의 속성중에 윤정호가 들어가는 모든 속성을 조회

BETWEEN 문 사용

between문은 지정된 범위에 있는 값을 조회한다.

SELECT 칼럼명 FROM 테이블명 where 칼럼명a between 1000 and 2000;
-- 칼럼명 a에서 값이 1000~ 2000 사이인 모든 값을 조회한다.
SELECT 칼럼명 FROM 테이블명 where 칼럼명a not between 1000 and 2000;
-- 칼럼명 a에서 값이 1000미만 2000초과인 모든 값을 조회한다.

IN문 사용

IN문은 OR의 의미를 가지고 있어서 하나의 조건만 만족해도 조회가 가능하다.

SELECT 칼럼명 FROM 테이블  where 칼럼명a in ('윤정호','홍길동')
-- 칼럼명 a에서 값이 윤정호이거나 홍길동인 모든 값을 조회한다.
SELECT 칼럼명 FROM 테이블  where (칼럼명a,칼럼명b) in (('윤정호','홍길동'),('개','사자'));
-- 한번에 여러 칼럼을 조회할 때는 위와 같이 소괄호로 묶어준다.

NULL

  • NULL은 모르는값 또는 값의 부재를 의미한다.
  • 숫자 혹은 날짜와 NULL을 더하면 NULL이 됨.
  • NULL을 다른 값과 비교하면 ‘알수없음’을 반환
SELECT 칼럼명 FROM 테이블명 WHERE 칼럼명 is NULL;
-- 값이 Null것을 조회
SELECT 칼럼명 FROM 테이블명 WHERE 칼럼명 is NOT NULL;
-- not null이 아닌 즉 값이 존재하는 것을 조회

NULL 관련 함수

NULL 함수 설명
NVL 함수 - NULL이면 다른 값으로 바꾸는 함수
- NVL(‘칼럼명’,변경할 값)
NVL2 함수 - NVL과 DECODE가 합쳐진 함수
- NVL2(‘칼럼명’,NULL이 아닐경우의 값,NULL일 경우의 값)
NULLIF 함수 - 두개의 값이 같으면 NULL을 , 같지 않으면 첫번째 값을 반환.
- NULLIF(A,B)
COLAESCE - NULL이 아닌 최초의 인자값을 반환
- COALESCE(A,B,C….)

GROUP BY

group by는 테이블에서 소규모행을 그룹화 하여 여러 값을 계산 할 수 있다.

WHERE이 아닌 HAVING 으로 조건문을 사용한다.

ORDERBY 를 사용 가능하다.

기본 사용법

SELECT 칼럼a,sum(칼럼b) from 테이블명 group by 칼럼 a having 칼럼 b >2000;
-- DISTINCT 처럼 칼럼a의 값을 기준으로 칼럼 b를 그룹화 한다.
-- having 을 통해 조건을 추가할 수 있다.
-- 칼럼b의 값이 2000이 넘는 값들을 칼럼a의 값을 기준으로 그룹화 하여 해당 그룹에 속하는 값의 모든 합을 조회하는 쿼리문이다.

집계 함수 종류

집계 함수 설명
COUNT() 행 수를 조회
SUM() 합계 계산
AVG() 평균 계산
MAX()와 MIN() 최댓값 최솟값 계산
STDDEV() 표준편차 계산
VARIAN() 분산 계산

SELECT문 실행 순서

SQL의 실행순서는 조회된 데이터를 이해하는 데 아주 중요하다.

순서는 다음과 같다.

  1. FROM
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. SELECT
  6. ORDER BY

댓글남기기