SQLite 클래식 튜토리얼login
SQLite 클래식 튜토리얼
작가:php.cn  업데이트 시간:2022-04-13 17:05:02

SQLite 연산자


SQLite 연산자란 무엇인가요?

연산자는 예약어 또는 문자로, 비교 및 ​​산술 연산과 같은 SQLite 문의 WHERE 절에서 연산을 수행하는 데 주로 사용됩니다.

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

  • 산술 연산자

  • 비교 연산자

  • 논리 연산자

  • 비트 연산자

SQLite 산술 연산자

변수 a=10, 변수 b=20, 다음과 같이 가정합니다.

运算符描述实例
+加法 - 把运算符两边的值相加a + b 将得到 30
-减法 - 左操作数减去右操作数a - b 将得到 -10
*乘法 - 把运算符两边的值相乘a * b 将得到 200
/除法 - 左操作数除以右操作数b / a 将得到 2
%取模 - 左操作数除以右操作数后得到的余数b % a will give 0

다음은 SQLite 산술 연산자의 간단한 예입니다:

sqlite> .mode line
sqlite> 20 = 30

sqlite> 선택 10 - 20;
10 - 20 = -10


sqlite> 선택 10 * 20;
10 * 20 = 200


sqlite> 10 / 5 선택;
10 / 5 = 2


sqlite> 12% 5 선택;
12% 5 = 2

SQLite 비교 연산자

변수 a=10, 변수 b=20, 다음과 같이 가정합니다.

COMPANY 테이블에 다음 레코드가 있다고 가정합니다. ---- ---------- ---------- ------- ---

1 Paul 32 California 20000.0
2 Allen 25 Texas 1500 0.0
3 Teddy 23 노르웨이 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 김 22 사우스홀 45000.0
7 제임스 24 휴스턴 10000.0

다음 예에서는 다양한 SQLite 비교 연산자의 사용을 보여줍니다.

여기서는 WHERE 절을 사용하는데, 이는 나중에 별도의 장에서 설명하겠지만, 이제 WHERE 절이 SELECT 문의 조건을 설정하는 데 사용된다는 점을 이해해야 합니다. 성명.

다음 SELECT 문은 SALARY가 50,000.00보다 큰 모든 레코드를 나열합니다.

sqlite> SELECT * FROM COMPANY WHERE SALARY >
ID AGE ADDRESS SALARY
---------- ---------- ---------- ----------- -------- - -
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0

다음 SELECT 문은 SALARY가 20,000.00과 같은 모든 레코드를 나열합니다.

sqlite> SELECT * 급여가 20000인 회사에서;
ID 이름 연령 주소 급여
---------- ---------- ------- --- ----  ---------  ---------
1           폴        32          캘리포니아  20000.0
3          테디       23          노르웨이      200 00.0

다음 SELECT 문은 SALARY가 20,000.00이 아닌 모든 레코드를 나열합니다.

sqlite> SELECT * FROM COMPANY WHERE SALARY != 20000;
ID                                  -- -------- ---------- ---------- ---------- ----------
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

다음 SELECT 문은 SALARY가 20,000.00이 아닌 모든 레코드를 나열합니다.

sqlite> SELECT * FROM COMPANY WHERE SALARY <>
ID 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

다음 SELECT 문은 SALARY가 65,000.00보다 크거나 같은 모든 레코드를 나열합니다.

sqlite> SELECT * FROM COMPANY WHERE SALARY >= 65000;
ID     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 테이블에 다음 레코드가 있다고 가정합니다. ---- ---------- ---------- ------- ---

1 Paul 32 California 20000.0
2 Allen 25 Texas 1500 0.0
3 Teddy 23 노르웨이 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 김 22 사우스홀 45000.0
7 제임스 24 휴스턴 10000.0

다음 예에서는 SQLite 논리 연산자의 사용을 보여줍니다.

다음 SELECT 문은 AGE가 25보다 크거나 같고 급여가 65000.00보다 크거나 같은 모든 레코드를 나열합니다.

sqlite> * 연령 >= 25 및 급여 >= 65000;
ID                                                                                                                                                                     ---------
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 이름 나이 주소 급여
------------ --------- -- --- ----------
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> 나이는 NULL이 아닙니다.
ID 이름 나이 주소 급여
------------ ---------- ---------- ---- ------ ---- ------ ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 노르웨이 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 문은 NAME이 'Ki'로 시작하는 모든 레코드를 나열합니다. 'Ki' 뒤의 문자는 제한되지 않습니다.

sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki %' ; ---- ----------
6 Kim 22 South-Hall 45000.0

다음 SELECT 문은 NAME이 'Ki'로 시작하는 모든 레코드를 나열합니다. 'ki' 뒤의 문자는 문자를 제한하지 않습니다:

Select*from Company where name glob 'ki*'; ---------- ---------- ----------
6 김 22 사우스홀 45000.0


더 다음 SELECT 문은 AGE 값이 25 또는 27인 모든 레코드를 나열합니다.
sqlite> SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );

ID                                              > - ---------

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                                      > >    ~에게 ---------
1 Paul 32 California 20000.0
3 Teddy 23 노르웨이 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
---- ----- ---------- ---------- ---------- ----- -----
2 알렌 25 텍사스 15000.0
4 마크 25 리치몬드 65000.0
5 데이비드 27 텍사스 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 이름 AGE ---------- -------- ---------- ---------- ----------
1 Paul 32 California 20000.0
SQLite 비트 연산자

비트 연산자는 비트에 대해 작동하고 비트 단위로 작업을 수행합니다. 진리표 & 및 |는 다음과 같습니다.

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,即为 0011 1101
~二进制补码运算符是一元运算符,具有"翻转"位效应。(~A ) 将得到 -61,即为 1100 0011,2 的补码形式,带符号的二进制数。
<<二进制左移运算符。左操作数的值向左移动右操作数指定的位数。A << 2 将得到 240,即为 1111 0000
>>二进制右移运算符。左操作数的值向右移动右操作数指定的位数。A >> 2 将得到 15,即为 0000 1111

다음 예는 SQLite 비트 연산자의 사용법을 보여줍니다.

sqlite> ; .mode 라인
sqlite> 60 | 13;
60 | 13 = 61

sqlite> 60 & 13 = 12

; 선택 60 ^ 13;
10 * 20 = 200


sqlite> 선택(~60);
(~60) = -61

sqlite> (60<<2);
(60<<2) = 240

sqlite> 선택(60>>2);
(60>>2 ) = 15