Гайд Работа с MySQL (базовые запросы)

  • 140
  • 3
  • 14
Вступление.

В данном гайде для примера я буду использовать MySQL версии 5.5 и Beekeeper Studio для работы с БД

Чтобы добиться чего-либо от БД, надо сделать запрос к ней на языке SQL.
Возьмём таблицу

1686401032849.png


Например, я хочу чтобы база данных выдала мне список всех покупок доната определённого игрока, я делаю такой запрос:

1686400639056.png


SELECT - это наш запрос
`Upgrade` - это название нашего столбца из которого мы вытаскиваем данные
FROM - в переводе с английского 'из'
kshop_purchases - наша таблица в которой хранятся покупки
WHERE - в переводе с английского 'где'
SteamID - название столбца в котором хранятся SteamID игроков
'STEAM_0:1:33198964' - мой SteamID

*Также, вместо `Upgrade` можно было написать ' * ' (без кавычек, просто звёздочка), тогда БД выдала бы нам все столбцы.

Наш запрос для базы данных будет звучать так:

ВЫДАЙ `Прокачки` ИЗ Покупок ГДЕ SteamID = 'STEAM_0:1:33198964';

И в ответ наша база данных выдаёт нам это:

1686401095581.png


Для начала, немного про SQL.

Вам могут пригодиться следующие типы данных:

Строка (CHAR, VARCHAR, TEXT)
Число (BIT, TINYINT, SMALLINT, INT, BIGINT, FLOAT)
Дата-Время (DATE, TIME, YEAR, DATETIME)
Логический (BOOL)
Ничего (NULL)

Строки:

Строки в запросе необходимо заключать в кавычки ' ' или " "

CHAR(width)
Строка с фиксированным количеством символов.
Должна содержать строго сколько-то символов.

VARCHAR(max)
Строка, с ограниченной длиной.
Должна содержать не больше определённого количества символов.

TEXT
Строка, с ограничением в 2ГБ памяти.
Должна содержать не больше 2ГБ текста.


Числа:

Числа в запросе необязательно заключать в кавычки.

BIT(size)
Число от 1 до 64.

TINYINT(size)
Число от -128 до 127 или от 0 до 255.

SMALLINT(size)
Число от -32768 до 32767 или от 0 до 65535.

INT(size)
Число от -2147483648 до 2147483647 или от 0 до 4294967295.

BIGINT(size)
Число от -2⁶³ до 2⁶³-1 или от 0 до 2⁶⁴-1.

FLOAT(p)
Число с плавающей точкой.
Лимиты аналогичны INT.

Важно! Числа бывают Signed(со знаком) и Unsigned(без знака). Для удобства, буду называть их Знаковые и Беззнаковые.

Так вот, беззнаковые числа не могут быть отрицательными.
Поэтому я указываю два лимита чисел: для знаковых и для беззнаковых.
Позже узнаете, где это нужно задавать.

Дата-Время:

Дату и/или время в запросе необходимо заключать в кавычки ' ' или " "

Важно! Запросто можно сравнить две даты, если только они не содержат времени.
Для удобства, не храните дату вместе с временем, если это не сильно важно.

DATE
Дата в формате ГГГГ-ММ-ДД.
Диапазон: от 1000-01-01 до 9999-12-31

TIME
Время в формате чч-мм-сс (или ччч-мм-сс)
Диапазон: от -838:59:59 до 838:59:59

YEAR
Год в формате ГГГГ.
Диапазон: от 1901 до 2155 или 0000

DATETIME
Дата и Время в формате ГГГГ-ММ-ДД чч-мм-сс.
Диапазон: от 1000-01-01 00:00:00 до 9999-12-31 23:59:59

Логические:

BOOL
True или False (тоже самое что и 1 или 0).
Также может быть 0 или не 0
Если 0 - False, не 0 - True

Ничего:

NULL
Нулевой тип данных.
Ничего не обозначает.

В некоторых операциях могут пригодиться такие названия для указания того, над чем именно должна совершаться операция.

DATABASE - База Данных
TABLE - Таблица
ROW - Строка
COLUMN - Столбец

Названия самих структур(например `Table1`) в запросе можно заключать в кавычки ` `, ' ' или " "

Ещё, в SQL существуют разные интересные слова, которые нам пригодятся:

FROM - из
AS - как

ALL - то же самое что и *
ANY - любое значение подходящее под заданное условие

IN - в
WHERE - где

IF - если
AND - и
OR - или
NOT - не

EXISTS - существует

ADD - добавить
SET - установить

В основном, для базовой работы с MySQL вам пригодятся такие операции:
  1. Создание | CREATE и INSERT INTO
  2. Получение | SELECT
  3. Изменение | UPDATE и ALTER
  4. Удаление | DELETE, DROP и TRUNCATE

1. Создание

Итак, приступим к нашим операциям. На очереди у нас Создание.
Создать можно Базу Данных или Таблицу. Также, я отнёс сюда запись данных в таблицу(можно назвать это созданием строк).

Начнём с Базы Данных.
Открываем наше окно для запросов к MySQL и вводим:

SQL:
CREATE DATABASE SQLGuide;

Нажимаем Run.
Получаем результат:
1686416312287.png

База Данных создана. Над ней мы будем проводить эксперименты.

Далее, нам необходимо создать таблицу в нашей базе данных, чтобы было с чем работать:

SQL:
CREATE TABLE IF NOT EXISTS GoodGuys( # Мы создаём таблицу, IF NOT EXISTS - это проверка на уникальность, вы можете это пропустить.
    ID tinyint(4), # Здесь в скобках указываем максимальный размер, однако вы можете пропустить это для чисел, я даже советую вам это сделать.
    PhoneNumber UNSIGNED int, # то самое число, которое не может быть отрицательным и из-за этого увеличивается его лимит
    Name varchar(255) NOT NULL, # Здесь в скобках также максимальный размер в символах.
                                # NOT NULL означает, что значение не может быть нулевым.
    isNotDumb bool,
    PRIMARY KEY (ID, PhoneNumber) # Это тоже интересная вещь, позже объясню.
);

В итоге имеем вот такую базу данных и таблицу в ней:

1686418409625.png


Заметьте, что то, что должно было быть bool, преобразовалось в tinyint, т.к. MySQL не имеет встроенного типа bool, в ней bool и tinyint(1) - синонимы

Теперь, научимся записывать данные в нашу таблицу.

Мы имеем выражение INSERT INTO, иначе говоря, вставить что-то куда-то.
Таким образом, пишем в наше окно запросов

INSERT INTO имя_таблицы (`столбец1`, `столбец2`, `столбец3`) VALUES ('значение1', 'значение2', 'значение3')

Для меня это будет выглядеть так:

SQL:
INSERT INTO `goodguys` (`ID`, `PhoneNumber`, `Name`) VALUES (1, 12345678, 'me');

Если вы заполняете все столбцы таблицы, то можно не писать первые скобки

SQL:
INSERT INTO `goodguys` VALUES (2, 12341233, 'you', true);

Далее командная строка сопоставит соответствующие столбцы и значения и отправит их в БД и мы получим такой результат:

1686419881420.png


Вставьте несколько значений сами, с ID = 3, 4 и другими различными значениями, это пригодится в дальнейшем.

Теперь объясню что есть вообще PRIMARY KEY
Это по сути комбинация выражения NOT NULL и условия, что каждое значение в столбце должно быть уникальным.
К примеру, SteamID можно считать Primary Key, т.к. он будет уникален для каждого пользователя.

Если ключ очередного нового значения будет не уникальным, то вы получите подобную ошибку:
1686421508878.png


Важно! Если у вас несколько Primary Key, то они будут складываться в один, и уникальность будет считаться по всем ключам вместе.

2. Получение

Здесь всё просто. Для получения какой либо информации из нашей БД мы используем операцию SELECT, что дословно переводится как "выбрать"

Теперь давайте разберём логику и операторы на нескольких примерах выбора:

SQL:
#Поочерёдно попробуйте все эти команды

SELECT * FROM `goodguys`; # выбор всех

SELECT `PhoneNumber` FROM `goodguys`; # выбор номеров телефона

SELECT `Name`, `isNotDumb` FROM `goodguys`; # список всех людей и дамбов

SELECT `Name` FROM `goodguys` WHERE `isNotDumb` != false; # список не дамбов

SELECT `Name` FROM `goodguys` WHERE `isNotDumb` = 0 AND `PhoneNumber` != 0; # список тех у кого есть номер телефона и он не дамб

SELECT `Name` AS `Имя`, `PhoneNumber` AS `Номер Телефона` FROM `goodguys`; # пример использования AS

Попробуйте разобраться, по какой логике происходили действия выше и написать несколько своих запросов к БД.

3. Изменение

Дальше на очереди у нас изменение.
Изменять мы будем содержание таблицы и её структуру.

Для того чтобы изменить содержание таблицы, нам потребуется операция UPDATE, что значит "обновить".
При обновлении таблицы мы будем делать примерно то же самое что и с INSERT, только здесь мы изменяем именно саму ячейку:

SQL:
UPDATE `goodguys`
    SET Name = 'Failman', PhoneNumber = 666 # здесь используем SET для изменения значения
WHERE ID = 2;

Здесь мы также можем использовать логику в рамках WHERE:

SQL:
UPDATE `goodguys`
    SET Name = 'Nut'
WHERE ID = 3 OR isNotDumb = false;

Теперь можно изменить структуру нашей таблицы. Используем выражение ALTER TABLE.

SQL:
ALTER TABLE `goodguys`
    ADD `EMail` varchar(255),    # Можно добавить новый столбец
    CHANGE `ID` `BigID` UNSIGNED bigint; # А можно изменить название и тип существующего столбца
                                # Если у вас появилась ошибка загрузки данных после этого, перезайдите в программу, которую используете для просмотра БД.

4. Удаление

Мы подошли к заключительной части, и сейчас мы потихоньку будем удалять всё что мы натворили.

Используем для этого несколько операций.
Для начала, удалим что-нибудь из таблицы, используя DELETE, а также ALTER TABLE:

SQL:
DELETE FROM `goodguys` WHERE `BigID` = 3; # Удаляем строку где ID = 3

ALTER TABLE `goodguys`
    DROP COLUMN `EMail`; # Удаляем столбец с Имейлами

Также можно очистить все данные из таблицы, при этом не затронув её структуры, используя TRUNCATE:

SQL:
TRUNCATE goodguys;

И мы получаем чистую таблицу

1686427050552.png


Теперь можно наконец-то расправиться с нашей таблицей и с самой Базой Данных, используя DROP:

SQL:
DROP TABLE `goodguys`;

SQL:
DROP DATABASE `sqlguide`;

На этом всё.

Спасибо за внимание!
Надеюсь помог вам хотя бы начать разбираться с этим.

Вы можете посетить SQL Tutorial для более подробной информации.
В этом гайде было только немного из того, что можно сделать с БД.
 

Вложения

  • 1686416243566.png
    1686416243566.png
    52.6 KB · Просмотры: 23
  • 1686421501618.png
    1686421501618.png
    6.4 KB · Просмотры: 23
  • 1686426342187.png
    1686426342187.png
    61.8 KB · Просмотры: 23
Последнее редактирование:
  • 149
  • 11
Хорошая статья, главное, что не спизденная. Но всё ещё проблема в том, что ты юзаешь ебучую прогу платную
 
  • 2
  • 1
Контакты для связи отсутствуют.
Спасибо, очень помогло, всю голову поизломал по недогайдам
 
Активность
Пока что здесь никого нет
Сверху Снизу