Самоучитель по SQL-сервер в Linux



Специальные символы

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


Книжный магазин