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

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

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

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

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

Tantor BE поддерживает большой набор встроенных типов данных, которые подходят для многих приложений. Пользователи также могут задавать свои собственные типы данных. Большинство встроенных типов данных имеют очевидные названия и семантику, более подробно они описаны в Глава 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. Имена таблицы и столбцов следуют синтаксису идентификаторов, как разъяснено в Раздел 4.1.1. Названия типов обычно также являются идентификаторами, но есть некоторые исключения. Обратите внимание, что список столбцов разделен запятыми и заключен в скобки.

Конечно, предыдущий пример надуманный. Обычно имена таблиц и столбцов передают, какие данные они хранят. Давайте рассмотрим более реалистичный пример:

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

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

Подсказка

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

Есть ограничение на количество столбцов, которое может содержать таблица. В зависимости от типов столбцов, количество может варьироваться от 250 до 1600. Однако определение таблицы с таким большим количеством столбцов является редким и часто сомнительным решением.

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

DROP TABLE my_first_table;
DROP TABLE products;

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

Если вам нужно изменить уже существующую таблицу, см. Раздел 5.6 позже в этой главе.

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