
- •Письменные лекции по дисциплине «Базы данных»
- •Лекция 1. Понятие субд. Модели данных. Реляционная модель
- •1.1. Бд и субд
- •1.2. Классификация бд
- •1.3. Классификация субд
- •1.3.1. Состав субд и работа бд
- •1.4. Язык sql
- •1.5. Основные типы sql запросов по их видам
- •1.6. Основные функции субд
- •1.7. Модели данных
- •1.8. Реляционная модель данных
- •1.9. Информационный объект
- •1.10. Нормализация отношений
- •1.10.1. Первая нормальная форма
- •1.10.2. Вторая нормальная форма
- •Лекция 2. Продолжение прошлой лекции
- •2.1. Третья нормальная форма
- •2.2. Отношения
- •2.3. Ключ
- •2.4. Пример выгрузки данных
- •2.5. Заполнение таблиц
- •2.6. Реляционные операции
- •1. Выборка
- •2. Проекция
- •3. Объединение
- •4. Пересечение
- •5. Разность
- •6. Произведение
- •7. Деление
- •8. Соединение
- •2.7. Соединение таблиц
- •2.8. Изменение таблицы
- •2.9. Типы данных MySql
- •2.10. Параллелизм
- •Лекция 3. Хранимые процедуры и функции
- •3.1. Хранимая процедура MySql
- •3.2. Переменные
- •3.3. Параметры процедуры
- •3.4. Операторы if и case
- •3.5. Оператор return
- •Лекция 4. Транзакции. Уровни изоляции. Блокировки.
- •4.1. Понятие транзакции
- •4.2. Операторы транзакции
- •4.3. Уровни изоляции (изолированности) транзакций
- •4.4. Тест acid
- •4.5. Механизм блокировок
- •4.6. Взаимоблокировки
- •4.7. Ведение журнала транзакций
- •Лекция 5. Ссылочная целостность данных. Внешние ключи. Индексирование.
- •5.1. Ссылочная целостность данных
- •5.2. Внешний ключ
- •5.2.1. Условия обеспечения целостности данных при помощи внешнего ключа
- •5.2.2. Практический пример
- •5.2.3. Синтаксис объявления внешнего ключа
- •5.3. Индекс
- •5.3.1. Для каких полей нужно создавать индексы
- •5.3.2. Принцип работы индексов
- •5.3.3. Виды индексов
- •5.3.4. Индексирование таблиц MySql
- •5.3.5. Создание индекса в MySql
- •5.3.6. Типы индексов в MySql
- •5.3.7. Удаление индекса в MySql
- •5.3.8. Преимущества использования индексов
- •5.3.9. Недостатки использования индексов
- •5.3.10. Практический пример
- •5.4. Курсор
- •Лекция 6. Администрирование баз данных
- •6.1. Резервирование и восстановление вручную
- •6.2. Команды grant и revoke
- •6.3. Утилита mysqldump
- •6.3.1. Создание дампа
- •6.3.2. Развертывание дампа
- •6.4. Утилита mysqlhotcopy
- •6.5. Утилита mysqlcheck
- •Лекция 7. Администрирование бд
- •7.7. Статус таблиц
- •7.8. Просмотр таблиц, доступных в бд
- •7.9. Получение информации о статусе сервера
- •7.10. Получение информации о переменных
- •7.16. Файлы журналов
- •7.17. Как обезопасить MySql от хакеров
- •Указатели на страницы с ответами
6.3. Утилита mysqldump
Утилита mysqldump позволяет получить дамп содержимого базы данных или совокупности баз для создания резервной копии или пересылки данных на другой SQL-сервер (не обязательно MySQL-сервер). Дамп будет содержать набор команд SQL для создания и/или заполнения таблиц.
Также mysqldump имеет возможность развертывания баз данных из созданного sql-файла.
6.3.1. Создание дампа
Разберем пример простейшее использования, задампим базу данных "database" при помощи перенаправления потока в файл "database.sql":
mysqldump -uroot -h82.82.82.82 -p database > database.sql
где:
-u или --user=... — имя пользователя;
-h или --host=... — удаленный хост (для локального хоста можно опустить этот параметр);
-p или --password — запросить пароль;
database — имя базы данных;
database.sql — файл для дампа.
Для того чтобы сделать дамп несколько баз данных, необходимо использовать параметр --databases (или сокращенно -B), пример:
mysqldump -uroot -h82.82.82.82 -p -B database1 database2 database3 > databases.sql
А для того чтобы сделать дамп всех баз данных, необходимо использовать параметр --all-databases (или сокращенно -A), пример:
mysqldump -uroot -h82.82.82.82 -p -A > all-databases.sql
6.3.2. Развертывание дампа
Перенаправляем поток в обратную сторону и развертываем базу данных:
mysql -uroot -h82.82.82.82 -p database < database.sql
Или через mysql-console:
mysql> use database;
mysql> source database.sql
6.4. Утилита mysqlhotcopy
Утилита mysqlhotcopy представляет собой Perl-сценарий, использующий SQL-команды LOCK TABLES, FLUSH TABLES и Unix-утилиты cp или scp для быстрого получения резервной копии базы данных. Пожалуй, это наиболее быстрый способ копирования базы данных в целом или одиночных таблиц, но он может работать только на том же компьютере, где расположены каталоги копируемой базы данных.
mysqlhotcopy db_name [/path/to/new_directory]
mysqlhotcopy db_name_1 ... db_name_n /path/to/new_directory
mysqlhotcopy db_name./regex/
Если не указывать имена таблиц или использовать параметры -databases или -all-databases, то будет получен дамп базы данных в целом (соответственно — всех баз данных).
6.5. Утилита mysqlcheck
Начиная с версии MySQL 3.23.38 можно применять новый инструмент для проверки и восстановления MyISAM-таблиц. Отличие mysqlcheck от myisamchk состоит в том, что утилита mysqlcheck должна использоваться при работающем сервере mysqld, в то время как myisamchk — при остановленном. Преимущество же заключается в том, что теперь не нужно останавливать сервер для проверки или восстановления таблиц.
Утилита mysqlcheck использует соответствующие команды MySQL-сервера CHECK, REPAIR, ANALYZE и OPTIMIZE удобным для пользователя образом.
Существует три альтернативных способа запуска mysqlcheck:
shell> mysqlcheck [OPTIONS] database [tables]
shell> mysqlcheck [OPTIONS] --databases DB1 [DB2 DB3...]
shell> mysqlcheck [OPTIONS] --all-databases
Команда SHOW CREATE TABLE TableName; позволяет получить sql-код создания таблицы TableName.
Лекция 7. Администрирование бд
Администрирование базы данных;
Задачи администратора БД;
Команды для работы с БД;
Просмотр сведений о таблице;
Утилита MySQLAdmin;
Получение информации о БД;
Статус таблиц;
Просмотр таблиц, доступных в БД;
Получение информации о статусе сервера;
Получение информации о переменных;
Получение информации о процессах;
Получение информации о привилегиях;
Структура SQL;
Завершение потока;
Очистка КЭША MySQL;
Файлы журналов;
Как обезопасить MySQL от хакеров.
7.1. Администрирование базы данных
Администрирование БД — это функция управления БД.
Лицо ответственное за администрирование БД называется «Администратор базы данных» (АБД) или «Database Administrator» (DBA).
7.2. Задачи АБД
Проектирование БД;
Оптимизация производительности БД;
Обеспечение и контроль доступа к БД;
Обеспечение безопасности в БД;
Резервирование и восстановление БД;
Обеспечение целостности БД;
Обеспечение перехода на новую версию СУБД.
7.3. Команды для работы с БД
1. Просмотр доступных баз данных: SHOW DATABASES;
2. Создание новой БД: CREATE DATABASE;
3. Выбор БД для использования: USE <database_name>;
4. Импорт SQL-команд из файла .sql: SOURCE <path_of_.sql_file>;
5. Удаление базы данных: DROP DATABASE <database_name>;
7.4. Просмотр сведений о таблице
Для просмотра сведений о таблице используется команда: DESCRIBE. Пример:
DESCRIBE имя_таблицы;
7.5. Утилита MySQLAdmin
MySQLAdmin — это утилита командной строки, которая поставляется с MySQL сервером и используется администраторами баз данных для выполнения некоторых простых MySQL задач, таких как установка пароля root или другого пользователя, изменение пароля root или другого пользователя, мониторинг процессов mysql, перезагрузка привилегий, проверка статуса сервера и т. д.
7.6. Получение информации о БД
SHOW DATABASES // Посмотреть все БД
SHOW [OPEN] TABLES [FROM db_name] // Показать все открытые таблицы с БД
SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] // Показать колонки вместе с привилегиями текущего пользователя с указанной таблицы и указанной ДБ
SHOW INDEX FROM tbl_name [FROM db_name] // Посмотреть все индексы
SHOW TABLE STATUS [FROM db_name] // Посмотреть статус таблицы
SHOW STATUS // Информацию по состоянию сервера
SHOW VARIABLES // Отображает значения некоторых системных переменных
SHOW LOGS // Показывает логи, которые мы фиксируем в журналах
SHOW GRANTS FOR user // Команда, которая показывает привилегии, назначенные тому или иному пользователю
SHOW CREATE TABLE table_name // Предоставляет информацию о том, как была объявлена таблица (но реальная структура таблицы может немного отличаться)
SHOW MASTER STATUS // Информация состояния binlog главной системы
SHOW MASTER LOGS // Список двоичных журналов головного сервера
SHOW SLAVE STATUS // Информация о состоянии существенных параметров потока сервера
В общем, команда SHOW позволяет получить информацию о БД, таблицах, полях и индексах таблиц, а также информацию о состоянии сервера MySQL.
Информация выводится только при наличии у пользователя соответствующих привилегий и прав доступа.
SHOW DATABASES выводит список существующих БД на сервере MySQL.
Вывод информации о таблицах и столбцах может происходит с использованием ключевого слова FROM или без него с указанием пути к исследуемому объекту.
SHOW FIELDS FROM table FROM database;
SHOW FIELDS FROM database.table;
SHOW TABLES — выводит список существующих таблиц
Ключевое слово OPEN указывает MySQL выводить только открытые таблицы, данные которых находятся в КЭШе MySQL.
SHOW COLUMNS и его синоним SHOW FIELDS выводят список полей таблиц с описанием типом. Если используется ключевое слово FULL, дополнительно выводится информация о привилегиях текущего пользователя.
SHOW INDEX и его синоним SHOW KEYS возвращают данные о первичных ключах и индексах таблицы. Столбцы результата команды SHOW INDEX имеют значения, перечисленные ниже:
Столбец |
Значение |
Table |
Имя таблицы |
Non_unique |
0 если индекс не может содержать дублирующихся значений |
Key_name |
Имя индекса |
Seq_in_index |
Порядковый номер столбца в индексе, начиная с 1 |
Column_name |
Имя столбца |
Collation |
Как столбцы отсортированы в индексе. В MySQL в данном столбце могут присутствовать значения 'A' (в порядке возрастания) или NULL (не отсортирован) |
Cardinality |
Количество уникальных значений в индексе. Обновляется путем запуска isamchk -a |
Sub_part |
Количество индексированных символов, если столбец индексируется частично. Если проиндексирован весь ключ, то будет содержаться значение NULL |
Null |
Содержит значение 'YES', если столбец может содержать NULL |
Index_type |
Используемый метод индексирования |
Comment |
Различные примечания. В версиях MySQL < 4.0.2 выдается, является индекс FULLTEXT или нет |
Информация о таблице выводится с помощью команды SHOW TABLE STATUS, список возвращаемых значений которой приведен ниже:
Столбец |
Значение |
Name |
Имя таблицы |
Type |
Тип таблицы |
Row_format |
Формат хранения строк (Fixed, Dynamic, или Compressed) |
Rows |
Количество строк |
Avg_row_length |
Средняя длина строки |
Data_length |
Размер файла данных |
Max_data_length |
Максимальная длина файла данных |
Index_length |
Длина индексного файла |
Data_free |
Количество распределенных, но не используемых байтов |
Auto_increment |
Следующее значение автоинкремента |
Create_time |
Время создания таблицы |
Update_time |
Время последнего обновления файла данных |
Check_time |
Время последней проверки таблицы |
Create_options |
Дополнительные параметры, использовавшиеся для команды CREATE TABLE |
Comment |
Примечания, внесенные при создании таблицы (или информация о причинах, почему MySQL не может получить доступ к данным в таблицах) |