Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD_KL_2010_14.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
28.97 Mб
Скачать

3.2.3.Изменение определения домена

Оператор ALTER DOMAIN, имеющий следующий формат

ALTER DOMAIN имя

{ [SET DEFAULT {литерал | NULL | USER}] |

[DROP DEFAULT] |

[ADD [CONSTRAINT] CHECK (<ограничен_домена>)]

[DROP CONSTRAINT]  };

позволяет изменит параметры домена, определенного ранее оператором CREATE DOMAIN. Однако нельзя изменить тип данных и определение NOT NULL. Следует помнить, что все сделанные изменения будут учтены для всех столбцов, определенных с использованием данного домена (в том случае, если параметры домена не были переопределены при создании столбцов таблицы или впоследствии).

  • SET DEFAULT устанавливает значения по умолчанию подобно тому, как это делается в операторе CREATE DOMAIN.

  • DROP DEFAULT отменяет текущие значения по умолчанию.

  • [ADD [CONSTRAINT] CHECK (<ограничен_домена>)] добавляет условия, которым должны соответствовать значения столбца, ассоциированного с доменом. При этом возможно определение условий, рассмотренных выше для предложения CHECK оператора CREATE DOMAIN.

  • DROP CONSTRAINT – удаляет условия, определенные для домена в предложении CHECK оператора CREATE DOMAIN или предыдущих операторов ALTER DOMAIN.

Например, пусть определен домен ID_TYPE:

CREATE DOMAIN ID_TYPE AS INTEGER

CHECK(VALUE >= 100);

и в дальнейшем использован при создании таблицы AAA:

CREATE TABLE AAA

( ID ID_TYPE NOT NULL,

FIO VARCHAR(20),

Primary KEY(ID) );

Изменить условие CHECK так, чтобы значение было больше или равно 100 и меньше или равно 500, можно за два шага:

  • сначала нужно удалить старое условие

ALTER DOMAIN ID_TYPE

DROP CONSTRAINT;

  • затем добавить новое (которое есть модифицированное старое)

ALTER DOMAIN ID_TYPE

CHECK(VALUE >= 100 AND VALUE <= 500);

Заметим, что изменять определение таблицы AAA нет необходимости, и отныне столбец ID этой таблицы можно занести значения, большие или равные 100 и меньшие или равные 500.

3.3.Создание таблиц

3.3.1.Инструкция create table

Инструкция CREATE TABLE определяет новую таблицу и подготавливает ее к приему данных. Перед созданием таблиц базы данных необходимо продумать определения всех столбцов таблицы и характеристик каждого столбца (таких как тип, длина, обязательность для ввода, ограничения, накладываемые на значения и т. д.), индексов, ограничений целостности по отношению к другим таблицам. Если при определении столбцов используются домены, то эти домены должны быть предварительно созданы оператором CREATE DOMAIN.

Создание таблицы базы данных осуществляется оператором

CREATE TABLE ИмяТаблицы

(столбец тип_данных ¦ домен [DEFAULT значение NOT NULL,]

PRIMARY KEY (поле, ... ),

[CONSTRAINT <имя отношения>]

FOREIGN KEY (<список столбцов внешнего ключа>)

REFERENCES <имя таблицы-предка> [<список столбцов таблицы-предка>]

[ON DELETE {NO ACTION | CASCADE | SET DEFAULT | SET NULL}]

[ON UPDATE {NO ACTION | CASCADE | SET DEFAULT | SET NULL}]

UNIQUE (поле, ... ),

CHECK (условие_отбора) );

Определение столбцов

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

  • столбец − имя столбца, которое используется для ссылки на столбец в инструкциях SQL. Каждый столбец в таблице должен иметь уникальное имя, но в разных таблицах имена столбцов могут совпадать;

  • тип_данных – показывает, данные какого вида хранятся в столбце;

  • домен − имя домена, т. е. ранее описанного типа столбца;

  • DEFAULT − определяет значение, которое по умолчанию заносится в столбец, ассоциированный с доменом, при создании записи таблицы;

  • NOT NULL  указывает на то, что столбец обязательно должно содержать значение.

Ниже приведен пример инструкции CREATE TABLE для таблицы OFFISY из учебной базы данных.

CREATE TABLE OFFISY

( ID_OFC INTEGER NOT NULL,

CITY VARCHAR(15) NOT NULL,

REGION VARCHAR(10) NOT NULL,

MNGR INTEGER,

TARGET MONEY,

SALES MONEY NOT NULL);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]