русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Добавление и удаление столбца


Дата добавления: 2013-12-24; просмотров: 795; Нарушение авторских прав


Изменение определения таблицы (инструкция ALTER TABLE)

Удаление таблицы (инструкция DROP TABLE)

Условия уникальности и ограничения на значения столбцов

Условия уникальности задаются в предложении UNIQUE инструкции CREATE TABLE. Ниже приведена модифицированная инструкция CREATE TABLE для таблицы ORDERS с включенным в нее условием уникальности для столбца ORDER_N:

 

create table orders (order_n integer not null,

ord_date date not null,

cust_n integer,

sale_n integer,

prod_n varchar2(10),

qty intrger,

amount integer,

unique (order_n),

primary key (order_n),

constraint placed_by foreign key (cust_n) references customers on delete cascade,

constraint taken_by foreign key (sale_n) references salesreps,

constraint is_for foreign key (prod_n) references products);

 

Ограничение CHECK (иногда называемое check condition) также задается в инструкции CREATE TABLE. Оно содержит условие на значения (идентично условию отбора в запросе на выборку), проверяемое всякий раз при попытке модификации содержимого таблицы (с помощью инструкций INSERT, UPDATE или DELETE). Если после модификации условие остается истинным, такое изменение допускается; в противном случае СУБД отвергает изменения и выдает сообщение об ошибке. Ниже приведена инструкция CREATE TABLE, создающая таблицу SALESREPS с простым ограничением на значения столбца AGE, позволяющим гарантировать, что возраст принимаемых на работу сотрудников не будет превышать тридцати пяти лет.

 

create table salesreps (sale_n integer not null,

name varchar2(15),

position varchar2(10),

sex char(1),

salary float(2),

age integer,

unique (sale_n),

primary key (sale_n),



check (age <= 35),

check (sex in (‘m’, ‘f’)),

check (salary <= 500.00));

 

Помимо ограничения на значения столбца AGE, приведенная выше инструкция содержит ограничения на значения также и для столбцов SEX и SALARY .

 

С течением времени структура базы данных изменяется. Для представления новых объектов создаются новые таблицы, а некоторые старые таблицы становятся ненужными. Эти ненужные таблицы можно удалить из базы данных посредством инструкции DROP TABLE (рисунок 18)

 

Рисунок 18 Синтаксическая диаграмма инструкции DROP TABLE

 

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

В соответствии со стандартом инструкция DROP TABLE должна включать в себя либо параметр CASCADE, либо RESTRICT, которые определяют, как влияет удаление таблицы на другие объекты базы данных (например, представления), зависящие от этой таблицы. Если задан параметр CASCADE и в базе данных имеются объекты, которые содержат ссылку на удаляемую таблицу, то выполнение инструкции закончится неуспешно. В большинстве коммерческих СУБД допускается применение инструкции DROP TABLE без каких-либо параметров.

Изменения в определении таблицы можно осуществить с помощью инструкции ALTER TABLE, синтаксическая диаграмма которой изображена на рисунке 19. Данная инструкция, как и DROP TABLE, обычно применяется пользователем по отношению к своим собственным таблицам. Однако, имея соответствующее разрешение и используя полное имя таблицы, можно изменять таблицы других пользователей.

 

Рисунок 19 Синтаксическая диаграмма инструкции ALTER TABLE

 

Как видно из рисунка, инструкция ALTER TABLE может:

• добавить в таблицу определение столбца;

• удалить столбец из таблицы;

• изменить значение по умолчанию, для какого – либо столбца;

• добавить или удалить первичный ключ таблицы;

• добавить или удалить внешний ключ таблицы;

• добавить или удалить условие уникальности;

• добавить или удалить условие на значения.

Предложения на рисунке 19 изображены в соответствии со стандартом SQL. Во многих СУБД некоторые из них не используются либо используются специфические для конкретной СУБД предложения (вместо регламентированного стандартом предложения ALTER на синтаксической диаграмме использовано MODIFY, специфичное для ORACLE), которые изменяют другие, не представленные здесь характеристики таблицы. Стандарт требует, чтобы инструкция ALTER TABLE применялась для единичного изменения таблицы. Например, для добавления столбца и определения нового внешнего ключа потребуются две различные инструкции. В некоторых СУБД это ограничение ослаблено и допускается присутствие нескольких предложений в одной инструкции ALTER TABLE.

Чаще всего инструкция ALTER TABLE применяется для добавления столбца в существующую таблицу. Предложение с определением столбца в инструкции ALTER TABLE имеет точно такой же вид, как и в инструкции CREATE TABLE, и выполняет ту же самую функцию. Новое определение добавляется в конец определений столбцов таблицы, и в последующих запросах новый столбец будет крайним справа. СУБД обычно предполагает, что новый столбец во всех существующих строках содержит значения NULL. Если столбец объявлен как NOT NULL WITH DEFAULT, то СУБД считает, что он содержит значения по умолчанию. Нельзя объявлять столбец просто как NOT NULL, поскольку СУБД подставляла бы в существующие строки значения NULL, нарушая тем самым заданное условие. В действительности, когда вы добавляете новый столбец, СУБД не заносит во все существующие строки нового столбца значения NULL или значения по умолчанию. СУБД обнаруживает тот факт, что строка “слишком коротка” для нового определения таблицы, только при выборке этой строки пользователем, и расширяет ее значениями NULL или значениями по умолчанию непосредственно перед выводом на экран или передачей в программу пользователя.

С помощью инструкции ALTER TABLE можно удалить из существующей таблицы один или несколько столбцов, если в них больше нет необходимости. Например, следующая инструкция удаляет столбец POSITION из таблицы SALESREPS.

 

alter table salesreps

drop position;

 

Стандарт требует, чтобы одна инструкция ALTER TABLE использовалась для удаления только одного столбца, но в ряде ведущих СУБД такое ограничение снято.

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

Описанные проблемы решены так же, как и в случае инструкций DELETE и UPDATE – с помощью правила удаления. Можно выбрать одно из двух правил:

• RESTRICT: если с удаляемым столбцом связан какой-либо объект в базе данных (внешний ключ, ограничение и т.п.), инструкция ALTER TABLE завершится выдачей сообщения об ошибке и столбец не будет удален;

• CASCADE: любой объект базы данных (внешний ключ, ограничение и т.п.), связанный с удаляемым столбцом, также будет удален.

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



<== предыдущая лекция | следующая лекция ==>
Определение первичного и внешнего ключей | Изменение первичных и внешних ключей


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.16 сек.