Пишем на SQL
1.93K subscribers
43 photos
7 videos
12 files
116 links
Уроки по SQL. Изучаем базы данных на примере СУБД ORACLE, MySQL, MS SQL Server, PostgreSql

Мой курс по SQL и базам данных:
https://prime-soft.biz/courses/sql

Связь со мной @iliahohlov
Download Telegram
Здравствуйте, друзья!

Иногда, при написании SQL-запросов, нам бывает нужно использовать конкретную дату при выборе данных (например, выбирать платежи, которые были сделаны начиная от такой-то даты).
Нельзя вписывать дату в запрос в удобном нам ("человеческом") виде (представлении). Нельзя писать, например, так:

SELECT *
FROM PAYMENTS
WHERE DATE_CREATE > 20.12.2021

Нельзя писать и так:
SELECT *
FROM PAYMENTS
WHERE DATE_CREATE > '20.дек.2021'

Несмотря на то, что нам (людям) любое из этих представлений даты понятны, СУБД должна точно распознавать дату. Что в дате указывает на число, что на месяц и что на год.

Есть нсколько способов как вписать нужную дату в SQL-запрос. Эти способы могут быть немного отличаться в разных СУБД (с датами работаем всегда осторожно).

В ORACLE мы можем использовать функцию to_date для преобразования в дату из введённый текстовой информации.

SELECT *
FROM PAYMENTS
WHERE DATE_CREATE > to_date('20.12.2021', 'dd.mm.yyyy')

Вот так много нужно написать, чтобы Оракл правильно принял дату в SQL-запрос. Используем функцию to_date, которой сначала указываем непосредственно дату, понятную нам, а затем указываем маску как эту дату распознавать.

Почти всегда есть несколько способов написания даты в SQL-запрос. И для ORACLE есть способ покороче:

SELECT *
FROM PAYMENTS
WHERE DATE_CREATE > DATE '2021-12-20'

При использовании фразы DATE не нужно указывать маску распознавания даты, но саму дату придётся вписывать только в формате год-месяц-день.
👍201
Здравствуйте, дорогие друзья!
Как насчёт небольшой задачи по SQL?
Имеется таблица TBL, имеющая, среди прочих, столбец NMBR. В столбце есть только значения 1 и 0. Требуется к числу NMBR прибавить 2 для строк, где оно равно 0, и прибавить 3, где оно равно 1.
В конце дня напишу правильный ответ!
Всем спасибо за активное участие!
Чтобы решение работало во всех СУБД, воспользуемся CASE:

UPDATE TBL
SET NMBR = CASE WHEN NMBR = 0 THEN NMBR + 2 ELSE NMBR + 3 END
👍10
18:00! Пятница 🙂
И немного айти юмора
👍1
🤣24🔥3👍2
Здравствуйте, друзья!
Всем хорошего старта в новой рабочей (учебной) неделе!
Предлагаю небольшую задачу по SQL (базовый уровень). Будет ниже 🙂
Есть SQL запрос:
SELECT NAME FROM CUSTOMER WHERE STATE = 'VA'
Какой из запросов ниже будет возвращать идентичный результат?
Anonymous Quiz
1%
SELECT name IN customer WHERE state IN ('VA');
10%
SELECT name IN customer WHERE state = 'VA';
0%
SELECT name IN customer WHERE state = 'V';
88%
SELECT name FROM customer WHERE state IN ('VA');
👍6
Друзья, подскажите, был бы интересен интенсивный курс по "Разработке в MySql"?

Чему мы научимся:

- разрабатывать высоконагруженные базы данных (Database design);

- программировать на языке SQL/PSM (внутреннем языке программирования MySQL, который аналогичен языку T-SQL в MS SQL Server и PL/SQL в ORACLE);

- создавать хранимые процедуры, функции, триггеры;

- использовать преимущества MyISAM и InnoDB таблицы для решения разных задач;

- выявлять ошибки в коде и бизнес-логике. Использовать для этого стандартные средства СУБД MySQL, которые она поставляет. Начиная от версии 5 и до 8ой;

- выявлять проблемные и долговыполняющиеся SQL-запросы и оптимизировать их;

- пользоваться транзакциями правильно, как это делают в больших софтверных компаниях;

- бороться с взаимными блокировками (DeadLocks);

- пользоваться вычислениями в запросах (аналоги аналитических / оконных функций);

- конфигурировать MySql, правильно выставлять параметры, обеспечивая максимальную производительность.

Какие нужны предварительные знания:
- разумеется базовые навыки SQL (умение писать запросы, пользоваться командами SELECT, INSERT, UPDATE и DELETE);
- желательно понимать что такое индексы и как ими пользоваться;
- навыки создания таблиц.

Идеальная подготовка - наш базовый курс "SQL. Базы данных. ORA­CLE. MS SQL Server. MySQL".

Формат курса:
- 12 он-лайн занятий (вебинары) три раза в неделю (пн, чт в 19:30 и сб в 9:00) по 1.5 часа;
- вебинары будут доступны в записи;
- самостоятельные практические задачи (д/з) с проверкой и разбором работ;
- закрытая группа в Телеграмм.

Предварительно стоимость обучения будет 12.000.

Пока планируется начать с 8го января.

Оставляйте вопросы в комментариях под этим постом.
👍6
Интересен интенсивный курс по "Разработке в MySql"?
Anonymous Poll
19%
Да, я иду!
22%
Нет, мне не интересно!
38%
Сомневаюсь сейчас!
22%
Дорогая цена.
Повторение - мать учения! Известная поговорка🙂
Скажите, возвращаетесь ли вы к SQL задачам, которые я присылал ранее и прорешиваете ли их повторно?
Важно повторять решения задач, особенно тех, где совершили ошибку. Ниже я размещу одну из прошлых задач, на которой примерно половина ответила не правильно. Предлагаю решить её ещё раз! 🙂
👍9
Все ли строки из таблицы VOUCHERS будут отобраны следующим запросом?

SELECT * FROM VOUCHERS WHERE ID_CODE = 1 UNION ALL SELECT * FROM VOUCHERS WHERE ID_CODE <> 1
Anonymous Quiz
49%
Да, все!
52%
Нет, не все!
👍2
Друзья, порекомендуйте, пожалуйста, систему видеоконференций!

Важно наличие: - демонстрации экрана; - чата; - возможности передавать слово на участника; - видеозаписи; - одновременное участие не менее 30 человек.
Anonymous Poll
32%
Zoom
14%
Microsoft Teams
18%
Яндекс. Телемост
6%
Skype
6%
Jazz от Сбер
1%
Pruffme
10%
Другая (напишите какая)
13%
Затрудняюсь ответить
Здравствуйте, друзья!

Всем хорошей пятницы и наступающих выходных!

Мы получили ещё один прекрасный отзыв! С радостью делимся!

***

Вам спасибо, что сопровождали на этом пу­ти. Очень рад, что нашел ваш курс, все очень понятно объясня­лось. До вас я считал что программирован­ие это не мое от сло­ва совсем, но дело было не во мне, а в подаче материала. Спа­сибо!
👍4
Спасибо Вам большое за ответы по программе конференций! Вы не только помогли с выбором, но и подсказали несколько новых интересных инструментов! 🤗🎉
Здравствуйте, друзья!

Нашёл на немецком сайте задачку по SQL. Подобные мы уже решали, предлагаю повторить! Уровень сложности: базовый.

Есть таблица (см.рисунок). Нужно найти повторяющиеся имена и вторым столбцом вывести цифру сколько раз повторяется имя.

Жду Ваше решение до вечера!
Вечером решим вместе!
👍4
Спасибо за участие и присланные решения! Лайком я отметил те, которые дадут правильный результат!
Конечно, самым простым решением будет группировка по полю (или набору полей), по которому определяется уникальная ли запись или такая уже есть, с подсчётом количества, и потом используем HAVING чтобы оставить в результате те, где полученное количество более одного.

Приведу источник:
https://de.education-wiki.com/9404113-sql-interview-questions

Вариант с использованием аналитических функций тоже допустим, но сложноват ☺️
3
Доброе утро, друзья!

Интенсив разработки в MySQL начинаем с 8 января! Формат обучения: онлайн (вебинары) 12 уроков с продолжительностью минимум по 1.5 часа. График: пн и чт с 19:30 и сб с 9:30. Вебинары будут доступны в записи. + закрытая группа в Телеграмм с обсуждением и помощью решения д/з.

Узнать подробнее и записаться можно здесь: https://prime-soft.biz/courses/mysql

Чёрная пятница: до 8 декабря курс будет стоить 9.900, потом 12.000 р.
Всем доброй пятницы и хороших выходных!

По традиции, немного юмора:

 Microsoft провела анализ и выяснила, что русские читают само лицензионное соглашение - менее 1 секунды

🙂🙂🙂

Никакой другой промежуток времени не обладает такой вариабельностью, как
одна условная минута Майкрософта.
😁8🤷‍♂1👍1💩1🥴1
Есть таблица GOODS, имеющая, среди прочих, столбец GOOD_TYPE, определённый как INT(10) NOT NULL DEFAULT 0. Всё ли записи из таблицы GOODS будут выбраны запросом ниже?
SELECT * FROM GOODS WHERE COALESCE(NULLIF(GOOD_TYPE, -1), 0) <> -1
Anonymous Quiz
45%
Да, запрос выберет все записи из таблицы GOODS
55%
Нет, запрос выберет не все записи из таблицы GOODS
Друзья, напоминаю, что до 8го декабря (ещё 3 дня) действует хорошая скидка на наши курсы:

SQL. Базы данных. ORA­CLE. MS SQL Server. MySql
https://prime-soft.biz/courses/sql
6.900 вместо 12.000 (скидка >40%)

Программирование в PL/SQL (ORACLE)
https://prime-soft.biz/courses/plsql
9.900 вместо 18.000 (скидка 45%)

Программирование в SQL/PSM (MySql)
https://prime-soft.biz/courses/mysql
9.900 вместо 12.000 (скидка почти 20%)

💻
Краткий план нашего интенсива по MySQL


На примере создания базы данных для ERP-сисиемы управления складом и продажами научимся организовывать хранение данных, создавать, редактировать таблицы под разные виды использования. Разберём подробно движки таблиц, ключи, индексы, правила определения столбцов (чтобы избегать проблем на бою) и повторим нормализацию.

Основной блок курса - это программирование на языке SQL/PSM. Научимся создавать хранимые процедуры и функции. Разберём циклы, курсоры, хэндлеры, научимся логировать выполнение программных модулей, а также возможные возникающие ошибки. Разберём новые возможности, которые появились в MySQL, позволяющие логировать выполнение и поиск исключений максимально быстро. Научимся создавать триггеры.

Научимся правильно пользоваться транзакциями и освоим методы минимизации вероятности возникновения взаимных блокировок (deadlocks), как это делается в больших софтверных компаниях. Рассмотрим дополнительные особенности применительно к MySql. Научимся определять взаимные блокировки на бою и устранять их.

Ещё один интересный блок: выполнение расчётов в SQL-запросах. Не всегда нужно прибегать к написанию алгоритмов на языке программирования. Очень большие возможности дают вычисления в запросах. Например как вставить даты в таблицу "шахматкой", выбрать заказы, в которых пропущена нумерация позиций или распределить товары между складами равномерно, принимая различные параметры в расчёт. Это всё можно сделать одним запросом, одной командой SQL! В MySQL нет аналитических функций (или пока нет), но вычисления в запросах дают даже более гибкий функционал.

Последний небольшой, но тоже важный блок - это конфигурация MySql сервера. Стандартные значения параметров сервера годятся для небольших сайтов, интернет-магазинов, а для более серьёзной нагрузки установка правильных значений играет очень важную роль в распределении ресурсов. Научимся конфигурировать параметры СУБД под разные задачи.

Для участников курса, по желанию (в рамках дополнительной практической нагрузки), можно будет поучаствовать в разработке нашего нового проекта SQL-Learn. Мы создадим несколько хранимых модулей, выполняющих часть бизнес логики. Вместе предварительно обсудим максимально оптимальную реализацию, напишем и протестируем программный код! Созданный функционал будет использоваться на сайте sql-learn.com и в одноимённом мобильном приложении. Выход приложения готовится весной 2024 года.
👍1