Рабочая тетрадь

Preview:

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

Recommended