MariaDB / 연산자 / 논리 연산자

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

+----+------+------+
| ID | C_1  | C_2  |
+----+------+------+
|  1 |    1 | A    |
|  2 |    2 | B    |
|  3 |    3 | C    |
|  4 |    0 | NULL |
|  5 | NULL | A    |
|  6 |    1 | B    |
|  7 |    2 | C    |
|  8 |    3 | NULL |
|  9 |    1 | C    |
| 10 | NULL | NULL |
+----+------+------+

반환된 값이 1인 데이터를 추출할 때는 WHERE를 사용한다.

AND

여러 조건을 동시에 만족시키는 데이터를 찾을 때 AND 연산자를 사용한다. AND 대신 &&를 사용해도 된다.

  • C_1의 값이 1이고 C_2의 값이 A이면 1을 반환한다.
SELECT
  *,
  C_1 = 1 AND C_2 = 'A' AS R
FROM T_2
;
+----+------+------+------+
| ID | C_1  | C_2  | R    |
+----+------+------+------+
|  1 |    1 | A    |    1 |
|  2 |    2 | B    |    0 |
|  3 |    3 | C    |    0 |
|  4 |    0 | NULL |    0 |
|  5 | NULL | A    | NULL |
|  6 |    1 | B    |    0 |
|  7 |    2 | C    |    0 |
|  8 |    3 | NULL |    0 |
|  9 |    1 | C    |    0 |
| 10 | NULL | NULL | NULL |
+----+------+------+------+

OR

여러 조건 중 적어도 하나를 만족시키는 데이터를 찾을 때 OR 연산자를 사용한다. OR 대신 ||를 사용해도 된다.

  • C_1의 값이 1 또는 C_2의 값이 A이면 1을 반환한다.
SELECT
  *,
  C_1 = 1 OR C_2 = 'A' AS R
FROM T_2
;
+----+------+------+------+
| ID | C_1  | C_2  | R    |
+----+------+------+------+
|  1 |    1 | A    |    1 |
|  2 |    2 | B    |    0 |
|  3 |    3 | C    |    0 |
|  4 |    0 | NULL | NULL |
|  5 | NULL | A    |    1 |
|  6 |    1 | B    |    1 |
|  7 |    2 | C    |    0 |
|  8 |    3 | NULL | NULL |
|  9 |    1 | C    |    1 |
| 10 | NULL | NULL | NULL |
+----+------+------+------+

XOR

XOR은 OR과 비슷하나 조건을 동시에 만족시키는 것을 제외한다.

  • C_1의 값이 1 또는 C_2의 값이 A이면서, C_1의 값이 1이고 C_2의 값이 A가 아니면 1을 반환한다.
SELECT
  *,
  C_1 = 1 XOR C_2 = 'A' AS R
FROM T_2
;
+----+------+------+------+
| ID | C_1  | C_2  | R    |
+----+------+------+------+
|  1 |    1 | A    |    0 |
|  2 |    2 | B    |    0 |
|  3 |    3 | C    |    0 |
|  4 |    0 | NULL | NULL |
|  5 | NULL | A    | NULL |
|  6 |    1 | B    |    1 |
|  7 |    2 | C    |    0 |
|  8 |    3 | NULL | NULL |
|  9 |    1 | C    |    1 |
| 10 | NULL | NULL | NULL |
+----+------+------+------+

NOT

NOT은 주어진 조건을 충족하지 않은 것을 찾을 때 사용한다.

  • C_1의 값이 1이 아니면 1을 반환한다.
SELECT
  *,
  NOT C_1 = 1 AS R
FROM T_2
;
+----+------+------+------+
| ID | C_1  | C_2  | R    |
+----+------+------+------+
|  1 |    1 | A    |    0 |
|  2 |    2 | B    |    1 |
|  3 |    3 | C    |    1 |
|  4 |    0 | NULL |    1 |
|  5 | NULL | A    | NULL |
|  6 |    1 | B    |    0 |
|  7 |    2 | C    |    1 |
|  8 |    3 | NULL |    1 |
|  9 |    1 | C    |    0 |
| 10 | NULL | NULL | NULL |
+----+------+------+------+

논리 연산자 여러 번 사용

논리 연산자를 여러 번 사용해야 하는 경우, 괄호를 이용하여 조건 묶음을 만든다.

  • C_1의 값이 1 또는 C_2의 값이 A이면서, C_1이 NULL이 아니면 1을 반환한다.
SELECT
  *,
  ( C_1 = 1 OR C_2 = 'A' ) AND ( C_1 IS NOT NULL ) AS R
FROM T_2
;
+----+------+------+------+
| ID | C_1  | C_2  | R    |
+----+------+------+------+
|  1 |    1 | A    |    1 |
|  2 |    2 | B    |    0 |
|  3 |    3 | C    |    0 |
|  4 |    0 | NULL | NULL |
|  5 | NULL | A    |    0 |
|  6 |    1 | B    |    1 |
|  7 |    2 | C    |    0 |
|  8 |    3 | NULL | NULL |
|  9 |    1 | C    |    1 |
| 10 | NULL | NULL |    0 |
+----+------+------+------+
같은 카테고리의 다른 글
MariaDB / 함수 / ROUND

MariaDB / 함수 / ROUND

ROUND는 반올림하는 함수이다. 별도 설정을 하지 않으면 소수 첫째 자리에서 반올림한다. SELECT ROUND( 1.4 ); +--------------+ | ROUND( 1.4 ) | +--------------+ | 1 | +--------------+ SELECT ROUND( 1.5 ); +--------------+ | ROUND( 1.5 ) | +--------------+ | 2 ...

MariaDB / 함수 / INSERT / 일정 구간 문자열 교체하는 함수

MariaDB / 함수 / INSERT / 일정 구간 문자열 교체하는 함수

INSERT는 일정 구간의 문자열을 다른 문자열로 교체하는 함수입니다. INSERT( string, position, length, new-string ) string : 원본 문자열입니다. position : 구간이 시작하는 위치입니다. length : 구간의 길이입니다. new-string : 교체될 문자열입니다. 예를 들어 다음과 같은 경우, 1234567에서 4번째 문자부터 2개를 지우고 ABC를 넣습니다. 즉, 45를 지우고 ABC를 넣습니다. MariaDB > SELECT INSERT( '1234567', 4, 2, 'ABC' ...

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 / 설치와 접속

MariaDB / 설치와 접속

Ubuntu 24.04 Server 설치 다음과 같이 명령하여 MariaDB를 설치한다. # apt install mariadb-server 다음과 같이 명령하여 root 계정의 비밀번호 생성 등 몇 가지 설정을 한다. # mysql_secure_installation Ubuntu에 설치하는 경우 MariaDB가 바로 시작된다. 그리고 컴퓨터를 다시 시작해도 MariaDB가 자동으로 시작되도록 설정된다. 접속 다음과 같이 명령하여 접속한다. # mysql -u root -p 다음과 같이 명령하여.. show databases; 데이터베이스 목록이 나오는지 확인한다. MariaDB > show ...

MariaDB / 메모

MariaDB / 메모

내보내기 가져오기와 View 테이블 View 테이블을 포함한 데이터베이스를 내보내고 가져왔을 때, View 테이블이 제대로 작동하지 않을 수 있다. View 테이블을 대상으로 한 쿼리가 되지 않는다면 View 테이블을 다시 만든다.  

MariaDB / 함수 / FORMAT / 숫자 세 자리마다 쉼표(콤마) 찍는 함수

MariaDB / 함수 / FORMAT / 숫자 세 자리마다 쉼표(콤마) 찍는 함수

FORMAT은 숫자 세 자리마다 쉼표(콤마) 찍는 함수이다. 예를 들어 다음은 123456789에서 세 자리마다 쉼표를 넣는다. MariaDB > SELECT FORMAT(123456789, 0) as Money; +-------------+ | Money | +-------------+ | 123,456,789 | +-------------+ 값이 숫자 형식이 아니어도 가능하다. MariaDB > SELECT FORMAT('123456789', 0) as Money; +-------------+ | Money | +-------------+ | 123,456,789 | +-------------+ 0이 뜻하는 ...

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 / HeidiSQL / TIP

MariaDB / HeidiSQL / TIP

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

DBeaver / MariaDB / 테이블 만들기, 삭제하기

DBeaver / MariaDB / 테이블 만들기, 삭제하기

테이블 만들기 데이터베이스를 선택하고 마우스 우클릭합니다. 을 클릭하면... 다음과 같은 화면이 나옵니다. 테이블 이름을 정하고... 마우스 우클릭 후 을 클릭하거나, 아래에 있는 아이콘을 클릭하여... 열을 만듭니다. 를 클릭하고... 를 클릭하면... 테이블이 만들어집니다. 테이블 삭제하기 테이블을 선택하고 마우스 우클릭 후 를 클릭합니다. 를 클릭하면 테이블이 삭제됩니다.

MariaDB / Procedure

MariaDB / Procedure

예제로 사용한 데이터베이스는 employees이다. Procedure Procedure를 이용하면 여러 쿼리를 한 번에 실행할 수 있다. 기본 예제 Procedure 만들기 delimiter를 다른 것으로 변경한다. MariaDB > delimiter ## create procedure로 procedure를 만든다. procedure 이름 뒤에 괄호에는 매개변수가 들어간다. p_departments라는 이름의 매개변수가 없는 Procedure이다. departments 테이블의 모든 데이터를 출력한다. MariaDB > create procedure p_departments() -> begin -> select ...