Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Команды изменения структуры таблиц

Отличия изменения данных и изменения структуры

Такие запросы как выбор (SELECT), изменение данных (UPDATE), добавление данных (INSERT), удаление (DELETE, TRUNCATE) требуется выполнять очень часто. И почти всегда их приходится генерировать программно из кода приложения. Именно поэтому важно знать синтаксис этих команд. Этот набор команд выполняет чтение и модификацию самих даннх не затрагивая структуру. Изменение структуры таблицы – операция, которая требуется довольно редко, потому что структура таблицы должна быть относительно постоянной. Но иногда меняется сама предметная область, а это влечет за собой изменения структуры некоторых таблиц.

Все изменения структуры производятся с уже созданной и сохраненной таблицей. К операциям измененяющим структуру относятся следующие операции:

  • Добавление или удаление поля;
  • Добавление или удаление индекса;
  • Добавление или удаление первичного ключа;
  • Добавление внешнего ключа с ограничениями;
  • Изменение имени поля;
  • Изменение порядка следования полей;
  • Изменение определения поля (тип, размер, значение по умолчанию, допустимость значения NULL);
  • Изменение имени таблицы.

Операцию изменения структуры таблицы нет необходимости совершать из кода программы, так как она разовая. Структуру таблиц, когда это требуется, меняет администратор баз данных. Это можно сделать либо при помощи менеджера (HeidiSQL, PhpMyadmin и т.д.), либо из командной строки при помощи команды ALTER TABLE.

Синтаксис команды ALTER TABLE

Команда ALTER TABLE имеет следующий синтаксис:

ALTER [IGNORE] TABLE имя_таблицы изменяемое_свойство1 [, изменяемое_свойство2 ...];

На месте изменяемого свойства могут быть следующие варианты:

  • ADD [COLUMN] определение_поля [FIRST | AFTER имя_поля ]
  • или ADD [COLUMN] (определение_поля1, определение_поля2,...)
  • или ADD INDEX [имя_индекса] (поле1,...)
  • или ADD PRIMARY KEY (поле1,...)
  • или ADD UNIQUE [имя_индекса] (поле1,...)
  • или ADD FULLTEXT [имя_индекса] (поле1,...)
  • или ADD [CONSTRAINT symbol] FOREIGN KEY [имя_индекса] (имя_поля1,...) [определение_ссылки]
  • или ALTER [COLUMN] имя_поля {SET DEFAULT значение_по_умолчанию | DROP DEFAULT}
  • или CHANGE [COLUMN] старое_имя_поля определение_поля [FIRST | AFTER имя_поля]
  • или MODIFY [COLUMN] определение_поля [FIRST | AFTER имя_поля]
  • или DROP [COLUMN] имя_поля
  • или DROP PRIMARY KEY
  • или DROP INDEX имя_индекса
  • или DISABLE KEYS
  • или ENABLE KEYS
  • или RENAME [TO] новое_имя_таблицы
  • или ORDER BY поле1, поле2….
  • или свойства_таблицы;
«Команды изменения структуры таблиц» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

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

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

Инструкция DISABLE KEYS блокирует обновление неуникальных индексов только для таблиц типа MyISAM, а ENABLE KEYS наоборот создает недостающие индексы.

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

Команды изменения структуры таблиц. Автор24 — интернет-биржа заказчиков и авторов

Пример 1

Для изменения имени таблицы tovar на nomenklatura нужно выполнить команду:

ALTER TABLE tovar RENAME nomenklatura;

Пример 2

Для того чтобы изменить тип поля price с float на double и запретить значение NULL нужно выполнить команду:

ALTER TABLE nomenklatura MODIFY price DOUBLE NOT NULL;

Пример 3

В таблицу nomenklatura необходимо добавить поле, где можно отмечать наличие товара на складе. Для добавления нового поля story с типом tinyint длиной 1 и беззнакового нужно выполнить команду:

ALTER TABLE nomenklatura ADD story tinyint(1) UNSIGNED;

Пример 4

Для создания индекса по полю tovar_name нужно выполнить команду:

ALTER TABLE nomenklatura ADD INDEX (tovar_name);

Пример 5

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

ALTER TABLE nomenklatura ADD short_name varchar(10) NOT NULL, ADD INDEX (short_name);

Дата написания статьи: 20.08.2016
Получи помощь с рефератом от ИИ-шки
ИИ ответит за 2 минуты
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot