Специальные символы
Специальные символы имеют особое синтаксическое значение в PostgreSQL. По этой причине они обычно не могут использоваться в идентификаторах, хотя, как упоминалось выше в пункте «Защищенные идентификаторы» подраздела «Ключевые слова и идентификаторы», данное ограничение обычно удается обойти при помощи кавычек.
Синтаксические символы
Некоторые специальные символы выполняют в командах SQL примерно те же функции, что и знаки препинания в английском языке. В табл. 3.5 перечислены основные синтаксические символы PostgreSQL.
Таблица 3.5. Синтаксические символы
Символ
|
Определение
|
* (звездочка)
|
Выборка всех полей таблицы в команде SELECT, а также подсчет всех записей в агрегатной функции count ()
|
( ) (круглые скобки)
|
Группировка выражений, изменение приоритета операторов и вызов функций. Смысл круглых скобок в значительной степени зависит от контекста
|
[ ] (квадратные скобки)
|
Выборка конкретного элемента массива или объявление типа массива (например, в команде CREATE TABLE)
|
: (точка с запятой)
|
Признак завершения команды SQL. Внутри команд может использоваться только в строковых константах и защищенных идентификаторах
|
. (запятая)
|
Разделитель элементов в списке
|
. (точка)
|
Десятичный разделитель в вещественных константах (например, 3.1415), а также квалификатор имен полей (например, table name. column name)
|
: (двоеточие)
|
Определение срезов (slices) в массивах
|
$ (знак доллара)
|
Обозначение позиционного параметра в определении функции
|
Операторы
Другую категорию специальных символов составляют операторы, предназначенные для выполнения различных операций с идентификаторами или константами. Операторы могут использоваться как для математических вычислений (сложение, вычитание и т. д.), так и для сравнения и логических операций.
Вернемся к таблице books и ее числовому полю author_id. Вспомните, что в этом поле хранится целочисленный код, определяющий автора книги. Теперь представьте, что вследствие модификации системы все коды авторов должны быть увеличены на 1500. Задача решается командой UPDATE и выполнением операции с полем author_id. При этом используется оператор сложения (+). Пример приведен в листинге 3.10.
Листинг 3.10. Операторы в командах SQL
booktown=# SELECT * FROM books;
id | title author_id | subject_id
7808 | The Shining |4156 | 9
156 | The Tell-Tale Heart| 15| 9
4513 | Dune |1866 |15
4267 | 2001: A Space Odyssey| 2001| 15
1608 | The Cat in the Hat |1809| 2
1590 | Bartholomew and the Oobleck |1809| 2
(6 rows)
booktown=# UPDATE books SET author_id = author _id + 1500;
UPDATE 6
booktown=# SELECT * FROM books;
id title | author_id | subject_id
7808 | The Shining | 5656 | 9
156 | The Tell-Tale Heart 1515| 9
4513| Dune 3366 | 15
4267 | 2001; A Space Odyssey 3501 | 15
1608 | The Cat in the Hat | 3309 |2
1590 | Bartholomew and the Oobleck | 3309 | 2
Как видно из листинга 3.10, выполнение операции сложения с предыдущим значением поля author_id приводит к модификации этого поля во всех записях таблицы.
Вероятно, вы уже знакомы с основными математическими операторами: + (суммирование двух числовых величин), - (вычитание) и т. д. Существуют и другие, более экзотические операторы — например, поразрядные операторы & и |, которые модифицируют значения на уровне двоичного представления.
Некоторые ключевые слова SQL также часто относятся к категории операторов. В первую очередь это логические операторы AND, OR и NOT. Формально являясь ключевыми словами, они причисляются к операторам, поскольку предназначаются для выполнения операций с константами и идентификаторами.
Основные операторы PostgreSQL перечислены в табл. 3.6.
Таблица 3.6. Основные операторы PostgreSQL
Оператор
|
Определение
|
Математические операторы
|
+
|
Сложение двух чисел
|
-
|
Вычисление разности двух чисел
|
/
|
Вычисление частного от деления двух чисел
|
*
|
Умножение двух чисел
|
!
|
Факториал целого числа
|
§
|
Модуль (абсолютное значение) числа
|
Операторы сравнения
|
=
|
Проверка эквивалентности двух величин
|
<
|
Проверка условия «первое число меньше второго»
|
>
|
Проверка условия «первое число больше второго»
|
~
|
Поиск совпадения регулярного выражения в тексте
|
Логические операторы
|
NOT
|
Логическое отрицание
|
AND
|
Логическая конъюнкция (true, если оба логических операнда равны true)
|
OR
|
Логическая дизъюнкция (true, если хотя бы один из логических операндов равен true)
|
Смысл многих операторов может изменяться в зависимости от контекста, но оператор = играет особенно важную роль в секции SET команды UPDATE.
Хотя в большинстве выражений оператор = требуется для проверки эквивалентности двух величин, в сочетании с идентификатором в секции SET команды UPDATE он становится оператором присваивания и используется для присваивания нового значения существующему идентификатору.
За дополнительной информацией об операторах обращайтесь к разделу «Операторы» в главе 5.
|