Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗИПЕКТ 28.09.11 Лекция 2.docx
Скачиваний:
1
Добавлен:
15.11.2018
Размер:
61.83 Кб
Скачать

Основные возможности языка определения данных

  • Создание различных сущностей БД.

  • Модификация сущностей.

  • Их удаление.

Основные параметры запроса на создание таблицы

  • Имя создаваемой таблицы.

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

  • Имя и свойства индексов, ключей и пр.

  • Дополнительная информация о таблице.

Пример интерфейса создания и редактирования таблиц

Пример запроса на создание таблицы

CREATE TABLE ‘Prep’ ( ‘NP’ INTEGER UNSIGNED NOT NULL избыточно AUTO_INCREMENT, ‘Name’ VARCHAR(255) NOT NULL, ‘Position’ VARCHAR (45) NOT NULL, ‘Seniority’ INTEGER UNSIGNED ZEROFILL, PRIMARY KEY(‘NP’) ) ENGINE=InnoDB

Яркий пример несовпадения с MySQL – там нет даже оператора CREATE

Таблицы могут быть оптимизированы по скорости добавления/извлечения. Этот вариант таблицы оптимизирован под использование транзакций – безопасной обработки данных путём их изменения в таблице

Основные параметры запроса на модификацию таблицы

  • Имя модифицируемой таблицы.

  • Характеристики каждого модифицируемого элемента таблицы.

  • Позиционирование каждого модифицируемого элемента таблицы, если оно требуется.

Примеры запросов на модификацию таблицы

  • Добавление столбца: ALTER TABLE ‘Prep’ ADD COLUMN ‘Age’ INTEGER UNSIGNED AFTER ‘Seniority’

  • Удаление столбца: ALTER TABLE ‘Prep’ DROP COLUMN ‘Age’

Вопросы: регистр, точка с запятой

  • Добавление индекса: ALTER TABLE ‘Prep’ ADD INDEX ‘Position_Index’(‘Position’)

  • Переименование индекса: ALTER TABLE ‘Prep’ DROP INDEX ‘Position_Index’, ADD INDEX ‘Position_Idx’ USING BTREE(‘Position’)

Пример связи между таблицами (Пример 1)

Prep

NP

Name

Position

Seniority

1

Иванов

Доцент

10

2

Петров

Ст. преп.

5

3

Сидоров

Профессор

20

Course

NC

Title

Hours

Exam

1

Защита информационных процессов

64

+

2

Основы БД

48

+

3

Параллельное и многопоточное программирование

80

+

Lectures (связывает таблицы Prep и Course)

NP

NC

1

1

3

2

3

3

Фото: Создание таблицы Course …

Запрос на создание таблицы Course:

CREATE TABLE ‘Course’ ( ‘NC’ INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ‘Title’ VARCHAR(255) NOT NULL, ‘Hours’ INTEGER UNSIGNED NOT NULL, ‘Exam’ CHAR ASCII NOT NULL, PRIMARY KEY(‘NC’) ) ENGINE=InnoDB

Фото: Создание таблицы Lectures с помощью MySQL Table Editor

Запрос на создание таблицы Lectures:

CREATE TABLE ‘Lectures’ ( ‘NP’ INTEGER UNSIGNED NOT NULL, ‘NC’ INTEGER UNSIGNED NOT NULL, CONSTRAINT ‘FK_Lectures_Prep’ FOREIGN KEY ‘FK_Lectures_Prep’ (‘NP’) REFERENCES ‘Prep’ (‘NP’) ON DELETE CASCADE ON UPDATE RESTRICT, CONSTRAINT ‘FK_Lectures_Course’ FOREIGN KEY ‘FK_Lectures_Course’ (‘NC’) REFERENCES ‘Course’ (‘NC’) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE=InnoDB

Пример 1: в таблицу Lectures не можем добавить несуществующие поля таблиц, с которыми связана эта таблица. Контроль логической целостности

Примеры других запросов языка определения данных:

  • Переименование таблицы: ALTER TABLE ‘Lectures’ RENAME TO ‘Lecturer’

  • Удаление таблицы: DROP TABLE ‘Lecturer’

Пример 1: не можем удалить таблицу Prep, потому что есть другая таблица, которая на неё ссылается (Lectures). Более того, мы не можем переименовать эту таблицу (как и таблицу Course)