Skip to content

Таблицы

Данные в реляционных базах данных хранятся в таблицах. Таблицы - это ключевой объект, с которыми придется работать в SQL.

Таблицы в БД совсем не отличаются от тех таблиц, с которыми все уже знакомы со школы - они состоят из колонок и строк.

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

Например, мы можем указать, что для колонки возраст тип данных - это целое число, и это число должно состоять максимум из 3-х цифр. Т.о. максимальное число, которое может содержаться в этой колонке = 999. А с помощью дополнительных конструкций можно задать и правила проверки корректности для значения в колонке,- например, мы можем указать, что для колонки возраст в таблице минимальное значение = 18.

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

sql
create table hello(
    text_to_hello varchar2(100)
);
create table hello(
    text_to_hello varchar2(100)
);

После выполнения данной sql-команды в базе данных будет создана таблица под названием hello. Эта таблица будет содержать всего одну колонку под названием text_to_hello. В этой колонке мы можем хранить только строковые значения(т.е. любой текст, который можно ввести с клавиатуры) длинной до 100 байт.

Обратите внимание на размер допустимого текста в колонке text_to_hello. 100 байт - это не одно и то же, что и 100 символов! Для того, чтобы сказать базе данных Oracle, что длина строки может быть 100 символов, нужно было определить столбец следующим образом:

text_to_hello varchar2(100 char)

Создание таблицы с несколькими полями

В таблице может много столбцов. Например, можно создать таблицу с тремя, пятью или даже 100 колонками. В версиях oracle с 8i по 11g максимальное количество колонок в одной таблице достигает 1000.

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

Например, создадим таблицу cars, в которой будем хранить марку автомобиля и страну-производитель:

sql
create table cars(
    model varchar2(50 char),
    country varchar2(70 char)
)
create table cars(
    model varchar2(50 char),
    country varchar2(70 char)
)

Эта таблица может содержать, например, такие данные:

|model |country
|toyota|japan
|ВАЗ   |Россия
|Tesla |
|      |

Следует обратить внимание на последние 2 строки в таблице cars - они не полные. Первая из них содержит данные только в колонке model, вторая - не содержит данных ни в одной из колонок. Эта таблица может даже состоять из миллиона строк, подобных последней - и каждая строка не будет содержать в себе абсолютно никаких данных.

Значения по умолчанию

При создании таблицы можно указать, какое значение будет принимать колонка по умолчанию:

sql
create table cars(
    model varchar2(50 char),
    country varchar2(50 char),
    wheel_count number(2) default 4
)
create table cars(
    model varchar2(50 char),
    country varchar2(50 char),
    wheel_count number(2) default 4
)

В этом примере создается таблица cars, в которой помимо модели и страны-производителя хранится еще и количество колес, которое имеет автомобиль. И поле wheel_count по-умолчанию будет принимать значение, равное 4.

Что значит по-умолчанию? Это значит, что если при вставке данных в эту таблицу не указать значение для колонки wheel_count, то оно будет равно числу 4.

Понятие NULL. Not-null колонки

Ячейки в таблицах могут быть пустыми, т.е. не содержать значения. Для обозначения отсутствия значения в ячейке используется ключевое слово NULL. Null могут содержать ячейки с любым типом данных.

Рассмотрим таблицу cars из предыдущего примера. В каждой из трех ее колонок может храниться Null(даже в колонке wheel_count, если указать значение Null явно при вставке).

Но представляют ли информационную ценность строки в таблице, где абсолютно нет значений? Конечно нет. Если рассматривать таблицу cars как источник информации об автомобилях, то нам хотелось бы получать хоть какую-то полезную информацию. Наиболее важной здесь будет колонка model

  • без нее информация о стране-производителе и количестве колес будет бесполезной.

Для того, чтобы запретить Null-значения в колонке при создании таблицы, к описанию колонки добавляется not null:

sql
create table cars(
    model varchar2(50 char) not null,
    country varchar2(50 char),
    wheel_count number(2) default 4
)
create table cars(
    model varchar2(50 char) not null,
    country varchar2(50 char),
    wheel_count number(2) default 4
)

Теперь БД гарантирует, что колонка model не будет пустой, по крайней мере до тех пор, пока флаг not null включен для этой колонки.

Также можно указать, что колонка wheel_count тоже не должна содержать Null:

sql
create table cars(
    model varchar2(50 char) not null,
    country varchar2(50 char),
    wheel_count number(2) default 4 not null
);
create table cars(
    model varchar2(50 char) not null,
    country varchar2(50 char),
    wheel_count number(2) default 4 not null
);

Комментарии к таблице, колонкам

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

Например, укажем комментарии для таблицы cars и ее колонок:

sql
comment on table cars is 'Список автомобилей';

comment on column cars.model is 'Модель авто, согласно тех. паспорту';
comment on column cars.country is 'Страна-производитель';
comment on column cars.wheel_count is 'Количество колес';
comment on table cars is 'Список автомобилей';

comment on column cars.model is 'Модель авто, согласно тех. паспорту';
comment on column cars.country is 'Страна-производитель';
comment on column cars.wheel_count is 'Количество колес';

Для того, чтобы удалить комментарий, нужно просто задать в качестве его значения пустую строку:

comment on table cars is '';