5.1. Основы таблицы#
5.1. Основы таблицы #
Таблица в реляционной базе данных очень похожа на таблицу на бумаге: она состоит из строк и столбцов. Количество и порядок столбцов фиксированы, и каждый столбец имеет имя. Количество строк переменно - оно отражает количество данных, хранящихся в данный момент. SQL не дает никаких гарантий относительно порядка строк в таблице. При чтении таблицы строки будут отображаться в произвольном порядке, если явно не указана сортировка. Об этом рассказывается в разделе Глава 7. Кроме того, SQL не назначает уникальные идентификаторы строкам, поэтому в таблице может быть несколько полностью идентичных строк. Это является следствием математической модели, на которой основан SQL, но такое поведение обычно не желательно. Позже в этой главе мы увидим, как справиться с этой проблемой.
Каждый столбец имеет определенный тип данных. Тип данных ограничивает набор возможных значений, которые могут быть присвоены столбцу, и определяет семантику данных, хранящихся в столбце, чтобы их можно было использовать для вычислений. Например, столбец, объявленный как числовой тип, не примет произвольные текстовые строки, и данные, хранящиеся в таком столбце, могут быть использованы для математических вычислений. В отличие от этого, столбец, с типом текстовой строки, примет практически любые данные, но не подходит для математических вычислений, хотя для него доступны другие операции, такие как конкатенация строк.
Tantor SE-1C поддерживает большой набор встроенных типов данных, которые подходят для многих приложений. Пользователи также могут задавать свои собственные типы данных. Большинство встроенных типов данных имеют очевидные названия и семантику, более подробно они описаны в Глава 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 и вернуться к этой главе позже.