Команды MySQL

05.06.2018 в 11:56
23267
+1604

Для работы с базами данных используется специальный язык SQL. В нем есть команды для самых разных задач.

Создание баз данных

Для создания новой базы данных с именем my_db и кодировкой utf8 следует использовать команду:

CREATE DATABASE my_db CHARACTER SET utf8 COLLATE utf8_general_ci;

При успешном выполнении команды будет выведено сообщение:
Сообщение о выполненном запросе

Чтобы теперь работать с этой базой нужно выполнить:

USE my_db;

Если вы работаете в панели phpMyAdmin, то достаточно просто выбрать базу my_db в списке слева, а затем перейти во вкладку SQL. Теперь запросы будут выполняться непосредственно для этой базы данных.

Запросы к базе данных

Теперь поработаем с самой базой.

Создание таблиц

Чтобы в базе создать таблицу используется команда CREATE TABLE. При этом нужно описать столбцы, которые будут у этой таблицы. Давайте создадим табличку, в которой будут храниться пользователи. У каждого пользователя будет идентификатор, email и имя:

CREATE TABLE `users` (
 `id` INT NOT NULL AUTO_INCREMENT ,
 `email` VARCHAR(255) NOT NULL ,
 `name` VARCHAR(255) NOT NULL ,
 PRIMARY KEY (`id`),
 UNIQUE (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

В нашем примере id, name, email - это имена столбцов.
INT, VARCHAR(255) - типы данных (после этого абзаца идет табличка со всеми типами данных, доступных в MySQL)).
NOT NULL означает, что поле не может иметь значение NULL (или другими словами, оно всегда должно иметь какое-то значение).
Помимо этого для таблицы можно задать PRIMARY KEY (первичный ключ) - это столбец, значения в котором будут всегда уникальными (к примеру - ID записи).
AUTO_INCREMENT можно указать для первичного ключа, тогда при добавлении новых записей это поле будет заполняться автоматически. При добавлении первой записи он будет равен 1, потом 2 и т.д.
UNIQUE(имя столбца) - создание уникального индекса (об индексах мы поговорим позже). Уникальный индекс накладывает ограничения на уникальность значений в рамках столбца email. Это мы делаем для того, чтобы у двух разных пользователей нельзя было задать одинаковый email.

Типы данных

Обозначение Занимаемый объем (байт) Область применения
TINYINT, BOOL 1 При использовании в формате представления без знака позволяет хранить значения от 0 до 255; в противном случае — от -128 до 127. В будущем должен быть предусмотрен новый логический тип, но до сих пор для представления логических значений использовался тип данных TINYINT, т.е. BOOL синоним TINYINT(1)
SMALLINT 2 Целое число в диапазоне от -32768 до 32767
MEDIUMINT 3 Целое число в диапазоне от -8388608 до 8388607
INT, INTEGER 4 Целое число в диапазоне от -2e32 до 2e32 - 1
BIGINT 8 Целое число в диапазоне от -2e64 до 2e64 - 1
FLOAT 4 Число с плавающей точкой одинарной точности
DOUBLE 8 Число с плавающей точкой двойной точности
DECIMAL Произвольное, в зависимости от точности Распакованное число с плавающей точкой, которое хранится в таком же формате, как CHAR. Используется для представления небольших десятичных значений, таких как денежные суммы
DATE 3 Отображается в формате YYYY-MM-DD
DATETIME, TIMESTAMP 8 Отображается в формате YYYY-MM-DD HH:MM:SS
TIME 3 Отображается в формате HHH:MM:SS, где HHH — значение от -838 до 838. Это позволяет применять значения типа time для представления продолжительности времени между двумя событиями
YEAR 1 Отображается в формате YYYY, который представляет значения от 1901 до 2155
CHAR N байт Строка постоянной длины. Строка, имеющая длину меньше объявленной, дополняется справа пробелами. Значение N должно быть меньше или равно 255
VARCHAR N байт Строка переменной длины.
BINARY N байт Сохраняет байтовые строки
TINYBLOB, TINYTEXT до 255 Сохраняет строки, операции сортировки и сравнения данных типа blob выполняются с учетом регистра; операции с данными типа text — без учета регистра
BLOB, TEXT до 64 Кбайт Длинные строки
MEDIUMBLOB, MEDIUMTEXT до 16 Мбайт Длинные строки
LONGBLOB, LONGTEXT до 4 Гбайт Длинные строки
ENUM(value1, ..., valueN) 1 или 2 Коллекция значений (65536 возможных значений)
SET(value1, ..., valueN) до 8 Коллекция значений (64 возможных значений)

Описание структуры таблицы

Чтобы посмотреть структуру новой таблицы введите:

DESCRIBE users;

Результат:
Структура новой таблицы

После создания таблиц их можно изменять, вот несколько полезных команд для изменения их структуры:

Переименование таблицы

ALTER TABLE имя_таблицы RENAME новое_имя_таблицы

Добавление столбца

ALTER TABLE имя_таблицы ADD имя_столбца тип_данных

Переименование столбца

ALTER TABLE имя_таблицы RENAME COLUMN старое_имя_столбца TO новое_имя_столбца;

Удаление столбца

ALTER TABLE имя_таблицы DROP имя_столбца

Удаление всей таблицы

DROP TABLE имя таблицы;

Это основные и самые частоиспользуемые команды. Если нужно что-то еще - гуглится без проблем.

В этом уроке мы разобрали команды для работы со структурой таблиц. В следующем уроке мы научимся работать с данными этих таблиц.

loader
05.06.2018 в 11:56
23267
+1604
Домашнее задание

Напишите запрос, создающий таблицу news, которая будет предназначена для хранения новостей. Каждая новость должна иметь уникальный идентификатор, заполняющийся автоматически при создании новости. Также каждая новость должна содержать id автора, название новости, текст новости и дату публикации.

Комментарии
Этот урок набрал набрал достаточно большое количество комментариев и дальнейшее его комментирование отключено. Если вы хотели убедиться в правильности выполнения ДЗ или у вас возник вопрос по уроку, посмотрите ранее добавленные комментарии, кликнув по кнопке ниже. Скорее всего вы найдете там то, что искали. Если это не помогло - задайте вопрос в чате в телеграме - https://t.me/php_zone
Логические задачи с собеседований