Листинг 4.4. Невозможно создать базу данных wet: база данных существует
Часто такое поведение нежелательно, особенно в больших дампах, размещенных mysql-файлах, которые выполняются в пакетном режиме так, как это было продемонстрировано в главе 3. Для предотвращения ошибки оператор create database можно снабдить конструкцией if not exists, при наличии которой база данных создаете; если она еще не существует, если же существует — никаких действий не производится (листинг 4.5).
4.5. Использование конструкцииif not exists
Как видно из листинга 4.5, после удаления базы данных wet первый оператор CREATE DATABASE возвращает ответ, в котором говориться о том, что была задействована одна строка (1 row affected), т.е. база данных создается. Второй оператор CREATE DATABASE возвращает сообщение, что запрос не затронул не одной строки(0 rows affected), т. е. база данных не создается, однако и ошибка не выдается.
Точнотакой же механизм разработан для оператора drop database, добавление ключевогослова if exists удаляет базу данных, если она существует, и не производит никаких действий, если база данных отсутствует (листинг 4.6).
Листинг 4.6. Использование конструкцииif exists
Специального SQL-оператора, предназначенного для переименования базы данных, не существует, но эту операцию легко осуществить, переименовав каталог базы данных.
При создании базы данных можно указать кодировку, которая будет назначаться таблицам и столбцам по умолчанию. Для этого после имени базы данных следует указать ключевое СЛОВО DEFAULT CHARACTER SET charset_name, где charset_name— ИМЯкодировки, например cpl25l, которая обозначает русскую Windows-кодировку (листинг 4.7).
Указание кодировки по умолчанию приводит к созданию в директории базы данных C:\mysql5\data\wet\ файла db.opt следующего содержания:
Если при конфигурировании MySQL утилитой MySQL Server Instance Configuration Wizard или при ручном редактировании конфигурационного файла my.ini в качестве кодировки по умолчанию для MySQL-сервера была выбрана другая кодировка, например lataini, то при отсутствии конструкции default character set вместо cpl25l будет использована именно lataini. Если затем кодировка не будет меняться при определении таблицы и столбцов, это может привести к неправильной сортировке русского текста.
Переименование базы данных можно осуществить, изменив имя директории, соответствующее базе данных, в каталоге C:\mysql5\data. Для изменения параметров базы данных можно воспользоваться оператором alter database, как это продемонстрировано в листинге 4.8.