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

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

Жанры

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

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

Шрифт:

В общем виде синтаксис оператора 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 для поля, являющегося первичным ключом, является обязательным.

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

Толян и его команда

Иванов Дмитрий
6. Девяностые
Фантастика:
попаданцы
альтернативная история
7.17
рейтинг книги
Толян и его команда

Эволюционер из трущоб. Том 3

Панарин Антон
3. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
6.00
рейтинг книги
Эволюционер из трущоб. Том 3

Боярышня Дуняша 2

Меллер Юлия Викторовна
2. Боярышня
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Боярышня Дуняша 2

Черный Маг Императора 9

Герда Александр
9. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 9

На границе империй. Том 4

INDIGO
4. Фортуна дама переменчивая
Фантастика:
космическая фантастика
6.00
рейтинг книги
На границе империй. Том 4

Кадры решают все

Злотников Роман Валерьевич
2. Элита элит
Фантастика:
боевая фантастика
попаданцы
альтернативная история
8.09
рейтинг книги
Кадры решают все

Наследник

Майерс Александр
3. Династия
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Наследник

Идеальный мир для Лекаря

Сапфир Олег
1. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря

Тайны затерянных звезд. Том 1

Лекс Эл
1. Тайны затерянных звезд
Фантастика:
боевая фантастика
космическая фантастика
фэнтези
5.00
рейтинг книги
Тайны затерянных звезд. Том 1

Кодекс Крови. Книга VIII

Борзых М.
8. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга VIII

Имперец. Земли Итреи

Игнатов Михаил Павлович
11. Путь
Фантастика:
героическая фантастика
боевая фантастика
5.25
рейтинг книги
Имперец. Земли Итреи

Законы Рода. Том 13

Андрей Мельник
13. Граф Берестьев
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 13

ИФТФ им. Галушкевича. Трилогия

Кьяза
Фантастика:
фэнтези
юмористическая фантастика
5.00
рейтинг книги
ИФТФ им. Галушкевича. Трилогия

Сын Тишайшего 2

Яманов Александр
2. Царь Федя
Фантастика:
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Сын Тишайшего 2