на случай если казалось бы все разобрал, глянуть еще и
https://tproger.ru/articles/dorozhnaya-karta-obucheniya-sql-dlya-dostizheniya-urovnya-middle-
самое интересное что тобы мы не делали с null то это всегда null. например 5 + null это null
DESCRIBE SCHEMA.TABLE_NAME — описание таблицы, какие поля есть
разница между UNION и UNION ALL в том что UNION оставит только уникальные значения, уберутся все одинаковые строчки (во всех местах) UNION ALL тупо все выводит
алиас столбца дается в последний момент, нельзя по нему делать where но другое плюс минус можно
having без гроуп бай деньги на ветер

Нарастающий итог доходов. тут интересно что таблица ждоинится сама на себя где дата

выяснить бы че такое оконные функции

чето на сеньерском


Транзакции имеют несколько уровней изоляции
самая топовая

если что то написано между begin; commit; то это транзакция
Нормальные формы
1я
каждое поле содержит одно значение, нет составных данных. Например фио разделяется на 3 атрибута а не на одно
2я
Отсутствие дублей и первичные ключи
3я
это когда данные в табличке относятся только к сути этой таблицы, сами к себе, короч без лишнего мусора

- Как можно заменить NULL значения на определенное значение в SQL?Ответ: Для замены NULL значений можно использовать оператор «COALESCE». Например, чтобы заменить NULL значения в столбце «price» таблицы «products» на значение 0, нужно выполнить следующий запрос: SELECT COALESCE(price, 0) FROM products;
- Как можно проверить, что два столбца имеют одинаковые значения, включая NULL, в SQL?Ответ: Для этого нужно использовать оператор «IS NOT DISTINCT FROM». Он сравнивает значения двух столбцов, включая NULL значения. Например, чтобы проверить, что значения столбцов «name» и «address» в таблице «users» совпадают, нужно выполнить следующий запрос: SELECT FROM users WHERE name IS NOT DISTINCT FROM address;
ЕБУЧЕЕ ВРЕМЯ
В какие города можно улететь из Парижа (Paris) и сколько времени это займёт?
SELECT town_to,
CAST((time_in - time_out) AS TIME) AS flight_time
FROM Trip WHERE town_from = "Paris"
| DATE | YYYY-MM-DD |
| DATETIME | YYYY-MM-DD hh:mm:ss |
| TIMESTAMP | YYYY-MM-DD hh:mm:ss |
| TIME | hhh:mm:sss |
| YEAR | YYYY — полный формат YY или Y — сокращённый формат, который возвращает год в пределах 2000-2069 для значений 0-69 и год в пределах 1970-1999 для значений 70-99 |
Длинна чего то там
MAX(LENGTH(name))
Определить, сколько потратил в 2005 году каждый из членов семьи. В результирующей выборке не выводите тех членов семьи, которые ничего не потратили.
SELECT t1.member_name, t1.status,SUM(t2.amount * t2.unit_price) as costs
FROM FamilyMembers t1
left JOIN payments t2 ON t1.member_id = t2.family_member
WHERE date like "2005%"
Group BY t1.member_name,t1.status HAVING costs IS NOT NULL
На случай если нам надо разделить ФИО на части
UPDATE laravel_crm_development.organizations SET
director_surname = trim(SUBSTRING_INDEX(director_fio,' ',1)),
director_name = trim(SUBSTRING_INDEX(SUBSTRING_INDEX(director_fio,' ',-2),' ',1)),
director_patronymic = trim(SUBSTRING_INDEX(SUBSTRING_INDEX(director_fio,' ',-2),' ',-1))