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 и прочитать остаток этой главы позже.