Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
бд / Лекция 4.docx
Скачиваний:
27
Добавлен:
14.05.2015
Размер:
871.3 Кб
Скачать

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

Для создания таблиц в SQL Server в первую очередь необходимо сделать активной ту БД, в которой создается таблица. Для этого в новом запросе можно набрать команду:USE <Имя БД>, либо на панели инструментов необходимо выбрать в выпадающем списке рабочую БД. После выбора БД можно создавать таблицы.

Таблицы создаются командой

CREATE TABLE <Имя таблицы>(<Имя поля1> <Тип1> [IDENTITY NULL|NOTNULL],<Имя поля2> <Тип2>, … )

Здесь:

  • <Имя таблицы> - имя создаваемой таблицы;

  • <Имя поля> - имена полей таблицы;

  • <Тип> - типы полей;

  • <IDENTITY NULL|NOT NULL> - поле счётчик.

Пример: создать таблицу Типы книг (Код типа, Наименование типа).

CREATE TABLE TypeBook

(idType INT IDENTITY(1,1) PRIMARY KEY,

nameType VARCHAR(30) NOT NULL UNIQUE

)

IDENTITY(1,1) - Указывает, что новый столбец является столбцом идентификаторов. При добавлении в таблицу новой строки компонент Database Engine формирует для этого столбца уникальное последовательное значение. Столбцы идентификаторов обычно используются с ограничением PRIMARY KEY для поддержания уникальности идентификаторов строк в таблице. Свойство IDENTITY присвоено столбцам типа tinyintsmallintintbigintdecimal(p,0) или numeric(p,0). Для каждой таблицы можно создать только один столбец идентификаторов. Ограниченные значения по умолчанию и ограничения DEFAULT не могут использоваться в столбце идентификаторов. Необходимо указать как начальное значение, так и приращение, или же не указывать ничего. Если ничего не указано, применяется значение по умолчанию (1,1).

IDENTITY [ (seed , increment ) ]

seed

Значение, присваиваемое самой первой строке, загружаемой в таблицу.

increment

Значение приращения, которое прибавляется к значению идентификатора предыдущей загруженной строки.

NULL | NOT NULL

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

PRIMARY KEY

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

UNIQUE

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

Пример: создать таблицу Книги (Код книги, Код типа, Наименование книги, Цена 1 экз, Количество экземпляров, Сумма к оплате, Дата получения).

CREATE TABLE Books

(

idBook INT IDENTITY(1,5) PRIMARY KEY,

idType INT FOREIGN KEY REFERENCES TypeBook(idType) ON DELETE NO ACTION ON UPDATE NO ACTION,

nameBook VARCHAR(300) NOT NULL,

priceOne MONEY NOT NULL CHECK (priceOne>1 AND priceOne<5000),

countBooks INT NOT NULL DEFAULT 1,

sumOpl AS priceOne*countBooks,

dateP DATETIME

)

FOREIGN KEY REFERENCES

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

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

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

NO ACTION

Компонент Database Engine формирует ошибку, и выполняется откат операции удаления строки из родительской таблицы.

CASCADE

Если из родительской таблицы удаляется строка, соответствующие ей строки удаляются и из ссылающейся таблицы.

SET NULL

Все значения, составляющие внешний ключ, при удалении соответствующей строки родительской таблицы устанавливаются в NULL. Для выполнения этого ограничения столбцы внешних ключей должны допускать значения NULL.

SET DEFAULT

Все значения, составляющие внешний ключ, при удалении соответствующей строки родительской таблицы устанавливаются в значение по умолчанию. Для выполнения этого ограничения все столбцы внешних ключей должны иметь определения по умолчанию. Если столбец допускает значение NULL и множество значений по умолчанию не задано явно, NULL становится неявным значением по умолчанию для данного столбца.

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

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