SQL Academy: всё о реляционных БД и SQL
11.9K subscribers
184 photos
1 video
2 files
30 links
По всем вопросам и коммерческим предложениям писать @LadanovNick

Купить рекламу: https://telega.in/c/sqlacademyofficial

Чат студентов SQL Academy
https://t.me/sqlacademyorg
Download Telegram
Работа 👨‍💻 с NULL значениями в SQL

В SQL NULL представляет отсутствие или неизвестность значения в поле. Это особое значение, которое требует специальных методов обработки, так как стандартные операторы сравнения не работают с NULL.
Давайте освежим знания по работе с ним!

Сравнение с NULL
🔹Операторы = или <> не могут использоваться для сравнения с NULL.
🔹Используйте IS NULL и IS NOT NULL для проверки значения на NULL

Функции для работы с NULL
🔹COALESCE(value1, value2, ...): Возвращает первое ненулевое значение из списка.
🔹IFNULL(value, default_value): Возвращает default_value, если value является NULL.
🔹NULLIF(expr1, expr2): Возвращает NULL, если expr1 равен expr2, иначе возвращает expr1.

Особенности NULL
🔹Любые арифметические операции с NULL возвращают NULL.
🔹При агрегатных вычислениях NULL значения игнорируются (например, SUM, AVG, COUNT).
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥9❤6🤩1
Какой оператор используется для проверки того, что значение столбца является NULL?
Anonymous Quiz
7%
= NULL
6%
== NULL
86%
IS NULL
1%
EQUALS NULL
🔥10👍7🤩2
Какая функция возвращает первое ненулевое значение из списка аргументов?
Anonymous Quiz
23%
IFNULL()
54%
COALESCE()
6%
NVL()
17%
ISNULL()
👍16🔥3❤2
Мы собрали базу вопросов по SQL для подготовки к собеседованиям! 🎯

Идеальный способ освежить знания и понять, что нужно подтянуть перед важным днем. 🧠

И для удобства сделали эти вопросы в виде карточек для запоминания, чтобы вы могли отметить вопросы выученными ✅ и больше не возвращаться к ним.

Перейти к базе вопросов по SQL
https://sql-academy.org/ru/interview-questions

Все вопросы и ответы — в открытом доступе! 📚
Присоединяйтесь к нам на GitHub и добавляйте свои вопросы или улучшайте текущие! 🌐🤝
https://github.com/SQL-Academy/ru.sql-academy
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤46🔥21👍11🎉2🥰1🤩1
🛠️ Индексы в SQL 📚
Индексы в SQL используются для ускорения выполнения запросов в базах данных. Они работают как указатели на данные в таблице, позволяя быстро находить нужные записи без необходимости полного сканирования всей таблицы. 🚀

🔹Создание индексов
Используйте команду CREATE INDEX для создания индекса на одном или нескольких столбцах.

CREATE INDEX имя_индекса
ON имя_таблицы(столбец1[, столбец2], …);


🔹Когда использовать индексы
1️⃣ На столбцах, которые часто используются в условиях WHERE, JOIN, ORDER BY, GROUP BY. 🔍
2️⃣ На столбцах с высокой селективностью (много уникальных значений).

⚠️ Потенциальные недостатки
1️⃣ Замедление операций вставки, обновления и удаления:
Каждый раз при изменении данных индексы должны быть обновлены, что может замедлить эти операции. 🐢
2️⃣ Дополнительное использование дискового пространства:
Индексы занимают место на диске, что может быть критично для больших баз данных. 💾
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤6🔥3😍2
Какой оператор SQL используется для создания индекса?
Anonymous Quiz
2%
CREATE TABLE
97%
CREATE INDEX
1%
CREATE VIEW
1%
CREATE DATABASE
😁7👍1
Какой из следующих вариантов является потенциальным недостатком использования большого количества индексов на таблице?
Anonymous Quiz
6%
Увеличение скорости выборки данных 🚀
85%
Замедление операций вставки и обновления 🐢
4%
Уменьшение размера базы данных 📉
4%
Повышение производительности операций вставки 🔄
🔥3
🌟 Считаем возраст человека правильно 🌟

Вы когда-нибудь задумывались, как правильно вычислить возраст человека в SQL? 🤔
Может показаться, что всё просто: возьмём текущий год, отнимем год рождения, и вуаля! Но ой, подстерегает соблазн ошибки! 😈

🚫 Неправильный подход:

SELECT YEAR(NOW()) - YEAR('2003-07-03 14:10:26');

Проблема такого подхода в том, что он не учитывает был ли день рождения у данного человека в этом году или ещё нет. То есть, если на момент запроса уже наступило 3-е июля (07-03), то человек отпраздновал свой день рождения и ему уже 21 лет, иначе ему по-прежнему 20 года. Разница функций YEAR тут будет бесполезна — в обоих случаях она даст 21 лет.

🤔 Что же делать?
Мы могли бы пойти по пути вычисления разницы в днях и деления на 365:

SELECT FLOOR(DATEDIFF(NOW(), '2003-07-03 14:10:26') / 365);

Это лучше, но всё же не совсем точно из-за наличия високосных годов. 📆

✅ Правильный подход с TIMESTAMPDIFF:

TIMESTAMPDIFF(YEAR, '2003-07-03 14:10:26', NOW());

Используя функцию TIMESTAMPDIFF, мы получаем точную разницу в годах между двумя датами, учитывая все нюансы календаря! 🎯

Так что, когда дело доходит до вычисления возраста, доверяйте TIMESTAMPDIFF — и ваши расчёты будут точны как никогда! 🚀💡
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64🔥19❤12🥰5
🧩 Оператор CASE в SQL

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

Два варианта синтаксиса:

1️⃣ Простой CASE
Используется для сравнения выражения с набором значений.

CASE выражение
WHEN значение1 THEN результат1
WHEN значение2 THEN результат2
ELSE результат_по_умолчанию
END


2️⃣ CASE с условиями
Используется для проверки условий.

CASE
WHEN условие1 THEN результат1
WHEN условие2 THEN результат2
ELSE результат_по_умолчанию
END


Примеры использования:


SELECT
product_name,
CASE category_id
WHEN 1 THEN '📱 Электроника'
WHEN 2 THEN '👕 Одежда'
WHEN 3 THEN '📚 Книги'
ELSE '🔄 Другое'
END AS category_name
FROM products;



SELECT
employee_name,
salary,
CASE
WHEN salary >= 100000 THEN '💎 Высокий доход'
WHEN salary >= 50000 THEN '💰 Средний доход'
ELSE '💼 Низкий доход'
END AS income_level
FROM employees;


Важные замечания ❗️
🔹Первое совпадение: Оператор CASE возвращает результат при первом совпавшем условии и игнорирует остальные.

🔹ELSE и NULL: Если ни одно из условий не выполнено и не указан блок ELSE, то возвращается NULL.

🔹Типы данных: Все возвращаемые значения в THEN и ELSE должны быть совместимых типов данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23❤3🔥3
Что вернет оператор CASE, если ни одно из условий WHEN не выполнено и блок ELSE не указан?
Anonymous Quiz
12%
Возникнет ошибка
77%
Вернет NULL
6%
Вернет первое значение WHEN
5%
Вернет 0
👍2
Можно ли использовать оператор CASE в разделе ORDER BY SQL-запроса?
Anonymous Quiz
38%
Да, можно
38%
Нет, только в SELECT
9%
Только в WHERE
15%
Нет, это невозможно
👍12❤1
🔐 Ограничения (CONSTRAINTS) в SQL

Ограничения (Constraints) в SQL используются для определения правил для данных в таблице, обеспечивая целостность, точность и надежность данных в базе данных. Они помогают предотвратить ввод некорректных данных и поддерживать взаимосвязи между таблицами. 🛡️

Описание ограничений

🔹 NOT NULL
Применение:
Используется, когда значение столбца всегда должно быть задано.

Пример:
В таблице users столбец email должен быть NOT NULL, чтобы каждый пользователь имел адрес электронной почты.

🔹 UNIQUE:
Применение:
Когда нужно предотвратить дублирование значений в столбце.

Пример:
В таблице employees столбец tax_id должен быть уникальным для каждого сотрудника.

🔹PRIMARY KEY
Применение:
Для уникальной идентификации каждой записи в таблице.

Пример:
Столбец id в таблице orders является первичным ключом.

🔹 FOREIGN KEY
Применение:
Для установления связей между таблицами и обеспечения согласованности данных.

Пример:
Столбец customer_id в таблице orders ссылается на id в таблице customers.

🔹CHECK
Применение: Для задания условий, которым должны соответствовать данные.

Пример:
В таблице products столбец price должен быть больше нуля.

🔹 DEFAULT
Применение:
Чтобы автоматически присваивать значение столбцу, если оно не указано при вставке.

Пример:
В таблице users столбец status по умолчанию имеет значение 'active'.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤5🔥4😍1
Какое ограничение используется для обеспечения ссылочной целостности между таблицами?
Anonymous Quiz
81%
FOREIGN KEY
3%
DEFAULT
10%
UNIQUE
6%
NOT NULL
👍9❤2🔥2