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

Cозданная база данных пуста, в этом можно убедиться при помощи команды:

SHOW TABLES;

Создание новой таблицы (в квадратные скобки заключены необязательные параметры):

CREATE TABLE имя_таблицы(
имя_поля1 тип_поля1 [NOT NULL | NULL] [DEFAULT значние по умолчанию] [UNIQUE] [AUTO_INCREMENT],

имя_поляN тип_поляN,

PRIMARY KEY (ключевое_поле1, …, ключевое_полеN),
FOREIGN KEY (внешний_ключ) references имя_таблицы (поле таблицы, на которую ссылается внешний ключ) on delete ограничение on update ограничение) ENGINE = тип_таблицы;

Работа с ограничениями

Ограничения могут применяться на уровне полей или на уровне таблицы. Ограничения первичного ключа — это ограничения, действующие на уровне таблицы, а NOT NULL ограничения — это ограничения на уровне поля. Существуют три основных типа ограничений, используемых в реляционной базе данных, — ограничения целостности данных, ограничения целостности ссылок и ограничения первичного ключа. Ограничения целостности данных (data integrity constraints) относятся к значениям данных в некоторых полях и определяются в спецификации поля с помощью элементов SQL NOT NULL, UNIQUE. Ограничения целостности ссылок (referential constraints) относятся к связям между таблицами на основе связи первичного и внешнего ключей. Ограничения первичного ключа относятся к значениям данных в полях первичного ключа таблицы и должно налагаться на каждую базовую таблицу реляционной базы данных. В таблице ниже приведен список ограничений, применяемых в реляционных базах данных.
Ограничение Описание
DEFAULT Помещает значение по умолчанию в поле, гарантирует, что поле всегда имеет значение. Значения по умолчанию должны быть константами. Если для данного столбца не задается никакой величины DEFAULT и столбец может принимать NULL как допустимую величину, то по умолчанию присваивается значение NULL.
FOREIN KEY Гарантирует, что значение существует как значение в поле первичного ключа другой таблицы, обеспечивает процедуры удаления дочерних строк при удалении связанных с ней родительских.
NOT NULL Гарантирует, что поле всегда содержит значение. Если не указывается ни NULL, ни NOT NULL, то столбец интерпретируется так, как будто указано NULL.
PRIMARY KEY Гарантирует, что поле всегда содержит значение и оно уникально в таблице.
UNIQUE Ограничение UNIQUE гарантирует уникальность значений поля. Оно используется, если нужно следить за тем, чтобы значения поля, не являющегося первичным ключом, были уникальны в таблице.

AUTO_INCREMENT используется для создания поля-счетчика (значение поля обладают свойством наращивания). Примечание: в таблице может быть только одно поле AUTO_INCREMENT.

Внешние ключи (FOREIGN KEY) — это основной механизм для организации связей между таблицами и поддержания целостности и непротиворечивости информации в базе данных. Внешний ключ – это поле таблицы, которое может содержать только те значения, которые находятся в ключевом поле другой таблицы, на которую ссылается внешний ключ. Внешний ключ связывает две таблицы. Отношение, содержащее первичный ключ (например, "Товар"), называют родительским отношением. Отношение, содержащее внешний ключ (например, "Заказ"), называется дочерним отношением.

Например: рассмотрим две таблицы базы данных «Склад»: Товар и Заказ.
Напомним, что ключом отношения Товар является атрибут Артикул товара. Тогда в отношении Заказ атрибут Артикул товара будет внешним ключом, ссылающимся на ключ отношения Товар. Это означает, что значения атрибута Артикул товара отношения Заказ выбираются из значений атрибута Артикул товара отношения Товар.
Значения внешнего ключа могут повторяться. Для отношения Заказ это означает, что один и тот же товар может участвовать в разных поставках. Атрибут, являющийся внешним ключом, может иметь произвольное название, необязательно совпадающее с названием первичного ключа отношения, на которое ссылается внешний ключ. Связанные поля не обязательно должны иметь одинаковые имена, однако, они должны иметь соответствующие типы данных.

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

Существуют следующие стратегии поддержания ссылочной целостности:

Типы таблиц

ОписаниеMyISAMInnoDB
MyISAM — одна из основных (наряду с InnoDB) систем хранения данных в СУБД MySQL. Поддерживается с версий MySQL 3.x, до версий MySQL 5.5 являлась системой хранения по умолчанию. Поддержка InnoDB появилась в MySQL версии 3.23, а начиная с версии 5.5 стал основным хранилищем по умолчанию.
Поддержка внешних ключей НетДа
Поддержка транзакций. Транзакция (Transaction) — блок операторов SQL, который в случае ошибки в одном запросе, возвращается к предыдущему состоянию (Rollback), и только в случае выполнения всех запросов подтверждается (Commit). НетДа
Блокировка Блокировка на уровне таблиц, т.е. если процессу нужно обновить строку в таблице, то он блокирует всю таблицу.Блокировка на уровне строк, т.е. если процессу нужно обновить строку в таблице, то он блокирует только эту строку, позволяя другим обновлять другие строки параллельно.
Если преобладают операции чтения (SELECT) Работает быстрееРаботает медленнее
Бинарное копировании таблиц. Табличные файлы можно перемещать между компьютерами разных архитектур и разными операционными системами без всякого преобразования.ДаНет
Файловое хранение таблиц Каждой таблице отдельный файлДанные при настройках по умолчанию хранятся в больших совместно используемых файлах.
MyISAM-таблицы используются в тех случаях, когда таблицы не изменяются или изменяются достаточно редко, там, где СУБД используется для чтения, а не модификации информации. InnoDB приоритетнее там, где важна целостность данных, а целостность данных важна везде, где есть модификация: запись/обновление/удаление.

Рассмотрим пример создания таблицы "Товар":

CREATE TABLE tovar (
articul smallint not null,
type varchar(50) not null,
firm varchar(50) not null,
description varchar(50) not null,
primary key (articul));

type — наименование товара. Например, процессор, жесткий диск, CD-диск и т.д.
firm — фирма-производитель товара. Например, Acer, Kingston, SONY.
description – описание товара.
Теперь, когда таблица создана, команда SHOW TABLES должна вывести следующее:

Tables in sklad
Tovar

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

DESCRIBE tovar;

Field Type Null Key Default Extra
articul smallint NO PRI 0  
type varchar(50) NO   NULL  
firm varchar(50 NO   NULL  
description varchar(50) NO   NULL  

Использовать команду DESCRIBE можно в любое время, например, если вы забудете имена столбцов или типы, к которым они относятся.
Просматривать результат можно не только в форме таблицы, но и построчно, для этого необходимо использовать атрибут \G.
домой назад далее