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

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

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

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

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 / Query / UNION, UNION ALL

MariaDB / Query / UNION, UNION ALL

UNION 또는 UNION ALL을 이용하면 여러 테이블의 데이터를 합하여 출력할 수 있습니다. 예를 들어 다음과 같은 테이블과... SELECT * FROM test_1; +-------+-------+-------+ | col_1 | col_2 | col_3 | +-------+-------+-------+ | 1 | A | 1 | | 2 | ...

MariaDB / DATABASE / 백업하기, 복원하기

MariaDB / DATABASE / 백업하기, 복원하기

모든 데이터베이스 백업과 복원 백업 모든 데이터베이스를 backup-all.sql로 백업 user는 권한 있는 사용자명으로 변경 mysqldump -u user -p --all-databases > backup-all.sql 복원 backup-all.sql을 복원 user는 권한 있는 사용자명으로 변경 mysql -u user -p < backup-all.sql 특정 데이터베이스 백업과 복원 백업 abc 데이터베이스를 abc.sql로 백업 user는 권한 있는 사용자명으로 변경 mysqldump -u user -p abc > abc.sql 복원 abc.sql을 데이터베이스 abc로 복원 user는 권한 있는 사용자명으로 변경 mysql ...

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

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

FIND_IN_SET은 특정 문자열의 위치를 출력하는 함수입니다. FIND_IN_SET( pattern, string_list ) A, B, C, D에서 B가 몇 번째 위치하는지를 출력합니다. 두 번째에 있으므로 출력하는 값은 2입니다. SELECT FIND_IN_SET( 'B', 'A,B,C,D' ); +-------------------------------+ | FIND_IN_SET( 'B', 'A,B,C,D' ) | +-------------------------------+ | ...

DBeaver / MariaDB / CSV 가져오기

DBeaver / MariaDB / CSV 가져오기

대량의 데이터를 CSV 파일로 만들어서 테이블에 삽입할 수 있다. 명령어로도 가능하지만 툴을 이용하는 게 편하다. DBeaver에서 CSV 데이터를 Import하는 방법을 알아본다. CSV의 열과 테이블의 열이 일치하는 경우 다음과 같은 테이블이 있다고 하자. ID는 PRIMARY KEY로 자동 증가 값이다. 엑셀이나 메모장 등으로 CSV 파일을 만든다. 1행에는 열 이름을 넣는다. 자동 증가 값을 가지는 ID의 경우 ...

MariaDB / 함수 / REPEAT / 문자열 반복하여 출력하는 함수

MariaDB / 함수 / REPEAT / 문자열 반복하여 출력하는 함수

개요 REPEAT는 문자열을 반복하여 출력하는 함수입니다. REPEAT( string, count ) string : 반복될 문자열 count : 반복 횟수 예제 123을 4번 반복하여 출력합니다. SELECT REPEAT( '123', 4 ); +---------------------+ | REPEAT( '123', 4 ) | +---------------------+ | 123123123123 | +---------------------+ 반복 횟수가 1 미만이면 빈 문자열을 출력합니다. SELECT REPEAT( '123', 0 ); +--------------------+ | REPEAT( '123', 0 ) ...

MariaDB / VIEW / 만들기, 수정하기, 삭제하기

MariaDB / VIEW / 만들기, 수정하기, 삭제하기

예제로 사용한 데이터베이스는 employees이다. VIEW VIEW는 SELECT의 결과를 테이블처럼 사용할 수 있게 해준다. 반복되는 쿼리를 대체하거나, 민감한 정보를 숨기고 싶을 때 사용한다. VIEW 만들기 CREATE VIEW 예를 들어 남자인 직원의 first_name과 last_name을 VIEW로 만든다고 하자. 우선 VIEW로 만들 데이터를 추출하는 쿼리를 만든다. SELECT first_name, last_name FROM employees WHERE gender = 'M' ; CREATE VIEW로 VIEW를 만든다. v_employees_male는 VIEW의 이름으로, 적절히 ...

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

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

데이터베이스 조회 데이터베이스 목록을 조회한다. SHOW DATABASES; 데이터베이스 만들기 test라는 이름의 데이터베이스를 만든다. CREATE DATABASE test; 이미 존재하는 데이터베이스와 같은 이름의 데이터베이스를 만들려고 하면 에러가 난다. 같은 이름의 데이터베이스가 존재하지 않을 때만 만들고 싶다면 IF NOT EXISTS를 추가한다. CREATE DATABASE IF NOT EXISTS test; 마침표 등 특별한 문자를 포함하는 경우에 에러가 난다. 억음 부호로 이름을 감싸면 에러가 나지 않는다. CREATE DATABASE ...

MariaDB / HeidiSQL / MariaDB에 연결하는 방법

MariaDB / HeidiSQL / MariaDB에 연결하는 방법

HeidiSQL로 MariaDB에 접속해보겠습니다. 만약 다른 기기에 있는 MariaDB라면 통신이 가능하도록 포트가 열려 있어야 합니다. MariaDB의 기본 포트는 3306입니다. HeidiSQL을 실행하면 세션 관리자가 열립니다. 를 클릭합니다. 다음과 같은 화면이 나오는데, 네트워크 유형이 MariaDB or MySQL인 것을 확인하고... 서버 정보를 입력합니다. 세션 이름은 적절히 정하고 합니다. 이제 세션 이름을 더블 클릭하거나, 를 클릭하여 접속할 수 있습니다. 아래는 MariaDB에 접속한 ...