Upload
hrdrst
View
132
Download
1
Embed Size (px)
Citation preview
Центр Компьютерного обучения СПЕЦИАЛИСТ при МГТУ им. Баумана
Установка и запуск сервера
MySQL 5
Установка и запуск сервера MySQL 5
2
В этом модуле рассматриваются следующие темы:
� Назначение и описание сервера MySQL 5
� Установка сервера MySQL 5
� Обзор файлов сервера MySQL 5
� Клиентские программы для работы сервером
� Использование утилит командной строки
� Использование дополнительных утилит сервера
В этом модуле две лабораторные работы:
� Установка сервера MySQL 5
� Запуск сервера, обзор баз данных сервера
Установка и запуск сервера MySQL 5
3
Установка и запуск сервера MySQL 5
4
Установка и запуск сервера MySQL 5
5
Установка и запуск сервера MySQL 5
6
Установка и запуск сервера MySQL 5
7
Установка и запуск сервера MySQL 5
8
Установка и запуск сервера MySQL 5
9
Установка и запуск сервера MySQL 5
10
Установка и запуск сервера MySQL 5
11
Установка и запуск сервера MySQL 5
12
Установка и запуск сервера MySQL 5
13
Установка и запуск сервера MySQL 5
14
Установка и запуск сервера MySQL 5
15
Установка и запуск сервера MySQL 5
16
Установка и запуск сервера MySQL 5
17
Установка и запуск сервера MySQL 5
18
� Установите в привод CD слушателя и откройте
проводником этот диск
� В папке CD_drive:\Soft\MySQL найдите архив с
сервером MySQL 5
� Раскройте этот архив в любую папку на вашей машине
и выполните файл setup.exe
� Следуя указаниям мастера, установите и настройте
сервер MySQL
� Убедитесь, что сервер MySQL запущен, проверив
открытый порт TCP 3306 (это можно сделать командой
netstat –ano)
Установка и запуск сервера MySQL 5
19
Установка и запуск сервера MySQL 5
20
Установка и запуск сервера MySQL 5
21
Установка и запуск сервера MySQL 5
22
Установка и запуск сервера MySQL 5
23
Установка и запуск сервера MySQL 5
24
� Откройте командное окно операционной системы:
Пуск ���� Выполнить ���� cmd
� Введите команду mysql –uroot –ppassword
� Введите команду USE mysql;
� Введите команду SHOW TABLES;
� Выведите на экран содержимое таблицы user SELECT * FROM user\G
Центр Компьютерного обучения СПЕЦИАЛИСТ
при МГТУ им. Баумана
Реляционные базы данных
Реляционные базы данных
26
Реляционные базы данных
27
Реляционные базы данных
28
Реляционные базы данных
29
Реляционные базы данных
30
Реляционные базы данных
31
Реляционные базы данных
32
Реляционные базы данных
33
Реляционные базы данных
34
Реляционные базы данных
35
Реляционные базы данных
36
Реляционные базы данных
37
Реляционные базы данных
38
Реляционные базы данных
39
� Определите сущности электронного магазина
� Товары – это:
o Наименование
o Цена
o Описание
o Производитель
� Заказ – это:
o Заказчик (ФИО, e-mail)
o Адрес доставки
o Какие товары приобретены
o Когда сделан заказ
o По какой цене отпущен товар (товары)
Реляционные базы данных
40
Реляционные базы данных
41
Реляционные базы данных
42
Реляционные базы данных
43
Реляционные базы данных
44
Реляционные базы данных
45
Реляционные базы данных
46
Реляционные базы данных
47
� Определите таблицы для БД электронного магазина
� Определите связи (отношения) этих таблиц
� Приведите Вашу БД ко второй нормальной форме
� Определите транзитивные зависимости в БД
� Приведите БД к третьей нормальной форме
� Это БКНФ?
Реляционные базы данных
48
Центр Компьютерного обучения СПЕЦИАЛИСТ при МГТУ им. Баумана
Язык SQL: манипулирование структурой данных
Язык SQL: манипулирование структурой данных
50
Язык SQL: манипулирование структурой данных
51
Язык SQL: манипулирование структурой данных
52
Язык SQL: манипулирование структурой данных
53
Язык SQL: манипулирование структурой данных
54
Язык SQL: манипулирование структурой данных
55
Язык SQL: манипулирование структурой данных
56
Язык SQL: манипулирование структурой данных
57
Язык SQL: манипулирование структурой данных
58
Язык SQL: манипулирование структурой данных
59
Язык SQL: манипулирование структурой данных
60
� Создайте БД на сервере:
� Наполните БД тестовыми записями (данные
находятся в файле course_db.xls
(если позволяет время)
Язык SQL: манипулирование структурой данных
61
Язык SQL: манипулирование структурой данных
62
Язык SQL: манипулирование структурой данных
63
Язык SQL: манипулирование структурой данных
64
� Выберите базу данных INFORMATION_SCHEMA
use INFORMATION_SCHEMA;
� Выведите список таблиц
show tables;
� Выведите информацию о каждой таблице
describe table_name;
Язык SQL: манипулирование структурой данных
65
Язык SQL: манипулирование структурой данных
66
Язык SQL: манипулирование структурой данных
67
Язык SQL: манипулирование структурой данных
68
Язык SQL: манипулирование структурой данных
69
Язык SQL: манипулирование структурой данных
70
� Создайте индексы для БД courses lessons.teacher lessons.course lessons.date courses.cathegory courses.previous
� Определите главные отношения в вашей БД
Язык SQL: манипулирование структурой данных
71
Язык SQL: манипулирование структурой данных
72
Язык SQL: манипулирование структурой данных
73
Язык SQL: манипулирование структурой данных
74
Язык SQL: манипулирование структурой данных
75
Язык SQL: манипулирование структурой данных
76
Язык SQL: манипулирование структурой данных
77
Язык SQL: манипулирование структурой данных
78
Язык SQL: манипулирование структурой данных
79
Язык SQL: манипулирование структурой данных
80
� Найдите файл course_db.sql
� Введите команду
mysql –uroot –ppassword course < course_db.sql
� Подключитесь к серверу
mysql –uroot –ppassword course
� Переключите языковую настройку:
set names 'cp866';
� Проверьте таблицы Вашей базы данных
Язык SQL: манипулирование структурой данных
81
Язык SQL: манипулирование структурой данных
82
Центр Компьютерного обучения СПЕЦИАЛИСТ при МГТУ им. Баумана
Язык SQL: манипулирование
данными
Язык SQL: манипулирование данными
84
Язык SQL: манипулирование данными
85
Язык SQL: манипулирование данными
86
Язык SQL: манипулирование данными
87
Язык SQL: манипулирование данными
88
Язык SQL: манипулирование данными
89
Язык SQL: манипулирование данными
90
Язык SQL: манипулирование данными
91
Язык SQL: манипулирование данными
92
Язык SQL: манипулирование данными
93
� Переключитесь в базу данных courses
� Убедитесь, что кодировка переключена на
необходимую
� Введите запрос, выводящий число записей таблицы
lessons проходящих в аудитории БК-19
� Введите запрос, выводящий максимальное число
часов занятий 21.09.2006
� Запишите число записей во всех таблицах
Язык SQL: манипулирование данными
94
Язык SQL: манипулирование данными
95
Язык SQL: манипулирование данными
96
Язык SQL: манипулирование данными
97
Язык SQL: манипулирование данными
98
� Переключитесь в базу данных courses
� Убедитесь, что кодировка переключена на
необходимую
� Введите запрос, выводящий сумму всех занятий по
аудиториям
� Введите запрос, выводящий сумму всех занятий по
датам
� Модернизируйте запрос так, чтобы вывести только
занятия БК-19
Язык SQL: манипулирование данными
99
Язык SQL: манипулирование данными
100
Язык SQL: манипулирование данными
101
Язык SQL: манипулирование данными
102
Язык SQL: манипулирование данными
103
Язык SQL: манипулирование данными
104
Язык SQL: манипулирование данными
105
� Переключитесь в базу данных courses
� Убедитесь, что кодировка переключена на
необходимую
� Напишите запрос, выводящий все занятия
преподавателя Иванов Иван Иванович
� Напишите запрос, выводящий все занятия, в том
числе и преподавателя Иванов Иван Иванович
� Напишите запрос, выводящий курсы, в том числе и
курсы 10.09.2006
� Выведите список курсов, которые читает
преподаватель Петров Петр Петрович
Язык SQL: манипулирование данными
106
Центр Компьютерного обучения СПЕЦИАЛИСТ
при МГТУ им. Баумана
Объединение запросов и
консолидация данных
Объединение запросов и консолидация данных
108
Объединение запросов и консолидация данных
109
Объединение запросов и консолидация данных
110
Объединение запросов и консолидация данных
111
Объединение запросов и консолидация данных
112
Объединение запросов и консолидация данных
113
Объединение запросов и консолидация данных
114
� Загрузите базу данных world
� Для этого, создайте БД world
CREATE DATABASE world;
� Выйдите из клиента MySQL с помощью команды quit
� Введите команду
mysql –uroot –ppassword world < world.sql
� Откройте клиент MySQL для базы данных world
mysql –uroot –ppassword world
� Напишите запрос, который выведет список стран с
городами более 10 000 000 человек
� Измените запрос, чтобы добавить к результатам
первого запроса список стран с городами 1 000 000
- 5 000 000 человек
Объединение запросов и консолидация данных
115
Объединение запросов и консолидация данных
116
Объединение запросов и консолидация данных
117
Объединение запросов и консолидация данных
118
� В базе данных world создайте просмотр регионов
стран
� Создайте просмотр стран Европы (и Западной
Европы и Восточной Европы и Южной)
� Аналогично сделайте просмотр всех стран Африки и
Азии
� Используя INFORMATION_SCHEMA, выведите на
экран все просмотры в БД world
Объединение запросов и консолидация данных
119
Объединение запросов и консолидация данных
120
Центр Компьютерного обучения СПЕЦИАЛИСТ
при МГТУ им. Баумана
Хранимые процедуры и
триггеры
Хранимые процедуры и триггеры
122
Хранимые процедуры и триггеры
123
Хранимые процедуры и триггеры
124
Хранимые процедуры и триггеры
125
Хранимые процедуры и триггеры
126
Хранимые процедуры и триггеры
127
Хранимые процедуры и триггеры
128
Хранимые процедуры и триггеры
129
Хранимые процедуры и триггеры
130
Хранимые процедуры и триггеры
131
Хранимые процедуры и триггеры
132
Хранимые процедуры и триггеры
133
Хранимые процедуры и триггеры
134
Хранимые процедуры и триггеры
135
Хранимые процедуры и триггеры
136
Хранимые процедуры и триггеры
137
Хранимые процедуры и триггеры
138
Хранимые процедуры и триггеры
139
Хранимые процедуры и триггеры
140
Хранимые процедуры и триггеры
141
Хранимые процедуры и триггеры
142
� Создайте хранимую процедуру в БД world, которая
выводит список всех таблиц и количество записей в
каждой из них
� Создайте хранимую процедуру, которая возвращает
список индексов для каждой таблицы БД
� Создайте хранимую процедуру, возвращающую
список пользователей в виде одной строки
Хранимые процедуры и триггеры
143
Хранимые процедуры и триггеры
144
Хранимые процедуры и триггеры
145
Хранимые процедуры и триггеры
146
� Переключитесь в базу данных course
� Создайте триггер для таблицы teachers, удаляющий
все записи о занятиях при удалении преподавателя
� Создайте триггер, удаляющий все записи о занятиях
при удалении курса
� Создайте триггер, обновляющий код курса в
таблице lessons при его обновлении кода в таблице
course
� Аналогично создайте триггер обновления кода
преподавателя
� Проверьте работу триггеров
o Удалите один из курсов
o Обновите код первого курса
o Удалите одного из преподавателей
o Обновите код первого преподавателя
Хранимые процедуры и триггеры
147
Хранимые процедуры и триггеры
148
Центр Компьютерного обучения СПЕЦИАЛИСТ при МГТУ им. Баумана
Транзакции и
типы хранилищ MySQL
Транзакции и
типы хранилищ MySQL
150
Транзакции и
типы хранилищ MySQL
151
Транзакции и
типы хранилищ MySQL
152
Транзакции и
типы хранилищ MySQL
153
Транзакции и
типы хранилищ MySQL
154
Транзакции и
типы хранилищ MySQL
155
Транзакции и
типы хранилищ MySQL
156
Транзакции и
типы хранилищ MySQL
157
Транзакции и
типы хранилищ MySQL
158
Транзакции и
типы хранилищ MySQL
159
� Откройте два экземпляра командного окна и в
обоих окнах введите команду
mysql -uroot -ppassword course
� В обоих клиентах введите команду
set names 'cp866';
� В одном из окон (условно, в «первом окне»)
введите команду
start transaction;
� В первом окне введите команду
insert into courses (title)
values ('Новый курс');
� В обоих окнах (и с первом и во втором) введите
команду
select title from courses;
� Какой уровень изоляции транзакции используется?
Транзакции и
типы хранилищ MySQL
160
� Откатите транзакцию в первом окне командой
rollback;
� Измените уровень изоляции в обоих окнах командой
SET TRANSACTION ISOLATION LEVEL READ
UNCOMMITTED;
� В первом окне введите команду
start transaction;
� В первом окне введите команду
insert into courses (title)
values ('Новый курс');
� В обоих окнах (и с первом и во втором) введите
команду
select title from courses;
� Откатите транзакцию в первом окне командой
rollback;
� В обоих окнах (и с первом и во втором) введите
команду
select title from courses;
� Объясните разницу в результатах
� Повторяя приведенные выше шаги попробуйте все
уровни изоляции
o READ UNCOMMITTED
o READ COMMITTED
o REPEATABLE READ
o SERIALIZABLE
Транзакции и
типы хранилищ MySQL
161
Транзакции и
типы хранилищ MySQL
162
Транзакции и
типы хранилищ MySQL
163
Транзакции и
типы хранилищ MySQL
164
� Переключитесь на базу данных test
USE test;
� Создайте две таблицы city1 и city2 по образу таблицы city из базы данных world
CREATE TABLE city1 LIKE world.city;
CREATE TABLE city2 LIKE world.city;
� Удалите колонку id из табдицы city1
ALTER TABLE city1 DROP COLUMN id;
� Добавьте новую колонку id (без AUTO_INCREMENT!)
в таблицу city1
ALTER TABLE city1 ADD COLUMN id INT;
� Измените тип хранилища для таблицы city1
ALTER TABLE city1 ENGINE=ARCHIVE;
� Скопируйте данные в таблицу city1 из таблицы city
базы данных world
mysql> INSERT INTO city1
-> (id, Name, CountryCode, District, Population)
-> SELECT id, Name, CountryCode, District, Population
-> FROM world.city;
Транзакции и
типы хранилищ MySQL
165
� Измените тип хранилища для таблицы city2
ALTER TABLE city2 ENGINE=MEMORY;
� Скопируете данные в таблицу city2 из таблицы city
базы данных world
INSERT INTO city2 SELECT * FROM world.city;
� Выполните запросы
mysql> SELECT name, population FROM city1
-> WHERE name LIKE '%os%'
-> ORDER BY population;
mysql> SELECT name, population FROM city2
-> WHERE name LIKE '%os%'
-> ORDER BY population;
� Если удаться ☺ - заметьте разницу во времени на
выполнение этих запросов
� Откройте проводник и обратите внимание на файлы
в базе данных test
� Попробуйте изменить тип хранилища таблицы city2
ALTER TABLE city2 ENGINE=MyISAM;
� Что изменилось в папке базы данных?
Транзакции и
типы хранилищ MySQL
166
Центр Компьютерного обучения СПЕЦИАЛИСТ при МГТУ им. Баумана
Оптимизация и
обслуживание сервера
MySQL 5
Оптимизация и
обслуживание сервера MySQL 5
168
Оптимизация и
обслуживание сервера MySQL 5
169
Оптимизация и
обслуживание сервера MySQL 5
170
Оптимизация и
обслуживание сервера MySQL 5
171
Оптимизация и
обслуживание сервера MySQL 5
172
� Откройте командное окно
� Введите команду
cd C:\MySQL-course
� Выполните резервное копирование базы данных
world
mysqldump -uroot -ppassword world > world.sql
� Откройте файл C:\MySQL-course\world.sql с
помощью Блокнота Windows. Обратите внимание на
его кодировку
� Выполните резервное копирование базы данных
course
mysqldump -uroot -ppassword course > course.sql
� Откройте файл C:\MySQL-course\course.sql с
помощью Блокнота Windows. Обратите внимание на
его кодировку
� Сохраните этот файл с кодировке ANSI, чтобы
избавится от BOM (Byte Order Mark) в начале файла
� В тексте этого файла перед созданием первой
таблицы допишите команду на переключение
Оптимизация и
обслуживание сервера MySQL 5
173
кодовой страницы SET NAMES 'cp1251';
� Сохраните файл
� Повторите эти действия для файла world.sql
(Так как в БД world нет национальных символов,
кодовую страницу можно не переключать)
� Удалите базы данных world и course
mysql -uroot -ppassword -e "drop database course" mysql -uroot -ppassword -e "drop database world"
� Убедитесь, что базы данных удалены
� Создайте пустые базы данных world и course
mysql -uroot -ppassword -e "create database course" mysql -uroot -ppassword -e " create database world"
� Восстановите наполнение баз данных
mysql -uroot -ppassword course < course.sql mysql -uroot -ppassword world < world.sql
� Убедитесь, что БД восстановлены:
mysql -uroot -ppassword course mysql> SET NAMES 'cp866'; mysql> select * from teachers;
� Аналогично проверьте БД world
Оптимизация и
обслуживание сервера MySQL 5
174
Оптимизация и
обслуживание сервера MySQL 5
175
Оптимизация и
обслуживание сервера MySQL 5
176
Оптимизация и
обслуживание сервера MySQL 5
177
Оптимизация и
обслуживание сервера MySQL 5
178
Оптимизация и
обслуживание сервера MySQL 5
179
Оптимизация и
обслуживание сервера MySQL 5
180
Оптимизация и
обслуживание сервера MySQL 5
181
� Откройте командное окно и подключитесь к серверу
mysql -uroot -ppassword world
� Выполните запрос
mysql> SELECT name, population -> FROM city -> WHERE id IN ( -> SELECT id FROM city -> WHERE population > 1000000) -> ORDER BY population;
� Попробуйте посмотреть план выполнения этого
запроса
mysql> EXPLAIN SELECT name, population -> FROM city -> WHERE id IN ( -> SELECT id FROM city -> WHERE population > 1000000) -> ORDER BY population;
� Какие изменения необходимо внести в структуру
таблиц, чтобы запрос выполнялся быстрее?
� Откройте файл my.ini
� Найдите и измените параметр query_cache_size=1M
Оптимизация и
обслуживание сервера MySQL 5
182
� Сохраните и закройте файл my.ini
� Выйдите из клиента MySQL командой quit
� Перезапустите сервер MySQL командами
net stop mysql net start mysql
� Подключитесь к базе данных world
mysql -uroot -ppassword world
� Введите команду и убедитесь, что кеш запросов
установлен
SHOW VARIABLES LIKE 'query_cache%';
� Несколько раз выполните запрос
mysql> SELECT name, population -> FROM city -> WHERE id IN ( -> SELECT id FROM city -> WHERE population > 1000000) -> ORDER BY population;
� Что изменилось?
Оптимизация и
обслуживание сервера MySQL 5
183