В 2023 году SQL (Structured Query Language) остается одним из самых популярных языков программирования, используемых в области баз данных и аналитики данных. Изучение SQL может быть полезным как для тех, кто только начинает свой путь в IT, так и для опытных профессионалов, которые хотят расширить свои знания и навыки. В этой статье мы рассмотрим несколько советов и ресурсов, которые помогут вам изучать SQL в 2023 году, и оставаться в курсе последних тенденций и изменений в этой области.

Согласно данным сайта Indeed.com, в 2023 году требования к кандидатам в вакансиях, связанных с базами данных и анализом данных, включают знание SQL в качестве обязательного навыка. Некоторые из таких популярных вакансий включают в себя SQL Developer, Data Analyst, Database Administrator, Business Intelligence Analyst и другие. Согласно данным сайта Glassdoor, зарплата специалистов, владеющих навыками работы с SQL, может составлять от $50 000 до $100 000 в год в зависимости от региона и уровня опыта. В связи с этим, изучение SQL может быть полезным для тех, кто хочет улучшить свои шансы на рынке труда и получать высокую заработную плату в IT-сфере.

Roadmap для изучения SQL за 2 месяца

Почему я составил дорожную карту именно на 2 месяца? Естественно, это не осветит желающего изучить SQL всем навыкам, но поможет полностью понимать основные концепции SQL, как с ним работать и для чего он нужен. Пройдя этот путь за 2 месяца вы сможете в дальнейшем продолжать свое обучение SQL и приводить свой сходу сделанный «корабль знаний» превратить в настоящий японский «линкор знаний Ямато» для улучшения вашего скилла.

Вот roadmap для изучения SQL за 2 месяца:

  1. Неделя 1: Основы SQL

    • Изучение базовых концепций SQL, таких как таблицы, столбцы, строки и типы данных

    • Создание простых SELECT запросов для извлечения данных из таблицы

    • Изучение фильтрации данных с помощью операторов WHERE и LIKE

  2. Неделя 2: Расширенные SELECT запросы

    • Изучение агрегирующих функций, таких как COUNT, SUM, AVG и MAX/MIN

    • Изучение GROUP BY и HAVING для группировки и фильтрации данных

    • Изучение операторов JOIN для объединения данных из нескольких таблиц

  3. Неделя 3: Создание и изменение таблиц

    • Изучение команды CREATE TABLE для создания новых таблиц

    • Изучение команды ALTER TABLE для изменения структуры таблицы

    • Изучение команды DROP TABLE для удаления таблицы

  4. Неделя 4: Изменение и удаление данных

    • Изучение команды INSERT для добавления новых строк в таблицу

    • Изучение команды UPDATE для изменения существующих строк

    • Изучение команды DELETE для удаления строк из таблицы

  5. Неделя 5: Основы баз данных

    • Изучение концепций баз данных, таких как первичные и внешние ключи

    • Изучение команды CREATE DATABASE для создания новой базы данных

    • Изучение команды USE для выбора базы данных для работы

  6. Неделя 6: Работа с индексами и ограничениями

    • Изучение индексов для ускорения поиска данных в таблице

    • Изучение ограничений для защиты данных и обеспечения целостности таблицы

  7. Неделя 7: Работа с представлениями и хранимыми процедурами

    • Изучение представлений для создания виртуальных таблиц на основе запросов

    • Изучение хранимых процедур для создания пользовательских функций и процессов

  8. Неделя 8: Закрепление изученного материала

    • Повторение и углубление знаний с помощью практических заданий и проектов

    • Подготовка к сертификационным экзаменам, если это необходимо

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

Теоретический минимум баз данных

Без теории учить SQL - крайне странное занятие, нужно знать, на чем стоит весь фундамент. Опишу основные концепции баз данных:


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

  1. Реляционная модель данных - это модель представления и организации данных в базе данных. В реляционной модели данные хранятся в виде таблиц, состоящих из строк и столбцов. Каждая таблица имеет имя и структуру, определяемую набором столбцов и их типами данных.

  2. Таблица - это основной объект в реляционной модели данных, который хранит данные в виде строк и столбцов. Каждая таблица имеет уникальное имя и структуру, определяемую набором столбцов и их типами данных. В таблице каждая строка представляет собой запись, а каждый столбец представляет собой конкретное свойство или атрибут объекта.

  3. Столбец - это одно поле в таблице, которое хранит данные одного типа. Каждый столбец имеет уникальное имя и тип данных, который определяет, какой тип данных может храниться в столбце.

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

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

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

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

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

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

Где и как учить SQL бесплатно?

  1. SQLZoo (https://sqlzoo.net/) - бесплатный ресурс, который предоставляет интерактивные уроки и задачи для изучения SQL. Уроки начинаются с простых запросов и наращивают сложность по мере продвижения.

  2. W3Schools SQL (https://www.w3schools.com/sql/) - популярный сайт для изучения SQL и других языков программирования. Содержит множество уроков и примеров с возможностью практического применения.

  3. Codecademy SQL (https://www.codecademy.com/learn/learn-sql) - интерактивный курс для изучения SQL с возможностью практического применения на практике.

  4. SQLBolt (https://sqlbolt.com/) - бесплатный ресурс, который предоставляет уроки и задачи для начинающих и продвинутых пользователей SQL.

  5. Khan Academy SQL (https://www.khanacademy.org/computing/computer-programming/sql) - бесплатный курс SQL, предоставляющий уроки и задачи для изучения языка.

  6. Udacity SQL (https://www.udacity.com/course/sql-for-data-analysis--ud198) - курс SQL от Udacity, который научит Вас основам языка SQL и его применению в анализе данных.

  7. LearnSQL (https://learnsql.com/) - платный ресурс для изучения SQL. Содержит большое количество уроков и практических заданий.

  8. SQLCourse (http://www.sqlcourse.com/) - бесплатный ресурс для изучения SQL. Содержит уроки, задания и тесты для проверки знаний.

  9. SQL Tutorial (https://www.sql-tutorial.ru/) - бесплатный ресурс для изучения SQL на русском языке. Содержит уроки и задания для практического применения.

  10. Mode Analytics SQL Tutorial (https://mode.com/sql-tutorial/) - бесплатный курс SQL от Mode Analytics, который научит Вас базовым и продвинутым навыкам работы с языком SQL.

  11. SQL Exercises (https://www.sql-ex.ru/) - бесплатный ресурс с задачами и упражнениями для изучения SQL. Содержит задания для практического применения на практике.

  12. SQL Fiddle (http://sqlfiddle.com/) - бесплатный онлайн-редактор SQL, который позволяет создавать, тестировать и отлаживать SQL-запросы.

  13. Learn SQL the Hard Way (https://learncodethehardway.org/sql/) - книга для изучения SQL, содержащая уроки и задания для практической работы.

  14. SQL Zoo (https://www.sqlzoo.net/wiki/AdventureWorks) - бесплатный ресурс для изучения SQL, содержащий уроки и задания на основе базы данных AdventureWorks.

  15. DataCamp SQL (https://www.datacamp.com/courses/intro-to-sql-for-data-science) - курс SQL от DataCamp, который научит Вас основам языка SQL и его применению в анализе данных. Содержит уроки и практические задания на практике.

Хорошие книги для изучения SQL

Вот несколько хороших книг на русском языке для изучения SQL:

  1. "SQL для чайников" от Алана Бьюли - это популярная книга для начинающих, которая предлагает читателям основы SQL и практические примеры.

  2. "SQL - язык запросов к базам данных" от А. А. Степанова - это книга, содержащая основы SQL и примеры запросов на языке SQL.

  3. "SQL. Полное руководство" от Александра Кузнецова - это книга, которая предлагает обширное руководство по SQL, включая основы языка, запросы, проектирование баз данных и оптимизацию производительности.

  4. " SQL. Сборник рецептов. 2-е изд." Автор: Роберт де Грааф, Энтони Молинаро - Рассмотрены готовые рецепты для решения практических задач при работе с СУБД Oracle, DB2, SQL Server, MySQL и PostgreSQL.

Куда двигаться дальше?

"Если ты не двигаешься вперед, то ты двигаешься назад. Никогда не останавливайся на достигнутом." - Tom Clancy

Если вы считаете, что исчерпали для себя знания в SQL, предлагаю вам заняться работой над этими скиллами:

Некоторые из самых сложных скиллов в SQL включают:

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

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

  3. Использование аналитических функций - это может включать в себя использование функций, таких как RANK, ROW_NUMBER, LAG и LEAD, для выполнения сложных аналитических запросов.

  4. Работа с временными рядами данных - это может включать в себя использование функций временных рядов, таких как DATE_TRUNC, DATE_PART и WINDOW функций, для анализа и управления временными рядами данных.

  5. Работа с географическими данными - это может включать в себя использование специальных функций, таких как ST_Distance, ST_Within и ST_Intersection, для анализа и управления географическими данными.

  6. Работа с хранилищами данных - это может включать в себя использование функций ETL (Extract, Transform, Load) для извлечения, преобразования и загрузки данных в хранилища данных.

  7. Работа с процедурами и триггерами - это может включать в себя создание и управление процедурами и триггерами для автоматизации задач и обеспечения целостности данных.

  8. Работа с реляционной алгеброй - это может включать в себя использование различных операторов, таких как JOIN, UNION, INTERSECT и EXCEPT, для выполнения сложных запросов.

  9. Работа с индексами - это может включать в себя создание и управление индексами для улучшения производительности запросов.

  10. Работа с безопасностью данных - это может включать в себя управление доступом к данным и защиту данных от несанкционированного доступа.

Заключение

В заключение, изучение SQL в 2023 году - это ключевой навык для любого, кто работает с данными. Сегодня SQL является одним из наиболее распространенных языков для работы с реляционными базами данных, и спрос на специалистов, обладающих навыками работы с SQL, по-прежнему высок.

Комментарии (54)


  1. ArkadiyShuvaev
    00.00.0000 00:00

    Сегодня SQL является одним из наиболее распространенных языков для работы с реляционными базами данных

    Кстати, AWS DynamoDB, которая, по сути является хранилищем пар ключ-значение, тоже поддерживает SQL (PartyQL)


  1. WondeRu
    00.00.0000 00:00
    +5

    Собеседую тестировщиков: никто не знает sql, изредка рассказывают, что в pgadmin есть возможность показать данные. Печально.


    1. nepempaxep
      00.00.0000 00:00
      -10

      еще бы про access спрашивал


    1. AbortYou
      00.00.0000 00:00
      +13

      Собеседуй аналитиков)))


    1. ALenaH
      00.00.0000 00:00
      +1

      так это вопрос не к тестировщикам, а к доступам, которые им дают, и задачам. Есть доступ к БД - будет и прокачка. Нет доступов, теория ненужная всегда забывается
      У меня лично в период работы тестером sql никак не использовался, а вот в саппорте до этого и сейчас в аналитике - да.


    1. joffer
      00.00.0000 00:00
      +1

      было ровно таким же тестировщиком - ничего не знал про php, js и sql

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


  1. PuerteMuerte
    00.00.0000 00:00
    +3

    Неделя 3: Создание и изменение таблиц
    Изучение команды CREATE TABLE для создания новых таблиц

    Неделя 5: Основы баз данных
    Изучение концепций баз данных, таких как первичные и внешние ключи
    Изучение команды CREATE DATABASE для создания новой базы данных

    Как-то у вас телега впереди лошади стоит...


    1. IvanPetrof
      00.00.0000 00:00
      +5

      На самом деле - вполне нормально. Сначала показывается основная суть - т.е. для чего собственно всё это нужно, а потом уже разбирается - как оно устроено.

      Иначе, если начать с самого-самого начала, то половина материала будет просто проходить мимо, т.к. непонятно к чему всё это.


      1. PuerteMuerte
        00.00.0000 00:00
        +2

        Как минимум, понятие "первичный ключ" должно изучаться там же, где и CREATE TABLE. А понятие "внешний ключ" — там же, где JOIN'ы. А слово из трёх букв (я про USE) вообще не заслуживает отдельного топика.


        1. IvanPetrof
          00.00.0000 00:00
          +12

          а индексы изучать сразу вместе с where..

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

          Индексы, ключи и прочие планы исполнения это нюансы реализации и приятное дополнение для ускорения, оптимизации и минимизации ошибок.

          Какая-нить карманная база данных на две с половиной таблицы может всего этого не иметь, но запросы sql с join и where, при этом - выполнять.


          1. Anarchist
            00.00.0000 00:00

            Не обязательно карманная. Spark SQL работает с куда более серьезными объемами, по сравнению с которыми любая традиционная реляционная база - просто карманная.


    1. Gummilion
      00.00.0000 00:00

      Если уж на то пошло, надо в таком порядке изучать (а то как делать select, если у нас ничего еще нет):

      • CREATE DATABASE

      • CREATE TABLE

      • INSERT

      • SELECT

      • Всё остальное


      1. Beiry
        00.00.0000 00:00

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


        1. Gummilion
          00.00.0000 00:00

          Согласен, по идее на весь DDL достаточно двух-трех дней (из них половина про CONSTRAINT-ы), а про выборки должно быть 2/3 курса.


  1. KirovA
    00.00.0000 00:00

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


    1. joffer
      00.00.0000 00:00
      +2

      после прочтения и проработки этой книги должно выдаваться достижение "Волк базы данных")


  1. panzerfaust
    00.00.0000 00:00
    +14

    Чтобы плавать нужно плавать, а не планировать плавание. Хорошенько поплавать можно на старом добром sql-ex. Гуглите сами, не реклама. В свое время мне пару недель sql-ex понадобилось, чтобы уверенно пройти собес.


    1. Z55
      00.00.0000 00:00
      +8

      sql-ex это бомба для новичка в SQL !
      Задачи, которые нельзя решить с наскока, в неидеальных базах... Снимаю шляпу перед создателем этого ресурса! Получение сертификата хотя бы первого уровня оставит в голове железобетонные знания SQL и DML. Так что я бы перечеркнул весь приведённый план и оставил в нём одну строчку: sql-ex, больше ничего и не нужно.


      1. itille
        00.00.0000 00:00

        Замечательный сайт для понимания SQL. Но вряд ли для новичка. К нему нужно прийти уже имея знания. Это наверное, как олимпиадные задачи для школьников. Когда есть основы, то очень интересно и полезно. А про неидеальные базы - мягко сказано.


        1. Z55
          00.00.0000 00:00
          +5

          Я пришёл на sql-ex полным нулём в SQL, более 10 лет назад. Получил сертификат. В будущем, этот сертификат неплохо помогал на собеседованиях, когда речь заходила про SQL.


        1. panzerfaust
          00.00.0000 00:00
          +6

          Это наверное, как олимпиадные задачи для школьников

          В том-то и дело, что нет. Олимпиадные задачи ровно как и всяческий литкод - это всегда оторванность от реальности и фокус на академических скиллах. SQL EX учит буквально тому, что обычный разработчик делает каждый день.


      1. smokingpanda
        00.00.0000 00:00

        Хмм. Спасибо за рекомендацию и пинок под жопку!
        За последние пару лет почти большая часть моего взаимодействия с БД строится через ОРМ. Понимание как устроены те или иные вещи осталось, а вот ручки забыли какие конкретно кнопки нажимать. Побродил по сайту, зарегистрировался. Стало больно ????
        Однозначно Потыкаю еще.


    1. saboteur_kiev
      00.00.0000 00:00

      К сожалению не всем доступен


  1. Z55
    00.00.0000 00:00

    SQL позволяет выполнять операции на создание, изменение и удаление таблиц и данных в них

    Вы не правы. SQL не выполняет ничего из перечисленного.

    Вы пишите про план изучения SQL, при этом зачем-то включаете в него DML (Insert/update/delete), DDL (create/alter/drop).
    Тогда было было логично добавить ещё DCL(grant/revoke) и TCL (begin/commit/rollback/save).
    Два месяца на всё это - это уже слишком оптимистично.


    1. qrdl
      00.00.0000 00:00

      Согласно Wikipedia, это все SQL:

      SQL consists of many types of statements,[6] which may be informally classed as sublanguages, commonly: a data query language (DQL),[a] a data definition language (DDL),[b] a data control language (DCL), and a data manipulation language (DML)


  1. FanatPHP
    00.00.0000 00:00
    +7

    Вы имеете в виду тот самый Ямато — один из последних представителей класса военных кораблей, резко устаревшего с появлением авианосцев — бесславно погибший в столкновении с последними? :)


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


    • Видно, что пункты в разделе Roadmap подбирались от балды, просто чтобы место заполнить. Неделя 5 — это какой-то винегрет: почему-то внешние ключи попали в "основы", и отдельно доставляет вдумчивое изучение команды USE. Видимо, меньше трех дней на неё отводить никак нельзя. Внешние ключи учим в одной неделе, а ограничения в другой. Хотя одно без другого смысла практически не имеет. В целом очень неровное и нелогичное распределение. Материал некоторых пунктов можно освоить за 5 минут, а некоторым и недели мало.
    • Опять же, типичная проблема всех писателей-обучателей тому, что они сами знают очень поверхностно: список из 100500 пунктов, надерганных из интернета. Вместо того, чтобы приводить список из 15 ресурсов, и оставлять читателя в полном неведении — на какой, собственно, пойти учиться-то? — стоило привести 2-3, причем с оценкой из собственного опыта. Как правильно отметили выше, sql-ex почему-то на 11 месте, а наверху какой-то мусор, типа w3fools.
    • Очень много трескучих фраз ни о чем. Здесь не партсобрание, никого агитировать не нужно. Если человек открыл эту статью, значит он уже интересуется изучением SQL.

    Чтобы сделать из этого хорошую статью, надо переработать разделы Roadmap, Где учить и Книги, а также убрать агитацию.


    1. badcasedaily1 Автор
      00.00.0000 00:00
      -2

      В чем-то вы действительно оказались правы, спасибо, я приму вашу критику и изменю свое видение для будущих статей. Но вот насчет источников для изучения - я лишь представил большое количество ресурсов, а насчет sql-ex я думаю уже многие слышали. Даже плохая практика помогает улучшиться. С большинством того, что вы сказали в критику, я соглашусь, спасибо


      1. FanatPHP
        00.00.0000 00:00
        +3

        Даже плохая практика помогает улучшиться.

        Это какое-то странное утверждение. Да, помогает, если других вариантов нету, и человек учится на своих ошибках. Но здесь вы предлагаете "плохой" вариант как свою собственную рекомендацию, и это я понять не могу.


        я лишь представил большое количество ресурсов

        Понимаете какое дело, пользоваться гуглем на уровне запроса "изучение SQL онлайн" сейчас умеют даже дошкольники. И писать специальную статью на Хабр, чтобы скопировать в нее результат этого запроса, совсем не обязательно.


  1. Voldemarius
    00.00.0000 00:00
    +1

    Я бы еще добавил книгу на русском языке: Проектирование реляционных баз данных (Джен Л. Харрингтон, 2006), издательство "Лори" - очень доступная книга для начинающих...


  1. WhiteBehemoth
    00.00.0000 00:00
    +1

    Изучение базовых концепций SQL, таких как таблицы, столбцы, строки и типы данных

    эти концепции относятся скорее к теории БД, а не SQL. Вместе с остальными понятиями реляционных баз данных.

    Вам, конечно виднее, но я бы не стал перескакивать на инструменты управления данными без понимания того (пусть и в общих чертах), почему и как эти данные организованны.


    1. VladimirFarshatov
      00.00.0000 00:00

      Да вот тоже, всегда считал что SQL и теория реляционных баз данных от Эдгара Кодда является первоосновой столбцов, таблиц, внешних ключей и прочего.. как-то в статье пропущено, но .. может уже так и надо?


      1. firnind
        00.00.0000 00:00
        +4

        Зашел в комментарии найти этот. Спасибо.

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

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


    1. vlivyur
      00.00.0000 00:00

      А что за строки и почему они отдельно от типов данных?


      1. WhiteBehemoth
        00.00.0000 00:00

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


  1. Keysi122
    00.00.0000 00:00

    Это круто


  1. drakula383
    00.00.0000 00:00

    весьма ультимативный гайд на 2 месяца, конечно, не идеально - но для первой стати автора на хабре пойдет на твердую четвёрку


  1. Dynasaur
    00.00.0000 00:00
    +2

    Хорошая подборка. В своё время я помогал другу "войтивайти", мы учили SQL по документации к Postgtress. Просто открываешь и идёшь все главы по порядку - хорошо написано, всё именно в том порядке что надо новичку и понятно. Даже ничего объяснять не пришлось - человек всё сам понимал. Нужно только добавить упражнения и практику.


  1. Nashev
    00.00.0000 00:00

    На мой взгляд как-то странно на всё перечисленное отводить недели, когда это рассказывается и понимается за минуты, и потом постепенно впитывается по мере практики, за дни...


  1. Serge1001
    00.00.0000 00:00
    +1

    Есть ещё очень хороший бесплатный курс по sql на stepik

    "Интерактивный тренажер по SQL"

    https://stepik.org/63054

    Это по сути тренажёр, то есть обучение через практику написания sql запросов в редакторе, но теория там тоже есть, вообще очень удобно - прочитал теорию и сразу закрепил на практике. Плюс там сертификат можно получить.


  1. vedenin1980
    00.00.0000 00:00
    +1

    Честно говоря никогда не понимал вот такого изучения по списку таких вещей как SQL, самое простое на мой взгляд попытаться сделать любое приложение (beckend, mobile) на любом языке, использующее базу данных, и учить именно то, что нужно для создания приоложения.
    А уже потом можно смотреть более сложные вещи.


    Вообще большинство идей SQL для знающего любой язык программирования — очень просты. Базовые Create table/ select/ update/ insert можно изучить за час, банально открыв какой-нибудь SQL developer и посмотреть как он генерит эти запросы.


  1. itrader
    00.00.0000 00:00

    Лучшая книга по SQL что я читал, это Ицик Бен-Ган, Основы T-SQL. Книга дает понимание как в принципе работают SQL запросы.


  1. kesrt
    00.00.0000 00:00
    +3

    А нормальные формы теперь не изучают?


    1. LinearLeopard
      00.00.0000 00:00
      +3

      А нормальные формы теперь не изучают?

      Sarcasm mode:
      А кому они нужны? Все всё хранят в b/json виде.


      1. PuerteMuerte
        00.00.0000 00:00
        +1

        Ровно до тех пор, пока не возникает задача не только хранить/отобразить, но ещё и посчитать в разрезе какой-то аналитики.


        1. SGordon123
          00.00.0000 00:00

          столько в универе убили времени на нормальные формы и предикаты ..... Нихрена не пригодиолось для практики на разных SQL ....


          1. PuerteMuerte
            00.00.0000 00:00

            Смотря кем вы работаете. Мне в универе курс тервера тоже не пригодился, зато то, что нас гоняли в хвост и гриву по SQL, потом очень выручало на работе. И модели данных я начал проектировать сразу правильно, без поправок со стороны сеньоров ведущих программистов, как это раньше называлось.


            1. SGordon123
              00.00.0000 00:00

              я как раз про и в хвост и вгриву , не возражал бы ....


        1. LinearLeopard
          00.00.0000 00:00
          +1

          Ровно до тех пор, пока не возникает задача не только хранить/отобразить, но ещё и посчитать в разрезе какой-то аналитики.

          А какие проблемы с подсчётом какой-то аналитики в Postgres по jsonb данным?


          1. PuerteMuerte
            00.00.0000 00:00

            Если вам надо линейно обработать один и тот же датасет, то в принципе никаких. Аналитика, это когда в простейшем случае надо вывести список подразделений, которые выполнили план продаж, по jsonb данным, когда у вас есть jsonы с заказами, есть json'ы с входящими платежами, и есть с месячными планами.


            1. LinearLeopard
              00.00.0000 00:00

              То есть проблема в join jsonb и нормализованных данных?

              Я просто не настоящий аналитик и даже не администратор базы данных. Получается, надо всё хранить в jsonb, там индексы есть, или они плохо на join работают? Тогда надо всё в одном документе хранить :)


              1. vedenin1980
                00.00.0000 00:00
                +1

                Получается, надо всё хранить в jsonb, там индексы есть, или они плохо на join работают?

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


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


                Тогда надо всё в одном документе хранить :)

                Вы придумали no-sql вроде mongoDB или key-value storage, они хорошо работают если у вас точно известны все сценарии сохранения и получения данных и совсем нет хитрых агрегаций, что бывает не так часто.


                Ну и избыточность у вас будет огромная — условно если у вас соц. сеть, то вам придется хранить в одном документе не только все данные пользователя, все его посты, но и все комментарии, все комментарии к его постам, всех его друзей/подписчиков и (желательно) всех и комменатрии и т.д. В результате, если пользователь напишет крошечный комментарий придется обновлять сотни записей разных пользователей огромного размера. То же при получении данных — простое чтение одного комментария потребует поднять много МБ данных и распарсить их из json.


              1. PuerteMuerte
                00.00.0000 00:00

                Получается, надо всё хранить в jsonb, там индексы есть, или они плохо на join работают?

                jsonb "под ковром", по сути, это большая денормализованная плоская таблица, в которую автоматически раскидываются данные из json'а, который вы кладёте в соответствующее поле. Со всеми преимуществами и недостатками сего подхода. В преимуществах то, что это всё-таки таблица, её поля можно индексировать, и благодаря этому, по ней можно делать выборки намного эффективнее, чем просто по json-документу в базе. В принципе, это аналогично обычным NoSQL. В недостатках лютая денормализация, соответственно, с лютым же оверхедом на хранение данных, и не слишком лютым, но тоже оверхедом на выборки. А самое неприятное, что в плоской таблице можно более-менее эффективно работать только с данными, которые умещаются в плоскую таблицу. Если у вас там сколь-нибудь сложная структура в модели данных, вы в плоскую таблицу её не положите.


    1. vlivyur
      00.00.0000 00:00

      А тут вообще нет ничего из проектирования БД.Чисто практика без теории.Так что да, можно не изучать


  1. AlexanderAstafiev
    00.00.0000 00:00

    Простите, а под

    "SQL для чайников" от Алана Бьюли

    понимается "Learning SQL. Generate, Manipulate, and Retrieve Data"?