Изучение SQL с нуля самостоятельно
Введение в SQL
В данной статье мы наметим ориентиры, как можно изучить самостоятельно язык SQL - основной язык извлечения данных из базы данных.
Руководство не содержит справочных данных, вместо этого мы ссылаемся на другие ресурсы.
Основная идея - SQL это навык, а не теоретические знания. Т.е. чтобы эффективно использовать SQL, в первую очередь, необходимо нарабатывать практику запросов, а не проходить обучающие курсы с упором на теорию баз данных.
Что такое SQL?
SQL - это язык извлечения данных из базы данных.
В базе может содержаться множество таблиц, каждая таблица может иметь миллионы строк. SQL позволяет очень быстро извлекать данные из таблиц.
Что такое база данных - https://ru.wikipedia.org/wiki/%D0%91%D0%B0%D0%B7%D0%B0_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85
Сама база управляется через специальную программу СУБД (система управления базами данных).
Наиболее популярные СУБД - Oracle, SQL Server, MySQL, PostrgreSQL.
В статье мы будем говорить о SQL Server (СУБД от Microsoft). MS SQL база является основой в рамках веб-платформы Falcon Space.
Зачем изучать SQL?
Практически любая программа обрабатывает данные и хранит их в своей базе данных.
Таким образом в любой системе используется SQL язык (иногда он скрыт за фасадом некоторых оберток, например, ORM-систем).
В нашей платформе Falcon Space мы сделали SQL центральным звеном. Т.е. зная только один SQL можно создавать сложные веб-приложения.
Нет необходимости знать серверные языки типа Java, C#, Python, NodeJS и т.д.
Язык SQL может быть использован не только для разработки, но и для построения аналитических отчетов. Если у вас есть некая система и прямой доступ к базе данных, вы можете делать различные выборки и получать нужные данные из системы.
SQL - одна из ключевых технологий IT, которая используется практически везде.
Что значит "знать SQL"?
В первую очередь, это умение быстро извлекать нужную информацию из базы данных.
Используя арсенал SQL, вы можете строить очень сложные запросы и извлекать информацию из базы в нужном виде:
- сгруппировать по определенному признаку и получить агрегированные данные,
- отфильтровать по сложным критериям,
- собрать данные из разных таблиц и баз данных,
- отсортировать данные в отчете по сложному условию.
Если вы имеете общее представление, как это работает, но не можете на практике извлечь данные из базы, то это ничего не дает в практическом плане.
Изучение SQL самостоятельно с самых основ
Вы можете параллельно выполнять следующие шаги:
1. Изучите текстовый бесплатный курс по SQL Server на Метанит - https://metanit.com/sql/sqlserver/
Что это даст:
- общее представление об SQL Server.
- хорошая инструкция по установке SQL Server локально на ваш компьютер
- справочник, к которому потом вы сможете возвращаться для практики
2. Посмотрите нашу базу знаний SQL Server https://falconspace.ru/list/sqlserver/vvedenie-v-sql-server
Что это даст:
- Во-первых, это раздел Введение в SQL Server
- Во-вторых, позже вам понадобятся некоторые типовые функции, которые есть в этой базе знаний
- В-третьих, раздел по оптимизации запросов даст понимание, как сделать так, чтобы запросы выполнялись быстрее.
3. Найдите одну книгу по теории баз данных. Это необходимо, чтобы понимать как создавать структуры баз данных.
Структура БД - это правильное определение таблиц и связей между ними.
Если база данных спроектирована плохо, то сопровождать такую базу будет непросто, и запросы будут работать неэффективно.
4. Подготовьте рабочее место:
Необходимо установить SQL Server (СУБД) и MS SQL Management Studio (программа для доступа к SQL Server). Установка описана в курсе Метанита.
После установки попробуйте подключиться к локальному серверу SQL и выполнить один простой запрос (например, select 1).
В дальнейшем вся практика будет проходить в MS SQL management Studio.
https://falconspace.ru/list/sqlserver/ustanovka-ms-sql-server-2019-express-edition---487
https://falconspace.ru/list/sqlserver/ustanovka-sql-server-management-studio---488
Практика по SQL - ключевой момент
Установка SQL Server локально:
- https://falconspace.ru/list/sqlserver/ustanovka-ms-sql-server-2019-express-edition---487
- https://falconspace.ru/list/sqlserver/ustanovka-sql-server-management-studio---488
- https://metanit.com/sql/sqlserver/1.2.php
Практика по SQL состоит из 2 частей:
- Создание структуры базы данных,
- Написание запросов.
Создание структуры базы данных
Структура определяется выделением таблиц, определением состава этих таблиц и также связями между таблицами.
Чем больше вы практикуетесь в выделении таблиц для разных предметных областей, тем более точно вы будете это делать в реальных проектах.
Выполняя запросы на вашей базе, вы будете подмечать свои ошибки по структуре данных и с каждым разом больше учитывать неточностей при проектировании структуры базы данных.
Возьмите 10 разных областей, которые вам понятны (работа кинотеатра, ВУЗ, записная книжка, сотрудники завода, социальная сеть, CRM, учет рабочего времени, приложение для молодых родителей, служба такси и т.д.) и создайте для них свои структуры базы данных.
Что важно учитывать при создании структуры базы данных:
- У объектов есть статусы, эти статусы меняются во времени, важно вести лог изменения статусов.
- Некоторые важные изменения в объектах нужно логировать (кто когда какой элемент менял)
- В целом по сущностям полезно хранить данные кто когда создал, обновил или закрыл.
- Таблицы должны учитывать возможность будущего расширения (структура должна быть достаточно гибкой для расширений)
Инструкция как создавать структуру БД: https://falconspace.ru/list/sqlserver/sozdanie-bazy-dannykh--tablic-i-svyazey-mezhdu-nimi---489
Пример создания структуры БД для социальной сети: https://falconspace.ru/list/sqlserver/primer-sozdaniya-struktury-bazy-dannykh--na-primere-soc-seti---568
Практика написания запросов
В первую очередь это запрос SELECT. Из-за Join и подзапросов SELECT запросы могут быть бесконечно длинными и сложными.
Начинайте с самых простых и постепенно усложняйте примеры:
- сначала просто select from
- добавьте where
- добавьте join
- добавьте подзапрос в select
- добавьте подзапрос в where
- сортирока
- сложные условия в where
- обработка условий с датами (выборка за последние полгода)
- объединение 2 запросов
- подзапрос в from
- алиасы (в том числе с пробелами)
- группировка
- группировка и having
- группировка по 2 параметрам
- разные агрегирующие функции
Возьмите 1 хорошо проработанную структуру базы данных и создайте для нее по меньшей мере 200 запросов SELECT.
В итоге у вас получится большой список из 2 колонок:
- смысл запроса (на языке обычных людей: "найти наиболее продаваемые товары за квартал", а не "взять из таблицы t1 данные, отсортированные по столбцу x1")
- сам запрос (работу запроса проверить на практике).
Примечание. Ищите сложные запросы SQL в реальных потребностях. Попробуйте вжиться в предметную область - какие интересные выборки вам могли бы понадобиться? Например, есть приложение для бега - что я хотел бы узнать по своему прогрессу:
- сколько я пробегаю в разрезе месяцев?
- какая у меня средняя скорость?
- в какие дни я бегаю быстрее?
- с кем из партнеров я бегал больше всего?
- в каких локациях сколько и как быстро я пробегал?
- сколько в среднем раз в неделю я бегал и какую среднюю дистанцию за 1 раз.
С запросами update, delete, insert все намного проще. Их дополнительная сложность может возникнуть только в случае использования подзапросов SELECT.
В файле можно занести по 2-3 примера на запросы изменения данных.
Про запросы выборки и обновления данных в базе данных:
https://falconspace.ru/list/sqlserver/rabota-s-select---493
Результат практики
В результате практики у вас будет наработано 10 структур баз данных и 200 запросов SELECT различной сложности.
Оформите запросы в файле на Google Docs (в виде таблицы).
Структуры можно изобразить в виде скринов диаграмм SQL для наглядности.
Проделав подобную работу, вы уже имеете на руках некое портфолио по SQL, на которое вы можете ссылаться в реллевантных вакансиях.
Но главный результат выполеннной работы - ваш навык быстро извлекать нужные данные и создавать структуры данных.
Простые запросы вы должны писать практически не задумываясь, и уже тем более не спотыкаясь на синтаксисе или каких-то тактических вопросах.
Написание SQL запросов сродни печати вслепую на клавиатуре - вы просто думаете над смыслом текста, а руки сами что-то пишут.
Заключение
Присылайте ваши наработки нам в телеграм @hecrus (ссылку на ваш гугл диск документ с доступом на комментирование по ссылке), и мы постараемся дать вам обратную связь по неточностям в структуре и запросах.
Дополнительно прикрепляем полезные ресурсы по теме SQL:
- https://www.mssqltips.com/sqlservertip/6818/sql-select-examples/
- https://www.sql-ex.ru/?Lang=0
- https://sql-academy.org/ru/guide
Если вы хорошо на практике изучили SQL запросы, знаете базово HTML, то у вас есть возможность стать веб-разработчиком на платформе Falcon Space (знать нужно всего лишь 2 технологии - SQL и HTML).
Подробнее - https://falconspace.ru/dev-work
Что еще посмотреть по SQL Server
Введение в базы данных MS SQL Server
Установка MS SQL Server 2019 Express Edition
Установка SQL Server Management Studio
Основы SQL. Создание базы данных, таблиц и связей между ними
SQL Server. Работа с SELECT. Операции удаления, вставки и обновления данных
Хранимые процедуры в SQL server
Пример создания структуры базы данных (на примере социальной сети)
Ищем партнеров-разработчиков на T-SQL
Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта