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 |
+----+------+------+------+

Related Posts

MariaDB / TABLE / 만들기, 삭제하기, 이름 변경하기

MariaDB / TABLE / 만들기, 삭제하기, 이름 변경하기

테이블 만들기 test 데이터베이스를 만듭니다. MariaDB > CREATE DATABASE test; Query OK, 1 row affected (0.00 sec) test 데이터베이스를 사용합니다. MariaDB > USE test; Database changed table1을 만듭니다. 열이 하나도 없으면 테이블이 만들어지지 않으므로, 적어도 하나 이상의 열을 만듭니다. MariaDB > CREATE TABLE table1 ( column1 VARCHAR(100) ); Query OK, 0 rows affected (0.35 sec) 테이블이 만들어졌는지 확인합니다. MariaDB > SHOW ...

MariaDB / Query / WHERE

MariaDB / Query / WHERE

예제로 사용한 데이터베이스는 employees이다. WHERE를 이용하면 조건에 맞는 데이터만 추출할 수 있다. 예를 들어 다음과 같이 쿼리하면 gener가 M인 경우 1을 반환하는데... SELECT first_name, gender, gender = 'M' FROM employees LIMIT 10 ; +------------+--------+--------------+ | first_name | gender | gender = 'M' | +------------+--------+--------------+ | Georgi | M ...

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

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

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

MariaDB / TABLE / AUTO_INCREMENT / 자동으로 증가하는 값 만들기

MariaDB / TABLE / AUTO_INCREMENT / 자동으로 증가하는 값 만들기

테이블에는 데이터를 특정할 수 있는 고유값이 있는 게 좋습니다. 고유값을 수동으로 넣을 수는 없으므로, 값을 자동으로 증가시키는 AUTO_INCREMENT를 사용합니다. AUTO_INCREMENT로 고유값이 어떻게 만들어지는지 알아보겠습니다. 사용하는 테이블 이름은 test입니다. 자동으로 증가하는 열 만들기 열 이름은 id, 데이터 타입은 정수(INT)로 만듭니다. 데이터 타입 뒤에 AUTO_INCREMENT PRIMARY KEY를 붙입니다. MariaDB > CREATE TABLE test ( id INT AUTO_INCREMENT ...

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 / 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 ...

MariaDB / 함수 / LENGTH, BIT_LENGTH, CHAR_LENGTH / 문자열 길이 출력하는 함수

MariaDB / 함수 / LENGTH, BIT_LENGTH, CHAR_LENGTH / 문자열 길이 출력하는 함수

LENGTH LENGTH는 바이트(byte)로 계산된 문자열의 길이를 출력합니다. 영어. 숫자, 특수문자 등은 1로, 한글은 3으로 계산합니다. SELECT LENGTH( 'A1#가' ); +--------------------+ | LENGTH( 'A1#가' ) | +--------------------+ | 6 | +--------------------+ BIT_LENGTH BIT_LENGTH는 비트(bit)로 계산된 문자열의 길이를 출력합니다. 영어, 숫자, 특수문자 등은 ...

MariaDB / 함수 / ROUND

MariaDB / 함수 / ROUND

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

MariaDB / Query / 주석

MariaDB / Query / 주석

MariaDB의 쿼리문에서 주석을 만드는 방법은 세 가지가 있습니다. 한 줄 주석 한 줄 주석을 만들고 싶다면 # 또는 --를 사용합니다. 기호가 있는 다음부터 줄 끝까지가 주석이 됩니다. # Comment -- Comment 여러 줄 주석 여러 줄의 주석을 만들고 싶다면 /* */를 사용합니다. /* Comment Comment */

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 | | ...