- •Идентификаторы
- •Заключённый в кавычки идентификатор
- •Константы
- •Строковые константы
- •Константы, экранированные знаками доллара
- •Битово-строковые константы
- •Числовые константы
- •Операторы
- •Комментарии
- •Лексические приоритеты
- •Значения по умолчанию
- •Ограничения данных
- •Ограничения Check
- •Ограничения не-Null
- •Ограничения уникальности
- •Удаление таблиц
Создание таблиц
Таблицы создаются командой CREATE TABLE. Эта команда создает пустую таблицу - таблицу без строк. Команда CREATE TABLE определяет имя таблицы и описание набора имён столбцов, указанных в определенном порядке. Она также определяет типы данных и размеры столбцов. Синтаксис команды CREATETABLE:
CREATE TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name
(column_name <data_type> [<column_constraint>,{ <column_constraint>}]}
[ <table_constraint> ] [ ,...n ] )
Так как пробелы используются для разделения частей команды SQL, они не могут быть частью имени таблицы (или любого другого объекта, такого как индекс).
Таблицы принадлежат пользователю, который их создал, и имена всех таблиц, принадлежащих данному пользователю, должны отличаться друга от друга, как и имена всех столбцов внутри данной таблицы. Отдельные таблицы могут использовать одинаковые имена столбцов, даже если они принадлежат одному и тому же пользователю.
CREATE TABLE my_first_table (
first_column text,
second_column integer
);
Замена существующих таблиц Когда вы создаете новую таблицу, указываемое вами имя не должно существовать в СУБД, иначе будет выдано сообщение об ошибке. Чтобы избежать случайной перезаписи, SQL требует, чтобы вы вначале вручную удалили таблицу (подробности освещены в следующем разделе), а затем вновь создали ее, а не просто перезаписали.
Существует ограничение на количество колонок, которое может содержать таблица. В зависимости от типов данных колонок, оно колеблется между 250 и 1600. Однако, создание таблиц, содержащих такое множество колонок часто является следствием некорректного проектирования базы данных.
Идентификаторы
Наименования таблиц и столбцов являются примерами идентификаторов. Они идентифицируют объектов базы данных, в зависимости от команды, в которой они используются.
Идентификаторы SQL и должны начинаться с букв или символа подчёркивания (_). Остальные символы в идентификаторе или ключевом слове могут быть буквами, подчёркиваниями, цифрами (0-9) или знаками доллара ($). Заметим, что знак доллара в идентификаторах, не разрешается по стандарту SQL, так что его использование может сделать приложения менее переносимыми.
Длина идентификаторадолжна быть не более NAMEDATALEN-1 байт; в командах могут использоваться и более длинные имена, но они будут урезаны. По умолчанию значение NAMEDATALEN составляет 64, так что максимальная длина идентификатора может быть 63 байта.
Идентификаторы и ключевые слова являются независимыми от регистра букв.
Заключённый в кавычки идентификатор
Он имеет форму заключенной в двойные кавычки (") произвольной последовательности символов. Разделённый идентификатор всегда является идентификатором и никогда не может быть ключевым словом.
Заключённые в кавычки идентификаторы могут содержать любые символы, кроме символа с кодом ноль. Это позволяет конструировать такие имена таблиц или колонок, которые в других случаях были бы невозможны, например содержащие пробелы или амперсанды.
Заключение идентификатора в кавычки также делает его зависимым от регистра букв. Например, идентификаторы FOO, foo и "foo" считаются PostgreSQL одинаковыми, а "Foo" и "FOO" отличаются от предыдущих трёх и друг от друга.
Константы
В PostgreSQL существует три вида неявно-задаваемых констант: строки, битовые строки и числа. Константы могут также быть заданы с явным указанием типа, позволяет более аккуратно представить значение константы и более эффективно ей управлять.
Строковые константы
Строковая константа в SQL - это произвольная последовательность символов, заключённых в одинарные кавычки ('). Чтобы включить символ одинарной кавычки внутрь строковой константы, нужно написать его дважды.
Две строковые константы, которые разделены только пустым пространством с как минимум одним переводом строки сливаются и будут считаться одной строковой константой. Например:
SELECT 'foo'
'bar';
эквивалентно:
SELECT 'foobar';
но:
SELECT 'foo' 'bar';
является неправильным синтаксисом. (Такое странное поведение задаётся в SQL; PostgreSQL следует стандарту).
PostgreSQL также понимает "экранированные" строковые константы: которые являются расширением стандарта SQL. Экранированные строки задаются с помощью буквы E (в верхнем или нижнем регистре), за которой следует открывающая одиночная кавычка, например E'foo'. (Если экранированная строковая константа занимает несколько строк, пишите E только перед первой открывающей кавычкой.) Внутри экранированной строки, символ обратная косая черта (\), начинает экранированную обратной косой чертой последовательность как в языке Си, в которой комбинация обратной косой черты и следующего за ней символа или символов, представляет специальное байтовое значение
\’ ‘
\b забой символа
\f подача формы
\n новая строка
\r возврат каретки
\t табуляция
\o, \oo, \ooo (o = 0 - 7) байт в восьмеричной системе
\xh, \xhh (h = 0 - 9, A - F) байт в шестнадцатеричной системе
\\ \
Любой другой символ, следующий за обратной косой чертой, представляет сам себя.