Изучаем SQL на примере golos.cloud. Введение, настройка и первый запрос
Изучаем SQL на примере golos.cloud. Введение.
Кто читает мой курс по разработке соцсети на PHP стал замечать, что начали появляться сложные запросы к базе данных.
Краткий рассказ о базах данных я сделал в этом уроке.
Однако для работы с базами данных требуется знание не только устройства самих систем, но и языка с помощью которого к этим базам (точнее их серверам) посылаются запросы.
Для того, чтобы изучение проходило более наглядно, будем использовать базу данных предоставленную @arcange (подробнее [GolosSQL] - База данных SQL со всеми данными блокчейн).
Поскольку большинство пользователей, которые еще не изучили SQL пользуются операционной системой Windows, то я выбрал программу-клиент именно для нее.
Программа клиент будет HeidiSQL (ссылка на сайт программы).
Хотя вы можете использовать любую программу, которая умеет работать с МS-SQL, сам то SQL одинаковый.
Проза о SQL
Причина его появления сводится к двум деталям.
- Так как СУБД основана на клиент-серверной архитектуре, то клиент должен отправлять серверу данные на знакомом ему языке (протокол). Например обычный браузер с HTTP сервером обменивается данными по протоколу HTTP. Он пишет типо "Дай мне такой то файл" (GET /index.php HTTP1.1) может также передать данные (POST), а сервер решит что с ними делать. Есть у HTTP и другие методы, правда в реализации конкретных серверов (apache, nginx) они не используются в том плане, в котором описаны в протоколе (кроме метода HEAD), а вот например couchDB - это такая база NoSQL данных, вполне их предназначение освоила.
Таким образом SQL представляет некоторого рода протокол уровня приложения, на котором обмениваются данными клиент и сервер системы БД. - С помощью SQL мы работаем с реляционными данными (см. ниже).
Базы данных бывают реаляционные и нереляционные (короче говоря SQL и NoSQL).
NoSQL (например mongoDB и упомянутая выше couchDB) хранят данные в неструктуризированной форме.
Это означает что NoSQL не декларирует свою структуру - то есть в ней также внутри одной базы данных можно хранить много таблиц (или их иногда по-другому называют), однако в эти таблицы можно добавлять строки с разным количеством столбцов, разных типов, и с разными названиями.
Например, если бы наш блокчейн, имел базу данных типо couchDB то можно было бы туда записать транзакцию типа {"chuvak":"vasya", "type":"go", "to":"bar", "from":"home"}
.
Тут NoSQL база данных подвоха не заметила бы, и сохранила к себе эту запись (хотя конечно ноды ее в блок бы не добавили) они то как раз структуру строго проверяют).
Поэтому NoSQL часто применяют для работы с так называемыми большими данными (big data). Там хранятся данные смешанного типа, затем с помощью специальных алгоритмов (обычно их пишут на языках Python, R и Julli) их анализируют, выбирая средние значения. Эти данные нужны для анализа потребительской аудитории в коммерции, изучения желаний избирателей на выборах и т.д.
Добавление данных в NoSQL происходит так же как добавление объекта JSON в неструктурированный массив.
Однако мы работаем с транзакциями в блокчейне, значит нам больше подходит SQL.
SQL это язык для работы с реляционными БД (реляция означает таблицу), то есть подобные MS-EXEL прямоугольные таблички, между которыми можно задавать различные связи.
Так вот если не углубляться в реляционную алгебру (в которой таблицы рассматриваются как матрицы (двумерные массивы)), то SQL запрос, может управлять структурой таблиц (создавать, удалять изменять структуру), добавлять, изменять и удалять сами данные (записи таблицы), находить нужные записи (строки) в таблице, а также определять связи между таблицами для более сложных запросов.
В общем говоря, все это дело более понятно будет изучить на практике.
Настройка HeidiSQL
С установкой там достаточно просто. Поэтому сразу перейдем к настройке. Запускаем HtidiSQL и выполняем следующие шаги:
Снизу слева нажимаем кнопку "Создать" и переходим на вкладку с настройками.
Выбираем тип сети - Microsoft SQL Server(TCP/IP)
Имя хоста - sql.golos.cloud
Пользователь: golos
Пароль: golos
Остальные настройки оставляем по умолчанию (порт должен быть 1433).
Затем нажимаем кнопку открыть, и у нас устанавливается сеанс работы с БД голоса.
Здесь кликаем по нашей базе данных и у нас открывается список таблиц.
Мы можем также кликнуть по таблице и снизу увидим какой запрос клиент послал базе данных.
Однако мы хотим сами научиться делать такие запросы. Поэтому переходим на вкладку Запрос и вводим:
SELECT * FROM dbo.Blocks WHERE block_num = 10;
Нажимаем на стрелочку сверху (RUN) и получаем данные о блоке с номером 10
Надеюсь у всех получилось. Если нет - пишите в комменты или мне в рокетчат.