- •Общие указания к выполнению практических работ
- •Критерии оценки:
- •Практическая работа № 1
- •Указания по выполнению практической работы Возможности монитора MySql
- •Задание 1
- •Описание учебного примера
- •Удаление таблиц
- •Задание 1
- •Контрольные вопросы
- •Практическая работа №2
- •Указания по выполнению практической работы Команда alter table
- •Задание 1
- •Задание 2
- •Контрольные вопросы
- •Практическая работа № 3
- •Указания по выполнению практической работы
- •Задание 1
- •Задание 1
- •Задание 2
- •1. Создание eer-диаграммы
- •Контрольные вопросы
- •Лабораторная работа № 7
- •Указания по выполнению лабораторной работы
- •Для компонента adoConnection1 устанавливаем следующие свойства
- •Простая выборка
- •Использование вычисляемых полей
- •Логические связки and и or
- •Выборка с упорядочением
- •Контрольные вопросы
- •Практическая работа № 11
- •Указания к выполнению лабораторной работы Запросы к нескольким таблицам
- •Задание1
- •Табличный подзапрос
- •Использование операций in и not in
- •Использование операций some, any и all
- •Использование exists и not exists
- •Задание
- •Контрольные вопросы
- •Лабораторная работа № 14
- •Команда insert
- •Задание 1
- •Команда update
- •Задание 2
- •Команда delete
- •Задание 3
- •Контрольные вопросы
- •Лабораторная работа № 15
- •Задание
- •Задание 2
- •Контрольные вопросы
- •Лабораторная работа № 16
- •Контрольные вопросы
- •Практическая работа № 17
- •Задание 1
- •Задание 2
- •Контрольные вопросы
- •Практическая работа № 18
- •Добавление триггера
- •Создание триггера на before update
- •Удаление триггера
- •Список созданных триггеров
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Контрольные вопросы
- •Лабораторная работа № 19
- •Задание 1
- •Задание 2
- •Контрольные вопросы
- •Практическая работа № 20
- •Задание 1
- •Контрольные вопросы
- •Практическая работа № 21
- •Уровни привилегий и пользователи
- •Отмена привилегий и удаление пользователей
- •Задание 1 Работа локально
- •Варианты заданий предметных областей для создания баз данных Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Вариант16
- •Вариант 17
- •Вариант 18
- •Вариант 19
- •Вариант 20
- •Вариант 22
- •Вариант 23
- •Вариант 24
- •Вариант 25
- •Вариант 26
- •Вариант 27
- •Вариант 28
- •Вариант 29
- •Вариант 30
- •Вариант 31
- •Вариант 32
Задание 1
Добавить столбец YearBegin (год начала учебы в институте) в таблицу Student, задав тип данных Datetime.
ALTER TABLE Student ADD YearBegin Datetime;
Добавить столбец IDFacultet (Код факультета) в таблицу SGroup, задав тип данных INT и определив значение по умолчанию 1.
ALTER TABLE SGroup ADD IDFacultet INT Default 1;
Добавить в таблицу SGroup, содержащую данные, столбец IDFacultet, установив для него ограничение NOT NULL и значение по умолчанию 0..
ALTER TABLE SGroup ADD IDFacultet INT NOT NULL DEFAULT 0;
Добавить в таблицу SGroup столбец IDFacultet, установив для него ограничение NOT NULL.
ALTER TABLE SGroup ADD IDFacultet INT NOT NULL;
Переименовать таблицу Teachers в Teacher.
ALTER TABLE Teachers CHANGE TO Teacher;
Переименовать поле IDP в PIN в таблице UPlan.
ALTER TABLE UPlan CHANGE IDP PIN NOT NULL;
Переименовать поле NGroup таблицы SGroup в NameGroup c типом INT.
ALTER TABLE SGroup CHANGE NGroup NameGroup INT;
Задание 2
Разработайте SQL-запросы для модификации таблиц вашей базы данных в соответствии с вариантом.
Контрольные вопросы
Какие операции изменения структуры таблицы позволяет делать оператор ALTER TABLE?
Как удалить определение первичного ключа?
Как удалить определение внешнего ключа?
Можно ли добавить ограничение NOT NULL для столбца? Как это сделать?
Можно ли добавить значение по умолчанию для столбца? Как это сделать?
В каких случаях оператор удаления таблицы DROP TABLE не работает и таблицу не удается удалить?
Как вставить новый столбец за определенным полем или сделать его первым в таблице?
Как переименовать таблицу?
Как переименовать столбец?
Как изменить тип данных в столбце?
Практическая работа № 3
Тема: «Разработка серверной части базы данных в СУБД MySQL. Создание индексов (простых, уникальных, ключевых)»
Цель: научиться создавать простые, уникальные и ключевые индексы.
Время выполнения: подготовка: 3 мин; выполнение: 32 мин; проверка: 10 мин; всего: 45 мин.
Указания по выполнению практической работы
В MySQL существует три вида индексов: PRIMARY, UNIQUE, и INDEX, а слово ключ (KEY) используется как синоним слова индекс (INDEX). Все индексы хранятся в памяти в виде B-деревьев.
PRIMARY – уникальный индекс (ключ) с ограничением, что все индексированные им поля не могут иметь пустого значения (т.е. они NOT NULL). Таблица может иметь только один первичный индекс, но он может состоять из нескольких полей.
UNIQUE – ключ (индекс), задающий поля, которые могут иметь только уникальные значения.
INDEX – обычный индекс. В MySqL, кроме того, можно индексировать строковые поля по заданному числу символов от начала строки.
Обычные индексы могут быть
созданы следующими способами:
1. При создании таблицы с помощью команды CREATE TABLE.
2. Добавлены с помощью команды ALTER TABLE.
3. С помощью команды CREATE INDEX.
Рассмотрим создание индекса с помощью команды
CREATE TABLE, например:
CREATE TABLE tb1 (
Id INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
Id_tb1 INT(11) NOT NULL DEFAULT ‘0’,
Id_cat INT(11) NOT NULL DEFAULT ‘0’,
INDEX id_tb1 (id_tb1),
UNIQUE id_cat (id_cat)) INGINE=InnoDB
После ключевого слова INDEX следует имя индекса, а вкруглых скобках указывается имя столбца, для которого создается индекс. В таблице tb1 наряду с индексом для первичного ключа будут созданы два индекса id_tb1 и id_cat. Индекс id_tb1 создается по полю id_tb1. Индекс id_cat создается по полю id_cat и является уникальным, т.е. запрещает ввод повторяющихся значений в поле id_cat. Обратите внимание, что имена индексов могут совпадать с именами полей.
Рассмотрим создание индекса с помощью команды ALTER
TABLE, например:
ALTER TABLE Sotr ADD INDEX Idx_Fam( Fio(10));
К таблице Sotr добавляется индекс с именем Idx_Fam по полю Fio по первым 10 символам.
Рассмотрим создание индекса с помощью команды
CREATE INDEX. Синтаксис команды CREATE INDEX:
CREATE [UNIQUE|FULLTEXT]
INDEX <ИмяИндекса>
ON <ИмяТаблицы> (<СтолбецВИндексе>,...)
СтолбецВИндексе:
ИмяСтолбца [(длина)] [ASC | DESC]
Ключевое слово UNIQUE – задает уникальный индекс, это означает, что не допускаются повторяющиеся значения в столбцах, на основе которых создан индекс.
Ключевое слово ASC означает, что значения ключевого поля в индексе отсортированы по возрастанию. Ключевое слово DESC означает, что значения ключевого поля в индексе отсортированы по убыванию.
Например:
CREATE INDEX Idxfio1 ON Sotr (Fio(5) ASC);
Создается индекс с именем Idxfio1 для таблицы Sotr для поля Fio по первым его 5-ти символам. Данные в индексе отсортированы по возрастанию, на что указывает ключевое слово ASC.
Просмотр созданных индексов для таблицы можно выполнить с помощью команды SHOW INDEX FROM <ИмяТаблицы>\G;
Удаление индекса: DROP INDEX <ИмяИндекса> ON <ИмяТаблицы>;
Пример1. Создание ключевого поля на уровне столбца
CREATE TABLE table_name (
id INT(8) NOT NULL AUTO_INCREMENT PRIMARY KEY, last_name VARCHAR(25) NULL) INGAIN = InnoDB;
Пример 2. Создание ключевого поля на уровне таблицы
CREATE TABLE table_name (
id INT(8) NOT NULL AUTO_INCREMENT,
name VARCHAR(25) NULL,
PRIMARY KEY(id),
INDEX name_index (name(10))
) INGAIN = InnoDB;
Пример 3. Добавление в таблицу ключевого поля
CREATE TABLE table_name (
id INT(8) NOT NULL AUTO_INCREMENT ,
last_name VARCHAR(25) NULL) INGAIN = InnoDB;
ALTER TABLE table_name ADD PRIMARY KEY (id);
Пример 4. Создание уникального ключа на уровне столбца
CREATE TABLE table_name
( pole1 integer NOT NULL UNIQUE,
pole2 char (10) NOT NULL UNIQUE,
pole3 char (10)) INGAIN = InnoDB;
Пример 4. Создание уникального индекса на уровне таблицы
CREATE TABLE table_name
( pole1 int NOT NULL,
pole2 char (10) NOT NULL,
UNIQUE (pole1,polt2)) INGAIN = InnoDB;
Пример 5. Создание уникального индекса
CREATE UNIQUE INDEX index_name ON table_name (column_name,... )
Пример 6. Добавление уникального индекса
ALTER TABLE table_name ADD UNIQUE INDEX index_name (column_name,...);
Пример 7. Создание простого индекса
CREATE TABLE table_name
( pole1 int NOT NULL,
pole2 char (10) NOT NULL,
INDEX name_index (pole1)) INGAIN = InnoDB;
Пример 8. Создание простого индекса
CREATE INDEX name_index ON table_name (pole1);
Задание 1
Удалите все таблицы, созданные в практической работе№1.
Создайте таблицы базы данных с учетом ключевых полей, индексных полей и уникальных ключей в базе данных Student.
Задание 2
Разработайте SQL-запросы для создания простых, уникальных индексов, ключевых полей для таблиц базы данных выбранного варианта.
Контрольные вопросы
1. Что такое индекс? Для чего используются индексы?
2. Перечислить и кратко охарактеризовать типы индексов в MySQL.
3. Каким образом можно создать индекс? Для каких полей
следует создавать индексы?
4. Какие команды языка SQL работают с индексами?
5. С помощью какой команды можно просмотреть созданные для таблицы индексы?
Практическая работа № 4
Тема: Разработка серверной части базы данных в СУБД MySQL. Ограничения
Цель: научиться применять в таблицах ограничения к значениям полей таблицы.
Время выполнения: подготовка: 3 мин; выполнение: 32 мин; проверка: 10 мин; всего: 45 мин.
Указания по выполнению практической работы
Ограничение CONSTRAINT, задающее в команде CREATE TABLE ограничения, как на уровне таблицы, так и на уровне столбца приведен ниже.
[CONSTRAINT <имя ограничения>]
[CHECK (<условие>)]
Пример1.
CREATE TABLE table_name
( pole1 int NOT NULL,
pole2 varchar (20) NOT NULL,
INDEX name_index (pole1)
CHEK (pole1>10)) INGAIN = InnoDB;
Пример 2.
CREATE TABLE table_name
( pole1 int NOT NULL,
pole2 varchar (20) NOT NULL,
INDEX name_index (pole1)
CHEK (pole1>10 OR pole2=”Москва”)) INGAIN = InnoDB;
Пример 3.
CREATE TABLE table_name
( pole1 int NOT NULL,
pole2 char (10) NOT NULL,
INDEX name_index (pole1),
CHEK (pole2 IN(“Москва”;”Сочи”)) INGAIN = InnoDB;
Пример 4.
CREATE TABLE table_name
( pole1 int NOT NULL,
pole2 char (10) NOT NULL,
INDEX name_index (pole1),
CONSTRAINT CHEK (pole1 BETWEEN 2 AND 5 )) INGAIN = InnoDB;
Пример 4. Добавление ограничения
ALTER TABLE table_name ADD CHECK (pole2>10);
ALTER TABLE table_name ADD CONSTRAINT name_constraint CHECK (Pole1>10 AND Pole2=”Москва”) INGAIN = InnoDB;
