Основные команды при работе с СУБД MySQL или MariaDB

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

Сперва, вспомним, как мы осуществляли подключение к серверу MySQL ил MariaDB:

mysql -u [user_name] -p -h [ip_address] [db_name]

Но вероятнее всего ваша команда будет выглядеть так (если вы на том же сервере авторизованны и работаете):

sudo mysql

Если вы увидели в консоли вот эту строчку MariaDB [test]> значит все прошло правильно и вы подключены к серверу базы данных MariaDB, теперь можно непосредственно начинать общение с СУБД (т.е. вводить операторы SQL).

Основы базы данных

Чтобы внести изменения в базу данных или получить данные, вам нужно будет ввести оператор SQL. SQL расшифровывается как Язык Структурированных Запросов. Оператор SQL, который запрашивает данные, называется запросом. Базы данных хранят информацию в таблицах. Они похожи на электронные таблицы, но гораздо более эффективны в управлении данными.

https://mariadb.com/kb/ru/a-mariadb-primer/

Давайте создадим нашу первую базу для хранения данных:

CREATE DATABASE IF NOT EXISTS mydb;

Для создания можно было ограничится оператором CREATE, но гораздо правильнее добавить условие на проверку имени базы данных IF NOT EXISTS .

Что бы убедиться, что все прошло правильно и наша база данных присутствует в СУБД необходимо использовать оператор SHOW

SHOW DATABASES;
MariaDB [(none)]> SHOW DATABASES;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
+--------------------+

Это должно отобразить все базы, которые имеются в системе, вплоть до служебных баз MySQL. Убедившись, что база присутствует давайте выберем ее для дальнейшей работы с ней:

USE mydb;

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

Database changed
MariaDB [mydb]> 

Что то не хватает наше базе данных, верно? Нетрудно догадаться что 🙂 Догадались? Ну да, самих данных! Предположим мы будем хранить в нашей базе информацию об автомобилях. Для этого мы создадим нашу первую таблицу с четырьмя столбцами, в которых будет информация о: названии, годе выпуска авто

CREATE TABLE IF NOT EXISTS cars (
  CarID INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
  Title VARCHAR(100) NOT NULL, 
  SeriesID INT,
  ModelID INT);

Давайте разберем этот код. Первая строка проверяет на существование таблицу с заданным названием и в случае, если оно отсутствует — создает. Далее, то что в круглых скобочках, уже является столбцами данной таблицы — ее некоторыми параметрами. Каждый столбец с его опциями разделен запятыми. Нетрудно догадаться, что мы создаем четыре столбца: CarID (который будет числом (параметр INT), то есть иметь только числовые значения, и не допускать не присвоенного значения (об этом указывает параметр — NOT NULL) ). Далее PRIMARY KEY (первичный ключ) — это особый тип уникального ключа. Для каждой таблицы может быть не более одного первичного ключа. И последний параметр AUTO_INCREMENT — говорит о том, что значение будет устанавливаться автоматически по принципу счетчика с увеличением на одну единицу.

Ну а далее уже все очевидно… Название (Title) может быть длиной в 100 символов и не может быть пустым. Остальные пару столбиков — числовые значения. Они созданы для того что бы продемонстрировать связи в таблицах БД и они будут содержать внешний ключ, а сами данные будут хранится в других одноименных таблицах, которые мы сейчас и создадим следующими командами:

CREATE TABLE IF NOT EXISTS models 
(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT);

CREATE TABLE IF NOT EXISTS series 
(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT);

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

SHOW TABLES;
MariaDB [mydb]> SHOW TABLES;
+----------------+
| Tables_in_mydb |
+----------------+
| cars           |
| models         |
| series         |
+----------------+
3 rows in set (0.001 sec)

Теперь дело за малым, нам нужно наполнить наши таблицы значениями:

INSERT INTO cars (Title,SeriesID,ModelID) 
VALUES('Москвич 412',15,15), 
      ('Жигули ВАЗ 2101',16,16), ('ЗИЛ 130',23,23),  
      ('ГАЗ 3307',45,45), ('УАЗ-450 («Буханка»)',45,45), 
      ('УАЗ Хантер',55,55);

Обратите внимание на точку с запятой, которые используются в коммандах выше. Клиент mysql позволяет вводить очень сложные операторы SQL в несколько строк, но они не будут отправлены в базу данных, пока вы не введете точку с запятой и не нажмете [Enter].

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

После выполнения этой комманды, давайте DESCRIBE, который предоставит нам информацию о столбцах в таблице. Это синоним (ярлык) для SHOW COLUMNS FROM

получим:

MariaDB [mydb]> DESCRIBE cars;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| CarID    | int(11)      | NO   | PRI | NULL    | auto_increment |
| Title    | varchar(100) | NO   |     | NULL    |                |
| SeriesID | int(11)      | YES  |     | NULL    |                |
| ModelID  | int(11)      | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
4 rows in set (0.002 sec)

Теперь воспользуемся оператором SELECT и запросим данные из таблицы cars:

SELECT * FROM cars;

Звездочка означает, что мы запрашиваем все столбцы из этой таблицы. получим:

MariaDB [mydb]> SELECT * FROM cars;
+-------+---------------------------------+----------+---------+
| CarID | Title                           | SeriesID | ModelID |
+-------+---------------------------------+----------+---------+
|     1 | Москвич 412                     |       15 |      15 |
|     2 | Жигули ВАЗ 2101                 |       16 |      16 |
|     3 | ЗИЛ 130                         |       23 |      23 |
|     4 | ГАЗ 3307                        |       45 |      45 |
|     5 | УАЗ-450 («Буханка»)             |       45 |      45 |
|     6 | УАЗ Хантер                      |       55 |      55 |
+-------+---------------------------------+----------+---------+

Если бы нас интересовали данные исключительно из столбца Title, то запись запроса выглядела бы следующим образом:

SELECT Title FROM cars;

получим:

MariaDB [mydb]> SELECT Title FROM cars;
+---------------------------------+
| Title                           |
+---------------------------------+
| Москвич 412                     |
| Жигули ВАЗ 2101                 |
| ЗИЛ 130                         |
| ГАЗ 3307                        |
| УАЗ-450 («Буханка»)             |
| УАЗ Хантер                      |
+---------------------------------+

Добавлять данные мы можем также при помощи оператора INSERT и задавая значения VALUES. Но вдруг, случилось так, что нам необходимо обновить данные в какой то из строк. Для этих целей существует оператор UPDATE. Нам нужно за что то зацепиться и этим что то и будет являться первичный ключ — айди нужной нам строки, именно по нему мы будем ее уникально идентифицировать. Запрос будет выглядеть так:

UPDATE cars 
SET Title = "УАЗ-450" 
WHERE CarID = 5;

Попробуйте самостоятельно понять этот запрос.