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 / 연산자 / 논리 연산자

MariaDB / 연산자 / 논리 연산자

MariaDB의 논리 연산자에 대하여 알아본다. 예제로 사용하는 테이블은 아래의 데이터를 가진 T_2이라는 테이블이다. C_1의 데이터 형식은 정수, C_2의 데이터 형식은 문자이다. +----+------+------+ | ID | C_1 | C_2 | +----+------+------+ | 1 | 1 | A | | 2 | 2 | B ...

MariaDB / 데이터 저장 위치 변경하는 방법

MariaDB / 데이터 저장 위치 변경하는 방법

Ubuntu 24.04 Server 현재 저장 위치 확인 MariaDB에 접속한 후 다음과 같이 명령하면... select @@datadir; 데이터 저장 경로를 확인할 수 있다. MariaDB > select @@datadir; +-----------------+ | @@datadir | +-----------------+ | /var/lib/mysql/ | +-----------------+ 데이터 저장 위치 변경 예를 들어 데이터 저장 위치를 /var/lib/mysql/에서 /data/mariadb/로 변경한다고 하면... MariaDB 서비스를 중지한다. # systemctl stop mariadb /data/mariadb 디렉토리의 소유자를 mysql로 변경한다. # ...

MariaDB / 함수 / ELT / 특정 위치의 문자열 출력하는 함수

MariaDB / 함수 / ELT / 특정 위치의 문자열 출력하는 함수

ELT는 특정 위치의 문자열을 출력하는 함수입니다. ELT( N, string1, string2, string3, ... ) A, B, C, D에서 2번째의 문자열인 B를 출력합니다. SELECT ELT( 2, 'A', 'B', 'C', 'D' ); +------------------------------+ | ELT( 2, 'A', 'B', 'C', 'D' ) | +------------------------------+ | B ...

MariaDB / TABLE / 열 추가하기, 열 삭제하기, 열 순서 변경하기, 열 데이터 타입 변경하기

MariaDB / TABLE / 열 추가하기, 열 삭제하기, 열 순서 변경하기, 열 데이터 타입 변경하기

데이터베이스 만들기 열(Column) 추가, 삭제 등을 해볼 테스트용 데이터베이스 jbTest를 만듭니다. CREATE DATABASE jbTest; 데이터베이스로 들어갑니다. USE jbTest; jbColumn1, jbColumn2, jbColumn3 세 개의 열을 가진 테이블 jbTable1을 만듭니다. CREATE TABLE jbTable1 ( jbColumn1 INT, jbColumn2 INT, jbColumn3 INT ) ; 다음은 현재 테이블 구조입니다. MariaDB > DESC jbTable1; +-----------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | ...

MariaDB / Query / GROUP BY

MariaDB / Query / GROUP BY

예제로 사용한 데이터베이스는 employees입니다. GROUP BY를 사용하면 공통 데이터를 갖고 있는 행들을 집계할 수 있습니다. 예를 들어 사번이 10001인 사원의 급여 지급 내역을 알고 싶다면 다음과 같이 쿼리합니다. SELECT emp_no, salary FROM salaries WHERE emp_no = 10001; +--------+--------+ | emp_no | salary | +--------+--------+ | 10001 | 60117 | | 10001 | 62102 | | ...

MariaDB / HeidiSQL / TIP

MariaDB / HeidiSQL / TIP

주석 설정하기 해제하기 주석으로 만들려는 코드를 선택합니다. 마우스 우클릭 후 를 클릭하면... 각 행에 --가 붙으면서 주석 처리가 됩니다. 주석을 선택한 상태에서 를 클릭하면 주석이 해제됩니다. 예약어 대문자로 만들기 예약어는 대소문자를 구분하지 않지만, 보통 대문자로 입력합니다. 대문자와 소문자를 번갈아 입력하는 것은 번거롭습니다. 다행이 HeidiSQL에는 예약어를 대문자로 바꿔주는 기능이 있습니다. 쿼리 창에서 마우스 우클릭하고 을 ...

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

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

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

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

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

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

MariaDB / Query / EVENT / 만들기, 수정하기, 삭제하기

MariaDB / Query / EVENT / 만들기, 수정하기, 삭제하기

EVENT를 사용하기 위한 설정 방법 1 다음과 같이 명령한다. MariaDB를 다시 시작하면 OFF로 변경된다. SET GLOBAL event_scheduler = ON; 방법 2 환경 설정 파일(Ubuntu Server라면 50-server.cnf, Rocky Linux라면 mariadb-server.cnf)에 다음 코드를 추가하고 MariaDB를 다시 시작한다. 영구적으로 적용된다. event_scheduler = ON 설정 상태 확인 SHOW variables LIKE 'event%'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | event_scheduler | ON | +-----------------+-------+ EVENT ...

MariaDB / Query / LEFT JOIN, RIGHT JOIN, INNER JOIN

MariaDB / Query / LEFT JOIN, RIGHT JOIN, INNER JOIN

JOIN SQL의 JOIN은 여러 테이블을 한 번에 나타낼 때 사용합니다. 대표적인 JOIN 방식은 LEFT JOIN, RIGHT JOIN, INNER JOIN이 있습니다. 다음은 세 가지 JOIN의 차이를 알아보기 위한 간단한 예제 테이블입니다. A 테이블에는 나라, B 테이블에는 도시가 있습니다. 도시가 어떤 나라의 도시인지는 a_no로 확인합니다. 나라는 있는데 도시가 없는 것도 있고, 나라는 없는데 도시는 있는 것도 있습니다. A ...