Таблицы создаются командой CREATE TABLE. Эта команда создает пустую таблицу, не содержащую записей. Очевидно, что данные в нее можно внести, например, с помощью команды INSERT. В команде CREATE TABLE определяется имя таблицы, и набор имен полей, которые указываются в нужном порядке. Кроме того, этой же командой оговариваются типы данных и длины полей.
Синтаксис команды CREATE TABLE следующий:
CREATE TABLE <имя таблицы>
(<имя поля1> <тип данных> [(<длина>)],
(<имя поля2> <тип данных> [(<длина>)]),
…).
Пробелы не могут быть частью имени таблицы или любого другого создаваемого объекта, поэтому для разделения слов, как правило, используется символ подчеркивания. Значение длины поля зависит от типа данных. Если его не указывать, то СУБД сама назначает значение автоматически (для числовых данных такой вариант предпочтительнее). Для данных типа CHARуказание размера обязательно. По умолчанию значение длины равно 1.
Пользователи, не являющиеся владельцами таблиц, могут задавать ссылки на эти таблицы с помощью имени владельца. Например, SA.STUDENTS (таблица STUDENTS с идентификатором разрешения SA).
Пример (для БД, схема которой приведена на рисунке 9):
(NOM_ZACH INTEGER,
При создании таблиц могут быть заданы декларативные ограничения целостности атрибутов: значения по умолчанию (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:
Ограничение PRIMARY KEY действует аналогично UNIQUE, но для таблицы должен быть определен только один первичный ключ, а уникальных полей может быть несколько.
Ключ может быть составным (как в таблице USP, где ключ состоит из атрибутов NOM_ZACH и PKOD). В этом случае ограничение PRIMARY KEY будет относиться не к одному полю, а ко всей таблице. Оператор создания таблицы USP,имеющий составной ключ: