Data Science. SQL hub
По всем вопросам- @workakkk @itchannels_telegram - 🔥лучшие ит-каналы @ai_machinelearning_big_data - Machine learning @pythonl - Python @pythonlbooks- python книги📚 @datascienceiot - ml книги📚 РКН: https://vk.cc/cIi9vo #VRHSZ
Show more📈 Analytical overview of Telegram channel Data Science. SQL hub
Channel Data Science. SQL hub (@sqlhub) in the Russian language segment is an active participant. Currently, the community unites 35 825 subscribers, ranking 3 817 in the Technologies & Applications category and 18 104 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 35 825 subscribers.
According to the latest data from 20 June, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -37 over the last 30 days and by -11 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 7.26%. Within the first 24 hours after publication, content typically collects 3.88% reactions from the total number of subscribers.
- Post reach: On average, each post receives 2 603 views. Within the first day, a publication typically gains 1 389 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 11.
- Thematic interests: Content is focused on key topics such as sql, индекс, postgres, index, sqlite.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“По всем вопросам- @workakkk
@itchannels_telegram - 🔥лучшие ит-каналы
@ai_machinelearning_big_data - Machine learning
@pythonl - Python
@pythonlbooks- python книги📚
@datascienceiot - ml книги📚
РКН: https://vk.cc/cIi9vo
#VRHSZ”
Thanks to the high frequency of updates (latest data received on 21 June, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
-- Создаем таблицу
CREATE TABLE Colleges (
college_id INT PRIMARY KEY,
college_code VARCHAR(20) NOT NULL,
college_name VARCHAR(50)
);
-- Создаем индекс
CREATE INDEX college_index
ON Colleges(college_code);
Здесь мы создаем индекс с именем college_index в таблице Colleges, используя столбец college_code.
Примечание: Увидеть разницу в скорости при малом количестве данных в таблице проблематично. Однако при большом количестве данных можно легко заметить разницу в скорости между использованием индексов и без них.
CREATE UNIQUE INDEX для уникальных значений
Если нужно создать индексы для уникальных значений в столбце, следует использовать ограничение CREATE UNIQUE INDEX.
Например:
-- Создаем уникальный индекс
CREATE UNIQUE INDEX college_index
ON Colleges(college_code);
Здесь мы создаем уникальный индекс с именем college_index в таблице Colleges, используя столбец college_code.
Удалить индекс из таблиц
Для удаления индекса из таблицы используется оператор DROP INDEX.
Например:
SQL Server
DROP INDEX Colleges.college_index;
PostgreSQL, Oracle
DROP INDEX college_index;
MySQL
ALTER TABLE Colleges
DROP INDEX college_index;
Здесь мы удаляем ограничение college_index из таблицы Colleges.
Примечание: Удаление индекса означает, что удаляется только индекс. Данные в исходной таблице остаются неизменными.
@sqlhubCREATE TABLE Orders (
order_id INT PRIMARY KEY,
amount INT CHECK (amount > 0)
);
Здесь столбец amount принимает значения только больше 0, это является условием для проверки. Теперь давайте попробуем вставить данные в таблицу Orders.
Пример №1
-- Вставляем значение 100.
-- Данные добавлены
INSERT INTO Orders(amount) VALUES(100);
Пример №2
-- Вставляем значение -5.
-- Ошибка при добавлении данных
INSERT INTO Orders(amount) VALUES(-5);
Примечание: Ограничение CHECK используется для проверки данных только при вставке. Чтобы проверить, существует ли строка, следует использовать оператор EXISTS.
❗️Создать именованное ограничение CHECK
Популярной практикой является создание именованных ограничений, чтобы их было легче изменять и удалять.
Например:
-- Создаем именнованое ограничение amountCK для столбца amount.
-- Ограничение проверяет, чтобы значение для вставки было больше 0
CREATE TABLE Orders (
order_id INT PRIMARY KEY,
amount INT,
CONSTRAINT amountCK CHECK (amount > 0)
);
❗️Ограничение CHECK в существующей таблице
Мы можем добавить ограничение CHECK к существующей таблице, используя оператор ALTER TABLE.
Например:
-- Добавляем неименованное ограничение CHECK
ALTER TABLE Orders
ADD CHECK (amount > 0);
Также можно добавить и именованное ограничение CHECK:
-- Добавляем именованное ограничение CHECK - amountCK
ALTER TABLE Orders
ADD CONSTRAINT amountCK CHECK (amount > 0);
Примечание: Если мы попытаемся добавить ограничение amount > 0 к столбцу, значение которого уже меньше 0, мы получим ошибку.
❗️Удалить ограничение CHECK
Мы можем удалить ограничение CHECK, используя оператор DROP.
Например:
SQL Server, PostgreSQL, Oracle
-- Удаляем ограничение CHECK - amountCK
ALTER TABLE Orders
DROP CONSTRAINT amountCK;
MySQL
-- Удаляем ограничение CHECK - amountCK
ALTER TABLE Orders
DROP CHECK amountCK;
@sqlhubBACKUP DATABASE.
Например:
BACKUP DATABASE orders
TO DISK = 'C:\orders_backup.bak';
Здесь мы создаем файл резервной копии базы данных orders на диске C с именем orders_backup.bak.
Примечание: Распространено использование расширения .bak для файлов резервных копий БД, однако это не является обязательным.
Резервное копирование только новых изменений в SQL
В SQL мы также можем сделать резервную копию только новых изменений по сравнению с предыдущей резервной копией, используя команду WITH DIFFERENTIAL. Например:
BACKUP DATABASE orders
TO DISK = 'C:\orders_backup.bak'
WITH DIFFERENTIAL;
Здесь мы добавляем только новые изменения в предыдущий файл резервной копии. Следовательно, эта команда работает быстрее, нежели создание резервной копии БД с нуля.
Восстановление базы данных из резервной копии
Для восстановления файла резервной копии в системе управления базой данных (СУБД) используется оператор RESTORE DATABASE. Например:
RESTORE DATABASE orders
FROM DISK = 'C:\orders_backup.bak';
Здесь мы восстанавливаем файл резервной копии orders_backup.bak в базе данных orders.
@sqlhubSELECT Customers.customer_id, Customers.first_name, Orders.amount
FROM Customers
FULL OUTER JOIN Orders
ON Customers.customer_id = Orders.customer;
На картинке видно как отработает данный код.
Здесь мы выбираем столбцы customer_id и first_name (из таблицы Customers) и столбец amount (из таблицы Orders). В результате получаем те строки, в которых есть совпадение между customer_id (таблицы Customers) и customer (таблицы Orders) вместе со всеми остальными строками из обеих таблиц.
Синтаксис оператора FULL OUTER JOIN
Синтаксис оператора FULL OUTER JOIN следующий:
SELECT столбцы
FROM таблица1
FULL OUTER JOIN таблица2
ON таблица1.имя_столбца = таблица2.имя_столбца;
Оператор FULL OUTER JOIN с оператором WHERE
Вот пример использования оператора FULL OUTER JOIN с оператором WHERE:
SELECT Customers.customer_id, Customers.first_name, Orders.amount
FROM Customers
FULL OUTER JOIN Orders
ON Customers.customer_id = Orders.customer
WHERE Orders.amount >= 500;
Здесь мы объединяем две таблицы и выбираем строки, в которых сумма (amount) больше или равна 500.
Оператор FULL OUTER JOIN с псевдонимами AS
Мы можем использовать псевдонимы AS с оператором FULL OUTER JOIN, чтобы сделать наш код короче и чище. Например:
SELECT C.cat_name, P.prod_title
FROM Categories AS C
FULL OUTER JOIN Products AS P
ON C.cat_id = P.cat_id;
Здесь мы выбираем общие строки между таблицами Categories и Products.
@sqlhubSELECT customer_name, COUNT(*) as order_count
FROM orders
GROUP BY customer_name
Этот запрос выберет все уникальные значения из колонки "customer_name" в таблице "orders" и подсчитает количество строк, связанных с каждым уникальным значением. Результатом запроса будет таблица со столбцами "customer_name" и "order_count", в которой каждая строка будет показывать клиента и количество его заказов.
@sqlhubCASE без 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. Они позволяют создавать условия, когда нужно выполнить различные операции в зависимости от значения столбца или выражения.
@sqlhubTEMPORARY в команде CREATE TABLE:
CREATE TEMPORARY TABLE название_таблицы
Удобно создавать временную таблицу на выборке из другой таблицы:
CREATE TEMPORARY TABLE customer_temp SELECT * FROM customer;
@sqlhubSELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;
Пример:
SELECT * FROM customers WHERE last_name LIKE 'Sm%';
Этот запрос вернет все строки из таблицы customers, в которых last_name начинается с букв "Sm".
Оператор LIKE чувствителен к регистру символов, то есть "A" и "a" будут восприниматься как разные символы. Однако, для того чтобы выполнить поиск, игнорируя регистр символов, можно использовать функцию UPPER или LOWER, например:
SELECT * FROM employees WHERE UPPER(first_name) LIKE '%JOHN%';
@sqlhub
Available now! Telegram Research 2025 — the year's key insights 
