SQL에서 비교, 논리, 산술 연산자란?
SQL에서는 다양한 연산자를 사용하여 데이터를 조작하고 비교할 수 있습니다. 이러한 연산자는 크게 비교 연산자, 논리 연산자, 산술 연산자로 나눌 수 있습니다.
비교 연산자는 두 값을 비교하는 데 사용되며, 결과는 참 또는 거짓입니다. 주요 비교 연산자에는 =, <>, <, >, <=, >= 등이 있습니다.
논리 연산자는 논리적인 연산을 수행하는 데 사용되며, 결과는 참 또는 거짓입니다. 주요 논리 연산자에는 AND, OR, NOT 등이 있습니다.
산술 연산자는 수학적 연산을 수행하는 데 사용되며, 결과는 숫자입니다. 주요 산술 연산자에는 +, -, *, / 등이 있습니다.
AND 연산자
AND 연산자는 두 조건이 모두 참일 때 참을 반환하는 논리 연산자입니다. 만약 두 조건 중 하나라도 거짓이면, AND 연산자는 거짓을 반환합니다.
SELECT
*
FROM
movies
WHERE
movie_lang = 'English'
AND age_certificate = '18';
OR 연산자
OR 연산자는 두 조건 중 하나라도 참일 때 참을 반환하는 논리 연산자입니다. 만약 두 조건이 모두 거짓이면, OR 연산자는 거짓을 반환합니다.
SELECT
*
FROM
movies
WHERE
movie_lang = 'English'
OR movie_lang = 'Japanese';
AND, OR 연산자를 함께 사용하기
AND 연산자는 OR 연산자보다 우선 순위가 높습니다. 따라서 AND와 OR를 함께 사용할 때는 AND 연산이 먼저 수행됩니다. 하지만 괄호를 사용하여 연산의 순서를 변경할 수 있습니다.
SELECT
*
FROM
movies
WHERE
(movie_lang = 'English'
OR movie_lang = 'Chinese')
AND age_certificate = '12';
WHERE 절에서 열 별칭 사용 가능한가?
일반적으로 WHERE 절에서는 열 별칭을 사용할 수 없습니다. 이는 SQL이 WHERE 절을 SELECT 절보다 먼저 처리하기 때문입니다. 따라서 WHERE 절이 처리되는 시점에는 열 별칭이 아직 정의되지 않았습니다.
-- 에러 발생
SELECT
employee_id AS id, first_name AS name
FROM
employees
WHERE
name LIKE 'J%';
WHERE, SELECT, ORDER BY 절의 실행 순서
SQL 문의 실행 순서는 다음과 같습니다
- FROM 절: 테이블을 선택합니다.
- WHERE 절: 행을 필터링합니다.
- GROUP BY 절: 행 그룹을 만듭니다.
- HAVING 절: 그룹을 필터링합니다.
- SELECT 절: 출력 열을 선택하고 계산합니다.
- ORDER BY 절: 결과를 정렬합니다.
따라서 WHERE 절은 SELECT 절과 ORDER BY 절보다 먼저 실행됩니다.
비교 연산자 사용하기
PostgreSQL에서 비교 연산자는 두 개의 피연산자를 비교하고 논리적인 값을 반환하는데 사용됩니다. 주로 WHERE, HAVING, JOIN 등의 SQL 문에서 사용됩니다. 다음은 PostgreSQL에서 사용되는 주요 비교 연산자입니다
연산자 | 설명 |
= | 두 피연산자가 같은지 확인합니다. |
<> 또는 != | 두 피연산자가 다른지 확인합니다. |
> | 왼쪽 피연산자가 오른쪽 피연산자보다 큰지 확인합니다. |
< | 왼쪽 피연산자가 오른쪽 피연산자보다 작은지 확인합니다. |
>= | 왼쪽 피연산자가 오른쪽 피연산자보다 크거나 같은지 확인합니다. |
<= | 왼쪽 피연산자가 오른쪽 피연산자보다 작거나 같은지 확인합니다. |
SELECT * FROM employees WHERE NOT (salary > 50000 AND age < 30);
LIMIT와 OFFSET 사용하기
LIMIT 절은 반환되는 행의 최대 수를 지정하는 데 사용됩니다. OFFSET 절은 반환되는 행의 시작점을 지정하는 데 사용됩니다. LIMIT와 OFFSET을 함께 사용하면 특정 수의 행을 건너뛴 후 일정 수의 행을 반환하는 페이징 쿼리를 작성할 수 있습니다
-- 반환되는 행의 수를 최대 5개로 제한하고
-- 첫 4개의 행을 건너뛰고 그 다음부터의 행을 반환합니다.
SELECT
*
FROM
movies
ORDER BY
movie_id
LIMIT
5
OFFSET
4;
FETCH 사용하기
FETCH 는 SQL 쿼리의 결과를 제한하는데 사용됩니다. 이는 LIMIT 절과 유사하게 작동합니다. FETCH FIRST n ROWS ONLY 구문을 사용하여 반환되는 행의 수를 제한할 수 있습니다.
SELECT
*
FROM
movies
FETCH FIRST 5 ROW ONLY;
IN, NOT IN 사용하기
IN 연산자는 특정 열의 값이 여러 가능한 값 중 하나에 해당하는지를 확인하는 데 사용됩니다. NOT IN 연산자는 특정 열의 값이 여러 가능한 값 중 어느 것에도 해당하지 않는지를 확인하는 데 사용됩니다
SELECT
*
FROM
movies
WHERE
movie_lang IN ('English', 'Japanese');
BETWEEN, NOT BETWEEN 사용하기
BETWEEN 연산자는 특정 열의 값이 두 값 사이에 있는지를 확인하는 데 사용됩니다. NOT BETWEEN 연산자는 특정 열의 값이 두 값 사이에 있지 않은지를 확인하는 데 사용됩니다
SELECT
*
FROM
actors
WHERE
date_of_birth BETWEEN '1991-01-01' AND '1995-12-31'
ORDER BY
date_of_birth;
LIKE, ILIKE 사용하기
LIKE 연산자는 특정 패턴과 일치하는 문자열을 찾는 데 사용됩니다. ILIKE 연산자는 대소문자를 구분하지 않는 LIKE 연산자입니다.
LIKE 연산자는 두 가지 와일드카드를 사용할 수 있습니다:
% : 0개 이상의 임의의 문자와 일치합니다.
_ : 단 하나의 임의의 문자와 일치합니다.
SELECT
*
FROM
actors
WHERE
first_name LIKE 'A%';
SELECT
*
FROM
actors
WHERE
first_name LIKE '_____';
IS NULL, IS NOT NULL 사용하기
IS NULL 연산자는 열의 값이 NULL인지를 확인하는 데 사용됩니다. IS NOT NULL 연산자는 열의 값이 NULL이 아닌지를 확인하는 데 사용됩니다
SELECT
*
FROM
actors
WHERE
date_of_birth IS NULL
OR first_name IS NULL;
연결 기법
SQL에서는 여러 문자열을 연결하여 하나의 문자열을 만드는 데 사용할 수 있는 여러 가지 방법이 있습니다. 이에는 || 연산자, CONCAT 함수, CONCAT_WS 함수 등이 있습니다
|| 연산자를 사용한 연결
SELECT
first_name || ' ' || last_name AS full_name
FROM
employees;
CONCAT 함수를 사용한 연결
SELECT
CONCAT(first_name, ' ', last_name) AS "Actor Name"
FROM
actors
ORDER BY
first_name;
CONCAT_WS 함수를 사용한 연결
SELECT
CONCAT_WS(',', first_name, last_name, date_of_birth)
FROM
actors
ORDER BY
first_name;
'postgreSQL' 카테고리의 다른 글
[PostgreSQL] 테이블 구조와 제약 조건 수정하기 (0) | 2023.08.21 |
---|---|
[PostgreSQL] 데이터타입 (0) | 2023.08.13 |
[PostgreSQL] SELECT를 활용한 데이터 조회 (0) | 2023.08.02 |
[PostgreSQL] 테이블에 데이터 추가, 수정, 삭제하기 (0) | 2023.08.02 |
[PostgreSQL] 테이블 생성 및 편집 (0) | 2023.08.02 |