English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
연산자는 예약어나 문자로, 주로 SQLite 문장의 WHERE 절에서 비교와 산술 연산을 수행하는 데 사용됩니다.
연산자는 SQLite 문장에서 조건을 지정하고 여러 조건을 문장에 연결하는 데 사용됩니다.
산술 연산자
비교 연산자
논리 연산자
비트 연산자
변수 a를 가정합니다 =10변수 b =20이면:
연산자 | 설명 | 예제 |
---|---|---|
+ | 加法 - 연산자 양쪽의 값을 더합니다 | a + b는 30 |
- | 減法 - 왼쪽 연산자에서 오른쪽 연산자를 뺍니다 | a - b는 -10 |
* | 乗法 - 연산자 양쪽의 값을 곱합니다 | a * b는 200 |
/ | 除法 - 왼쪽 연산자를 오른쪽 연산자로 나눕니다 | b / a는 2 |
% | 모듈러 연산 - 왼쪽 연산자를 오른쪽 연산자로 나눈 나머지 값 | b % a는 0을 반환합니다 |
아래는 SQLite 산술 연산자의 간단한 예제입니다:
sqlite> .mode line sqlite> select 10 + 20; 10 + 20 = 30 sqlite> select 10 - 20; 10 - 20 = -10 sqlite> select 10 * 20; 10 * 20 = 200 sqlite> select 10 / 5; 10 / 5 = 2 sqlite> select 12 % 5; 12 % 5 = 2
변수 a를 가정합니다 =10변수 b =20이면:
연산자 | 설명 | 예제 |
---|---|---|
== | 두 연산자의 값이 같은지 확인합니다. 같다면 조건이 참입니다. | (a == b) 는 참이 아닙니다. |
= | 두 연산자의 값이 같은지 확인합니다. 같다면 조건이 참입니다. | (a = b) 는 참이 아닙니다. |
!= | 두 연산자의 값이 같은지 확인합니다. 다를 경우 조건이 참입니다. | (a != b) 는 참입니다. |
<> | 두 연산자의 값이 같은지 확인합니다. 다를 경우 조건이 참입니다. | (a <> b) 는 참입니다. |
> | 좌 연산자의 값이 우 연산자의 값보다 크면 조건이 참입니다. | (a > b)은 참이 아닙니다. |
< | 좌 연산자의 값이 우 연산자의 값보다 작으면 조건이 참입니다. | (a < b)은 참입니다. |
>= | 좌 연산자의 값이 우 연산자의 값보다 크거나 같으면 조건이 참입니다. | (a >= b)은 참이 아닙니다. |
<= | 좌 연산자의 값이 우 연산자의 값보다 작거나 같으면 조건이 참입니다. | (a <= b)은 참입니다. |
!< | 좌 연산자의 값이 우 연산자의 값보다 작거나 같지 않으면 조건이 참입니다. | (a !< b)은 거짓입니다. |
!> | 좌 연산자의 값이 우 연산자의 값보다 작거나 같지 않으면 조건이 참입니다. | (a !> b)은 참입니다. |
COMPANY 테이블은 다음과 같은 기록을 가지고 있습니다:
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
아래의 예제는 다양한 SQLite 비교 연산자의 사용법을 보여줍니다.
여기서는 WHERE 절, 이는 나중에 별도의 장에서 설명될 것입니다. 하지만 지금은 WHERE 절이 SELECT 문의 조건 문장으로 사용되는 것을 이해해야 합니다.
의 SALARY가 크게 50,000.00의 모든 기록:
sqlite> SELECT * FROM COMPANY WHERE SALARY > 50000; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0
의 SALARY가 크게 일치 20,000.00의 모든 기록:
sqlite> SELECT * FROM COMPANY WHERE SALARY = 20000; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 3 Teddy 23 Norway 20000.0
의 SALARY가 크게 불일치 20,000.00의 모든 기록:
sqlite> SELECT * FROM COMPANY WHERE SALARY != 20000; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 2 Allen 25 Texas 15000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
의 SALARY가 크게 불일치 20,000.00의 모든 기록:
sqlite> SELECT * FROM COMPANY WHERE SALARY <> 20000; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 2 Allen 25 Texas 15000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
의 SALARY가 크게等于 65의 모든 기록:
sqlite> SELECT * FROM COMPANY WHERE SALARY >= 65000; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0
아래는 SQLite에서 모든 논리 연산자 목록입니다.
연산자 | 설명 |
---|---|
AND | AND 연산자는 SQL 문의 WHERE 절에서 여러 조건이 존재할 수 있게 합니다. |
BETWEEN | BETWEEN 연산자는 주어진 최소 값과 최대 값 범위 내의 값 중 하나를 검색하는 데 사용됩니다. |
EXISTS | EXISTS 연산자는 특정 조건을 만족하는 테이블에서 행이 존재하는지 검색하는 데 사용됩니다. |
IN | IN 연산자는 특정 목록의 값과 비교하는 데 사용됩니다. |
NOT IN | IN 연산자의 반대, 특정 목록에 없는 값과 비교하는 데 사용됩니다. |
LIKE | LIKE 연산자는 특정 값이 와일드 카드 연산자로 표현된 유사 값과 비교하는 데 사용됩니다. |
GLOB | GLOB 연산자는 특정 값이 와일드카드 연산자를 사용한 유사한 값과 비교될 때 사용됩니다. GLOB과 LIKE의 차이는 대소문자를 구분하는 점입니다. |
NOT | NOT 연산자는 사용된 논리 연산자의 반대입니다. 예를 들어 NOT EXISTS, NOT BETWEEN, NOT IN 등이 있습니다.그것은 부정 연산자입니다. |
OR | OR 연산자는 SQL 문의 WHERE 절에서 여러 조건을 결합하는 데 사용됩니다. |
IS NULL | NULL 연산자는 특정 값이 NULL 값과 비교될 때 사용됩니다. |
IS | IS 연산자는 =과 유사합니다. |
IS NOT | IS NOT 연산자는 !=와 유사합니다. |
|| | 두 개의 다른 문자열을 연결하여 새로운 문자열을 얻습니다. |
UNIQUE | UNIQUE 연산자는 지정된 테이블의 각 행을 검색하여 유일성(중복 없음)을 보장합니다. |
COMPANY 테이블은 다음과 같은 기록을 가지고 있습니다:
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
아래의 예제는 SQLite 논리 연산자의 사용법을 설명합니다.
아래의 SELECT 문은 AGE가大于等于 25 및급여가大于等于 65000.00의 모든 기록:
sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0
아래의 SELECT 문은 AGE가大于等于 25 또는급여가大于等于 65000.00의 모든 기록:
sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0
아래의 SELECT 문은 AGE가 NULL이 아닌 모든 기록을 나열합니다. 결과는 모든 기록이 나타나며, 이는 AGE가 NULL인 기록이 없다는 것을 의미합니다:
sqlite> SELECT * FROM COMPANY WHERE AGE IS NOT NULL; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
아래의 SELECT 문은 'Ki'로 시작하는 모든 기록을 나열합니다. 'Ki' 이후의 문자는 제한이 없습니다:
sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%'; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 6 Kim 22 South-Hall 45000.0
아래의 SELECT 문은 'Ki'로 시작하는 모든 기록을 나열합니다. 'Ki' 이후의 문자는 제한이 없습니다:
sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*'; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 6 Kim 22 South-Hall 45000.0
아래의 SELECT 문은 AGE 값이 25 또는 27 의 모든 기록:
sqlite> SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 ); ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 2 Allen 25 Texas 15000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0
아래의 SELECT 문은 AGE 값이 25 도 아닙니다 27 의 모든 기록:
sqlite> SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 ); ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 3 Teddy 23 Norway 20000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
아래의 SELECT 문은 AGE 값이 25 와 27 의 모든 기록:
sqlite> SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 2 Allen 25 Texas 15000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0
아래 SELECT 문은 SQL 서브 쿼리를 사용하며, 서브 쿼리는 SALARY > 65000의 AGE 필드를 가진 모든 기록이며, 후속 WHERE 절은 EXISTS 연산자와 함께 사용되어, 외부 쿼리의 AGE가 내부 쿼리의 결과에 존재하는 모든 기록을 나열합니다:
sqlite> SELECT AGE FROM COMPANY WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000); AGE ---------- 32 25 23 25 27 22 24
아래 SELECT 문은 SQL 서브 쿼리를 사용하며, 서브 쿼리는 SALARY > 65000의 AGE 필드를 가진 모든 기록이며, 후속 WHERE 절은 > 연산자와 함께 사용되어, 외부 쿼리의 AGE가 내부 쿼리의 결과의 나이보다 큰 모든 기록을 나열합니다:
sqlite> SELECT * FROM COMPANY WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000); ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0
비트 연산자는 비트에 영향을 미치며, 비트별로 작업을 수행합니다. &와 |의 진리 표如下:
p | q | p & q | p | q |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 1 | 1 | 1 |
1 | 0 | 0 | 1 |
만약 A= 60,그리고 B= 13,이제 이진 형식으로 보여집니다:
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
~A = 1100 0011
아래 표는 SQLite 언어가 지원하는 비트 연산자를 나열합니다. 변수 A=60,변수 B=13,그렇다면:
연산자 | 설명 | 예제 |
---|---|---|
& | 둘 중 모두에 존재하면, 이진 AND 연산자는 해당 비트를 결과에 복사합니다. | (A & B) 을 통해 12,이므로 0000 1100 |
| | 둘 중 하나의 연산자에 존재하면, 이진 OR 연산자는 해당 비트를 결과에 복사합니다. | (A | B) 을 통해 61으로 변환됩니다.11 1101 |
~ | 이진 보충 연산자는 일원 연산자로 "전환" 비트 효과가 있으며, 즉 0이1,10으로 변환됩니다. | (~A ) 을 통해 -61,即为 1100 0011، 부호 이진수의 보충 형식으로 있습니다. |
<< | 이진 수를 왼쪽으로 이동하는 연산자입니다. 왼쪽 연산자의 값을 오른쪽 연산자가 지정한 비트수만큼 왼쪽으로 이동시킵니다. | A << 2 됩니다 240,即为 1111 0000 |
>> | 이진 오른쪽 이동 연산자. 왼쪽 연산자의 값이 오른쪽 연산자가 지정한 비트 수만큼 오른쪽으로 이동합니다. | A >> 2 됩니다 15,이므로 0000 1111 |
아래의 예제는 SQLite 비트 연산자의 사용법을 보여줍니다:
sqlite> .mode line sqlite> select 60 | 13; 60 | 13 = 61 sqlite> select 60 & 13; 60 & 13 = 12 sqlite> select (~60); (~60) = -61 sqlite> select (60 << 2); (60 << 2) = 240 sqlite> select (60 >> 2); (60 >> 2) = 15