Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

On update set noll on delete cascade




Удаление таблиц

Удалить таблицу из базы данных можно следующим образом:

DROP TABLE имяТаблицы;

Разумеется, при удалении таблицы теряются и все содержащиеся в ней данные. Во время работы с базой данных нередко созда­ются таблицы для временного хранения данных, полученных на каком-то промежуточном этапе. Рано или поздно такие таблицы подлежат удалению.

Однако можно забыть это сделать. Кроме того, промежуточные таблицы, создаваемые приложениями, могут остаться в базе данных из-за сбоев. Поэтому для создания временных таблиц лучше использовать оператор creat TEMPORARY TABLE,а нe CREATE TABLE.

Временная таблица, созданная с помощью create temporary table, автоматически уничтожается по окончании сеанса работы с базой данных.

Модификация таблиц

Разработка базы данных обычно происходит итеративно. Редко когда удается сразу оптимально определить структуру входящих в нее таблиц, чтобы потом их не переделывать. Кроме того, уже готовая база данных со временем может пополняться новыми таблицами,. которые связываются с уже имеющимися. А уста­новка новых связей требует коррекции параметров в старых таб­лицах.

Модификация таблицы — это изменение ее структуры, т. е. добавление, удаление и переименование столбцов, а также изменение их типов и размеров.

Язык SQL обладает специальными средствами модификации таблиц. Если бы их не было, или если отказаться их применять, то изменение структуры таблицы можно выполнить следующим образом:

1. Создать новую рабочую таблицу с необходимой структурой.

2. С помощью оператора insert into вставить в рабочую таб­лицу данные из исходной таблицы.

3. Удалить исходную таблицу.

4. Переименовать рабочую таблицу, присвоив ей имя исходной.

Все предыдущие операции можно выполнить посредством рас­смотренных ранее операторов SQL. Переименование таблицы можно сделать средствами программной среды разработки базы данных. Если же ограничиться только операторами SQL, то вместо переименования придется выполнить следующее:

1. Создать новую таблицу с именем исходной и с такой же структурой, как у рабочей таблицы.

2. С помощью оператора insert into вставить в новую таблицу данные из рабочей таблицы.

3. Удалить рабочую таблицу.

 

 

Как видите, изменение структуры таблицы обычными операто­рами SQL довольно трудоемко. Значительно проще изменить структуру таблицы с помощью оператора alter table (изменить таблицу). С помощью дополнительных ключевых слов можно выполнить следующие операции:

v add column — добавить столбец;

v drop column — удалить столбец;

v alter column — изменить тип, размер и ограничение столбца;

v rename column — переименовать столбец;

v rename ТО — переименовать таблицу.

 

Типичной задачей изменения структуры таблицы является до­бавление столбца. Это можно сделать с помощью SQL-выражения с таким синтаксисом:

 

ALTER TABLE имяТаблицы ADD COLUMN имяСтолбца тип(размер)

Например:

 

ALTER TABLE Студенты

ADD COLUMN Адрес CHAR (25);

Добавленный столбец оказывается последним в таблице, т. е. занимает крайнюю правую позицию. Иногда это неудобно. Пусть, например, столбец имя в таблице занимает первую пози­цию, а ранее забытый и позднее добавленный столбец Фамилия — десятую позицию. Чтобы выборка данных из этой таблицы вы­глядела привычным образом, приходится специально указывать необходимое расположение столбцов в операторе select,

на­пример, SELECT Имя, Фамилия FROM...

Выражение add column может использоваться в выражении alter table несколько раз — для каждого отдельного столбца. При определении параметров добавляемого столбца можно ука­зать ограничение для него. Следующее SQL-выражение добавля­ет в таблицу студенты столбец id_ст и объявляет его первичным ключом:

 

ALTER TABLE Студенты

ADD COLUMN ID_ct INTEGER PRIMARY KEY;

He следует забывать, что первичный ключ в таблице может быть только один. Если в таблице уже есть первичный ключ, то до­бавление столбца как первичного ключа не будет выполнено. Если вам требуется переназначить первичный ключ, то сначала необходимо скорректировать соответствующим образом пара­метры уже имеющегося столбца, объявленного как первичный ключ, а затем добавить новый столбец с параметром primary key. Коррекцию столбца можно выполнить так:

 

v либо сначала удалить его, а затем добавить новый столбец с требуемыми параметрами,

v либо изменить параметры существующего столбца с помощью оператора alter column.

 

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

ALTER TABLE имяТаблицы DROP COLUMN имяСтолбца;

При удалении столбца удаляются все содержащиеся в нем дан­ные.

Если удаляемый столбец является первичным ключом, на который ссылается внешний ключ из другой таблицы, то удале­ние не будет выполнено. В этом случае вам придется сначала скорректировать данные в другой таблице.

Например, следующее выражение удаляет из таблицы Студенты столбец Примечание:

ALTER TABLE Студенты

DROP COLUMN Примечание;

Для изменения параметров существующего столбца, таких как тип, размер и ограничение, применяются ключевые слова alter, column:

ALTER TABLE имяТаблицы ALTER COLUMN имяСтолбца тип(размер) [ограничение];

Здесь квадратные скобки указывают, что заключенное в них вы­ражение не является обязательным.

В следующем примере в таблице Студент уже существующий столбец фио приобретает новые параметры. А именно, будучи символьным, он получает увеличение длины до 50 символов и становится первичным ключом:

ALTER TABLE Студенты

ALTER COLUMN ФИО CHAR(50) PRIMARY KEY;

Разумеется, если в таблице уже имеется первичный ключ (на­пример, столбец id_студента), то сделать первичным ключом еще один столбец не удастся. Кроме того, не следует забывать, что при преобразовании типов могут быть потеряны данные.

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

Переименовывать столбцы приходится редко, поскольку в вы­борках и представлениях всегда можно присвоить им нужные псевдонимы. Тем не менее, переименовать столбцы и таблицу можно с помощью оператора alter table с ключевыми словами rename column... то (переименовать столбец... в).

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

ALTER TABLE имяТаблицы RENAME COLUMN имяСтолбца

ТО новоеИмяСтолбца;

 

При переименовании столбца его прежний тип, размер и огра­ничение сохраняются.

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

ALTER TABLE имяТаблицы RENAME TO новоеИмяТаблицы;

 

Изменение структуры таблицы является небезопасной операци­ей с точки зрения возможности потери данных. Если вы не вполне уверены, что получите требуемый результат, то лучше использовать резервное копирование данных, поступая следую­щим образом:

 

1. Создайте временную таблицу с помощью оператора create TEMPORARY TABLE.

2. Скопируйте во временную таблицу данные из таблицы, струк­туру которой вы собираетесь модифицировать. Это можно сде­лать с помощью оператора insert into.

3. Далее можно поступить двумя способами:

 

• изменить структуру исходной таблицы так, как вам требу­ется. Этот способ лучше применять при коррекции струк­туры, не связанной с изменениями существующих ограни­чений на столбцы и/или на таблицу в целом;

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

4. Скопируйте данные из временной таблицы в таблицу с новой структурой, используя оператор insert into. Больше вре­менная таблица не нужна, она будет автоматически удалена
по окончании сеанса работы с базой данных.

Рассмотрим пример.

Пусть имеется таблица студенты (id_студента, фио, специальность), в которой первичным ключом является фио. Требуется изменить первичный ключ, а именно сделать первич­ным ключом столбец id _студента. Кроме того, необходимо в столбце фио запретить неопределенные значения, а также добавить столбец примечание неограниченной длины. Чтобы решить эту задачу, можно выполнить следующую последова­тельность запросов:

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...