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

Основной учебник SQLite

Уровеньный учебник SQLite

Программный интерфейс SQLite

Операторы SQLite

Что такое операторы SQLite?

Оператор - это ключевое слово или символ,主要用于 предложениях WHERE в предложениях SQLite для выполнения операций, таких как сравнение и арифметические операции.

Операторы используются для указания условий в предложениях 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-запроса.

Ниже приведен SELECT-запрос, который перечисляет все записи с SALARY, превышающим 50,000.00.

Ниже приведен SELECT-запрос, который перечисляет все записи с SALARY, превышающим 50,000.00.
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0

Ниже приведен SELECT-запрос, который перечисляет все записи с 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

Ниже приведен SELECT-запрос, который перечисляет все записи с 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

Ниже приведен SELECT-запрос, который перечисляет все записи с SALARY, не равным 20,000.00.

Ниже приведен SELECT-запрос, который перечисляет все записи с SALARY, не равным 20,000.00.
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

Ниже приведен SELECT-запрос, который перечисляет все записи с SALARY, равным или превышающим 65,000.00.

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.

ОператорОписание
ANDОператор AND позволяет наличие нескольких условий в WHERE-подзадаче SQL-запроса.
BETWEENОператор BETWEEN используется для поиска значений в диапазоне между заданными минимальным и максимальными значениями.
EXISTSОператор EXISTS используется для поиска наличия строк в указанной таблице, удовлетворяющей определенным условиям.
INОператор IN используется для сравнения значения с рядом значений из указанного списка.
NOT INОператор NOT IN является противоположностью оператора IN и используется для сравнения значения с значениями, не входящими в список指定ованных значений.
LIKEОператор LIKE используется для сравнения значения с значением, подобным значению, используя оператор подстановки.
GLOBОператор GLOB используется для сравнения значения с значением, подобным значению, используя оператор подстановки. В отличие от LIKE, GLOB чувствителен к регистру.
NOTОператор NOT является противоположностью используемых логических операторов. Например, NOT EXISTS, NOT BETWEEN, NOT IN и т.д.Это оператор отрицания.
ORОператор OR используется для объединения нескольких условий в WHERE-подзапросе SQL-выражения.
IS NULLОператор NULL используется для сравнения значения с NULL.
ISОператор IS ähnelt =.
IS NOTОператор IS NOT ähnelt !=.
||Соединяет два различных строки, чтобы получить новую строку.
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-выражение, которое перечисляет все записи, где NAME начинается с 'Ki', а символы после 'Ki' не ограничены:

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

Ниже приведено SELECT-выражение, которое перечисляет все записи, где NAME начинается с '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-подзапрос, подзапрос находит все записи с полем AGE, у которых SALARY > 65000, после WHERE-пredicата, совместно с оператором 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-подзапрос, подзапрос находит все записи с полем AGE, у которых SALARY > 65000, после WHERE-пredicата, совместно с оператором >, перечислены все записи из внешнего запроса, у которых 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, что равно 0011 1101
~Битовый оператор кода補码 является односторонним оператором, который имеет эффект "переворачивания" битов, то есть 0 становится 1, а 1 становится 0.(~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