English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
연산자는 컴파일러에게 특정 수학적이거나 논리적 연산을 수행하도록 명령하는 기호입니다。
PostgreSQL 연산자는 보존된 키워드나 문자로, 일반적으로 WHERE 문에서 필터 조건으로 사용됩니다。
일반적인 연산자는 다음과 같습니다:
수학 연산자
비교 연산자
id | name | age | address | salary
비트 연산자
변수 a를 가정하면 2,변수 b는 3~A =
아래 표는 PostgreSQL가 지원하는 비트 연산자를 보여줍니다. 변수 | A | 0,변수 |
---|---|---|
+ | 덧 | 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가 지원하는 비트 연산자를 보여줍니다. 변수 | A | 0,변수 |
---|---|---|
= | 等于 | (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 |
논리 연산자
PostgreSQL 논리 연산자는 다음과 같습니다: | 순번 |
---|---|
1 | SQL 사용하는 삼값 논리 시스템은 true, false, null을 포함합니다. null은 "알 수 없음"을 의미합니다. 연산자 & 설명 논리적과 연산자. 두 연산자 모두 비자리수면 조건이 참입니다. |
2 | NOT PostgresSQL 의 WHERE 문은 AND를 사용하여 여러 필터 조건을 포함할 수 있습니다. 논리적 비 연산자. 연산자의 논리 상태를 반전합니다. 조건이 참이면 논리적 비 연산자는 거짓으로 만듭니다. |
3 | OR PostgresSQL에는 NOT EXISTS, NOT BETWEEN, NOT IN 등의 연산자가 있습니다. 논리적 또는 연산자. 두 연산자 중 하나가 비자리수면 조건이 참입니다. |
PostgresSQL 의 WHERE 문은 OR를 사용하여 여러 필터 조건을 포함할 수 있습니다.
a | b | a SQL 사용하는 삼값 논리 시스템은 true, false, null을 포함합니다. null은 "알 수 없음"을 의미합니다. b | a OR b |
---|---|---|---|
TRUE | TRUE | TRUE | TRUE |
TRUE | FALSE | FALSE | TRUE |
TRUE | NULL | NULL | TRUE |
FALSE | FALSE | FALSE | FALSE |
FALSE | NULL | FALSE | NULL |
NULL | NULL | NULL | NULL |
a | NOT a |
---|---|
TRUE | FALSE |
FALSE | TRUE |
NULL | NULL |
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 |
Hall |
| Paul | | | Houston | | | Norway | | | James | |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 1 | 1 | 1 |
1 | 0 | 0 | 1 |
| 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가 지원하는 비트 연산자를 보여줍니다. 변수 | A | 0,변수 |
---|---|---|
설명 | 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)