Это сообщение в блоге будет первой частью серии основ MySQL для начинающих, в которую я буду углубляться, когда буду двигаться по этому пути обучения.

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

Для этих упражнений я буду использовать Xubuntu Linux 16.04.2 LTS (Xenial Xerus) и MySQL 5.7.20.

Основные цели.

  • CREATE база данных в текущей системе.
  • CREATE таблица для хранения данных.
  • CREATE пользователь, который может взаимодействовать с базой данных и таблицами.

Команда CREATE используется для CREATE баз данных, таблиц и пользователей.

Приступая к работе, я войду в MySQL как root или системный пользователь CREATE для базы данных, таблицы и пользователя, как показано ниже:
:~$ mysql -u root -p

После ввода правильного пароля (не показан) я получаю приветствие и приглашение MySQL.

Welcome to the MySQL monitor. Commands end with ; or \g.
 Your MySQL connection id is 19
 Server version: 5.7.20–0ubuntu0.16.04.1 (Ubuntu)
Copyright © 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective owners.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql>

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

mysql> CREATE DATABASE projects;
 Query OK, 1 row affected (0.00 sec)

Чтобы просмотреть доступные базы данных (и только что созданную базу данных projects) в системе, используйте команду SHOW DATABASES;.

mysql> SHOW DATABASES;
 + — — — — — — — — — — — — — — +
 | Database                    |
 + — — — — — — — — — — — — — — +
 | information_schema          |
 | BowlingLeagueExample        |
 | BowlingLeagueModify         |
 | EntertainmentAgencyExample  |
 | EntertainmentAgencyModify   |
 | RecipesExample              |
 | SalesOrdersExample          |
 | SalesOrdersModify           |
 | SchoolSchedulingExample     |
 | SchoolSchedulingModify      |
 | bank                        |
 | hr                          |
 | mysql                       |
 | northwind                   |
 | performance_schema          |
 | projects                    |
 | sakila                      |
 | sys                         |
 | world_x                     |
 + — — — — — — — — — — — — — — +
 19 rows in set (0.00 sec)

Наряду со всеми базами данных, которые у меня в настоящее время есть в моей системе, projects можно увидеть четвертым снизу вверх. Мы создали базу данных. Woot woot!

Без таблиц сама по себе база данных не так полезна. Чтобы CREATE таблицу, перейдите в базу данных, где вы хотите эту таблицу (в данном случае projects база данных). Для этого введите команду USE вместе с именем базы данных:
mysql> USE projects;
Для просмотра всех существующих таблиц, если таковые имеются, в базе данных также используется команда SHOW:

mysql> SHOW TABLES;
 Empty set (0.00 sec)

Опять же, здесь нет таблиц (обратите внимание на тег Empty set), поэтому я исправлю это в следующем разделе.

Следующая команда создает простую friends таблицу:

mysql> CREATE TABLE friends(
    -> friend_id INT NOT NULL AUTO_INCREMENT,
    -> first_name VARCHAR(30) NOT NULL,
    -> last_name VARCHAR(30) NOT NULL,
    -> cell_phone VARCHAR(15),
    -> age INT DEFAULT NULL,
    -> PRIMARY KEY (friend_id));
 Query OK, 0 rows affected (0.32 sec)

Кратко обсудим эти имена столбцов и типы данных.

  • friend_id INT NOT NULL AUTO_INCREMENT - этот столбец имеет тип integer и автоматически увеличивает его значение на 1 после INSERT, до следующего значения каждый раз, когда запись вставляется в таблицу friends. Доступны другие параметры для начальных значений и значений приращения, однако они здесь не показаны и не рассматриваются. Этот столбец будет содержать только целые числа.
  • first_name VARCHAR(30) NOT NULL - Символьный тип данных переменной длины, который принимает строковое значение длиной до 30 символов. Нельзя оставить пустым из-за NOT NULL CONSTRAINT
  • last_name VARCHAR(30) NOT NULL - Символьный тип данных переменной длины, который принимает строковое значение длиной до 30 символов. Нельзя оставить пустым из-за NOT NULL CONSTRAINT
  • cell_phone VARCHAR(15) - Символьный тип данных переменной длины, который принимает строковое значение длиной до 15 символов. Можно оставить пустым во время вставки / обновления.
  • age INT DEFAULT NULL - Целочисленный тип данных, который принимает целые числа и если во время вставки значения не указываются, по умолчанию будет NULL. (Наши друзья могут не захотеть раскрывать нам свой возраст, смеется!)
  • PRIMARY KEY (friend_id)) - CONSTRAINT, который создает уникальный идентификатор для каждой записи в таблице в указанном столбце, которым в данном случае является столбец friend_id. Значения этого столбца никогда не будут дублироваться, что гарантирует целостность и уникальный идентификатор.

Со всеми этими мелочами мы упускаем только одну вещь. Пользователь. Нам нужен пользователь, который может работать и взаимодействовать с projects базой данных.
Скоро.

Чтобы CREATE пользователь, используйте оператор CREATE USER.
Проверьте это.

mysql> CREATE USER ‘this_user’@’localhost’ IDENTIFIED BY ‘password5’;
 Query OK, 0 rows affected (0.04 sec)

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

Я рассмотрю различные части заявления CREATE USER ниже:

  • 'this_user'@'localhost' - this_user - это имя, которое я дал этому конкретному пользователю.
  • 'this_user'@'localhost' - @'localhost' указывает, что этот пользователь может подключаться с локального хоста или локальной машины.
  • IDENTIFIED BY 'password5'; - один из множества доступных вариантов установки / назначения паролей.

Мне все еще нужны GRANT разрешения для пользователя, прежде чем он или она сможет взаимодействовать с базой данных и таблицами.

mysql> GRANT SELECT, INSERT ON projects.* TO ‘this_user’@’localhost’;
 Query OK, 0 rows affected (0.00 sec)

На данный момент я разрешаю this_user иметь SELECT и INSERT привилегии для всех таблиц в базе данных projects, как указано в .*. В конце концов, я не могу просто выпустить this_user на свободу без наблюдения за воротами, можно?!?!

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

Далее в этой серии я углублюсь в команду ALTER, чтобы мы могли внести любые изменения в таблицу friends и пользователя this_user. Не пропустите еще больше интересного контента!

Призыв к действию!

Спасибо, что нашли время прочитать этот пост. Я искренне надеюсь, что вы открыли для себя что-то интересное и поучительное. Пожалуйста, поделитесь своими выводами здесь с кем-нибудь, кого вы знаете, кто тоже получит от этого такую ​​же ценность.

Обязательно посетите страницу Best Of на моем сайте Digital Owl’s Prose, где собраны мои лучшие сообщения в блоге.

Я уже упоминал, как я люблю чашку кофе?!?!

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

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

Первоначально опубликовано на joshuaotwell.com 30 октября 2017 г.