Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическое пособие по выполнению лабораторных работ по SQL.doc
Скачиваний:
167
Добавлен:
01.05.2014
Размер:
1.22 Mб
Скачать

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

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

Синтаксис команды:

DROP TABLE<имя таблицы> [,<имя таблицы>]

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

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

Синтаксис команды CREATE TABLE для создания таблицы без ограничений:

CREATE TABLE [<имя базы данных>.[<имя владельца>| <имя владельца>]

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

Пример 1

Задача.

Создать таблицу Subject 1 cо столбцами IDSubject, NameSubject.

Решение.

CREATE TABLE Subject

(IDSubject INT,

NameSubject VARCHAR (35));

Здесь и всегда сообщение об успешном выполнении команды CREATE имеет вид: The command(s) completed successfully.

Пример 2

Задача.

Создать таблицу Subject cо столбцами IDSubject (значение которого генерируется автоматически) и NameSubject.

Решение.

CREATE TABLE Subject

(IDSubject INT IDENTITY,

NameSubject VARCHAR (35));

Автоматическая генерация значения столбца IDSubject достигается за счет использования свойства IDENTITY, по умолчанию начальное значение, генерируемое с помощью IDENTITY равно 1, так же как и его приращение. Таким образом, следующее значение будет равно 2. Значения в IDENTITY-столбцах обязательно последовательные, то есть если приращение положительное, то следующее значение всегда больше предыдущего, если приращение отрицательное, то – всегда меньше. Приращение и начальное значение могут быть заданы, однако этот механизм чрезвычайно редко используется в реальных проектах.

Пример 3

Задача.

Создать таблицу Subject cо столбцами IDSubject (значение которого генерируется автоматически, начиная со значения 2 с шагом 2) и NameSubject.

Решение.

CREATE TABLE Subject

(IDSubject INT IDENTITY (2,2),

NameSubject VARCHAR (35));

Не нуждается в доказательстве, что таблица без ограничений не имеет смысла. Например, в таблице Subject – IDSubject является первичным ключом, другой атрибут NameSubject – потенциальным. В первом случае необходимо наложить ограничение PRIMARY KEY, во втором – UNIQUE, кроме того, целесообразно наложить ограничение NOT NULL на оба атрибута.

Синтаксис команды CREATE TABLE для создания таблицы c ограничениями:

CREATE TABLE [<имя базы данных>.[<имя владельца>] <имя таблицы>

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

[,…n])

[,<ограничение для таблицы>];

Ограничения на уровне таблицы целесообразно вводить, если они имеют отношения к нескольким столбцам. Ограничения для одного столбца рекомендуется устанавливать на уровне столбца. Все ограничения за исключением ограничения NULL/NOT NULL создаются как на уровне столбца, так и на уровне таблицы. Каждому созданному ограничению за исключением ограничений NULL/NOT NULL присваивается уникальное имя. Если вы хотите сами присвоить имя тому или иному ограничению, то необходимо при создании ограничения воспользоваться предложением CONSTRAINT. Синтаксис предложения CONSTRAINT, задающего в команде CREATE TABLE ограничения, как на уровне таблицы, так и на уровне столбца приведен ниже.

Синтаксис предложения CONSTRAINT:

[CONSTRAINT <имя ограничения>]

[PRIMARY KEY (<имя столбца>[, …n]) ]

[UNIQUE (<имя столбца>[, …n]) ]

[NOT NULL (<имя столбца>[, …n]) ]

[CHECK (<условие>)]

[FOREIGN KEY (<имя столбца, ссылающейся таблицы>[, …n])

REFERENCES <имя ссылочной таблицы> [(Имя столбца ссылочной

таблицы [, …n])]]

! Обратите внимание на то, что при задании ограничения на уровне таблицы перед предложением CONSTRAINT должна стоять запятая.

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