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

11.2. Создание базы данных

Операторы SELECT, INSERT, DELETE, UPDATE, рассмотренные ранее, предназначены для обработки данных и входят в ту часть языка SQL, которая называется языком обработки данных, или DML (Data Manipulation Language).

Создание БД заключается в описании таблиц, образующих реляционную БД, с указанием существующих связей между таблицами.

Для описания новой таблицы предназначен оператор CREATE TABLE (рис. 11.5), который определяет новую таблицу и подготавливает её к приёму данных.

CREATE TABLE имя_таблицы ( определение_столбца )

определение_ первого_ключа

определение_ внешнего_ключа

условие_ уникальности_ данных

условие_проверки

Определение столбца ,

имя_столбца и тип данных

DEFAULT значение NOT NULL

Определение первого ключа

PRIMARY KEY (имя_столбца )

,

Определение внешнего ключа

REFERENCES имя_таблицы

FOREIGN KEY ( имя_столбца )

,

Условие уникальности данных

UNIQUE ( имя_столбца )

,

Условие проверки

CHECK (условие_поиска)

Рис. 11.5. Синтаксическая диаграмма оператора CREATE TABLE

Посмотрим, как описать таблицы, входящие в учебную БД (указаны типы данных, используемые в СУБД InterBase):

CREATE TABLE FLAT

(ADR CHAR (30) NOT NULL,

SKV FLOAT DEFAULT 0.00,

NROOMS SMALLINT DEFAULT 0,

KCATEGORY CHAR (1) DEFAULT ‘H’ NOT NULL,

PRIMARY KEY (ADR),

CHECK (NROOMS BETWEEN 0 AND 4),

CHECK (KCATEGORY IN (‘П’,’ Н’,’ К’))

)

CREATE TABLE PROFIT

(ID INTEGER NOT NULL,

SOURCE CHAR (20) NOT NULL,

MONEYS FLOAT DEFAULT 0.00,

PRIMARY KEY (ID),

CHECK (MONEYS>=0)

)

CREATE TABLE TPHONE

(NTEL CHAR (8) NOT NULL,

TCATEGORY CHAR (1) DEFAULT ‘0’ NOT NULL,

ADR CHAR (30),

PRIMARY KEY (NTEL),

FOREIGN KEY (ADR) REFERENCES FLAT,

CHECK (NTEL LIKE ‘___-____’),

CHECK (TCATEGORY IN (‘О’,’ Д’,’C’))

)

CREATE TABLE PERSON

(NOM INTEGER NOT NULL,

FIO CHAR (30) NOT NULL,

RDATE DATE NOT NULL,

POL CHAR (1),

SUMD FLOAT DEFAULT 0.00,

ADR CHAR (30),

PRIMARY KEY (NOM),

FOREIGN KEY (ADR) REFERENCES FLAT,

CHECK (POL IN (‘М’,’Ж’))

)

CREATE TABLE HAVE_D

(NOM INTEGER NOT NULL,

ID INTEGER NOT NULL,

COMMENT CHAR (30),

PRIMARY KEY (NOM, ID),

FOREIGN KEY (NOM) REFERENCES PERSON,

FOREIGN KEY (ID) REFERENCES PROFIT

)

Вопросы для самоконтроля

  1. Нарисуйте синтаксическую диаграмму для однострочного оператора INSERT.

  2. Нарисуйте синтаксическую диаграмму для многострочного оператора INSERT.

  3. Для учебной БД напишите оператор, добавляющий в базу данных сведения о новой квартире.

  4. Для учебной БД напишите оператор, добавляющий в базу данных сведения о новом жителе, у которого общий доход такой же, как у жителя с номером 222.

  5. Нарисуйте синтаксическую диаграмму для оператора DELETE.

  6. Для учебной БД напишите оператор, удаляющий из базы данных сведения обо всех источниках дохода жителей, проживающих по адресу: Зеленоград, 1001-45.

  7. Нарисуйте синтаксическую диаграмму для оператора UPDATE.

  8. Для учебной БД напишите оператор, изменяющий в базе данных сведения о номере и категории телефона, установленного в квартире по адресу: Зеленоград, 1001-45.

  9. Для учебной БД напишите оператор, создающий таблицу HAVE_D с указанием обязательно заполняемых столбцов (полей), значений по умолчанию, условий проверок, ключей.

Соседние файлы в папке БД лабы