MariaDB / 연산자 / 비교 연산자

MariaDB의 비교 연산자에 대하여 알아본다. 예제로 사용하는 테이블은 아래의 데이터를 가진 T_1이라는 테이블이다.

C_1의 데이터 형식은 정수, C_2의 데이터 형식은 문자, C_3의 데이터 형식은 날짜이다.

+----+------+------+------------+
| ID | C_1  | C_2  | C_3        |
+----+------+------+------------+
|  1 |    1 | A    | 2022-01-01 |
|  2 |    2 | B    | 2022-01-02 |
|  3 |    3 | C    | 2022-01-03 |
|  4 | NULL | A    | 2022-01-04 |
|  5 | NULL | NULL | 2022-01-05 |
|  6 |    1 | NULL | NULL       |
|  7 |    2 | B    | 2022-01-07 |
|  8 |    3 | C    | 2022-01-08 |
+----+------+------+------------+

같다

같은 것을 찾을 때는 =를 사용한다. 데이터 형식이 숫자인 경우 따옴표를 해도 되고 안 해도 되나, 문자인 경우 따옴표를 해야 한다.

  • C_1의 값이 3이면 1을 반환한다.
SELECT
  *,
  C_1 = 3 AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    0 |
|  2 |    2 | B    | 2022-01-02 |    0 |
|  3 |    3 | C    | 2022-01-03 |    1 |
|  4 | NULL | A    | 2022-01-04 | NULL |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       |    0 |
|  7 |    2 | B    | 2022-01-07 |    0 |
|  8 |    3 | C    | 2022-01-08 |    1 |
+----+------+------+------------+------+
  • C_2의 값이 A이면 1을 반환한다.
SELECT
  *,
  C_2 = 'A' AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    1 |
|  2 |    2 | B    | 2022-01-02 |    0 |
|  3 |    3 | C    | 2022-01-03 |    0 |
|  4 | NULL | A    | 2022-01-04 |    1 |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       | NULL |
|  7 |    2 | B    | 2022-01-07 |    0 |
|  8 |    3 | C    | 2022-01-08 |    0 |
+----+------+------+------------+------+

같지 않다

같지 않을 것을 찾을 때는 != 또는 <>를 사용한다.

  • C_2의 값이 존재하고 A가 아니면 1을 반환한다.
SELECT
  *,
  C_2 != 'A' AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    0 |
|  2 |    2 | B    | 2022-01-02 |    1 |
|  3 |    3 | C    | 2022-01-03 |    1 |
|  4 | NULL | A    | 2022-01-04 |    0 |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       | NULL |
|  7 |    2 | B    | 2022-01-07 |    1 |
|  8 |    3 | C    | 2022-01-08 |    1 |
+----+------+------+------------+------+

크다 / 작다 / 크거나 같다 / 작거나 같다

크다는 >, 작다는 <, 크거나 같다는 >=, 작거나 같다는 <=를 사용한다.

  • C_1의 값이 존재하고 2보다 크면 1을 반환한다.
SELECT
  *,
  C_1 > 2 AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    0 |
|  2 |    2 | B    | 2022-01-02 |    0 |
|  3 |    3 | C    | 2022-01-03 |    1 |
|  4 | NULL | A    | 2022-01-04 | NULL |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       |    0 |
|  7 |    2 | B    | 2022-01-07 |    0 |
|  8 |    3 | C    | 2022-01-08 |    1 |
+----+------+------+------------+------+
  • C_1의 값이 존재하고 2보다 크거나 같으면 1을 반환한다.
SELECT
  *,
  C_1 >= 2 AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    0 |
|  2 |    2 | B    | 2022-01-02 |    1 |
|  3 |    3 | C    | 2022-01-03 |    1 |
|  4 | NULL | A    | 2022-01-04 | NULL |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       |    0 |
|  7 |    2 | B    | 2022-01-07 |    1 |
|  8 |    3 | C    | 2022-01-08 |    1 |
+----+------+------+------------+------+
  • C_1의 값이 존재하고 2보다 작으면 1을 반환한다.
SELECT
  *,
  C_1 < 2 AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    1 |
|  2 |    2 | B    | 2022-01-02 |    0 |
|  3 |    3 | C    | 2022-01-03 |    0 |
|  4 | NULL | A    | 2022-01-04 | NULL |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       |    1 |
|  7 |    2 | B    | 2022-01-07 |    0 |
|  8 |    3 | C    | 2022-01-08 |    0 |
+----+------+------+------------+------+
  • C_1의 값이 존재하고 2보다 작거나 같으면 1을 반환한다.
SELECT
  *,
  C_1 <= 2 AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    1 |
|  2 |    2 | B    | 2022-01-02 |    1 |
|  3 |    3 | C    | 2022-01-03 |    0 |
|  4 | NULL | A    | 2022-01-04 | NULL |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       |    1 |
|  7 |    2 | B    | 2022-01-07 |    1 |
|  8 |    3 | C    | 2022-01-08 |    0 |
+----+------+------+------------+------+
  • 데이터 형식이 문자인 경우 알파벳순으로 대소를 비교한다.
SELECT
  *,
  C_2 >= 'B' AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    0 |
|  2 |    2 | B    | 2022-01-02 |    1 |
|  3 |    3 | C    | 2022-01-03 |    1 |
|  4 | NULL | A    | 2022-01-04 |    0 |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       | NULL |
|  7 |    2 | B    | 2022-01-07 |    1 |
|  8 |    3 | C    | 2022-01-08 |    1 |
+----+------+------+------------+------+
  • 데이터 형식이 날짜인 경우 날짜순으로 대소를 비교한다.
SELECT
  *,
  C_3 >= '2022-01-03' AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    0 |
|  2 |    2 | B    | 2022-01-02 |    0 |
|  3 |    3 | C    | 2022-01-03 |    1 |
|  4 | NULL | A    | 2022-01-04 |    1 |
|  5 | NULL | NULL | 2022-01-05 |    1 |
|  6 |    1 | NULL | NULL       | NULL |
|  7 |    2 | B    | 2022-01-07 |    1 |
|  8 |    3 | C    | 2022-01-08 |    1 |
+----+------+------+------------+------+

BETWEEN / NOT BETWEEN

BETWEEN A AND B라 하면 A 이상 B 이하의 데이터를 추출한다.

  • C_1의 값이 존재하고 2 이상 3 이하이면 1을 반환한다.
SELECT
  *,
  C_1 BETWEEN 2 AND 3 AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    0 |
|  2 |    2 | B    | 2022-01-02 |    1 |
|  3 |    3 | C    | 2022-01-03 |    1 |
|  4 | NULL | A    | 2022-01-04 | NULL |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       |    0 |
|  7 |    2 | B    | 2022-01-07 |    1 |
|  8 |    3 | C    | 2022-01-08 |    1 |
+----+------+------+------------+------+

NOT BETWEEN A AND B라 하면 A 이상 B 이하가 아닌 데이터를 추출한다.

  • C_1의 값이 존재하고 2 이상 3 이하가 아니면 1을 반환한다.
SELECT
  *,
  C_1 NOT BETWEEN 2 AND 3 AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    1 |
|  2 |    2 | B    | 2022-01-02 |    0 |
|  3 |    3 | C    | 2022-01-03 |    0 |
|  4 | NULL | A    | 2022-01-04 | NULL |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       |    1 |
|  7 |    2 | B    | 2022-01-07 |    0 |
|  8 |    3 | C    | 2022-01-08 |    0 |
+----+------+------+------------+------+

COALESCE

목록 안의 값 중 NULL이 아닌 첫 번째 값을 출력한다. 모든 값이 NULL이면 NULL을 출력한다.

SELECT
  C_2,
  C_3,
COALESCE( C_2, C_3 ) AS R
FROM T_1
;
+------+------------+------------+
| C_2  | C_3        | R          |
+------+------------+------------+
| A    | 2022-01-01 | A          |
| B    | 2022-01-02 | B          |
| C    | 2022-01-03 | C          |
| A    | 2022-01-04 | A          |
| NULL | 2022-01-05 | 2022-01-05 |
| NULL | NULL       | NULL       |
| B    | 2022-01-07 | B          |
| C    | 2022-01-08 | C          |
+------+------------+------------+

GREATEST / LEAST

GREATEST는 목록에서 가장 큰 값을 선택한다.

SELECT GREATEST( 1, 2, 3, 4, 5 );
+---------------------------+
| GREATEST( 1, 2, 3, 4, 5 ) |
+---------------------------+
|                         5 |
+---------------------------+

데이터가 문자인 경우 알파벳순으로 크기를 따진다.

SELECT GREATEST( 'A', 'B', 'C' );
+---------------------------+
| GREATEST( 'A', 'B', 'C' ) |
+---------------------------+
| C                         |
+---------------------------+

LEAST는 목록에서 가장 작은 값을 선택한다.

SELECT LEAST( 1, 2, 3, 4, 5 );
+------------------------+
| LEAST( 1, 2, 3, 4, 5 ) |
+------------------------+
|                      1 |
+------------------------+

데이터가 문자인 경우 알파벳순으로 크기를 따진다.

SELECT LEAST( 'A', 'B', 'C' );
+------------------------+
| LEAST( 'A', 'B', 'C' ) |
+------------------------+
| A                      |
+------------------------+

IN / NOT IN

IN을 사용하면 여러 값 중 하나에 해당하는 데이터를 추출할 수 있다.

  • C_2의 값이 A 또는 C이면 1을 반환한다.
SELECT
  *,
  C_2 IN ( 'A', 'C' ) AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    1 |
|  2 |    2 | B    | 2022-01-02 |    0 |
|  3 |    3 | C    | 2022-01-03 |    1 |
|  4 | NULL | A    | 2022-01-04 |    1 |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       | NULL |
|  7 |    2 | B    | 2022-01-07 |    0 |
|  8 |    3 | C    | 2022-01-08 |    1 |
+----+------+------+------------+------+

NOT IN을 사용하면 여러 값에 해당하지 않는 데이터를 추출할 수 있다.

  • C_2의 값이 존재하고 A가 아니고 C가 아니면 1을 반환한다.
SELECT
  *,
  C_2 NOT IN ( 'A', 'C' ) AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    0 |
|  2 |    2 | B    | 2022-01-02 |    1 |
|  3 |    3 | C    | 2022-01-03 |    0 |
|  4 | NULL | A    | 2022-01-04 |    0 |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       | NULL |
|  7 |    2 | B    | 2022-01-07 |    1 |
|  8 |    3 | C    | 2022-01-08 |    0 |
+----+------+------+------------+------+

INTERVAL

 

IS / IS NOT

 

IS NULL / IS NOT NULL

IS NULL로 값이 NULL인지 확인할 수 있다.

  • C_1의 값이 NULL이면 1을 반환한다.
SELECT
  *,
  C_1 IS NULL AS R
FROM T_1
;
+----+------+------+------------+---+
| ID | C_1  | C_2  | C_3        | R |
+----+------+------+------------+---+
|  1 |    1 | A    | 2022-01-01 | 0 |
|  2 |    2 | B    | 2022-01-02 | 0 |
|  3 |    3 | C    | 2022-01-03 | 0 |
|  4 | NULL | A    | 2022-01-04 | 1 |
|  5 | NULL | NULL | 2022-01-05 | 1 |
|  6 |    1 | NULL | NULL       | 0 |
|  7 |    2 | B    | 2022-01-07 | 0 |
|  8 |    3 | C    | 2022-01-08 | 0 |
+----+------+------+------------+---+

IS NOT NULL로 값이 NULL이 아닌지 확인할 수 있다.

  • C_1의 값이 NULL이 아니면 1을 반환한다.
SELECT
  *,
  C_1 IS NOT NULL AS R
FROM T_1
;
+----+------+------+------------+---+
| ID | C_1  | C_2  | C_3        | R |
+----+------+------+------------+---+
|  1 |    1 | A    | 2022-01-01 | 1 |
|  2 |    2 | B    | 2022-01-02 | 1 |
|  3 |    3 | C    | 2022-01-03 | 1 |
|  4 | NULL | A    | 2022-01-04 | 0 |
|  5 | NULL | NULL | 2022-01-05 | 0 |
|  6 |    1 | NULL | NULL       | 1 |
|  7 |    2 | B    | 2022-01-07 | 1 |
|  8 |    3 | C    | 2022-01-08 | 1 |
+----+------+------+------------+---+

ISNULL

ISNULL은 값이 NULL이면 1을, NULL이 아니면 0을 반환한다.

SELECT
  C_1,
  ISNULL( C_1 ) 
FROM T_1
;
+------+---------------+
| C_1  | ISNULL( C_1 ) |
+------+---------------+
|    1 |             0 |
|    2 |             0 |
|    3 |             0 |
| NULL |             1 |
| NULL |             1 |
|    1 |             0 |
|    2 |             0 |
|    3 |             0 |
+------+---------------+
같은 카테고리의 다른 글
MariaDB / 함수 / LTRIM, RTRIM, TRIM / 양끝 문자열 제거 함수

MariaDB / 함수 / LTRIM, RTRIM, TRIM / 양끝 문자열 제거 함수

LTRIM LTRIM은 문자열 왼쪽에 있는 공백을 제거합니다. LTRIM( string ) SELECT QUOTE( LTRIM( ' 12 34 ' ) ); +------------------------------+ | QUOTE(LTRIM( ' 12 34 ' )) | +------------------------------+ | '12 34 ' ...

MariaDB / SELECT 결과를 INSERT하는 방법

MariaDB / SELECT 결과를 INSERT하는 방법

Z_1 테이블에서 a, b, c 열의 데이터를 Z_2 테이블의 x, y, z 열에 삽입한다고 하자. 우선 Z_1 테이블에서 a, b, c 열의 데이터를 가져오는 쿼리를 만든다. SELECT a, b, c FROM Z_1 ; 그 위에 INSERT를 추가한다. INSERT INTO Z_2 ( x, y, z ) SELECT a, b, ...

DBeaver / MariaDB / 데이터베이스 만들기, 삭제하기

DBeaver / MariaDB / 데이터베이스 만들기, 삭제하기

데이터베이스 만들기 Databases를 선택하고 마우스 우클릭합니다. 팝업 메뉴에서 를 클릭합니다. 데이터베이스 이름을 입력하고, Charset과 Collation을 선택한 후 를 클릭하면... 데이터베이스가 생성됩니다. 데이터베이스 수정하기 왼쪽에서 데이터베이스를 두 번 클릭하면 데이터베이스 정보가 나옵니다. 필요한 수정을 하고 를 클릭한 다음... 팝업 창의 내용을 확인하고 를 클릭하면... 데이터베이스가 수정됩니다. 데이터베이스 삭제하기 데이터베이스를 선택하고 마우스 우클릭합니다. 팝업 메뉴에서 를 클릭하고... 를 클릭하면... 데이터베이스가 삭제됩니다.

MariaDB / 함수 / YEAR, MONTH, DAY / 날짜 데이터에서 년, 월, 일을 반환하는 함수

MariaDB / 함수 / YEAR, MONTH, DAY / 날짜 데이터에서 년, 월, 일을 반환하는 함수

날짜 형식의 데이터에서 년 또는 월 또는 일을 분리해서 출력하고 싶다면 YEAR, MONTH, DATE 함수를 사용합니다. YEAR 날짜 데이터에서 년을 출력하고 싶다면 YEAR 함수를 사용합니다. MariaDB > SELECT YEAR('2020-11-12') as Year; +------+ | Year | +------+ | 2020 | +------+ MONTH 날짜 데이터에서 월을 출력하고 싶다면 MONTH 함수를 사용합니다. MariaDB > SELECT MONTH('2020-11-12') as Month; +-------+ | Month | +-------+ | 11 ...

MariaDB / 함수 / IF, IFNULL, NULLIF

MariaDB / 함수 / IF, IFNULL, NULLIF

IF 문법 IF( expression1, expression2, expression3 ) expression1가 참이면 expression2를, 거짓이면 expression3을 반환합니다. 예제 SELECT IF( 2>3, 'T', 'F' ); +---------------------+ | IF( 2>3, 'T', 'F' ) | +---------------------+ | F | +---------------------+ 2>3이 거짓이므로 F를 반환합니다. SELECT IF( 2<3, 'T', 'F' ); +---------------------+ | IF( ...

MariaDB / 피벗 테이블 만들기

MariaDB / 피벗 테이블 만들기

피벗 테이블은 엑셀의 유용한 기능 중의 하나이다. 예를 들어 아래의 왼쪽 데이터를 오른쪽 표처럼 만드는 것이 피벗 테이블이다. 조건에 따라 그룹화시켜서 보기 좋게 데이터를 정리하는 것이라 보면 된다. MariaDB에서도 몇 가지 함수를 이용하여 피벗 테이블을 만들 수 있다. 테이블의 이름이 pivot이라 가정하면, 아래처럼 쿼리를 짜면 된다. SELECT company , ...

DBeaver / MariaDB / 외래 키(Foreign Key) 만들기, 삭제하기

DBeaver / MariaDB / 외래 키(Foreign Key) 만들기, 삭제하기

외래 키(Foreign Key) 만들기 기본 키가 있는 테이블(testTable1)을 만듭니다. 외래 키를 만들 테이블(testTable2)을 만듭니다. 를 클릭합니다. 마우스 우클릭한 후 를 클릭합니다. Column에서 외래 키를 선택하고, Ref Column에서 기본 키를 선택한 후 를 클릭합니다. 를 클릭합니다. 를 클릭하면... 외래 키가 만들어집니다. 외래 키(Foreign Key) 삭제하기 외래 키를 선택한 다음 마우스 우클릭하고 를 클릭합니다. 를 클릭하고... 를 클릭하면 외래 키가 ...

MariaDB / 함수 / QUOTE / 문자열을 작은 따옴표로 감싸는 함수

MariaDB / 함수 / QUOTE / 문자열을 작은 따옴표로 감싸는 함수

QUOTE는 문자열을 작은 따옴표로 감싸는 함수입니다. QUOTE( string ) SELECT QUOTE( 'ABC' ); +----------------+ | QUOTE( 'ABC' ) | +----------------+ | 'ABC' | +----------------+ SELECT QUOTE( "ABC" ); +----------------+ | QUOTE( "ABC" ) | +----------------+ | 'ABC' | +----------------+ 문자열 안에 있는 작은 따옴표는 \'로 표시됩니다. SELECT ...

DBeaver / MariaDB / 연결하는 방법

DBeaver / MariaDB / 연결하는 방법

MariaDB를 명령어로만 관리하는 것은 힘듭니다. 적절한 툴을 이용하면 작업 속도를 높일 수 있습니다. MariaDB를 관리하는 툴을 여러 가지가 있는데, 그 중 하나가 DBeaver입니다. Free multi-platform database tool for developers, database administrators, analysts and all people who need to work with databases. Supports all popular databases: MySQL, PostgreSQL, SQLite, Oracle, DB2, SQL ...

MariaDB / 샘플 데이터베이스 employees 설치하기

MariaDB / 샘플 데이터베이스 employees 설치하기

데이터베이스를 다루는 공부를 할 때 데이터가 들어있는 데이터베이스가 있으면 좋다. 데이터베이스를 직접 만드는 방법도 있지만, 공개된 샘플 데이터베이스를 이용하면 편하다. MariaDB라면 test_db를 사용하면 된다. 다음은 MariaDB에 test_db를 설치하는 방법이다. GitHub에 있는 test_db 페이지에 접속한다. Clone or download를 클릭한 다음 다운로드한다. 서버에 업로드한 다음 압축을 푼다. employees.sql가 있는 폴더에서 다음과 같이 명령하여 데이터베이스를 설치한다. mysql -u root ...