M Вам до сих пор никто не ответил, так что отвечу я. Последние две темы в курсе вроде не разбирались. Но гугл вам в помощь. Всякие вьюшки в курсе есть. Бесплатный курс от вас ни есть ни пить не просит, откройте, посмотрите оглавление, пройдите. Лишним не будет. Я честно не понимаю почему люди так парятся по sql. Там нечего учить, просто нужно знать основы английского и формировать запросы по конкретному синтаксису. В деталях ИИ-шка поможет. Ну это как HTML или CSS - там нечего учить. Нужен не sql, а понимание как работают БД. Как представляются данные. А запросить их не проблема.
Фотография
нажмите — покажем
нажмите — покажем
♾️ Дырявый UNIQUE: как индекс пропускает дубликаты
Ты создал ограничение UNIQUE и уверен, что база под надёжной защитой. Но она радостно пропустит в таблицу хоть миллион строк с пустыми значениями.
⚙️ Почему так происходит
🔹 По стандарту SQL значение NULL означает «неизвестность».
🔹 Равна ли одна неизвестность другой? Нет. Правило гласит: NULL != NULL.
🔹 Раз пустые значения не равны друг другу, ограничение уникальности их пропускает. PostgreSQL, MySQL и Oracle позволят создавать бесконечные пустые профили.
CREATE TABLE users (
email VARCHAR(100) UNIQUE
);
-- База сохранит обе строки:
INSERT INTO users (email) VALUES (NULL), (NULL);
⚠️ Сюрприз от SQL Server
В MS SQL Server логика другая. Он считает NULL конкретным значением и разрешает добавить его только один раз. Вторая пустая строка выдаст ошибку.
🚀 Что делать
🔸 Если поле всегда должно быть заполнено — добавляй ограничение NOT NULL.
🔸 В PostgreSQL 15+ можно явно запретить дубликаты пустых строк правилом UNIQUE NULLS NOT DISTINCT.
💡 Уникальность защищает только известные данные, а для пустых нужны свои правила.
❤6👍6🤯2
9 · 1.8K ·