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

SQLite 연산자

SQLite 연산자는 무엇인가요?

연산자는 예약어나 문자로, 주로 SQLite 문장의 WHERE 절에서 비교와 산술 연산을 수행하는 데 사용됩니다.

연산자는 SQLite 문장에서 조건을 지정하고 여러 조건을 문장에 연결하는 데 사용됩니다.

  • 산술 연산자

  • 비교 연산자

  • 논리 연산자

  • 비트 연산자

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

SQLite 비교 연산자

변수 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 논리 연산자

아래는 SQLite에서 모든 논리 연산자 목록입니다.

연산자설명
ANDAND 연산자는 SQL 문의 WHERE 절에서 여러 조건이 존재할 수 있게 합니다.
BETWEENBETWEEN 연산자는 주어진 최소 값과 최대 값 범위 내의 값 중 하나를 검색하는 데 사용됩니다.
EXISTSEXISTS 연산자는 특정 조건을 만족하는 테이블에서 행이 존재하는지 검색하는 데 사용됩니다.
ININ 연산자는 특정 목록의 값과 비교하는 데 사용됩니다.
NOT ININ 연산자의 반대, 특정 목록에 없는 값과 비교하는 데 사용됩니다.
LIKELIKE 연산자는 특정 값이 와일드 카드 연산자로 표현된 유사 값과 비교하는 데 사용됩니다.
GLOBGLOB 연산자는 특정 값이 와일드카드 연산자를 사용한 유사한 값과 비교될 때 사용됩니다. GLOB과 LIKE의 차이는 대소문자를 구분하는 점입니다.
NOTNOT 연산자는 사용된 논리 연산자의 반대입니다. 예를 들어 NOT EXISTS, NOT BETWEEN, NOT IN 등이 있습니다.그것은 부정 연산자입니다.
OROR 연산자는 SQL 문의 WHERE 절에서 여러 조건을 결합하는 데 사용됩니다.
IS NULLNULL 연산자는 특정 값이 NULL 값과 비교될 때 사용됩니다.
ISIS 연산자는 =과 유사합니다.
IS NOTIS NOT 연산자는 !=와 유사합니다.
||두 개의 다른 문자열을 연결하여 새로운 문자열을 얻습니다.
UNIQUEUNIQUE 연산자는 지정된 테이블의 각 행을 검색하여 유일성(중복 없음)을 보장합니다.

온라인 예제

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

SQLite 비트 연산자

비트 연산자는 비트에 영향을 미치며, 비트별로 작업을 수행합니다. &와 |의 진리 표如下:

pqp & qp | q
0000
0101
1111
1001

만약 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