English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Оператор - это ключевое слово или символ,主要用于 предложениях 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
Предположим, что переменная 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.
Оператор | Описание |
---|---|
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
Битовые операторы действуют на биты и выполняют операции по биту. Логическая таблица & и | таковы:
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, что равно 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