Специальные символы
Специальные символы имеют особое синтаксическое значение в 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 приводит к модификации этого поля во всех записях таблицы.