
- •1. Подготовка и допуск к работе
- •2. Содержание отчета
- •Лабораторная работа №15
- •Лабораторная работа № 16
- •Пример: backup table vines,query,client,distributor,delivery to c:/mysql_bak';
- •Удалены 3 таблицы. Теперь восстановим их.
- •Пример: optimizetablEmytable
- •Лабораторная работа №17
- •Значение usage можно задавать, если необходимо создать пользователя без привилегий.
- •Примеры:
- •Доступ к MySql из сети
- •С помощью утилиты Mysqlshow выполните команду на просмотр структуры и состав таблиц базы Mysql. Приведите в отчете её схему.
- •Лабораторная работа №18
- •Тема: Файлы журналов MySql Репликация в MySql
- •Цель: Формирование умений и знаний для работы в среде субд Mysql.
- •Журнал ошибок
- •Общий журнал запросов
- •Журнал обновлений (update)
- •Бинарный журнал обновлений
- •Журнал медленных запросов
- •Обслуживание файлов журналов
- •Репликация в MySql
- •Настройка репликации
- •Лабораторная работа № 19-20
- •Сохраненные процедуры и функции
- •Сохраненные подпрограммы и таблицы предоставления привилегий
- •Синтаксис хранимых процедур
- •Синтаксис alter procedure и alter function
- •Синтаксис drop procedure и drop function
- •Синтаксис команды call
- •Синтаксис составного оператора begin ... End
- •Синтаксис declare
- •Переменные в сохраненных подпрограммах Локальные переменные declare
- •Команда set
- •Команда select ... Into
- •Условия и драйверы
- •Declare условий
- •Declare драйвера
- •Курсоры
- •Объявление курсоров
- •Инструкция case
- •Инструкция loop
- •Инструкция leave
- •Инструкция iterate
- •5.2.10.6. Инструкция repeat
- •Инструкция while
- •Задание
- •Приложение а
- •Демонстрируется использование mysql в качестве несложного калькулятора:
- •Проверка таблицы при помощи команды describe:
- •Выборка всех данных
- •Выборка определенных строк. Выборка с условием
- •Операторы and и or можно использовать совместно.
- •Предположим, нужно узнать, в каком возрасте животные давали приплод:
- •В этом запросе мы указываем псевдонимы имен таблицы, для обращения к столбцам и определения, к какой из таблиц относится каждая ссылка на столбец.
- •Сортировку можно проводить по нескольким столбцам сразу.
- •Отсортировать результаты по возрасту также можно при помощи выражения orderby:
- •Максимальное значение столбца
ЛАБОРАТОРНЫЙ ПРАКТИКУМ
Дисциплина "Разработка и эксплуатация удаленных баз данных" является обязательной для студентов, обучающихся на факультете СПО ГУ ИТМО, и ее цель -- обеспечение фундаментальной подготовки студентов по использованию методов и средств программирования в одном из СУБД.
Предметная область является сквозной для проведения лабораторных работ и выдается на первой лабороторной работе.
Варианты предмтных областей имеют различную степень сложности.
Варианты представлены в приложении 3.
1. Подготовка и допуск к работе
К выполнению практического задания допускаются студенты, которые подготовились к работе и не имеют невыполненных предыдущих заданий.
Перед работой студент должен:
предъявить преподавателю полностью оформленный отчет о предыдущей работе;
ответить на вопросы преподавателя.
К работе не допускаются студенты, которые не выполнили одно из вышеперечисленных требований.
2. Содержание отчета
титульный лист;
цель работы;
текст задания;
перечень всех использованных в практической работе команд и инструкций;
результаты выполнения задания;
вывод по работе;
ответы на контрольные вопросы.
Лабораторная работа №15
Тема:Создание индексов.
Цель: Формирование умений для работы в среде СУБД MySql.
Сведения из теории.
Индексы способствуют хранению данных в базе данных таким образом, который позволяет осуществлять быстрый поиск. К несчастью, ради скорости поиска приходится жертвовать дисковым пространством и скоростью изменения данных. Наиболее эффективно создавать индексы для тех колонок, в которых чаще всего собираются осуществлять поиск.
CREATE [UNIQUE] INDEX index_name ON tablename (column1, column2, columnN)
MySQL позволяет также создавать индекс одновременно с созданием таблицы.
CREATE TABLE materials (id INT NOT NULL, name CHAR(50) NOT NULL, resistance INT,
melting_pt REAL, INDEX indexl (id, name), UNIQUE INDEX index2 (name))
В этом примере для таблицы создается два индекса. Первый индекс indexl состоит из полей id и name. Второй индекс включает в себя только поле name и указывает, что значения поля name должны быть уникальными. Все поля, указанные в уникальном индексе, должны быть объявлены как NOT NULL . Когда индекс содержит более одной колонки (например, name, rank, nserial_number), MySQL читает колонки в порядке слева направо. Благодаря используемой MySQL структуре индекса всякое подмножество колонок с левого края автоматически становится индексом внутри «главного» индекса. Например, когда создается индекс name, rank, serial_number, создаются также «свободные» индексы name и name вместе с rank. Однако индексы rank или name и serial_number не создаются, если не потребовать этого явно.
Прежде чем создавать таблицу, нужно решить, какие поля будут ключами (и будут ли вообще ключи). Любые поля, которые будут участвовать в объединении таблиц, являются хорошими кандидатами на роль первичного ключа.
PRIMARY KEY Создает первичный ключ. Первичный ключ — это особый ключ, который может быть только один для каждой таблицы. По сути, первичный ключ- это уникальный (UNIQUE) ключ с именем «PRIMARY». Несмотря на привилегированный статус, он функционирует как любой другой уникальный ключ.
UNIQUE [nаmе] (column, [column2, . , . ])
Создает особый индекс, все входящие значения которого должны быть уникальными (и соответственно они уникальны в индексированных полях). Попытка ввести существующее значение в уникальный индекс вызовет ошибку.
При индексировании текстовых полей (CHAR, VARCHAR и их синонимы) возможно индексирование только первой части всего поля. Например, следующая команда создаст индекс числового поля 'id' вместе с первыми 20 символами текстового поля 'address':
INDEX adds ( id, address(20) );
При выполнении любого поиска в поле 'address' для сравнения будут использованы только первые 20 символов до тех пор, пока не встретится более одного совпадения. Поэтому можно получить большой выигрыш в производительности, если использовать для индексирования только некоторое количество символов текстового поля, которые, по вашему мнению, дадут уникальные значения.
Поля, входящие в индекс, должны быть определены с атрибутом NOT NULL При создании индекса отдельной командой MySQL сгенерирует ошибку, если NOT NULL не указан. Однако при определении первичного ключа добавлением атрибута PRIMARY KEY к описанию таблицы, атрибут NOT NULL будет добавлен автоматически (без предупреждения), если он не указан явно.
АLTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec ...]
alter_specification:
или ADD INDEX [index_name] (index_col_name,...)
или ADD UNIQUE [index_name] (index_col_name,...)
или ADD FULLTEXT [index_name] (index_col_name,...)
или ADD [CONSTRAINT symbol] FOREIGN KEY [index_name] (index_col_name,...)
[reference_definition]
или ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
или DROP PRIMARY KEY
или DROP INDEX index_name
DROP INDEX index_name ON tbl_name
Оператор DROP INDEX удаляет индексы, указанные в index_name из таблицы tbl_name.
Используемый в команде CREATE TABLE синтаксис для индексации префикса столбца выглядит примерно так:
KEY index_name (col_name(length))
В следующем примере создается индекс для первых 10 символов в столбце name:
CREATE TABLE test (name CHAR(200) NOT NULL, KEY index_name (name(10)));
Предположим, создается следующая таблица:
CREATE TABLE test (id INT NOT NULL, last_name CHAR(30) NOT NULL,first_name CHAR(30) NOT NULL, PRIMARY KEY (id),INDEX name (last_name,first_name));
Задание.
Проанализировать запросы и выявить поля, по которым нужно создать индексы.
Выполнить запросы, по которым будут создаваться индексы, записать время выполнения запроса.
Создать индексы.
Создать запросы поиска данных по этим индексам, сравнить время выполнения с п.1.
Провести анализ и аргументировонно доказать правильность создания индексов.