Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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

ЯЗЫК SQL

УПРАВЛЕНИЕ ТАБЛИЦАМИ базы данных

ПЛАН

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

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

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

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

5. Добавление данных в таблицу

 

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

Создание объектов базы данных осуществляется с помощью операторов языка определения данных (DDL).

Таблицы базы данных создаются с помощью команды CREATE TABLE. Эта команда создает пустую таблицу, то есть таблицу, не имеющую строк. Значения в эту таблицу вводятся с помощью команды INSERT. Команда CREATE TABLE определяет имя таблицы и множество поименованных столбцов в указанном порядке. Для каждого столбца должен быть определен тип и размер. Каждая создаваемая таблица должна иметь, по крайней мере, один столбец.

Синтаксис команды CREATE TABLE имеет следующий вид:

CREATE TABLE <ИМЯ ТабЛИЦЫ>

(<имя столбцаХтип данных>[(<размер>)]);

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

CREATE TABLE STUDENT1

(STUDENT__ID INTEGER,

SURNAME VARCHAR(60;,

NAME VARCHAR (60 ),

STIPEND DOUBLE,

KURS INTEGER,

CITY VARCHAR(60),

BIRTHDAY DATE,

UNIV_ID INTEGER);

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

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

В данном формате предусмотрены возможности для выполнения ряда действий:

· добавить новый столбец в существующую таблицу — ADD COLUMN;

· удалить столбец из существующей таблицы — DROP COLUMN;

· добавить в определение таблицы новое ограничение — ADD CONSTRAINT;

· удалить из определения таблицы существующее ограничение —DROP CONSTRAINT;

· задать для существующего столбца значение по умолчанию —ALTER [COLUMN] SET DEFAULT;

· отменить установленное для столбца значение по умолчанию ALTER [COLUMN] DROP DEFAULT.

Синтаксис команды ALTER TABLE для добавления столбцов в таблицу имеет вид

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

До сих пор рассматривалось только следующее ограничение — значения, вводимые в таблицу, должны иметь типы данных и размеры, совместимые с типами/размером данных столбцов, в которые эти значения вводятся (как определено в команде CREATE TABLE или ALTER TABLE). Описание таблицы может быть дополнено более сложными ограничениями, накладываемыми на значения, которые могут быть вставлены в столбец или группу столбцов. Ограничения (CONSTRAINTS) являются частью определения таблицы.

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

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

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

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

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

Например, для того, чтобы в определении таблицы STUDENT запретить использование NULL-значений для столбцов STUDENT_ID, SURNAME и NAME, можно записать следующее:

CREATE TABLE STUDENT

(STUDENT_ID INTEGER NOT NULL,

SURNAME CHAR (25) NOT NULL,

NAME CHAR (10) NOT NULL,

STIPEND INTEGER,

KURS INTEGER,

CITY CHAR (15),

BIRTHDAY DATE,

UNIV_ID INTEGER);

Важно помнить: если для столбца указано NOT NULL, то при использовании команды INSERT обязательно должно быть указано конкретное значение, вводимое в это поле. При отсутствии ограничения NOT NULL в столбце значение может отсутствовать, если только не указано значение столбца по умолчанию (DEFAULT). Если при создании таблицы ограничение NOT NULL не было указано, то его можно указать позже, используя команду ALTER TABLE. Однако для того, чтобы для вновь вводимого с помощью команды ALTER TABLE столбца можно было задать ограничение NOT NULL, таблица, в которую добавляется столбец, должна быть пустой.

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

Иногда требуется, чтобы все значения, введенные в столбец, отличались друг от друга. Например, этого требуют первичные ключи. Если при создании таблицы для столбца указывается ограничение UNIQUE, то база данных отвергает любую попытку ввести в это поле какой-либо строки значение, уже содержащееся в том же поле другой строки. Это ограничение применимо только к тем полям, которые были объявлены NOT NULL. Можно предложить следующее определение таблицы STUDENT, использующее ограничение UNIQUE:

CREATE TABLE STUDENT

(STUDENT_ID INTEGER NOT NULL UNIQUE,

SURNAME CHAR (25) NOT NULL,

NAME CHAR (10) NOT NULL,

STIPEND INTEGER,

KURS INTEGER,

CITY CHAR (15),

BIRTHDAY DATE,

UNIV_ID INTEGER);

Объявляя поле STUDENT_ID уникальным, можно быть уверенным, что в таблице не появится записей для двух студентов содинаковыми идентификаторами. Столбцы, отличные от первичного ключа, для которых требуется поддержать уникальность значений, называются возможными ключами или уникальными ключами (CANDIDATE KEYS ИЛИ UNIQUE KEYS).

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...