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
Fake2db - это инструмент, который предназначен для создания и заполнения фиктивных данных в игрушечных базах данных.

Он предназначен для использования в тестировании и поддерживает работу с такими базами данных, как sqlite, mysql, postgresql, mongodb, redis и couchdb.

pip install fake2db

GitHub
👍3
Подстановочные знаки (wildcards) в SQL

Подстановочный знак (wildcard) в SQL используется с оператором LIKE для замены одного или набора символов в строке. Например:

SELECT *

FROM Customers

WHERE last_name LIKE 'R%';

Здесь % (означает ноль или более символов) является подстановочным знаком (wildcard). Мы выбираем клиентов, чья фамилия (last_name) начинается с буквы R, за которой следует ноль или более символов.

Смотреть статью
👍7
HAVING COUNT

В данном видео автор демонстрирует решение задачи с помощью оператора HAVING. Идет он в сочетании с агрегатной функцией COUNT. Наглядно демонстрируется, как работает оператор GROUP BY HAVING COUNT.

📘Видео урок
👍2
#Вопросы_с_собеседования
Что такое самостоятельное присоединение?

Самосоединение настроено как запрос, используемый для сравнения с самим собой. Это используется для сравнения значений в столбце с другими значениями в том же столбце в той же таблице. ALIAS ES можно использовать для сравнения одной и той же таблицы.
👍3
Задача SQL

Дана пустая таблица publisher

Дана пустая таблица publisher с колонками id и name. На id стоит автоинкремент, а Синтаксис name имеет тип varchar(40). Какие из следующих запросов корректно отработают:

1) INSERT INTO publisher (name) VALUES ('OREILLY');
2) INSERT INTO publisher (name) VALUES ('О Reilly');
3) INSERT INTO publisher (name) VALUES ('O'Reilly');
4) INSERT INTO publisher (name) VALUES ('O-Reilly');


Ответ:

1, 2, 4
👍9
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