Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции по серверам.doc
Скачиваний:
5
Добавлен:
01.04.2025
Размер:
749 Кб
Скачать
☆
    1. Создание таблиц базы данных

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

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

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

(<имя поля1> <тип данных> [(<длина>)],

(<имя поля2> <тип данных> [(<длина>)]),

…).

Пробелы не могут быть частью имени таблицы или любого другого создаваемого объекта, поэтому для разделения слов, как правило, используется символ подчеркивания. Значение длины поля зависит от типа данных. Если его не указывать, то СУБД сама назначает значение автоматически (для числовых данных такой вариант предпочтительнее). Для данных типа CHAR указание размера обязательно. По умолчанию значение длины равно 1.

Пользователи, не являющиеся владельцами таблиц, могут задавать ссылки на эти таблицы с помощью имени владельца. Например, SA.STUDENTS (таблица STUDENTS с идентификатором разрешения SA).

Пример (для БД, схема которой приведена на рисунке 9):

CREATE TABLE STUDENTS

(NOM_ZACH INTEGER,

SFAM CHAR (20),

SNAME CHAR (10),

STIP DECIMAL);

Рисунок 8

    1. Декларативные ограничения при создании таблиц

При создании таблиц могут быть заданы декларативные ограничения целостности атрибутов: значения по умолчанию (DEFAULT), задание обязательности или необязательности значений (NULL), условия проверки значения (CHECK), задание уникальность столбца и др.

Например, на значение стипендии может быть наложено ограничение (стипендия должна находиться в пределах от 20 до 50 тысяч рублей) по умолчанию значение стипендии равно 25 тыс. руб.

STIP DECIMAL DEFAULT 25 CHECK(STIP >=25 AND <=50).

Задание проверки значений атрибутов для БД “Библиотека”:

Возраст читателя должен быть не менее 17 лет:

BIRTH_DAY DATE CHECK (DATEDIFF(YEAR, GETDATE(),BIRTH_DAY) >=17)

Функция DATEDIFF (часть даты, начальная дата, конечная дата) определяет разность между начальной и конечной датами в единицах, заданных первым параметром.

Для ключевого поля задается ограничение NOT NULL PRIMARY KEY. Для запрета неопределенных значений на столбец следует наложить ограничение NOT NULL.

Часто в поле требуется реализовать ограничение, связанное уникальностью значений. В этом случае в ограничение поля при создании таблицы помещают ключевое слово UNIQUE. Можно определить группу полей как уникальную, например, в таблице USP уникальными должны быть комбинации полей NOM_ZACH и PKOD:

UNIQUE NOM_ZACH,PKOD

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

Ключ может быть составным (как в таблице USP, где ключ состоит из атрибутов NOM_ZACH и PKOD). В этом случае ограничение PRIMARY KEY будет относиться не к одному полю, а ко всей таблице. Оператор создания таблицы USP,имеющий составной ключ:

CREATE TABLE USP

(NOM_ZACH INTEGER NOT NULL,

PKOD INTEGER,

TNUM INTEGER,

UDATE DATE ,

MARK INTEGER CHECK (MARK BETWEEN 3 AND 5),

PRIMARY KEY(NOM_ZACH, PKOD));