Основы таблиц

5.1. Основы таблиц

Таблица в реляционной базе данных похожа на таблицу на бумаге: она состоит из строк и колонок. Каждая колонка имеет имя, а количество и порядок колонок являются постоянной величиной. Количество строк является переменной величиной — оно отражает количество данных, которое хранится в таблице в данный момент. SQL не гарантирует какого-то порядка строк в таблице. При чтении таблицы, строки выдаются в произвольном порядке, если только явно не затребована сортировка. Об этом рассказывается в Chapter 7. Кроме того, SQL не назначает для строк уникальных идентификаторов, так что в таблице может существовать несколько полностью идентичных строк. Такое поведение является следствием математической модели, по которой работает SQL, но обычно оно нежелательно. Далее в этой главе мы рассмотрим, что с этим делать.

Каждая колонка имеет свой тип данных. Тип данных ограничивает список возможных значений, которые могут находится в этой колонке и определяет семантику данных, хранящихся в колонке, благодаря чему эти данные могут использоваться при каких-либо вычислениях. Например, если объявлено, что колонка имеет числовой тип данных, то в неё не могут быть помещены произвольные строки текста, а данные, хранимые в этой колонке могут быть использованы для математических вычислений. В противоположность этому, если объявлено, что колонка имеет тип данных символьная строка, то в неё можно поместить любой вид данных, но сами эти данные не могут быть использованы для математических вычислений, в то время как для этих данных доступны другие операции, например такие, как слияние строк.

PostgreSQL включает большой список встроенных типов данных, которые подходят для работы многих приложений. Пользователи также могут задавать свои собственные типы данных. Большинство встроенных типов данных имеют очевидные имена и семантику, так что мы отложим детальный рассказ о них до Chapter 8. Некоторые из наиболее часто используемых типов — это integer для простых чисел, numeric для дробных чисел, text для символьных строк, date для дат, time для времени и timestamp для значений, содержащих и дату и время.

Чтобы создать какую-либо таблицу, используйте команду CREATE TABLE. В этой команде необходимо, как минимум, задать имя для новой таблицы, имена колонок и типы данных для этих колонок. Например:

CREATE TABLE my_first_table (
    first_column text,
    second_column integer
);

Создаётся таблица с именем my_first_table и двумя колонками. Первая колонка имеет имя first_column и тип данных text; вторая колонка имеет имя second_column и тип данных integer. Имена таблиц и колонок должны выбираться по синтаксическим правилам формирования идентификаторов, о которых рассыказывается в Section 4.1.1. Имена типов обычно также являются идентификаторами, но есть некоторые исключения. Заметим, что список колонок заключается в круглые скобки, а описания колонок отделяются запятой.

Разумеется, что предыдущий пример сильно утрирован. Обычно, таблицам и колонками даются такие имена, которые говорят о том, какие данные в них хранятся. Вот пример, который более приближен к реальности:

CREATE TABLE products (
    product_no integer,
    name text,
    price numeric
);

(Тип numeric может хранить дробные значения, например такие как денежные).

Tip: Когда вы создаёте множество пересекающихся таблиц, правильно выбирать для таблиц и колонок имена, говорящие сами за себя. Например, можно выбрать использование имен состоящих из одного или нескольких слов, оба эти варианта являются излюбленными для тех или иных людей.

Существует ограничение на количество колонок, которое может содержать таблица. В зависимости от типов данных колонок, оно колеблется между 250 и 1600. Однако, создание таблиц, содержащих такое множество колонок является очень неэффективным подходом и часто является следствием некорректного проектирования базы данных.

Если какая-либо таблица вам больше не нужна, вы можете удалить её, используя команду DROP TABLE. Например:

DROP TABLE my_first_table;
DROP TABLE products;

Попытка удалить таблицу, которая не существует приведёт к ошибке. Тем не менее, во многих файлах с SQL скриптами выполняется безусловная попытка удалить каждую таблицу, перед её созданием, игнорируя сообщения об ошибках, так что скрипт работает существует ли данная таблица или нет. (Если вы хотите, вы можете использовать вариант DROP TABLE IF EXISTS, чтобы избежать получения сообщений об ошибке, но это не по стандарту SQL.)

Если вам нужно изменить таблицу, которая уже существует, смотрите далее, в этой главе Section 5.5.

С помощью инструментов, о которых мы рассказали, вы можете создавать полнофункциональные таблицы. Остаток этой главы рассказывает о дополнительных возможностях по созданию таблиц, которые позволяют быть уверенными в целостности данных, безопасности или удобстве. Если вам нетерпится заполнить вашы таблицы данными, вы можете пропустить материал до Chapter 6 и прочитать остаток этой главы позже.

Back to top

(С) Виктор Вислобоков, 2008-2023