Предыдущая часть: Установка MySQL
В предыдущей части мы установили сервер баз данных MySQL. Теперь создадим свою базу и таблицу в базе.
Создание базы
Запустите программу mysql.exe с ключом -u root:
mysql -u root
Вы попадёте в консоль MySQL:
Здесь мы можем создать новую базу данных. Нужно придумать ей имя. Так как наш проект связан с каталогизацией, можно взять простое и удобное имя cat. Чтобы создать базу с именем cat, используем команду:
create database cat default charset 'utf8';
Это буквально значит: создать базу данных cat, а default charset 'utf8' пишется для того, чтобы кодировка строк в базе была Unicode.
Создание пользователя
Сейчас в MySQL-консоли мы действуем от лица пользователя root. Это пользователь с наибольшими полномочиями. Так как это наш локальный сервер, на который никто не будет заходить извне, наша безопасность не страдает. Но всё же для порядка заведём отдельного пользователя для конкретной базы, у которого будут права только на эту базу. Это нам понадобится, когда мы будем осуществлять доступ к базе из программы.
Назовём этого пользователя тоже cat. Ему нужно задать пароль. Придумайте любой, а я сделал 'cat123'. Итак, создаём нового пользователя командой:
create user cat@localhost identified by 'cat123';
Это буквально значит: создать пользователя cat на localhost, который идентифицируется паролем 'cat123'.
Да, обратите внимание на localhost – это адрес локальной машины, и пользователь привязан к нему, то есть такой пользователь может зайти только с локальной машины, а не откуда-то извне.
Далее нужно дать права этому пользователю:
grant all on cat.* to cat@localhost;
Буквально это значит: дать все права на всё, что есть в базе cat, пользователю cat на localhost.
Теперь вы можете зайти в mysql от имени пользователя cat:
mysql -u cat -p
-p добавляется для того, чтобы ввести пароль. Пароль можно также сразу ввести в командной строке (без пробела после -p):
mysql -u cat -pcat123
Переключение базы
Находясь в mysql-консоли, введите команду:
use cat;
Это переключит текущую базу на cat, и все дальнейшие действия будут производиться над ней.
Вы также можете сразу выбрать базу при запуске mysql, дописав её имя в конце команды:
mysql -u cat -pcat123 cat
Создание таблицы
Сейчас наша база пустая, в ней ничего нет. Создадим первую таблицу.
Все данные в MySQL хранятся в виде таблиц. Это структуры, которые описывают данные в виде набора полей (столбцов). Визуально их можно представить... да, как обычные таблицы, например в Excel.
Отталкиваться будем от объектной модели. Скажем, у нас есть класс, который описывает данные типа "Заметка". Какие свойства должны быть у этого класса? Например,
- дата создания
- заголовок
- контент
Значит, один объект класса "Заметка" будет содержать три свойства. Первое будет типа "дата", а два других будут типа "строка".
Значит, таблица для хранения объектов класса "Заметка" тоже будет содержать три столбца, и каждый столбец будет иметь соответствующий тип.
Создадим таблицу с именем note:
create table note(
date datetime,
title varchar(255) not null,
content text not null
);
Можно писать команды в одну строку, или с переносами строк. Думаю, более читабельно с переносами.
Что здесь произошло: буквально "создать таблицу note(...)", где в скобках мы перечислили по порядку описания столбцов.
Первый столбец:
date datetime
его имя date (дата), а тип – datetime (дата и время). Это встроенный тип MySQL, который работает с представлениями дат.
Второй столбец:
title varchar(255) not null
его имя title (заголовок), а тип – varchar. Это строка переменной длины, которая может иметь максимальную длину 255 символов. Эту длину мы и указали в скобках (можно указать меньше, ограничив тем самым длину строки). То есть наш заголовок заметки не может быть длиннее 255 символов, но этого должно быть достаточно для заголовка.
Приписка not null говорит о том, что данный столбец не может быть пустым. То есть заметка обязана иметь непустой заголовок.
Третий столбец:
content text not null
его имя content (контент), а тип – text. Это тоже строка, но в отличие от varchar её длина неограничена. Столбец также имеет приписку not null, то есть не может быть пустым.
Создав таблицу, мы можем посмотреть её описание с помощью команды desc:
Можно также выяснить, какой командой была создана таблица, с помощью show create table:
Здесь мы видим тот же текст, с которым мы создавали таблицу, с некоторыми отличиями:
- имена таблицы и столбцов записаны в специальных кавычках: `note`, `date`, `title`, `content`. Вообще говоря, именно так правильно, просто мы не писали эти кавычки из лени. В большинстве случаев MySQL понимает имена без кавычек, но если случаются какие-то проблемы, то надо писать их в кавычках. Причём именно в таких, специальных.
- поле `date` имеет приписку DEFAULT NULL – это значение по умолчанию, которое мы не указывали, но по умолчанию оно вот такое (NULL). Другие поля не имеют такой приписки, потому что не могут быть пустыми (NOT NULL) и следовательно значение по умолчанию им не присваивается. Вообще говоря, этот вопрос несколько сложнее, но пока я его опускаю для простоты.
- в конце команды добавлены опции, которые мы не писали: ENGINE=InnoDB и DEFAULT CHARSET=utf8. Насчёт default charset мы уже знаем, что это кодировка символов. Мы назначили её по умолчанию при создании базы, поэтому при создании таблицы мы её вручную не указывали, но она по факту есть.
Что касается ENGINE=InnoDB, то это относится к способу хранения данных. В MySQL есть два "движка" для хранения данных: MyISAM (старый) и InnoDB (новый). Они отличаются физическим расположением и внутренней структурой файлов. При создании таблицы можно выбрать, каким движком она будет обслуживаться. По умолчанию это InnoDB, и нет никакого смысла это менять. MyISAM действительно старый движок и нужен в очень редких, специфических случаях, до которых мы, возможно, никогда не доберёмся. А если доберёмся – это будет уже совсем другая история.
Итак, мы создали базу cat и в ней создали таблицу для заметок note. В следующем выпуске мы разберём, как добавлять, удалять, модифицировать, искать и получать данные в таблице.
Читайте дальше: Работа с таблицами