SQL Academy: всё о реляционных БД и SQL
По всем вопросам и коммерческим предложениям писать @LadanovNick Купить рекламу: https://telega.in/c/sqlacademyofficial Чат студентов SQL Academy https://t.me/sqlacademyorg
نمایش بیشتر📈 تحلیل کانال تلگرام SQL Academy: всё о реляционных БД и SQL
کانال SQL Academy: всё о реляционных БД и SQL (@sqlacademyofficial) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 11 356 مشترک است و جایگاه 10 920 را در دسته فناوری و برنامهها و رتبه 57 450 را در منطقه روسيا دارد.
📊 شاخصهای مخاطب و پویایی
از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 11 356 مشترک جذب کرده است.
بر اساس آخرین دادهها در تاریخ 26 ژوئن, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر 170 و در ۲۴ ساعت گذشته برابر 6 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 15.08% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 11.53% واکنش نسبت به کل مشترکان کسب میکند.
- دسترسی پستها: هر پست به طور میانگین 1 712 بازدید دریافت میکند. در اولین روز معمولاً 1 309 بازدید جمعآوری میشود.
- واکنشها و تعامل: مخاطبان بهطور فعال حمایت میکنند؛ میانگین واکنش به هر پست 16 است.
- علایق موضوعی: محتوا بر موضوعات کلیدی مانند sql, строка, индекс, auto_increment, created_at تمرکز دارد.
📝 توضیح و سیاست محتوایی
نویسنده این فضا را محل بیان دیدگاههای شخصی توصیف میکند:
“По всем вопросам и коммерческим предложениям писать @LadanovNick
Купить рекламу: https://telega.in/c/sqlacademyofficial
Чат студентов SQL Academy
https://t.me/sqlacademyorg”
به لطف بهروزرسانیهای پرتکرار (آخرین داده در تاریخ 27 ژوئن, 2026)، کانال همواره بهروز و دارای دسترسی بالاست. تحلیلها نشان میدهد مخاطبان بهطور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامهها تبدیل کردهاند.
CREATE TABLE file_blobs (
id BIGINT PRIMARY KEY,
name VARCHAR(255),
mime VARCHAR(100),
size INT,
-- для дедупликации
sha256 BINARY(32),
-- сам файл
data LONGBLOB NOT NULL,
created_at TIMESTAMP,
UNIQUE KEY (sha256)
);
Когда хранить снаружи (ссылки) 🔗
Подходит, если:
🔹файлов много или они крупные (фото/видео/доки);
🔹нужна раздача через CDN (быстрая доставка);
🔹важны дешёвое хранилище и лёгкие бэкапы БД.
Плюсы: масштабируемо, дёшево, быстро отдаётся.
Минусы: две системы (БД + хранилище).
Мини-пример
CREATE TABLE files (
id BIGINT PRIMARY KEY,
name VARCHAR(255),
mime VARCHAR(100),
size INT,
sha256 BINARY(32),
-- https://... или s3://...
storage_url VARCHAR(2048) NOT NULL,
created_at TIMESTAMP,
UNIQUE KEY (sha256)
);
Быстрый чек-лист выбора ✅
🔹Размер: маленькие → BLOB; большие → ссылка.
🔹Транзакционность (вместе с бизнес-данными): нужна → BLOB.
🔹 Отдача файлов пользователям: нужен CDN → ссылка.
🔹Бэкапы и восстановление: хочется лёгких дампов → ссылка.
🔹Стоимость хранения: экономим → ссылка.
Вывод
🔹BLOB хорош для маленьких файлов и строгой консистентности.
🔹Ссылки — почти всегда лучший выбор для больших объёмов, скорости и экономии.
-- 1) Добавим столбец с текущим временем по умолчанию
ALTER TABLE users
ADD COLUMN updated_at timestamptz NOT NULL DEFAULT now();
-- 2) Функция, которую будет вызывать триггер
CREATE OR REPLACE FUNCTION trg_set_updated_at() RETURNS trigger
LANGUAGE plpgsql AS $$
BEGIN
-- записываем текущее время
NEW.updated_at := now();
-- возвращаем изменённую строку
RETURN NEW;
END$$;
-- 3) Сам триггер: срабатывает перед UPDATE каждой строки
CREATE TRIGGER set_updated_at
BEFORE UPDATE ON users
FOR EACH ROW
EXECUTE FUNCTION trg_set_updated_at();
Полезно знать 🧠
🔹Временно отключить/включить:
ALTER TABLE users DISABLE TRIGGER set_updated_at;
ALTER TABLE users ENABLE TRIGGER set_updated_at;
🔹Удалить триггер:
DROP TRIGGER set_updated_at ON users;
🔹Если несколько триггеров одного типа — они срабатывают по алфавиту имён.
Давайте им понятные префиксы (t10_…, t20_…).
Где новички чаще всего ошибаются ⚠️
1️⃣ «Скрытая магия»: непонятно, что меняет данные.
Решение — документируйте триггеры и давайте им говорящие имена.
2️⃣ Массовые операции: FOR EACH ROW на миллионах строк может замедлить UPDATE. Если возможно — переносите часть логики в периодические задачи или используйте FOR EACH STATEMENT.
SELECT c.id, o.id
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id;
a) Вернутся только клиенты с заказами
b) Вернутся все заказы, даже без клиентов
c) Вернутся все клиенты, даже если у них нет заказов
d) Дубликаты строк будут удалены
Правильный ответ: c) Вернутся все клиенты, даже если у них нет заказов
2️⃣ Вопрос 2: Что фильтрует группы после агрегирования?
SELECT department, COUNT(*) AS cnt
FROM employees
GROUP BY department
-- ?
a) WHERE cnt > 5
b) HAVING cnt > 5
c) ORDER BY cnt > 5
d) WINDOW cnt > 5
Правильный ответ: b) HAVING cnt > 5
3️⃣ Вопрос 3: Какой запрос лучше всего использует составной индекс (department, salary)?
a) WHERE salary > 1000
b) WHERE department = 'IT' AND salary > 1000
c) WHERE department LIKE '%IT%'
d) ORDER BY salary
Правильный ответ: b) WHERE department = 'IT' AND salary > 1000
SELECT DATE_FORMAT(
STR_TO_DATE('16-08-2024 21:15', '%d-%m-%Y %H:%i'),
'%Y/%m/%d %H:%i'
);
a) 2024/16/08 21:15
b) 16/08/2024 21:15
c) 2024/08/16 21:15
d) Ошибка парсинга
Правильный ответ: c) 2024/08/16 21:15
2️⃣ Вопрос 2: Какой результат вернёт функция LAST_DAY?
SELECT LAST_DAY('2024-02-10');
a) 2024-02-28
b) 2024-02-29
c) 2024-03-01
d) NULL
Правильный ответ: b) 2024-02-29
3️⃣ Вопрос 3: Чему равна разница в минутах?
SELECT TIMESTAMPDIFF(
MINUTE,
'2024-08-16 08:30:00',
'2024-08-16 10:05:00'
);
a) 90
b) 95
c) 120
d) 155
Правильный ответ: b) 95
4️⃣ Вопрос 4: Что произойдёт при добавлении интервала, если пересекается полночь?
SELECT TIMESTAMP('2024-08-16', '23:00:00') + INTERVAL 2 HOUR;
a) 2024-08-16 25:00:00
b) 2024-08-17 00:00:00
c) 2024-08-17 01:00:00
d) 2024-08-16 23:02:00
Правильный ответ: c) 2024-08-17 01:00:00
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
