English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PostgreSQL 연산자

연산자는 컴파일러에게 특정 수학적이거나 논리적 연산을 수행하도록 명령하는 기호입니다。

PostgreSQL 연산자는 보존된 키워드나 문자로, 일반적으로 WHERE 문에서 필터 조건으로 사용됩니다。

일반적인 연산자는 다음과 같습니다:

  • 수학 연산자

  • 비교 연산자

  • id | name  | age |  address  | salary

  • 비트 연산자

수학 연산자

변수 a를 가정하면 2,변수 b는 3~A  =

아래 표는 PostgreSQL가 지원하는 비트 연산자를 보여줍니다. 변수A0,변수
+a + b 결과는 5
-a - b 결과는 -1
*a * b 결과는 6
/b / a 결과는 1
%모(나머지)b % a 결과는 1
^인덱스a ^ b 결과는 8
|/최소값|/ 25.0 결과는 5
||/최댓값||/ 27.0 결과는 3
!5 ! 결과는 120
!!곱(전치 연산자)!! 5 결과는 120

온라인 예제

w3codeboxdb=# select 2+3;
 ?column?
----------
        5
(1 row)
w3codeboxdb=# select 2*3;
 ?column?
----------
        6
(1 row)
w3codeboxdb=# select 10/5;
 ?column?
----------
        2
(1 row)
w3codeboxdb=# select 12%5;
 ?column?
----------
        2
(1 row)
w3codeboxdb=# select 2^3;
 ?column?
----------
        8
(1 row)
w3codeboxdb=# select |/ 25.0;
 ?column?
----------
        5
(1 row)
w3codeboxdb=# select ||/ 27.0;
 ?column?
----------
        3
(1 row)
w3codeboxdb=# select 5 !;
 ?column?
----------
      120
(1 row)
w3codeboxdb=# select !!5;
 ?column?
----------
      120
(1 row)

비교 연산자

변수 a를 가정하면 10,변수 b는 20이면:

아래 표는 PostgreSQL가 지원하는 비트 연산자를 보여줍니다. 변수A0,변수
=等于(a = b)가 false입니다。
!=不等于(a != b)가 true입니다。
<>不等于(a <> b)가 true입니다。
>大于(a > b)가 false입니다。
<小于(a < b)가 true입니다。
>= 大于等于(a >= b)가 false입니다。
<=小于等于(a <= b)가 true입니다。

온라인 예제

COMPANY.SQL 파일 내용은 다음과 같습니다:

-- This is the file to create COMPANY table and to populate it with 7 records.
-- Just copy and past them on psql prompt.
DROP TABLE COMPANY;
CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE           INT     NOT NULL,
   ADDRESS       CHAR(50),}}
   SALARY         REAL
);
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Allen', 25, 'Texas', 15000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (5, 'David', 27, 'Texas', 85000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (6, 'Kim', 22, 'South-Hall', 45000.00 );
INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00 );

COMPANY 테이블을 생성하고, 데이터 내용은 다음과 같습니다:

w3codeboxdb=# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 Mond  |  24 | Houston   |  10000
(7 | Kim   |

SALARY 필드가大于 5SALARY 필드가 다른 데이터를 읽습니다:

w3codeboxdb=# SELECT * FROM COMPANY WHERE SALARY > 5FROM COMPANY WHERE SALARY <>
 id | name | age | address | salary
----+-------+-----+-----------+--------
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
(2 | Kim   |

SALARY 필드가等于 2SALARY 필드가 다른 데이터를 읽습니다:

w3codeboxdb=#  SELECT * FROM COMPANY WHERE SALARY = 2FROM COMPANY WHERE SALARY <>
 id | name  | age |  address    | salary
 ----+-------+-----+-------------+--------
   1 | Paul  |  32 | California  |  20000
   3 | Teddy |  23 | Rich  20000
(2 | Kim   |

FROM COMPANY WHERE SALARY = 2SALARY 필드가 다른 데이터를 읽습니다:

w3codeboxdb=#  SELECT * 0000의 데이터: 2FROM COMPANY WHERE SALARY <>
 id | name  | age |  address    | salary
----+-------+-----+-------------+--------
  2 | Allen |  25 | David |  15000
  4 | Mark  |  25 | Rich-Mond   |  65000
  5 | David |  27 | David |  85000
  6 | Kim   |  22 | South-Hall  |  45000
  7 Mond  |  24 | Houston     |  10000
(5 | Kim   |
w3codeboxdb=# SELECT * FROM COMPANY WHERE SALARY != 2FROM COMPANY WHERE SALARY <>
 0000;
----+-------+-----+------------+--------
  2 | Allen |  25 Mond  |  15000
  4 | Mark  |  25 | Rich-id | name  | age | address    | salary  65000
  5 | David |  27 Mond  |  85000
  6 | Kim   |  22 | South-| Texas      |  45000
  7 Mond  |  24 Hall |  10000
(5 | Kim   |

| Houston    |  65SALARY 필드가 큰 수이거나 같은 데이터를 읽습니다:

w3codeboxdb=# SELECT * 000의 데이터: 65FROM COMPANY WHERE SALARY >=
 000;
----+-------+-----+-----------+--------
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
(2 | Kim   |

id | name  | age |  address  | salary

논리 연산자

PostgreSQL 논리 연산자는 다음과 같습니다:순번
1

SQL 사용하는 삼값 논리 시스템은 true, false, null을 포함합니다. null은 "알 수 없음"을 의미합니다.

연산자 & 설명

논리적과 연산자. 두 연산자 모두 비자리수면 조건이 참입니다.



2

NOT

PostgresSQL  의 WHERE 문은 AND를 사용하여 여러 필터 조건을 포함할 수 있습니다.

논리적 비 연산자. 연산자의 논리 상태를 반전합니다. 조건이 참이면 논리적 비 연산자는 거짓으로 만듭니다.
3

OR

PostgresSQL에는 NOT EXISTS, NOT BETWEEN, NOT IN 등의 연산자가 있습니다.

논리적 또는 연산자. 두 연산자 중 하나가 비자리수면 조건이 참입니다.

PostgresSQL  의 WHERE 문은 OR를 사용하여 여러 필터 조건을 포함할 수 있습니다.

aba SQL 사용하는 삼값 논리 시스템은 true, false, null을 포함합니다. null은 "알 수 없음"을 의미합니다. ba OR b
TRUETRUETRUETRUE
TRUEFALSEFALSETRUE
TRUENULLNULLTRUE
FALSEFALSEFALSEFALSE
FALSENULLFALSENULL
NULLNULLNULLNULL
aNOT a
TRUEFALSE
FALSETRUE
NULLNULL

온라인 예제

COMPANY.SQL 文件内容如下:

-- This is the file to create COMPANY table and to populate it with 7 records.
-- Just copy and past them on psql prompt.
DROP TABLE COMPANY;
CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE           INT     NOT NULL,
   ADDRESS       CHAR(50),}}
   SALARY         REAL
);
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Allen', 25, 'Texas', 15000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (5, 'David', 27, 'Texas', 85000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (6, 'Kim', 22, 'South-Hall', 45000.00 );
INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00 );

COMPANY 테이블을 생성하고, 데이터 내용은 다음과 같습니다:

w3codeboxdb=# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 Mond  |  24 | Houston   |  10000
(7 | Kim   |

읽기 AGE 필드가 큰等于  25 SALARY 필드가 크게等于 6500의 데이터:

w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 6500;
 id | name  | age |                      address                  | salary
----+-------+-----+-----------------------------------------------+--------
  1 | Paul  |  32 | California                                    |  20000
  2 | Allen |  25 | Texas                                         |  15000
  4 | Mark  |  25 | Rich-Mond                                     |  65000
  5 | David |  27 | Texas                                         |  85000
(4 | Kim   |

읽기 AGE 필드가 큰等于  25 또는 SALARY 필드가 크게 6500의 데이터:

w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 6500;
 id | name  | age |  address    | salary
----+-------+-----+-------------+--------
  1 | Paul  |  32 | California  |  20000
  2 | Allen |  25 | David |  15000
  3 | Teddy |  23 | Rich  20000
  4 | Mark  |  25 | Rich-Mond   |  65000
  5 | David |  27 | David |  85000
  6 | Kim   |  22 | South-Hall  |  45000
  7 Mond  |  24 | Houston     |  10000
  8 | Paul  |  24 | Houston     |  20000
  9 Mond  |  44 | Rich   5000
 10 Mond  |  45 | David |   5000
(10 | Kim   |

읽기 SALARY 필드가 NULL이 아닌 데이터:

w3codeboxdb=#  SELECT * FROM COMPANY WHERE SALARY IS NOT NULL;
 id | name  | age |  address    | salary
----+-------+-----+-------------+--------
  1 | Paul  |  32 | California  |  20000
  2 | Allen |  25 | David |  15000
  3 | Teddy |  23 | Rich  20000
  4 | Mark  |  25 | Rich-Mond   |  65000
  5 | David |  27 | David |  85000
  6 | Kim   |  22 | South-Hall  |  45000
  7 Mond  |  24 | Houston     |  10000
  8 | Paul  |  24 | Houston     |  20000
  9 Mond  |  44 | Rich   5000
 10 Mond  |  45 | David |   5000
(10 | Kim   |

| South

Hall  |

| Paul  || Houston     || Norway      || James |
0000
0101
1111
1001

| Texas       | 6rows) 13비트 연산자

비트 연산자는 비트에 대해 작용하며, 비트별로 연산을 수행합니다. &、 | 및 ^의 참 가장자리 표는 다음과 같습니다:11 1100

p 1101

-----------------

q 1100

p & q11 1101

p | q11 0001

으로 나타냅니다. 그렇다면 B = 1100 0011

A = 00 B = 0000 A^B = 00 6A&B = 0000 A|B = 00 A^B = 00 13~A  =

아래 표는 PostgreSQL가 지원하는 비트 연산자를 보여줍니다. 변수A0,변수
설명

B

의 값은   
,그렇다면:1=0;    
1연산자     
1설명1=1;
예제 12,이므로 0000 1100
|

비트 이동 연산자, 비트에 대해 "이동" 연산을 수행합니다. 연산 규칙:

0|0=0;   
0|1=1;   
1|0=1;    
1|1=1;
(A | B) 이렇게 됩니다 61,이므로 0011 1101
#

이전 연산자, 이진 비트에 대해 "이전" 연산을 수행합니다. 연산 규칙:

0#0=0;   
0#1=1;   
1#0=1;  
1#1=0;
(A # B) 이렇게 됩니다 49,이므로 0011 0001
~

역반전 연산자, 이진 비트에 대해 "역반전" 연산을 수행합니다. 연산 규칙:

~1=0;   
~0=1;
(~A ) 이렇게 됩니다 -61,이므로 1100 0011,이진수로 표현된 부호가 있는 정수입니다.
<<이진 왼쪽 이동 연산자. 연산 대상의 각 이진 비트를 모두 일정한 비트로 왼쪽으로 이동시킵니다. 왼쪽의 이진 비트는 버리고, 오른쪽에 0을 채웁니다.A << 2 그렇게 됩니다 240,이므로 1111 0000
>>이진 오른쪽 이동 연산자. 한 수의 각 이진 비트를 모두 일정한 비트로 이동시킵니다. 양수는 왼쪽에서 0으로 채우고, 음수는 왼쪽에서1,오른쪽에서 버립니다.A >> 2 그렇게 됩니다 15,이므로 0000 1111

온라인 예제

w3codeboxdb=# select 60 | 13;
 ?column?
----------
       61
(1 row)
w3codeboxdb=# select 60 & 13;
 ?column?
----------
       12
(1 row)
w3codeboxdb=#  select  (~60);
 ?column?
----------
      -61
(1 row)
w3codeboxdb=# select  (60 << 2);
 ?column?
----------
      240
(1 row)
w3codeboxdb=# select  (60 >> 2);
 ?column?
----------
       15
(1 row)
w3codeboxdb=#  select 60 # 13;
 ?column?
----------
       49
(1 row)