SQL — декларативный язык программирования, применяемый для создания, модификации и управления данными в реляционной базе данных, управляемой соответствующей системой управления базами данных.
-Является, прежде всего, информационно-логическим языком, предназначенным для описания, изменения и извлечения данных, хранимых в реляционных базах данных. В общем случае SQL (без ряда современных расширений) считается языком программирования неполным по Тьюрингу, но вместе с тем стандарт языка спецификацией SQL/PSM предусматривает возможность его процедурных расширений.
Если вы хотите изучить SQL для Data Science, эта статья для вас. В этой статье я расскажу вам о пошаговой дорожной карте изучения SQL для Data Science в 2024 году с помощью бесплатных ресурсов.
Дорожная карта SQL 2024
SQL предоставляет средства для доступа и получения данных из баз данных, что часто является начальным шагом в любой задаче Data Science. Специалисты по работе с данными используют SQL-запросы для извлечения необходимых данных для анализа. Ниже перечислены шаги, которые необходимо выполнить, чтобы освоить SQL для Data Science:
Изучите основы SQL
Разберитесь в типах SQL-серверов
Практика SQL запросов и работы с данными
Практика в работе над реальными датасетами
Научитесь защищать свои базы данных
Давайте подробно рассмотрим каждый шаг, перед вами SQL дорожная карта 2024 года.
Шаг 1: Изучите основы SQL
Начните свое путешествие по SQL с освоения фундаментальных концепций.
Начните с понимания базового синтаксиса, структуры базы данных и основных команд SQL, таких как SELECT, INSERT, UPDATE, DELETE и JOIN.
В моем телеграм t.me/sqlhub канале можно найти гайды, уроки, лучшие библиотеки и советы по работе с данными.
https://t.me/addlist/_FjtIq8qMhU0NTYy -а здесь я собрал бесплатную папку с каналами по изучению Data Science и работе с базами данных.
Мы собрали для вас некоторые из лучших ресурсов, которые вы можете использовать для изучения основ SQL. Все ресурсы бесплатны.
1. Бесплатные курсы по SQL - Интерактивный тренажер по SQL
В курсе большинство шагов — это практические задания на создание SQL-запросов. Каждый шаг включает минимальные теоретические аспекты по базам данных или языку SQL, примеры похожих запросов и пояснение к реализации.
Продолжительность: Приблизительно 2 недели
Ссылка - https://stepik.org/course/63054/promo
2. Введение в SQL от Kaggle
Базовый курс от известной платформы по анализу данных Kaggle.
Продолжительность: Приблизительно 1 неделя
Уровень мастерства: Начинающий
Ссылка - https://kaggle.com/learn/intro-to-sql
3. Продвинутый курс SQL от Kaggle
Продолжительность: Приблизительно 1 неделя
Уровень мастерства: Промежуточный
Ссылка - https://kaggle.com/learn/advanced-sql
4. Введение в базы данных и SQL-запросы от Udemy
Продолжительность: Приблизительно 1 неделя
Уровень мастерства: Начинающий
Ссылка - https://udemy.com/course/introduction-to-databases-and-sql-querying/
5. Intro to Relational Databases byUdacity
Продолжительность : 4 недели
Уровень квалификации: Средний ученик
Ссылка - https://udacity.com/course/intro-to-relational-databases-ud197
6. Введение в SQL (DataCamp)
Продолжительность: 4,5 часа
Уровень квалификации: Начинающий
Ссылка -
https://datacamp.com/courses/introduction-to-sql
7. SQL для анализа данных от Udacity
Продолжительность: Примерно 4 недели
Уровень навыков: Начинающий
Ссылка - https://shiksha.com/online-courses/sql-for-data-analysis-course-udacl3
8 - ЕЩЕ БЕСПЛАТНЫЕ курсы и БЕСПЛАТНЫЕ сертификаты.
❯ SQL http://cognitiveclass.ai/courses/learn-sql-relational-databases
❯ MySQL https://scaler.com/topics/course/sql-using-mysql-course/
❯ PostgreSQL http://freecodecamp.org/learn/relational-database/
❯ Oracle http://mygreatlearning.com/academy/learn-for-free/courses/oracle-sql
❯ PostgreSQL http://simplilearn.com/free-postgresql-course-skillup
❯ SQL Projects http://mygreatlearning.com/academy/learn-for-free/courses/sql-projects-for-beginners
Подборка ресурсов, где можно выучить\подтянуть знания SQL:
В порядке изучения с "нуля":
⏩ https://mode.com/sql-tutorial/ много бесплатных уроков для начинающих, идущих по нарастающей
⏩ https://www.sql-ex.ru/ лучший тренажер по SQL, решайте парочку задач в день и никакие задания на интервью не будут вам страшны
⏩ https://sqlzoo.net/ еще несколько тренажеров с задачками для прокачивания практических навыков
⏩ https://stepik.org/course/70710/promo для тех кто уже знает основы и базу и хочет развить знания еще больше.
Шаг 2: Изучите различные типы СУБД
Базы данных SQL бывают разных типов. Очень важно понимать их различия. Среди популярных SQL-сервера - MySQL, PostgreSQL и Oracle. У каждого из них есть свои сильные стороны и возможности использования.
Например, MySQL известен своей простотой, а PostgreSQL предлагает расширенные возможности. Изучение этих различий поможет вам выбрать правильную базу данных для решения задач Data Science.
На Хабре есть замечательная статья на тему выбора СУБД.
Шаг 3: Решайте задачи по SQL
Чтобы закрепить свои навыки работы с SQL, попрактикуйтесь в решении реальных задач Data Science. Эти проблемы часто связаны с извлечением, преобразованием и анализом данных. Вы можете найти задачи и упражнения по SQL в Интернете или использовать наборы данных для работы над SQL-запросами, которые касаются конкретных вопросов, связанных с данными. Это поможет вам приобрести навыки применения SQL на реальной практике Data Science.
Ниже приведены некоторые из лучших ресурсов для поиска вопросов и практических заданий по SQL:
@data_analysis_ml -телеграм канал для Аналитиков данных со множеством гайдов и примеров с кодом и задачами по работе с данными.
SQLZoo - это бесплатный онлайн ресурс, который предлагает интерактивные уроки и задания для изучения SQL. Уроки начинаются с простых запросов и постепенно усложняются по мере продвижения в обучении.
W3Schools SQL - известный онлайн-ресурс, предлагающий уроки и примеры для изучения SQL и других языков программирования. Здесь пользователи могут найти множество материалов, которые помогут им углубить свои знания и применить их на практике.
Codecademy SQL - интерактивный курс для изучения SQL с возможностью практического применения на практике.
SQLBolt - это ресурс, который помогает начинающим и опытным пользователям SQL с помощью бесплатных уроков и задач.
Udacity SQL - курс известного онлайн-образовательного ресурса, позволит вам освоить основы языка SQL и показать, как применять его для анализа данных
Khan Academy SQL - бесплатный курс SQL, предоставляющий уроки и задачи для изучения языка.
LearnSQL - платный ресурс для изучения SQL. Содержит большое количество уроков и практических заданий.
SQLCourse - представляет собой бесплатную платформу, где можно овладеть навыками SQL. Здесь предоставлены обучающие уроки, практические задания и тесты, позволяющие проверить свои знания.
SQL Tutorial - это русскоязычный бесплатный ресурс, предоставляющий возможность изучения SQL. Здесь можно найти уроки и задания, которые помогут вам применять полученные знания на практике.
Mode Analytics SQL Tutorial - бесплатный курс, который предлагает обучение базовым и продвинутым навыкам работы с языком SQL.
SQL Exercises - это бесплатный онлайн-ресурс, который предлагает задачи и упражнения для изучения и практики SQL. Ресурс содержит множество заданий, которые помогут вам развить практические навыки работы с SQL.
SQL Fiddle – это интернет-сервис, который предоставляет возможность создавать, тестировать и отлаживать SQL-запросы совершенно бесплатно.
Learn SQL the Hard Way - книга для изучения SQL, содержащая уроки и задания для практической работы.
DataCamp SQL - курс SQL от DataCamp, который научит Вас основам языка SQL и его применению в анализе данных. Содержит уроки и практические задания на практике.
Шаг 4: Работа над проектами на SQL на популярных датасетах
После того как вы освоили основы SQL, пришло время научиться взаимодействовать с базами данных для решения задач Data Science на практике. Начните работать над проектами Data Science, которые требуют использования SQL. Например, вы можете анализировать данные о клиентах в базе данных розничной торговли и выполнять обработку и анализ большого датасета. В сети есть множество доступных и бесплатных датасетов с реальными данными для обучения, любых объемов и категорий.
Ниже приведены некоторые ресурсы для поиска датасетов для ваших будущих проектов:
Если вы ищете открыте датасетов для работы - вот 7 бесплатных источников данных, где вы можете найти данные для любых задач.
1. Репозиторий Awesome Data Github
В этом репозитории вы найдете ссылки на открыте наборы данных, которые содержат изображения, текст, аудио и табличные данные.
https://github.com/awesomedata/awesome-public-datasets
2. Kaggle
Более 1000 датасетов, которые можно легко скачать и работать с ними, совершенно бесплатно.
https://www.kaggle.com/datasets
3. Открытый реестр данных на AWS
Поиск и обмен датасетами х с помощью ресурсов AWS.
4. Open ML
Более 20K+ наборов данных на Open ML
5. Papers with Code
Papers with Code содержит более 7000 открытыз наборов данных по всем возможным тематикам.
https://paperswithcode.com/datasets
6. Hugging Face
На Hugging Face вы можете найти 80K+ наборов данных.
https://huggingface.co/datasets
7. Dagshub
Много бесплатных даатсетов можно найти на Dagshub:
100 датасетов для анализа данных на все случаи жизни.
5. Научитесь защищать свои базы данных
SQL базы данных являются одним из самых важных компонентов информационной системы любой организации. Они содержат в себе ценные данные, такие как персональная информация клиентов, финансовые данные, бизнес-планы и другую конфиденциальную информацию. Поэтому, защита SQL баз данных является критическим аспектом безопасности информационной системы.
Существует несколько способов защиты SQL баз данных:
Аутентификация и авторизация: Это первый шаг в обеспечении безопасности SQL баз данных. Аутентификация позволяет убедиться в подлинности пользователей, а авторизация определяет, какие действия могут выполнять эти пользователи в базе данных. Использование сложных паролей, двухфакторной аутентификации и ограничение прав доступа помогут предотвратить несанкционированный доступ к данным.
Шифрование данных: Шифрование данных является эффективным способом защиты SQL баз данных. Это процесс преобразования читаемых данных в непонятный для посторонних вид. Шифрование может быть применено как на уровне базы данных, так и на уровне приложения. Это поможет предотвратить утечку информации в случае несанкционированного доступа к базе данных.
Регулярные резервные копии: Регулярное создание резервных копий SQL баз данных является важным аспектом их защиты. В случае сбоя системы, атаки злоумышленников или случайного удаления данных, наличие резервной копии позволит быстро восстановить базу данных и минимизировать потери информации.
Обновление и патчи: Регулярное обновление программного обеспечения SQL баз данных и установка последних патчей являются неотъемлемой частью их защиты. Производители постоянно выпускают обновления, которые исправляют уязвимости и улучшают безопасность. Необходимо следить за выходом этих обновлений и устанавливать их как можно скорее.
Мониторинг и аудит: Регулярный мониторинг SQL баз данных позволяет обнаружить любые подозрительные активности или аномалии, которые могут указывать на возможные атаки или нарушения безопасности. Также важно вести аудит баз данных, чтобы иметь возможность отследить, кто и когда получал доступ к данным и какие действия совершал.
Все эти меры помогут обеспечить безопасность SQL баз данных и предотвратить несанкционированный доступ к ценной информации. Важно помнить, что безопасность баз данных является непрерывным процессом, требующим постоянного внимания и обновления.
Отдельно стоит поговорить про SQL-инъекции, вы возможно слышали этот термин, даже, если не работали с SQLдо этого.
SQL-инъекции (SQL injections, SQLi) — самый хорошо изученный и простой для понимания тип атаки на веб-сайт или веб-приложение. Тем не менее, он странным образом остается весьма распространенным и в наши дни. Организация OWASP (Open Web Application Security Project) упоминает SQL-инъекции в своем документе OWASP Top 10 2017 как угрозу номер один для безопасности веб-приложений, и вряд ли положение сильно изменилось за четыре года.SQL-инъекции
Ниже приведены полезные инструменты для защиты от SQL инъекций
Обнаружение уязвимости для SQL-инъекций в режиме онлайн с помощью sup.biz и поддержка баз данных MySQL, Oracle, PostgreSQL, Microsoft SQL, IBM DB2, Firebird, Sybase.
SQLMap поможет протестировать сервис на все 6 методов инъекции.
2.Тест на уязвимость SQL-инъекции онлайнc HackerTarget
Еще один онлайн-инструмент Hacker Target на основе SQLMap для поиска уязвимости bind & error против GET-запроса HTTP.
Netsparker готов просканировать уровень веб-безопасности предприятий: он делает даже больше, чем просто тест на уязвимость SQL. Человек также может интегрировать приложения для автоматизации веб-безопасности.
Пользователь может проверить индекс уязвимости сайта, который прошел сканирование от Netsparker.
Vega – это сканер безопасности с открытым исходным кодом, который может быть установлен на Linux, OS X и Windows.
Vega написан на Java, он имеет графический интерфейс.
Не только SQLi: Vega можно использовать для тестирования на многие другие типы уязвимостей, такие как:
Инъекция XML/Shell/URL;
Directory listing;
Remote file includes;
XSS.
Vega выглядит многообещающим бесплатным сканером безопасности сети.
SQLMap – это один из популярных инструментов тестирования с открытым исходным кодом на выполнение SQL-инъекций в системе управления реляционными базами данных.
Sqlmap проводит перечисление пользователей, паролей, хэшей, баз данных и поддерживает полный дамп таблиц базы данных.
Если пользователь использует Kali Linux, то он может применить SQLMap, не устанавливая его дополнительно.
Онлайн сканер для проведения пентестинга, который использует OWASP ZAP. Есть две версии – упрощенная (бесплатная) и полная (нужно зарегистрироваться).
Appspider, разработанный Rapid7, — это динамическое решение для тестирования безопасности приложений на обход защиты и более чем 95 типов атак.
Уникальная функция Appspider под названием «vulnerability validator» позволяет разработчику воспроизвести уязвимость в режиме реального времени.
Это очень удобно, когда администратор исправил уязвимость и хочет повторно протестировать ресурс, чтобы точно убедиться, что риска для системы больше нет.
Acunetix – это готовый к работе сканер уязвимостей веб-приложений, которому доверяют более 4000 компаний по всему миру. Не только сканирование SQLi: инструмент способен найти более 6000 других уязвимостей.
Каждая находка классифицируется, и показываются потенциальные корректировки системы безопасности: поэтому пользователь всегда знает, что нужно сделать, чтобы исправить ситуацию к лучшему. Кроме того, человек может интегрироваться с системой CI/CD и SDLC, поэтому каждый риск безопасности идентифицируется и фиксируется до того, как приложение будет развернуто.
Wapiti – это сканер уязвимостей на основе Рython. Он поддерживает большое количество инструментов для обнаружения следующих атак:
Sql и XPath;
CRLS и XSS;
Shellshock;
File disclosure;
Server-side request forgery;
Command execution.
Он поддерживает конечную точку HTTP/HTTPS, несколько типов аутентификации, такие как Basic, Digest, NTLM и Kerberos. У пользователя есть возможность создавать отчеты о сканировании в формате HTML, XML, JSON и TXT.
Scant3r – это «легкий сканер», основанный на Python.
Он ищет возможность проведения атак XSS, SQLi, RCE, SSTI в заголовках и параметрах URL-адресов.
Почему нужно изучать SQL в 2024 году
В 2024 году изучение SQL и баз данных остается важным и актуальным. Вот несколько причин, почему стоит уделить внимание этой области:
Рост количества данных: В настоящее время объем данных, генерируемых и собираемых компаниями, стремительно растет. SQL и базы данных являются основными инструментами для хранения, управления и анализа этих данных. Изучение SQL позволяет эффективно работать с большими объемами информации.
Востребованность на рынке труда: SQL и базы данных широко используются во многих отраслях, включая финансы, здравоохранение, розничную торговлю, технологии и другие. Работодатели активно ищут специалистов, обладающих навыками работы с SQL и базами данных. Изучение этой области может повысить ваши шансы на получение высокооплачиваемой работы.
Улучшение аналитических навыков: SQL позволяет проводить сложные аналитические запросы к данным. Изучение SQL поможет вам научиться эффективно фильтровать, сортировать и агрегировать данные для получения ценной информации. Это может быть полезно для принятия бизнес-решений, оптимизации процессов и выявления трендов.
Развитие карьеры: Изучение SQL и баз данных может стать отличным инструментом для развития вашей карьеры. Навыки работы с базами данных могут помочь вам продвигаться по службе или перейти на более высокооплачиваемую должность. Кроме того, знание SQL может быть полезным дополнением к другим навыкам, таким как аналитика данных, машинное обучение или разработка программного обеспечения.
В целом, изучение SQL и баз данных в 2024 году имеет множество преимуществ. Оно позволяет эффективно работать с данными, повышает востребованность на рынке труда, развивает аналитические навыки и способствует развитию карьеры.
Комментарии (26)
Akina
07.01.2024 12:34+2Начните с понимания базового синтаксиса, структуры базы данных и основных команд SQL, таких как SELECT, INSERT, UPDATE, DELETE и JOIN.
Не-не... JOIN из этого списка следует убрать и расположить особняком. Если первые 4 и правда могут быть названы командами, то вот последнее - с весьма большой натяжкой. Тёплое с мягким в одном списке только запутает.
Шаг 2: Изучите различные типы СУБД
И опять всё в кучу. Понятия БД и СУБД ну никак нельзя объединять! Более того - их следует чётко и однозначно отделить друг от друга. Ну хотя бы для привития элементарной терминологической грамотности.
Ниже приведены некоторые из лучших ресурсов для поиска вопросов и практических заданий по SQL
Это лучшие "среди своих" - но вряд ли для озвученной в заголовке раздела задачи. Как правило, тамошние задания требуют достаточно глубоко вникнуть в синтетическую и совершенно неинтересную обучающемуся ситуацию, что совсем не способствует ни поддержанию интереса, ни наработке навыков.
Как по мне, нет ничего лучше для практики и наработки типичных приёмов, чем попытка отвечать на вопросы, поставленные начинающими на форумах, и изучение приёмов, которые использовали опытные SQL-программисты в своих ответах.
То же можно написать и про "популярные датасеты". Многие СУБД предлагают модельные датасеты в составе инсталлятора или рядом с ним (AdventureWorks в SQL Server, Sakila в MySQL и т.п.). Но эти "датасеты из коробки" хороши тем, что объём обучающих задач на них гораздо обширнее, а SQL Server так и вовсе большинство примеров в документации строит на именно своей учебной базе. А если где заткнулся - ещё поди найди энтузиаста, который озаботится импортом невесть откуда взятого датасета, чтобы помочь тебе с проблемой, на которую своих навыков нехватило.
5. Научитесь защищать свои базы данных
А вот эта задача, как по мне, вообще лежит далеко за рамками изучения собственно SQL. Это - уже администрирование, причём далеко не начала.
-----------------
PS. А ещё очень огорчает отсутствие ссылок на наши, родные, ресурсы, предназначенные для изучения основ SQL. Ланит, Интуит и тому подобные.. там далеко не всё платно, даже скорее наоборот.
jimquery
07.01.2024 12:34Изучал SQL в 2013-ом году по видеокурсу от УЦ Специалист за авторством Гурьянова. Курс Microsoft 10774. При желании можно найти в интернете. Имхо, мало кто из блоггеров сравнится в качестве подачи материала.
Vitaliy_Zlobin
07.01.2024 12:34Сейчас там Самородов про SQL Server рассказывает. Его лекции есть на ютубе и это пожалуй лучшее, что было со мной на пути изучения MS SQL, очень рекомендую.
Senecaminor
07.01.2024 12:34+1Если проще SQL - это ремесло. На мой субъективный взгляд (я примерно прикинул) существует около 300 "фишек", "приёмчиков ", "шаблонов" для sophisticated data analysis. Это очень похоже на оригами, а я им занимался в начальной школе:). Таблицы как бумага, ее нужно гнуть в определённых последовательностях.
Во-первых берите неагрегированные данные, чем "сырее" тем лучше и ближе к жизни.
Я убедился, что нужно не тренажёры проходить (на то стоит потратить время все таки), но для развития мастерства нужно делать и делать запросы к новым данным и ставить аналитические гипотезы самому себе! И не на одном датасете, а в первый год перепробовать их несколько десятков.
Во-вторых. Важно! Не берите датасеты из kaggle, за редким исключением:спорт, погода, игры. Не берите ирисы, титаник, может только в самом начале. Берите csv с сайтов всемирного банка, мосбиржи, разные сайты по медицинским исследованиям с сырыми данными. Некоторые имеют открытые базы данных read only.
Все потому, что в большинстве датасеты на kaggl сгенерированы (скорее всего с помощью
faker
) по Паретто. Конечно не все, но очень часто синтетические. Это просто не интересно анализировать. Трудно будет научиться делать выводы и последовательный анализ.Еще про интерес: мне крайне было не интересно анализировать библиотеку на степике, в том самом "легендарном" курсе. Не интересно было проходить на sqlex задания про продажи оргтехники. Но вот что увлекло, так это создание собственных ds из открытых источников, stratascratch faang задачи, top 50 SQL вопросов на leetcod, и курс Глеба Михайлова (после него я действительно увидел "анализ", почувствовал вкус к этому и полюбил инструмент. (Если вы не изучили до сих пор SQL, скорее вы его не любите)
P. S. Учите clickhouse ( синтаксис, и его эксклюзивные функции, будете на порядок круче всех и востребованнее.)
BugM
07.01.2024 12:34+1P. S. Учите clickhouse ( синтаксис, и его эксклюзивные функции, будете на порядок круче всех и востребованнее.)
Да, но только после минимум нескольких лет работы с классическими sql базами.
Продвинутый Кликхаус довольно сложный для понимания и работает так как более оптимально, а не так как более правильно. Сразу в такое не стоит.
Количество людей на самом понимающих как работают и что делают array* функции и как на них построить то что нужно бизнесу очень невелико. Сюда же правильное проектирование таблиц чтобы не тормозило. С учетом всех особенностей array* функций.
Batalmv
07.01.2024 12:34Странная статья
И дорожная карта, скажем так, вызывает вопросы
Понятно, предложить начать с реляционной алгебры уже не модно, народу надо быстро "оттарабанить" курсы и начать "рубить капусту". Ну ладно, то такое.
SELECT, INSERT, UPDATE, DELETE и JOIN - а JOIN уже отдельная команда?
Хоть чуть-чуть про транзации можно узнать? Я пониманию, отсутствие знания о транзакциях не мешает писать простые запросы, но хоть чуток ...
Я не очень понял, что надо изучить о типах. Как раз 99% времени используеться буквально три типа "строка", "число", "блоб". И вариации на тему длины. Понятно многообразие типов больше, но если честно, я вообще редко помню, когда над этим стоило задуматься, кроме очень "нишевых" опций.
Индексы, оптимизатор?
Зачем изучать задачи админа, такие как защита - я не понял. Или почему только их? Чего не изучить как растянуть базу в гео-кластер на расстоянии в 100 км? Или как делать backup?
Задача защиты от иньекций - тут я вообще потерялся
Но я могу допустить, что для Data Science нужен свой отдельный learning path
alexeyvolya
07.01.2024 12:34-1Автору спасибо за сборку ресурсов. Часть из них мне была не известна☺️.
SQL либо любят, либо ненавидят - среднего не дано.????????
Всем удачи и available timing ????
Z55
И что, есть кто-то, кто всё это прошёл? Вместо всей этой шелухи можно было оставить ссылку на sql-ex.ru , и это был бы вполне самодостаточный мануал.
ALexKud
Следует заметить вот что: в основном sql рассматривается как язык выборок и получения данных из связанных таблиц. Но никто даже не упоминает что вся мощь sql проявляется в процедурах обработки данных, когда выходной набор лишь результат сложных и не очевидных манипуляций с данными из таблиц. Сейчас распространено, что обработка данных только на клиенте и это приводит как правило к серьёзному сетевому трафику. Данные надо загрузить, обработать и вернуть назад в бд, что не оптимально. А можно сделать процедуру, которую можно вызвать из клиента и она внутри сервера сделает все что нужно без лишнего трафика и более оптимально, так как план выполнения процедуры строится при её компиляции и потом переиспользуется. Запрос всегда медленнее, потому что план выполнения каждый раз строится сервером заново. Высший пилотаж в SQL это строить системы с бизнес логикой на сервере, а не на клиенте, когда можно применить всю мощь языка, а не 20 % примерно как в web разработках или datasience. К тому же те же web разработчики часто полагаются на фреймворки, которые генерируют такой sql код, что разобраться с ним практически невозможно человеку.
bolk
План запроса не строится каждый раз заново. В «Оракле» есть их кеширование, удачный план можно даже «прибить гвоздями» к запросу. В Постгресе план можно сначала подготовить (PREPARE), потом выполнять много раз в пределах сессии.
YokaiiSpirit
>> фреймворки, которые генерируют такой sql код
встретил недавно код нагенерённый, который делал фулскан данных за 2 недели состоящих из кучи вложенных подзапросов, чтобы получить пропавшие имена со вчера. причём там 60 полей собираемых каждый день и индексы по именам/датам присутствуют.
на 120к записей в день, может пропасть 1-20 примерно
в общем, я думаю, такого кода ещё у нас много(
andrewdeath
В базу обычно лезет backend, и база это по сути часть бэка, быть она может даже на той же машине, или на соседней в локальной сети. Следовательно не совсем понятно о каком лишнем трафике идёт речь... Ну и реализовывать бизнес логику в функциях базы не есть хорошо. Слишком сильно завязываемся на отдельно взятую СУБД, и если очень захочется сменить условный postgres на условный sqllite, то быстро это сделать уже не получится
rozhnev
Смена базы данных это как раз не основной недостаток переноса логики в базу, так как встречается практически никогда.
Гораздо больший недостаток это отсутствие версионности и сложности тестирования
miksoft
Последние два года весьма часто.
LeetCode_Monkey
Когда эмулируют работу СУБД, тут надо сразу бить по рукам, не важно локалка там это или что. Потом им ещё алгоритмы подавай, а то чо-то тормозит всё, ога.
Всю - не хорошо. Хорошо только ту часть которая непосредственно лопатит данные. Для того СУБД и придумывались. А не для того чтобы таблички там хранить.
nronnie
По-моему, уже все что угодно умеет и план кешировать, и даже перед этим параметризовать запросы.
rozhnev
Мне кажется sql-ex морально устарел. Я работаю над своей версией SQL тренажёра sqltest.online
cijic
Морально устарел - маркетинговое понятие, используемое для стимулирования или обоснования покупок.
Какой смысл вы хотели сообщить в этой фразе, помимо маркетингового?
rozhnev
Я не совсем согласен с вашим определением морального устаревания. Морально устаревший продукт- это тот который хотя и позволяет достигать поставленные цели, но делает это не лучшим способом. Например как бумажная энциклопедия сегодня. Да можно искать в ней информацию, но делать это в интернете намного удобней.
По поводу sql-ex одна из моих претензий - абсолютно не адекватная тестовая база. Ну и в догонку - интерфейс который тоже является частью учебного процесса
cijic
Так это не моральное устаревание, а технологическое, т.е. как раз реальное.
Моральное "устаревание" - это часть запланированного устаревания. Рекомендую узнать побольше о последнем.
IgorMartynkin1981
Не соглашусь:
Чувак реально пропахал над статьёй и только за это респект и уважуха!!!
Он собрал основу в одном месте и сделал описание, а для сикволовской скорлупы это ценнее и полезнее.
vindy123
вроде после прочтения 10-15 сгенерированных нейронкой статей вырабатывается однозначная чуйка на этот кал, нет?
alexbolgov94
sql-ex, имхо, не только морально устарел, он ещё и вреден для новичков
Примеры БД там, откровенно говоря, не имеют ничего общего с тем, с чем придётся столкнуться в реальных БД бизнес-приложений.
Некоторые задачи и БД описаны крайне плохо и запутанно, можно час биться, пытаясь понять, чего же хотели вообще авторы. Это бесит и демотивирует.
sql-tutorial, куда можно подглядывать за теорией, крутится вокруг MS SQL Server, диалект SQL которого местами очень сильно отличается от ANSI. Да и в целом, если уж и углубляться в дебри конкретной СУБД, пусть это лучше будет постгря, она уже на каждом шагу.
В качестве альтернативы quick start могу посоветовать sql-academy.org (да, сложных задач не очень много, но они по крайней мере действительно чему то научат) + книжка Алана Болье "Изучаем SQL" (в отличие от Грабера нормальный перевод на русский без ошибок, которые путают + нормально разобраны джоины, агрегатные и аналитические функции).
Z55
Не могу согласиться, ибо:
Примеры там отличные, в том числе и потому, что они из неидеальных БД. И именно поиски того, "почему не работает, ведь всё правильно" заставляют думать над тем, как оно вообще устроено и какие могут быть варианты, которые ты не учёл в решении "в лоб". И поиск этого понимания куда более ценен простого оперирования селектами и джойнами.
Задачи там сформулированы вполне нормально. Если уж совсем непонятно, можно посмотреть на ожидаемый рекордсет, чтобы уж точно понять что от тебя хотят.
Тут я не могу утверждать, но по моему мнению, во времена, когда зарождался sql-ex, MS SQL Server был куда более популярнее постгреса. Но ещё раз, могу и ошибаться. А для решения задач, по крайней мере первого этапа, различия в диалектах практически ничтожно.