SQL и БД Learning – Telegram
SQL и БД Learning
10.2K subscribers
797 photos
9 videos
22 files
445 links
№ 5060218708

Изучаем SQL с нуля

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/SQl_and_DB_Learning
Download Telegram
OPENJSON в Microsoft SQL Server

OPENJSON
- это встроенная функция в Microsoft SQL Server, которая позволяет разбирать JSON-строки на отдельные элементы. Это полезно в случае, когда необходимо проанализировать данные, хранящиеся в формате JSON.

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

OPENJSON также может использоваться для обновления данных в таблице на основе JSON-строки.
Как выбрать все записи из таблицы Persons, где значение поля LastName в алфавитном порядке находится между значениями "Hansen" и "Pettersen"?
Anonymous Quiz
51%
SELECT * FROM Persons WHERE LastName BETWEEN 'Hansen' AND 'Pettersen'
18%
SELECT * FROM Persons WHERE LastName>'Hansen' AND LastName<'Pettersen'
9%
SELECT * FROM Persons WHERE LastName>='Hansen' AND LastName<='Pettersen'
13%
SELECT * FROM Persons WHERE LastName ASC 'Hansen' AND 'Pettersen'
10%
Посмотреть ответ
👍8
This media is not supported in your browser
VIEW IN TELEGRAM
Azure Data Studio

Azure
Data Studio - это инструмент для управления базами данных и выполнения запросов к ним, который разработан компанией Microsoft для операционных систем Windows, macOS и Linux. Он является бесплатной альтернативой Microsoft SQL Server Management Studio (SSMS) и поддерживает не только SQL Server, но и другие базы данных, такие как PostgreSQL, MySQL и Azure SQL Database.

Azure Data Studio имеет более легкий интерфейс по сравнению с SSMS и может использоваться как для управления базами данных в локальной сети, так и для работы с облачными базами данных в Azure. Кроме того, Azure Data Studio обеспечивает возможность совместной работы и обмена данными с помощью Git и Jupyter Notebook.

Azure Data Studio обладает достаточно широким функционалом и возможностями, на видео представлен "Интеллектуальные фрагменты SQL кода"
👍51
🖥 Как работает CASE SQL

Оператор CASE в SQL используется для создания условий, когда нужно выполнить различные операции в зависимости от значения столбца или выражения.

Оператор CASE может быть использован в двух форматах:

CASE без ELSE:
SELECT column1,
CASE
WHEN column2 = 'value1' THEN 'result1'
WHEN column2 = 'value2' THEN 'result2'
END AS column3
FROM table;


В этой форме оператора CASE используется блок WHEN для проверки значения столбца column2. Если значение равно value1, то будет возвращено значение result1. Если значение равно value2, то будет возвращено значение result2. Если значение не соответствует ни одному из условий, то для столбца column3 будет возвращено значение NULL.

CASE с ELSE:
SELECT column1,
CASE column2
WHEN 'value1' THEN 'result1'
WHEN 'value2' THEN 'result2'
ELSE 'result3'
END AS column3
FROM table;


В этой форме оператора CASE используется значение столбца column2 в блоке CASE. Если значение равно value1, то будет возвращено значение result1. Если значение равно value2, то будет возвращено значение result2. Если значение не соответствует ни одному из условий, то будет возвращено значение result3.

Оба формата оператора CASE могут использоваться в запросах на выборку данных в SQL. Они позволяют создавать условия, когда нужно выполнить различные операции в зависимости от значения столбца или выражения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
SQL_cheatsheet.png
971 KB
Шпаргалка по SQL

Шпаргалок по SQL много не бывает, так что держите, полезно освежить перед собеседованием

Здесь освещаются самые основные операторы, такие как JOIN, IN, LIKE, BETWEEN, ORDER BY, а также много всего ещё
Пользуйтесь)
👍7
Как в sql посчитать количество повторяющихся значений

Можно попробовать использовать функцию COUNT() в сочетании с оператором GROUP BY.

Предположим, у нас есть таблица "orders" с колонками "customer_name" и "order_date", и мы хотим посчитать, сколько заказов было сделано каждым клиентом. Мы можем написать следующий SQL-запрос:

SELECT customer_name, COUNT(*) as order_count
FROM orders
GROUP BY customer_name


Этот запрос выберет все уникальные значения из колонки "customer_name" в таблице "orders" и подсчитает количество строк, связанных с каждым уникальным значением. Результатом запроса будет таблица со столбцами "customer_name" и "order_count", в которой каждая строка будет показывать клиента и количество его заказов.
👍13
Как устроена виртуальная машина SQLite

SQL – концептуально странный язык. Вы пишете ваше приложение на одном языке, скажем, на JavaScript, а затем направляете базе данных команды, написанные на совершенно другом языке – SQL.

После этого база данных компилирует и оптимизирует эту команду на SQL, выполняет её и возвращает вам данные. Такой метод кажется ужасно неэффективным, но, всё-таки, ваше приложение может проделывать сотни таких операций в секунду. Просто безумие!

Смотреть статью
👍31😱1
SQL-запросы, которые вы рано или поздно погуглите

Отвечу на вопросы, которые возникают у новичков в SQL, в частности в PostgreSQL и BigQuery. Мы не будем обсуждать совсем базовые SELECT, CREATE или DROP.

Для удобства восприятия будем использовать тестовые данные. Первая таблица players содержит данные о пользователях и дате установки мобильной игры:

|playerId|name |installationDate|game |os |
|--------|----------------|----------------|----------|----------|
|9e8a0174|Трофимова Алёна |2023-07-30 |basketball|iOS 16 |
|3e2e04ad|Семенова Алиса |2022-07-21 |consumer |iOS 13 |
|642eafb2|Абрамова Диана |2022-06-06 |curtain |iOS 15 |
|8c231f49|Ефимова Ульяна |2022-06-21 |conductor |Android 12|
|a085caf1|Захаров Михаил |2023-04-11 |appear |Android 11|
|c4deb869|Николаева Марта |2022-03-31 |possible |iOS 11 |


вторая, levels, — даты прохождения игроком с определенным ID того или иного уровня:

|playerId|level|completionDate|
|--------|-----|--------------|
|7b50274d|6 |2023-05-17 |
|b0c9a9da|20 |2022-02-19 |
|09b3d5b5|15 |2022-07-22 |
|52b3bfa9|11 |2022-02-18 |
|3e2e04ad|17 |2022-08-17 |
|642eafb2|17 |2022-04-14 |
|8c231f49|20 |2022-05-30 |
|a085caf1|20 |2023-02-24 |
|36545ec1|16 |2022-08-10 |
|44e9653f|3 |2023-06-02 |



Я буду верстать в BigQuery на таком же датасете, так что использую соответствующий диалект.


INNER JOIN
Это тип объединения по умолчанию, и он оставит наименьшее число строк. Слово INNER можно опустить:

SELECT
p.playerId,
installationDate,
game,
level,
completionDate
FROM `project.tutorials.players` AS p
JOIN `project.tutorials.levels` AS l ON p.playerId = l.playerId;



Посмотрим, что здесь происходит:

В строках 1-6 мы выбираем только необходимые столбцы;
7-8: командой AS задаем псевдонимы таблицам;
8: определяем логику объединения по совпадающим playerId. Это означает также, что мы сохраним данные только об первом попавшемся уровне.

Получим всего четыре строки:
|playerId|name |installationDate|game |level|completionDate|
|--------|--------------|----------------|---------|-----|--------------|
|3e2e04ad|Семенова Алиса|2022-07-21 |consumer |17 |2022-08-17 |
|642eafb2|Абрамова Диана|2022-06-06 |curtain |17 |2022-04-14 |
|8c231f49|Ефимова Ульяна|2022-06-21 |conductor|20 |2022-05-30 |
|a085caf1|Захаров Михаил|2023-04-11 |appear |20 |2023-02-24 |


OUTER JOIN
Этот тип объединения, напротив, куда «добрее» и в случае FULL-объединения сохранит записи обо всех игроках и всех пройденных уровнях:

SELECT
p.playerId,
installationDate,
game,
level,
completionDate
FROM `project.tutorials.players` AS p
FULL OUTER JOIN `project.tutorials.levels` AS l ON p.playerId = l.playerId;



У нас появятся записи, где playerId пуст, поскольку попросили мы идентификаторы только из первой таблицы:

Читать
👍6
С помощью какой конструкции можно проанализировать использование индекса?
Anonymous Quiz
32%
INDEX USAGE
14%
TEST INDEX
32%
EXPLAIN
7%
Все варианты неверные
16%
Посмотреть ответ
👍5
📢 Как заменить null на 0 в SQL

Чтобы заменить значение NULL на 0 в SQL, можно использовать функцию COALESCE. Эта функция принимает несколько аргументов и возвращает первый не NULL аргумент.

Если все аргументы NULL, функция вернет NULL. Вот пример использования COALESCE для замены значений NULL на 0:

SELECT COALESCE(column_name, 0) FROM table_name;

В этом запросе column_name - имя столбца, значения которого нужно заменить, а table_name - имя таблицы, в которой находится столбец. Функция COALESCE заменит все значения NULL в столбце на 0. Если значение столбца не NULL, то функция вернет его без изменений.

Также можно использовать оператор IS NULL для проверки на NULL и замены его на 0. Вот пример:

SELECT CASE WHEN column_name IS NULL THEN 0 ELSE column_name END FROM table_name;

Этот запрос также заменит значения NULL на 0. Если значение столбца не NULL, то запрос вернет его без изменений.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
Руководство для начинающих по MySQL

MySQL — одна из наиболее используемых СУБД, т.к. она поддерживается почти всеми ОС и распространяется как свободное программное обеспечение. Поэтому, MySQL популярна среди разработчиков сайтов и веб-приложений.

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

https://wiki.gentoo.org/wiki/MySQL/Startup_Guide/ru
2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🔎 Поиск последних изменений в таблице в Oracle Database с помощью запроса

SELECT ... FROM ... VERSIONS BETWEEN TIMESTAMP <start_dt> AND <end_dt>

Возвращаются изменения в диапазоне дат.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
💻PostgreSQL: исполнение запроса из Bash-скрипта

Для выполнения запроса в PostgreSQL от имени пользователя 'postgres' используйте команду:
sudo -u postgres psql -d dbname -c "SELECT * FROM table;"

Здесь dbname — это название вашей БД, table – имя таблицы.
Разумеется, используем права суперпользователя sudo для переключения пользователя на postgres, psql является инструментом командной строки PostgreSQL, а ключ -c нужен для выполнения конкретного запроса.

Для более аккуратного форматирования вывода можно использовать ключ -t, который выводит данные построчно, и -X для того, чтобы .psqlrc не обрабатывался командой psql.

Подобное выполнение SQL-запросов прямо из оболочки может быть особенно актуальным, если вы настраиваете какую-нибудь систему по ssh.
Пишите, кстати, если сталкивались с такими кейсами
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Приемы очистки данных в SQL

1. Выявление и удаление дублирующих записей

SELECT DISTINCT column1, column2, ...
FROM table_name;

В качестве альтернативы можно использовать GROUP BY, чтобы сгруппировать похожие записи вместе, а затем удалить количество записей в каждой группе.

SELECT column_name, COUNT(*)
FROM table_name
GROUP BY column_name
HAVING COUNT(*) > 1;


2. Стандартизация текстовых полей

UPDATE table_name
SET column_name = UPPER(column_name);


Вы также можете использовать функцию REPLACE для замены определенных символов или строк в текстовых полях. Например:

UPDATE table_name
SET column_name = REPLACE(column_name, 'OldString', 'NewString');


3. Обработка отсутствующих или нулевых значений

SELECT column1, column2, ...
FROM table_name
WHERE column_name IS NULL;


Затем вы можете удалить эти записи или заменить отсутствующие значения значением по умолчанию. Например:

UPDATE table_name
SET column_name = 'DefaultValue'
WHERE column_name IS NULL;


4. Удаление кривых символов

UPDATE table_name
SET column_name = REPLACE(column_name, 'InvalidChar', '');

UPDATE table_name
SET column_name = REGEXP_REPLACE(column_name, '[^a-zA-Z0–9 ]', '');


5. Обработка выбросов

Чтобы определить и удалить выбросов, мы можем использовать функции AVG и STDDEV для расчета среднего и стандартного отклонения столбца.

SELECT AVG(column_name), STDDEV(column_name)
FROM table_name;


6. Корректировка форматов дат

Функция STR_TO_DATE может преобразовать строку в формат даты. Синтаксис функции следующий:

SELECT STR_TO_DATE(date_string, format_string)
FROM table_name;


7. Очистка текстовых данных


Функция REPLACE может заменить подстроку в строке. Функция TRIM позволяет удалить из строки ведущие и последующие пробелы. Синтаксис выглядит следующим образом:

SELECT UPPER(column_name)
FROM table_name;


SELECT REPLACE(column_name, 'old_string', 'new_string')
FROM table_name;
SELECT TRIM(column_name)
FROM table_name;


8. Проверка типов данных

Важно убедиться, что ваши данные имеют правильный тип данных. Для проверки и преобразования типов данных можно использовать функции CAST или CONVERT. Например:

SELECT CAST(column_name AS INT)
FROM table_name;

SELECT CONVERT(column_name, DATE)
FROM table_name;
👍4
Уроки по T-SQL

Предлагаем вашему просмотру подробные 7 уроков.

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

📘Видео урок
👍1
SQLMesh - это фреймворк для преобразования данных, который позволяет командам, работающим с данными, использовать преимущества DevOps. Она позволяет ученым, аналитикам и инженерам эффективно выполнять и развертывать преобразования данных, написанные на SQL или Python.

SQLMesh обеспечивает точность и эффективность построения конвейеров данных с помощью пробвинутого решения DataOps для преобразования, тестирования и совместной работы.

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

pip install sqlmesh

Github
Подробнее
Документация
👍2