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;
연산자 우선 순위
- 곱하기 및 나누기를 더하기나 빼기 보다 먼저 수행
- 동등한 우선순위를 갖는 연산은 왼쪽에서 오른쪽으로 수행
- 괄호를 사용해서 연산의 우선순위 조정 가능
컬럼 별칭(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