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

Создание таблиц

Таблицы создаются командой 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) байт в шестнадцатеричной системе

\\ \

Любой другой символ, следующий за обратной косой чертой, представляет сам себя.