SELECT와 WHERE 그리고 SQL 연산자

Updated:

컬럼(Column) 및 로우(Row)의 선택

학습주제

  • SELECT 절 지정 방버
  • 제한 조건(Where)절 이용

학습 목표

  • SELECT절을 이용하여 원하는 컬럼 및 형태를 지정할 수 있다.
  • WHERE절을 이용하여 특정 행만 조회할 수 있다.

SELECT 구문

SELECT [DISTINCT] {*|column명|표현식}
FROM 테이블명;

SELECT절: 나타낼 칼럼들을 선택한다.

FROM절: SELECT에 나열된 컬럼을 포함하는 테이블을 지정한다.

표현식: 계산을 수행하거나 함수를 사용하는 것을 의미한다.

SQL문 작성 규칙

  • 인용부호(따옴표)를 붙이지 않으면 대소문자 구분하지 않는다.
  • 여러 라인에 걸쳐서 작성이 가능하며, 가독성을 위해 들여쓰기 하는 것이 좋다.
  • 키워드는 여러 행에 나누어 쓰거나 약어로 쓸 수 없다.
  • 여러 칼럼을 검색할 경우 쉼표로 컬럼을 구분한다.
  • SELECT절에 출력 결과에 표시할 순서대로 컬럼을 지정한다.

컬럼 지정 예시

전체 컬럼 검색

SELECT *
FROM player;

특정 컬럼 검색

SELECT player_name, team_id, position
FROM player;

산술 연산

SQL문에 산술 연산을 바로 할 수 있다.

  • 더하기(+), 빼기(-), 곱하기(*), 나누기(/)

산술 연산 예시

SELECT player_name, height, height * 2
FROM player_t;

연산자 우선 순위

  1. 곱하기 및 나누기를 더하기나 빼기 보다 먼저 수행
  2. 동등한 우선순위를 갖는 연산은 왼쪽에서 오른쪽으로 수행
  3. 괄호를 사용해서 연산의 우선순위 조정 가능

컬럼 별칭(Alias)

  • 컬럼의 원래 이름이 아닌 별도의 이름을 컬럼 HEADING에 표시한다.
  • 주로 연산이 수행된 컬럼에 사용한다.
  • 컬럼명 다음에 AS(생략 가능)를 쓴 뒤, 그 뒤에 별칭으로 사용할 단어를 제시한다.
  • 특수 문자나 공백, 대소문자 구분을 칼럼의 별칭으로 사용하고자 하면 별칭에 큰 따옴표(“ “)를 사용한다.

연결 연산자

  • 컬럼 또는 문자를 다른 컬럼과 연결할 때 사용한다.
  • 두 개의 수직 바(||)로 표시한다.
  • 연산자의 좌우에 있는 컬럼이 결합되어 단일 컬럼으로 출력된다.

예시

SELECT player_name || '선수'
FROM player;

중복행 제거(DISTINCT)

  • 컬럼에 있는 동일한 값을 한 번만 표시되도록 한다.
  • SELECT 바로 뒤에 사용한다.
  • DISTINCT를 적으면 모든 Field의 값을 Distinct를 적용해서 조합하여 중복을 제거한다. 특정값에서 중복이 나타날 수 있다.

예시

SELECT DISTINCT position
FROM player;

SELECT DISTINCT deptno, job
FROM emp;

제한 조건 (WHERE)

특정 ROW 선택하기

SELECT [DISTINCT] {* | column | 표현식}
FROM 테이블명
WHERE condition(s);
  • WHERE절을 사용하여 질의에 반환되는 행을 제한할 수 있다.
  • WHERE절은 조건을 적고, FROM절 바로 다음에 사용한다.
  • 조건이 참일 경우 조건을 만족하는 행만 반환된다.
  • CHAR, VARCHAR2와 같은 문자형 타입과 DATE 날짜 타입을 가진 컬럼을 특정 값과 비교하기 위해서는 인용부호(작은 따옴표)로 묶어 비교처리할 수 있다.
  • NUMBER는 인용부호 필요 없다.

비교연산자

  • = (같음)
  • > (보다 큼), >= (크거나 같음)
  • < (보다 작음), <= (작거나 같음)
  • < >, !=, ^= (같지 않음)

예시

SELECT player_name, team_id, position
FROM player
WHERE position='MF';
SELECT player_name, height, weight
FROM player
WHERE height >= 182;

BETWEEN A AND B

  • 조건절에 명시된 값이 지정된 A값과 B값 사이에 포함되는지 비교한다.
  • 이 때, A는 B보다 작아야 한다. (A <= B)

예시

SELECT player_name, team_id, weight
FROM player
WHERE weight between 85 and 88;

IN

  • 형태는 IN(값1, 값2, 값3…)이고, 비교대상이 괄호 안에 하나라도 일치하는지를 확인한다.
  • 비교하는 값이 하나라도 반드시 괄호를 써야한다.
  • IN 다음 비교하는 값은 문자형 타입, 숫자 타입, 날짜 타입 모두 사용할 수 있다.

예시

--문자형 타입 조회
SELECT player_name, e_player_name
FROM player
WHERE position in ('GK', 'MK', 'TC');
--숫자 타입 조회
SELECT player_name, team_id, height
FROM player
WHERE height in (168, 178, 188);

LIKE

  • LIKE를 사용하여 특정 문자나 문자열이 포함되어 있는지를 검사한다. 특정 패턴 검사
  • 특정 패턴에 속하는 값을 조회할 때 사용한다.
  • Wildcard 문자(%, _)를 이용해 문자열 부분 매칭 여부를 확인한다.
    • %는 0개 문자 또는 1개 이상의 문자열이 올 수 있음을 의미한다.
    • _(언더스코어)는 반드시 1개 문자가 있어야 함을 의미한다.

예시

SELECT player_name, position
FROM player
WHERE player_name LIKE '김%';
SELECT player_name, team_id
FROM player
WHERE player_name LIKE '_동%';

IS NULL

NULL값이란?

  • 한 행의 특정 칼럼에 데이터 값이 없으면 그 값을 NULL(널)이라고 한다.
  • NULL 값은 알 수 없는 값(정해지지 않은 값)으로서 0 또는 공백과 다르다.
  • NULL 값을 포함하는 연산의 경우 결과 값도 널이다.

IS NULL(값이 NULL인 값)

  • =, >, < 비교연산자를 사용한 경우 항상 조건이 FALSE가 된다.
  • IS NULL 연산자를 사용해서 NULL 여부를 확인한다.

Comments