Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
13
Добавлен:
03.03.2016
Размер:
182.78 Кб
Скачать

3.2 Команды определения данных

Команды определения данных иногда выделяют как отдельный язык DDL (Data Definition Language). Эти команды дают возможность создавать объекты БД (таблицы и индексы), определять их структуру, устанавливать свойства полей и поддержки целостности данных по ссылкам.

Рассмотрим синтаксис команды создания таблицы.

CREATE TABLE <имя таблицы> (<эл_табл> [{,<эл_табл>}...])

<Эл_табл> ::= <определение поля>

| <определение ограничения на таблицу>

<Определение поля> ::=<имя поля> <тип данных>

[DEFAULT { <литерал> | NULL } ] раздел умолчания

[NOT NULL [UNIQUE | PRIMARY KEY] ограничение на поле

| [FOREIGN KEY(поле)

REFERENCES <ссылочные таблицы и поля>] спецификация ссылок

| [CHECK (<условии поиска>)] проверочное ограничение

Тип данных определяется реализацией. По стандарту имеем

<Тип данных> ::=CHAR[ACTER] [(<длина>)] , строки символов

| NUMERIC [(<точность> [,<масштаб>])] точный числовой тип

| DEC[IMAL] [(<точность> [,<масштаб>])]

| INT[EGER]

| SMALLINT

| FLOAT [(<точность>)] приближенный цифровой тип|

| REAL

| DOUBLE PRECISION

<Длина> ::= <целое без знака>, которое должно быть больше 0 ,

если длина пропущена, то она предполагается равной 1.

<Точность> ::= <целое без знака>, которое должно быть больше 0,

если точность пропущена, то значение определяется в реализации.

<Масштаб> ::= <целое без знака>, если он не указан, то предполагается 0.

Если раздел умолчания отсутствует или в нем не указано NOT NULL, то неявно вводится DEFAULT NULL. В качестве <литерала> используется или символьная строка, или число в зависимости от типа данных поля.

Рассмотрим ограничения для таблицы, которые фактически проверяются после выполнения каждого оператора SQL.

<Определение ограничения на таблицу> ::=

[UNIQUE

| PRIMARY KEY (<имя поля> [{,<имя поля>}...])] уникальность

| [FOREIGN KEY ( <имя поля> [{,<имя поля>}...]

REFERENCES <имя таблицы> [(<имя поля> [{,<имя поля>}...)]]

ограничения на ссылки

| [CHECK (<условие поиска>)] проверочное ограничение

Рассмотрим пример создания таблицы тСотрудники. Ее логическая структура приведена в табл. 3.1.

Таблица 3.1 Логическая структура тСотрудники

Поле

Тип

1

Код сотрудника

Ч

2

Фамилия

Т

3

Имя

Т

4

Отчество

Т

5

Пол

Т

6

Дата рождения

Д

7

Город

Т

8

Дата приема

Д

8

Дата увольнения

Д

Для удобства изложения примеры в данном разделе будем номеровать порядковыми числами. В конце команды не будем ставить никаких знаков (точка з запятой или точка). Также никаких знаков не будем применять при переносе команд по строкам.

Для удобства далее вместо полных имен будем использовать сокращения:

тСотрудники → тС

Код сотрудника → Код_с Дата рождения → Д_рожд

Фамилия → Фам Дата приема → Д_пр

Отчество → От Дата увольнения → Д_ув

Команда создания тС

1) CREATE TABLE тС

(Код_с INT NOT NULL ,

Фам C(15) NOT NULL,

Имя C(15) NOT NULL,

От C(15) NOT NULL,

Д_рожд D NOT NULL,

Пол C(1) NOT NULL

DEFAULT 'Ж'

CHECK (пол='Ж' OR пол='М'),

Город C(10) DEFAULT 'Донецк' ,

Д_пр D NOT NULL,

Д_ув D)

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

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

2) ALTER TABLE тС;

ADD PRIMARY KEY Код_с

Команда создания индексов CREATE INDEX позволяет определять простые и составные индексы, устанавливать ключи.

Следует заметить, что синтаксис команд определения данных в различных СУБД может иметь отличия от стандарта.

Для удаления объектов из БД используются команды:

  • удаления пустой таблицы DROP TABLE <имя таблицы>;

  • удаление индекса DROP INDEX <имя индекса>.

Допустим создана копия тС с именем тС2.

3) DROB TABLE тC2.

Соседние файлы в папке Обработка РБД-relalg