Чтение онлайн

на главную - закладки

Жанры

Информационные системы

Петров Владимир Николаевич

Шрифт:

В общем виде синтаксис оператора ALTER TABLE выглядит следующим образом:

ALTER TABLE имя_таблицы [MODIFY] [имя_поля тип_данных]

[ADD] [имя_поля тип_данных]

[DROP] [имя_поля]

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

• MODIFY – изменяется определение поля;

• ADD – новое поле добавляется в таблицу;

• DROP – поле удаляется из таблицы.

Для изменения типа данных поля используется следующий синтаксис оператора ALTER TABLE:

ALTER TABLE
имя_таблицы MODIFY (имя_поля тип_данных)

Например, для того чтобы добавить в таблицу ФИЗИЧЕСКИЕ ЛИЦА поле, в котором будет содержаться адрес электронной почты сотрудника, следует использовать следующий оператор:

ALTER TABLE Физические_лица ADD (Email CHARACTER(25))

Если же требуется изменить тип данных существующего поля, то следует использовать оператор ALTER TABLE в паре с ключевым словом MODIFY:

ALTER TABLE имя_таблицы MODIFY (имя_поля тип_данных)

Пусть, например, после того как мы добавили в таблицу ФИЗИЧЕСКИЕ ЛИЦА поле Email, выяснилось, что использование типа CHARACTER для этого поля неэффективно– у многих сотрудников нет электронной почты и, следовательно, часть дискового пространства расходуется впустую. Целесообразнее применить для этого поля тип данных VARCHAR. Для изменения типа данных вызовем оператор ALTER TABLE:

ALTER TABLE Физические_лица MODIFY (Email VARCHAR(25))

Удаление существующего поля выполняется вызовом оператора ALTER TABLE с ключевым словом DROP:

ALTER TABLE имя_таблицы DROP (имя_поля)

Примечание.

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

Оператор DROP TABLE

Для удаления таблиц используется оператор DROP TABLE. Синтаксис этого оператора:

DROP TABLE имя_таблицы [RESTRICT | CASCADE]

Если при вызове оператора DROP TABLE указывается ключевое слово RESTRICT и на удаляемую таблицу ссылается какое-либо представление или ограничение, то при выполнении оператора удаления таблицы будет сгенерировано сообщение об ошибке. Если же использовать ключевое слово CASCADE, то параллельно с удалением таблицы будут удалены все ссылающиеся на нее представления и ограничения.

Задание ограничений

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

• ограничение NOT NULL;

• ограничение первичного ключа;

• ограничение UNIQUE;

• ограничение внешнего ключа;

• ограничение CHECK.

Ограничение NOT NULL

Ограничение NOT NULL может быть установлено для любого поля реляционной таблицы. При наличии ограничения NOT NULL запрещается ввод значений NULL в это поле.

Примечание.

Следует понимать, что значение NULL не эквивалентно ни нулевому значению для числовых полей, ни пробелу для полей текстовых – если в поле занесено значение 0 (или пробел), то поле не пустое, а содержит число 0 (или строку, состоящую из одного пробела). Если же значение поля равно NULL, то это означает, что поле содержит неопределенное значение (поле пустое), то есть в него не была занесена никакая информация.

Ограничение NOT NULL устанавливается при создании таблицы с помощью оператора CREATE TABLE. Чтобы задать ограничение NOT NULL для некоторого поля, следует просто указать его после типа поля:

CREATE TABLE имя_таблицы (

имя_поля_1 тип_данных NOT NULL,

имя_поля_2 тип_данных NULL,

...

имя_поля_N тип_данных NOT NULL)

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

Ограничение NOT NULL устанавливается для тех полей, в которые при занесении данных в таблицу обязательно должна быть введена какая-либо информация. Например, в таблице, содержащей личные данные о сотрудниках организации, можно задать ограничение NOT NULL для полей, в которых будут содержаться имя и фамилия сотрудника. Поэтому оператор создания таблицы ФИЗИЧЕСКИЕ ЛИЦА следует видоизменить следующим образом:

CREATE TABLE Физические_лица (

Код_физического_лица INTEGER,

Имя VARCHAR(25) NOT NULL,

Фамилия VARCHAR(25) NOT NULL,

Отчество VARCHAR(25),

Дата_рождения DATE,

Адрес VARCHAR(50),

Телефон VARCHAR(25))

При добавлении нового поля в непустую таблицу с использованием оператора ALTER TABLE нельзя устанавливать ограничение NOT NULL для добавляемого поля. Это вполне очевидно – уже существующие записи в таблице не могут иметь в новом столбце непустые значения. Однако это ограничение можно преодолеть.

1. Добавьте в таблицу поле без ограничения NOT NULL.

2. Заполните значения нового поля для всех существующих записей.

3. Измените определение нового поля с помощью команды ALTER TABLE, задав ему ограничение NOT NULL.

Ограничение первичного ключа

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

• В том случае, когда первичный ключ состоит только из одного поля, то он может быть задан с помощью ключевых слов PRIMARY KEY, указываемых при описании поля в операторе CREATE TABLE:

CREATE TABLE имя_таблицы (

имя_поля_1 тип_данных NOT NULL PRIMARY KEY,

имя_поля_2 тип_данных,

...

имя_поля_N тип_данных NOT NULL)

Обратите внимание, что указание ограничения NOT NULL для поля, являющегося первичным ключом, является обязательным.

Поделиться:
Популярные книги

На границе империй. Том 9. Часть 4

INDIGO
17. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 4

Начальник милиции

Дамиров Рафаэль
1. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции

На границе империй. Том 9. Часть 2

INDIGO
15. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 2

Авиатор: назад в СССР 12

Дорин Михаил
12. Покоряя небо
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Авиатор: назад в СССР 12

Не грози Дубровскому! Том VIII

Панарин Антон
8. РОС: Не грози Дубровскому!
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Не грози Дубровскому! Том VIII

Попаданка в академии драконов 4

Свадьбина Любовь
4. Попаданка в академии драконов
Любовные романы:
любовно-фантастические романы
7.47
рейтинг книги
Попаданка в академии драконов 4

Папина дочка

Рам Янка
4. Самбисты
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Папина дочка

Темный Лекарь 5

Токсик Саша
5. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 5

Газлайтер. Том 9

Володин Григорий
9. История Телепата
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Газлайтер. Том 9

Ты нас предал

Безрукова Елена
1. Измены. Кантемировы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Ты нас предал

Второй Карибский кризис 1978

Арх Максим
11. Регрессор в СССР
Фантастика:
попаданцы
альтернативная история
5.80
рейтинг книги
Второй Карибский кризис 1978

Сумеречный Стрелок 5

Карелин Сергей Витальевич
5. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 5

Вперед в прошлое 3

Ратманов Денис
3. Вперёд в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 3

АН (цикл 11 книг)

Тарс Элиан
Аномальный наследник
Фантастика:
фэнтези
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
АН (цикл 11 книг)