SQLite Операторы
Что такое оператор SQLite?
Оператор — это зарезервированное слово или символ, в основном используемый в предложении WHERE инструкции SQLite для выполнения операций, таких как сравнения и арифметические операции.
Операторы используются для указания условий в инструкции SQLite и для объединения нескольких условий в инструкции.
Арифметические операторы
Операторы сравнения
Логические операторы
Побитовые операторы
Арифметические операторы SQLite
Предположим, переменная a=10 и переменная b=20, тогда:
| Operator | Описание | Пример |
|---|---|---|
| + | Сложение — складывает значения с обеих сторон оператора | 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, тогда:
| Operator | Описание | Пример |
|---|---|---|
| == | Проверяет, равны ли значения двух операндов; если да, условие становится истинным. | (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:
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
Следующий оператор 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:
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 больше или равно 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.
| Operator | Описание |
|---|---|
| AND | Оператор AND позволяет наличие нескольких условий в предложении WHERE оператора SQL. |
| МЕЖДУ | Оператор BETWEEN используется для поиска значений в диапазоне значений, заданном минимальным и максимальным значением. |
| EXISTS | Оператор EXISTS используется для поиска наличия строки в указанной таблице, удовлетворяющей определённым критериям. |
| IN | Оператор IN используется для сравнения значения со списком указанных значений. |
| NOT IN | Противоположность оператора IN, используется для сравнения значения со значениями, которых нет в указанном списке. |
| LIKE | Оператор LIKE используется для сравнения значения с похожими значениями с помощью подстановочных знаков. |
| GLOB | Оператор GLOB используется для сравнения значения с похожими значениями с помощью подстановочных знаков. GLOB отличается от LIKE тем, что учитывает регистр. |
| НЕ | Оператор NOT является противоположностью используемого логического оператора. Например, NOT EXISTS, NOT BETWEEN, NOT IN и т. д.Это отрицающий оператор. |
| OR | Оператор OR используется для объединения нескольких условий в предложении WHERE оператора SQL. |
| 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 больше или равен 25andand SALARY больше или равен 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 больше или равно 25orand SALARY больше или равно 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, используемое с оператором 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, используемое с оператором >, выводит все записи во внешнем запросе, где AGE больше, чем значения 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
Побитовые операторы действуют на биты и выполняют операции побитово. Таблицы истинности для & и | выглядят следующим образом:
| 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, тогда:
| Operator | Описание | Пример |
|---|---|---|
| & | Двоичный оператор 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Другие расширения