Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
db_lectures / 05. Создание таблиц. Имена. Ограничения данных.docx
Скачиваний:
41
Добавлен:
21.05.2015
Размер:
30 Кб
Скачать

Операторы

Имя оператора - это последовательность из следующего списка: + - * / < > = ~ ! @ # % ^ & | ` ?

Комментарии

Комментарий - это последовательность символов, которая начинается с двойного символа дефиса и продолжается до конца строки, например:

-- This is a standard SQL comment

Кроме того, можно использовать блок комментария в стиле языка C:

/* multiline comment

* with nesting: /* вложенный блок комментариев */

*/

Лексические приоритеты

Table 4-2 показывает приоритет и ассоциативность операторов в PostgreSQL. Приортитет и ассоциативность операторов жёстко встроенны в анализатор. Это может создать поведение, которое не является интуитивно-понятным; например логические операторы < и > имеют приоритет, который отличается от приоритета операторов <= и >=. Также, когда вы будете использовать комбинации бинарных и унарных операторов, вам иногда придётся добавлять круглые скобки. Например:

SELECT 5 ! - 6;

будет понято как:

SELECT 5 ! (- 6);

потому что анализатор не знает — пока не станет слишком позно — что ! задаётся как постфиксный оператор, а не как инфиксный. Чтобы получить в данном случае желаемое поведение, вы должны написать так:

SELECT (5 !) - 6;

Такова плата за расширяемость.

Оператор/Элемент Ассоциативность Описание

. слева разделитель имени таблицы/колонки

:: слева приведение типа в стиле PostgreSQL

[ ] слева выбор элемента массива

- справа унарный минус

^ слева знак степени

* / % слева умножение, деление, целочисленное деление

+ - слева сложение, вычитание

IS IS TRUE, IS FALSE, IS UNKNOWN, IS NULL

ISNULL проверка на null

NOTNULL проверка на не null

(все другие) слева все другие стандартные и заданные пользователем операторы

IN список членов

BETWEEN вместимость диапазон вместимости

OVERLAPS перекрытие временного интервала

LIKE ILIKE SIMILAR совпадение строкового шаблона

< > меньше чем, больше чем

= справа присваивание, назначение

NOT справа логическое отрицание

AND слева логическое умножение

OR слева логическое сложение

Заметим, что данные правила приоритетов операторов также применимы к оператором, определённым пользователем, которые имеют такие же имена как и встроенные операторы, описанные выше. Например, если вы определили оператор "+" для какого-либо своего типа данных, он будет иметь такой же приоритет как и встроенный оператор "+", не зависимо от того, что его создали вы.

Когда в синтаксисе OPERATOR используется имя оператора вместе с именем схемы, как в этом примере:

SELECT 3 OPERATOR(pg_catalog.+) 4;

OPERATOR сконструированный оператор имеет по умолчанию приоритет указанный в Table 4-2 для оператора "все другие". Это истина не зависит от того какой оператор будет внутри OPERATOR().

Значения по умолчанию

Для колонки можно задать значение по умолчанию. Если при создании новой строки в таблице, значения для некоторых колонок не будут указаны, то эти колонки могут быть заполнены заданными для них значениями по умолчанию.

Если значение по умолчанию явно не задано, то значением по умолчанию является null. Обычно это правильно, потому что значение null может быть использовано для обозначения неизвестных данных.

Значения по умолчанию перечисляются после типа данных колонки при создании таблицы.

CREATE TABLE products (

product_no integer,

name text,

price numeric DEFAULT 9.99

);

Значение по умолчанию может также быть каким-либо выражением, которое будет выполнятся во время вставки значения по умолчанию (а не во время создания таблицы). Типичный пример — это колонка с типом данных, который объединяет дату и время — timestamp, где значением по умолчанию является выражение CURRENT_TIMESTAMP. При вставке новой строки, это выражение получает текущую дату и время.