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

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

Связь со мной @iliahohlov
Download Telegram
Всем доброй пятницы!
Сегодня мне написал один из наших учеников - Юрий. Он проходил у нас курс SQL некоторое время назад. Приятно получить такие слова. И еще разрешил использовать свой текст для вдохновления!💪
👍6
Здравствуйте, друзья!
Спасибо Вам за обучение с нами!

На протяжении всего курса по SQL, надо сказать, есть всего лишь три сложные темы: соединения таблиц (урок 3), группировка (урок 5) и подзапросы (урок 7).

Каждую из сложных тем трудно начинать понимать. Это новое и многие новые моменты мозг может сопротивляться усваивать. Это нормально. Интенсивно мозг способен воспринимать, чаще всего, только определённую порцию информации. В этот момент, желательно, чтобы Вас при просмотре урока никто не отвлекал: даже дети (если смотрите урок дома) и руководитель (если обучаетесь на работе).

Вы погружаетесь в новые знания и осваиваете новые умения. То, чему Вы научитесь в течение 27ми уроков - это Ваш будущий хлеб! Вы осваиваете МЕГАВОСТРЕБОВАННУЮ профессию. Это очень важно. Всего лишь 27 уроков. При концентрации на обучении Вас ничто не должно отвлекать!
Если с первого раза урок дался трудно, Вы можете посмотреть его ещё раз! Если у Вас возникнут любые вопросы - пожалуйста, всегда их задавайте! Любые вопросы задавайте! Мы их ждём🙂
👍3
Здравствуйте, друзья!

Предлагаю решить очередную небольшую задачу по SQL. В этот раз пробую оформить задачу как викторину! 🤗
Имеется таблица CODES из одного столбца:

CODE -------- 0 10 30 50 Какой результат вернёт запрос? SELECT MIN(CODE)   FROM CODES WHERE CODE BETWEEN 15 AND 25
Anonymous Quiz
9%
0
4%
10
18%
15
69%
NULL
👍3
Здравствуйте друзья!
Предлагаю ещё одну небольшую задачу по SQL.

Пусть есть таблица PIN_CODES, имеющая столбец CODE_INT. В таблице всего 4 строчки со следующими целыми значениями в этом столбце: 1, 2, 3 и 4.
Что будет получено в результате выполнения нижеприведённого запроса?
SELECT MIN(CODE_INT), MAX(CODE_INT) FROM PIN_CODES
Anonymous Quiz
0%
Получим значения 1 и 1
5%
Получим значения NULL и NULL
82%
Получим значения 1 и 4
13%
Будет ошибка выполнения запроса
👍4😁2
Здравствуйте, друзья!
Начнём день с разминки по SQL.
Выполнение какой из команд, приведённых ниже, удалит все строки из таблицы Persons, то есть оставит её вообще без строк?
Anonymous Quiz
16%
DELETE FROM Persons WHERE NAME <> NULL
1%
UPDATE Persons SET NAME = NULL
15%
DROP TABLE Persons
68%
TRUNCATE TABLE Persons
🔥5👍2
Очень интересный получился в этот раз разброс голосов за варианты ответов. Чуть позже я объясню правильный вариант. А пока подождём решения остальных 🙂
Подводим итоги сегодняшнего голосования 🤗
Больше половины ответили правильно! 💪
Из перечисленных выше команд SQL только последней удастся очистить таблицу Persons от всех строк в ней.

Команда TRUNCATE TABLE Persons разом опустошит таблицу, она останется совсем без записей.

Команда DELETE написана так, что согласно условию WHERE не найдётся ни одной подходящей записи для удаления. Ни для одной строки не выполнится условие, указанное во WHERE. Результат сравнения с NULL всегда будет отрицательным. Для проверки на NULL можно использовать только IS и IS NOT.

Команда UPDATE не удаляет строки из таблицы. В нашем прмере она заменяет существующее значение в столбце NAME на NULL для всех строк (WHERE-то нет).

А команда DROP вообще удаляет саму таблицу из базы данных😌 вместе с данными конечно. И селектить больше будет неоткуда. Таблицы больше не будет в базе данных🙈

Надеюсь, во всем разобрались и всё теперь точно понятно! 🙂

....

Если Вы изучаете еще только первые уроки нашего курса, не знали некоторых команд SQL и ответили в этом вопросе наугад, то этим вопросом я приоткрыл завесу будущих тем 🙂
🔥3
Здравствуйте, друзья!

Предлагаю решить ещё одну SQL задачу. Каким из этих запросов из таблицы Persons точно бы выбрался сотрудник со значением "Петров Иван Георгиевич" в поле NAME? Для Гуру: в СУБД настроен регистрозависимый поиск.
Anonymous Quiz
17%
SELECT * FROM Persons WHERE UPPER(NAME) LIKE '%Петр%'
36%
SELECT * FROM Persons WHERE NAME LIKE '%Петр__%'
46%
SELECT * FROM Persons WHERE NAME = '%Петров%'
👍2
Завтра дам объяснение правильного ответа.

Только опубликовал викторину, а уже правильный ответ есть!
Спасибо за активное участие! 🙂👍
Самый первый ответ, который я получил от вас по этой задаче был правильный💪
Теперь эта задача лидирует по количеству процентов неправильных ответов😱.
Наверное сказывается конец рабочей недели🙂. Или, на первый взгляд, лёгкость этой задачи😉
Правильный ответ - второй.

Команда:

SELECT * FROM Persons WHERE NAME LIKE '%Петр__%'

выберет строки из таблицы Persons, у которых в столбце NAME значение, похожее на указанный фрагмент: есть фраза "Петр", спереди которой могут быть ещё символы и сзади которой должны быть минимум ещё два символа или больше. Одно нижнее подчеркивание в маске поиска оператора LIKE обозначает один обязательный символ. Маска поиска '%Петр__%' после слова "Петр" имеет два нижних подчеркивания, значит что точно будут отобраны такие строки из таблицы Persons, в которых в столбце NAME есть фраза Петр и после неё есть ещё минимум два символа и после (и перед) возможен(!) ещё текст неопределенной длины - на это указывают знаки процентов.
Команда:

SELECT * FROM Persons WHERE UPPER(NAME) LIKE '%Петр%'

не выберет вообще никого. Так как до сравнения значения из столбца NAME будут преобразованы в верхний регистр (все буквы до сравнения с маской поиска станут большими, то есть ЗАГЛАВНЫМИ), а в самой маске поиска есть символы в нижнем регистре.

Повторю другими словами: ни для какой строки преобразованное к верхнему регистру значение столбца NAME уже не будет подобно маске поиска в которой есть символы в нижнем регистре.
И последняя команда:

SELECT * FROM Persons WHERE NAME = '%Петров%'

выберет только строки, у которых в столбце NAME значение ТОЧНО РАВНОЕ "%Петров%" (в ячейке вписано процент, Петров, процент).

В последней команде нет оператора LIKE 😱
Поиск будет осуществлён не по маске, а по конкретному значению в столбце.
Для сравнения используется символ равенства, а не LIKE.