Сделай Сам Свою Работу на 5

Ограничения на множество допустимых значений данных





При создании (изменении) таблицы могут быть определены ограничения на вводимые значения.

Существует два основных типа ограничений — ограничения на столбцы и ограничения на таблицу. Ограничения на столбцы (COLUMN CONSTRAINTS) применимы только к отдельным столбцам, а ограничения на таблицу (TABLE CONSTRAINTS) применимы к группам, состоящим из одного или более столбцов. Ограничения на столбец добавляются в конце определения столбца после указания типа данных и перед окончанием описания столбца (запятой). Ограничения на таблицу размещаются в конце определения таблицы, после определения последнего столбца.

Команда CREATE TABLE имеет следующий синтаксис, расширенный включением ограничений:

CREATE TABLE <ИМЯ таблицы >

(<имя столбца > <тип данных> Ограничения на столбец>,

<имя столбца> <тип данных> Ограничения на столбец>,

Ограничения на таблицу> (<имя столбца>[,<имя столбца>]));

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

Ограничение NOT NULL/ NULL. Это ограничение применимо только к столбцам таблицы. Как уже говорилось выше, NULL — это специальный маркер, обозначающий тот факт, что поле пусто. Во многих случаях необходимо, чтобы поля обязательно содержали определенные значения. Уникальность как ограничение на столбец. Иногда требуется, чтобы все значения, введенные в столбец, отличались друг от друга. Если при создании таблицы для столбца указывается ограничение UNIQUE, то база данных отвергает любую попытку ввести в это поле какой-либо строки значение, уже содержащееся в том же поле другой строки. Это ограничение применимо только к тем полям, которые были объявлены NOT NULL.



Уникальность как ограничение таблицы. Можно сделать уникальными группу полей, указав UNIQUE в качестве ограничений таблицы. При объединении полей в группу важен порядок, в котором они указываются. Ограничение на таблицу UNIQUE является полезным, если требуется поддерживать уникальность группы полей.

Указание UNIQUE как ограничение таблицы наиболее полезно использовать в случаях, когда не требуется уникальность индивидуальных полей.



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

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

• внешние ключи по умолчанию ссылаются на первичный ключ таблицы;

• первичный ключ является идентификатором строк таблицы (строки, однако, могут идентифицироваться и другими способами).

Улучшенный вариант создания таблицы STUDENTI с объявленным первичным ключом имеет теперь следующий вид:

CREATE TABLE STUDENT

(STUDENT_ID INTKGER PRIMARY KEY,

SURNAME CHAR (25) NOT NULL,

NAME CHAR (10) NOT NULL,

STIPEND INTEGER,

KURS INTEGER,

CITY CHAR (15),

BIRTHDAY DATE,

UNIV_ID INTEGER);

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

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

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

Ограничение внешних ключей.

CONSTRAINT имя_ограничения FOREIGN KEY (список_полей)REFERENCES родительская_таблица(внешний ключ)

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

CONSTRAINT имя_ограничения PRIMARY KEY (список_полей)



Изменение существующей таблицы

Для модификации структуры и параметров существующей таблицы используется команда ALTER TABLE. Синтаксис команды ALTER TABLE для добавления столбцов в таблицу имеет вид

ALTER TABLE <ИМЯ ТАБЛИЦЫ> ADD (<ИМЯ СТОЛБЦА> <ТИП ДАННЫХ> <размер>);

По этой команде для существующих в таблице строк добавляется новый столбец, в который заносится NULL-значение. Этот столбец становится последним в таблице. Можно добавлять несколько столбцов, в этом случае их определения в команде ALTER TABLE разделяются запятой.

ALTER TABLE scott.bonus

ADD sername varchar2(50);

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

ALTER TABLE <ИМЯ ТАБЛИЦЫ> MODIFY <ИМЯ СТОЛбЦА> <ТИП ДАННЫХ> <размер/точность >;

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

· изменение типа данных возможно только в том случае, если столбец пуст;

· для незаполненного столбца можно изменять размер/точность. Для заполненного столбца размер/точность можно увеличить, но нельзя понизить;

· ограничение NOT NULL может быть установлено, если ни одно значение в столбце не содержит NULL. Опцию NOT NULL всегда можно отменить;

· разрешается изменять значения, установленные по умолчанию.

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

Формат оператора:

<оператор_изменения> ::= UPDATE имя_таблицы SET имя_столбца= <выражение>[,...n] [WHERE <условие_отбора>] – dml

Прежде всего, имеется в виду выполнение операторов INSERT, UPDATE и DELETE. Например, после создания таблицы (выполнения оператора CREATE TABLE) не нужно фиксировать результат: создание таблицы фиксируется в базе данных автоматически. Точно так же с помощью отмены транзакции не удастся восстановить только что удаленную оператором DROP TABLE таблицу.

Существуют три команды, которые используются для управления транзакциями:

· COMMIT – для сохранения изменений;

· ROLLBACK – для отмены изменений;

· SAVEPOINT – для установки особых точек возврата.

· INSERT — осуществляет вставку строк в таблицу.

· DELETE — осуществляет удаление строк из таблицы.

· UPDATE — осуществляет модификацию данных в таблице.

· SELECT — осуществляет выборку данных из таблиц по запросу. – это все dml

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

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

Синтаксис команды, осуществляющей удаление пустой таблицы, имеет следующий вид:

DROP TABLE <имя таблицы>;

Представления

Представления, или просмотры ( VIEW ), представляют собой временные, производные (иначе - виртуальные) таблицы и являются объектами базы данных, информация в которых не хранится постоянно, как в базовых таблицах, а формируется динамически при обращении к ним. Представление не может существовать само по себе, а определяется только в терминах одной или нескольких таблиц. Содержимое представлений выбирается из других таблиц с помощью выполнения запроса, причем при изменении значений в таблицах данные в представлении автоматически меняются. Это предопределенный запрос, хранящийся в базе данных, который выглядит подобно обычной таблице и не требует для своего хранения дисковой памяти. Для хранения представления используется только оперативная память.

Создание представления

Синтаксис создания VIEW.

CREATE|ALTER [OR REPLACE] [FORCE | NOFORCE] VIEW viewname

AS subquery

[WITH CHECK OPTION [COSTRAINT constraintname]]

где

[OR REPLACE] - пересоздает представление, если оно уже существует. [FORCE] - это опция указывает на то, что VIEW будет создано даже если она будет ссылаться на те таблицы, которых не существует. [NOFORCE] – это опция указывает на то, что VIEW будет создано только лишь в том случаи, если она будет создана на тех таблицах, которых существуют. AS SUBQUERY – это основная часть создания VIEW, так как здесь определяется запрос, который будет выполнен при вызове представления. [WITH CHECK OPTION] – указывает, что вставки и обновления, которые будут осуществляться через этот запрос, должны давать в результате только такие строки, которые могут быть выбраны запросом этого же представления.

[COSTRAINT constraintname] – имя, которое присваивается ограничению CHECK OPTION. Если этот идентификатор опущен, то ORACLE автоматически назначает этому ограничению имя.

Изменение представления

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

· Оператор DISTINCT

· Групповые функции

· Ключевое слово GROUP BY

· Псевдостолбец ROWNUM

· Столбцы в определениях, которых участвовали выражения, процедуры или функции

Удаление представления

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

DROP VIEW < view name >

В этом нет необходимости, однако, сначала надо удалить все содержание как это делается с базовой таблицей, потому что содержание представления не является созданным и сохраняется в течении определенной команды. Базовая таблица из которой представление выводится, не эффективна когда представление удалено.

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.