SQL, базы данных. Часть 17.
При использовании в SELECT-запросах операторов OR и AND можно легко ошибиться в составлении логического выражения. И проблема таких ошибок в том, что запрос выполняется как будто ошибки нет, но данные выводятся неверные.
Если у вас мало опыта в написании таких SQL-запросов, то можно легко не заметить проблему. Давайте разберем несколько популярных ошибок.
Работать будем с таблицей team, которая содержит список разработчиков (Картинка 1).
Основные критерии оценки — это уровень владения технологией: junior, middle или senior, и базовый язык программирования, на котором пишет разработчик.
Нам как менеджерам поступает заявка на разработку проекта и на основании этой заявки мы должны подобрать необходимых разработчиков.
Представьте, что сейчас нас интересуют только мидлы и сеньоры. Напишем SQL-запрос:
SELECT * FROM team WHERE level = 'middle' AND level = 'senior';
После выполнения запроса мы увидим пустую таблицу как на Картинке 2.
И тут мы столкнулись с первой ошибкой. В нашем запросе база данных по очереди берет строку и проверяет находится ли в колонке level значение "middle" И значение "senior". Оператор AND — это условие одновременности. То есть исходя из нашего запроса в поле level должно находится одновременно и "middle", и "senior", что невозможно, так разработчик может быть только одного уровня.
Почему мы допустили такую ошибку? И дело в формулировках, когда я озвучивал задание, то написал, что нас интересуют только мидлы И сеньоры. Это правильное выражение с точки зрения русского языка, но неверное с точки зрения логики. Чтобы получить верный результат надо чтобы поле level содержало ИЛИ "middle", ИЛИ "senior". Поэтому заменим AND на OR:
SELECT * FROM team WHERE level = 'middle' OR level = 'senior';
Теперь разработчики подобраны верно (Картинка 3).
Такую ошибку легко допустить, если в формулировке задачи стоит союз И. Но не стоит его напрямую переносить в SQL-запрос. Возможно здесь кроется ошибка, особенно если мы сравниваем с одним полем.
👉 JavaStart. Подписаться
При использовании в SELECT-запросах операторов OR и AND можно легко ошибиться в составлении логического выражения. И проблема таких ошибок в том, что запрос выполняется как будто ошибки нет, но данные выводятся неверные.
Если у вас мало опыта в написании таких SQL-запросов, то можно легко не заметить проблему. Давайте разберем несколько популярных ошибок.
Работать будем с таблицей team, которая содержит список разработчиков (Картинка 1).
Основные критерии оценки — это уровень владения технологией: junior, middle или senior, и базовый язык программирования, на котором пишет разработчик.
Нам как менеджерам поступает заявка на разработку проекта и на основании этой заявки мы должны подобрать необходимых разработчиков.
Представьте, что сейчас нас интересуют только мидлы и сеньоры. Напишем SQL-запрос:
SELECT * FROM team WHERE level = 'middle' AND level = 'senior';
После выполнения запроса мы увидим пустую таблицу как на Картинке 2.
И тут мы столкнулись с первой ошибкой. В нашем запросе база данных по очереди берет строку и проверяет находится ли в колонке level значение "middle" И значение "senior". Оператор AND — это условие одновременности. То есть исходя из нашего запроса в поле level должно находится одновременно и "middle", и "senior", что невозможно, так разработчик может быть только одного уровня.
Почему мы допустили такую ошибку? И дело в формулировках, когда я озвучивал задание, то написал, что нас интересуют только мидлы И сеньоры. Это правильное выражение с точки зрения русского языка, но неверное с точки зрения логики. Чтобы получить верный результат надо чтобы поле level содержало ИЛИ "middle", ИЛИ "senior". Поэтому заменим AND на OR:
SELECT * FROM team WHERE level = 'middle' OR level = 'senior';
Теперь разработчики подобраны верно (Картинка 3).
Такую ошибку легко допустить, если в формулировке задачи стоит союз И. Но не стоит его напрямую переносить в SQL-запрос. Возможно здесь кроется ошибка, особенно если мы сравниваем с одним полем.
👉 JavaStart. Подписаться
👍6⚡3🔥3❤2
Что делает оператор break в цикле?
Anonymous Quiz
14%
Прекращает выполнение цикла и переходит к следующей итерации
4%
Пропускает текущую итерацию и переходит к следующей
0%
Увеличивает значение счётчика цикла
81%
Прекращает выполнение цикла и выходит из него
1%
Посмотреть ответ
👍8✍2⚡1🎉1
Друзья, привет!
Вступайте в наш JavaStart чат, где можно обсудить друг с другом различные вопросы касательно учебы по Java и других технологий, а также обсудить опыт собеседований и других тем.
В чате уже можно найти некоторые практические советы, которые помогут вам выбрать правильный ракурс в изучении Java.
Давайте объединяться!
Вступай ⬇️
https://t.me/+Ruy6h16YrtYzMzVi
👉 JavaStart. Подписаться
Вступайте в наш JavaStart чат, где можно обсудить друг с другом различные вопросы касательно учебы по Java и других технологий, а также обсудить опыт собеседований и других тем.
В чате уже можно найти некоторые практические советы, которые помогут вам выбрать правильный ракурс в изучении Java.
Давайте объединяться!
Вступай ⬇️
https://t.me/+Ruy6h16YrtYzMzVi
👉 JavaStart. Подписаться
👍6❤2🔥1🤓1
Всем привет! Это снова Леонид 🙂
Хочу рассказать вам, как начинал изучение программирования, а вы опишите в комментариях, что вам кажется самой сложной темой.
У меня было около трех-четырех попыток начать изучение Java на протяжении нескольких лет.
Моя специальность в университете - инженер автоматических систем управления не сильно связана с программированием, поэтому можно сказать, что я начинал с нуля.
Многие мои друзья с университета учились на направлении программирования. Думаю после общения с ними выбрал Java, но сами они не спешили этим заниматься, а университет, к сожалению, без дополнительного обучения не приближает к работе.
Первые мои попытки заканчивались достаточно быстро, помню были проблемы даже c foreach циклом, но самой большой проблемой было ООП. Только с финальной попытки у меня получилось это преодолеть. Было много вопросов, зачем нужны объекты, что это вообще такое.
Занимался обучением я около года и сегодня понимаю что многие из моих действий были не сильно эффективными, хотя проводил за учебой около 30 часов в неделю.
На первых собеседованиях я понял, что мои знания не структурированные. О многих вопросах и технологиях я что-то знал, но не мог об этом полноценно рассказать, а если интервьюер хотел углубиться в конкретную тему, то это становилось проблемой.
А сейчас расскажите, что вам кажется самым сложным в изучении Java или других технологий.
👉 JavaStart. Подписаться
Хочу рассказать вам, как начинал изучение программирования, а вы опишите в комментариях, что вам кажется самой сложной темой.
У меня было около трех-четырех попыток начать изучение Java на протяжении нескольких лет.
Моя специальность в университете - инженер автоматических систем управления не сильно связана с программированием, поэтому можно сказать, что я начинал с нуля.
Многие мои друзья с университета учились на направлении программирования. Думаю после общения с ними выбрал Java, но сами они не спешили этим заниматься, а университет, к сожалению, без дополнительного обучения не приближает к работе.
Первые мои попытки заканчивались достаточно быстро, помню были проблемы даже c foreach циклом, но самой большой проблемой было ООП. Только с финальной попытки у меня получилось это преодолеть. Было много вопросов, зачем нужны объекты, что это вообще такое.
Занимался обучением я около года и сегодня понимаю что многие из моих действий были не сильно эффективными, хотя проводил за учебой около 30 часов в неделю.
На первых собеседованиях я понял, что мои знания не структурированные. О многих вопросах и технологиях я что-то знал, но не мог об этом полноценно рассказать, а если интервьюер хотел углубиться в конкретную тему, то это становилось проблемой.
А сейчас расскажите, что вам кажется самым сложным в изучении Java или других технологий.
👉 JavaStart. Подписаться
👍10❤3🔥3⚡1
SQL, базы данных. Часть 18.
Приоритет операторов AND, OR.
У нас есть таблица team с разработчиками. И на этот раз нам нужно разработать бэкенд для сайта. И для этого нам нужны все Python и PHP разработчики. Напишем:
SELECT * FROM team
WHERE language = 'python' OR language = 'php';
Обратите внимание, что нужны нам все Python И PHP разработчики, но пишем мы OR. После выполнения запроса мы получим такую таблицу как на Картинке 2.
В итоговую таблицу попали и те и другие программисты. Отлично. Но давайте расширим условие. Скажем, нам нужны только middle разработчики на этих языках. Добавим:
SELECT * FROM team
WHERE
language = 'python' OR
language = 'php' AND
level = 'middle';
После выполнения мы получим такую таблицу как на Картинке 3.
И результат довольно странный, в итоговой таблице присутствуют также джуниоры и сеньоры. И дело в том, что операторы OR и AND имеют приоритет выполнения и у AND он выше. Поэтому в первую очередь база данных находит всех мидлов, которые пишут на PHP. Такому условию соответствует только одна запись, а далее срабатывает оператор OR, который добавляет всех Python-разработчиков.
То есть мы ищем ИЛИ мидлов на PHP, ИЛИ Python-разработчиков без указания их уровня владения языком. Поэтому в таблицу также попали джуниоры и сеньоры.
Чтобы решить поставленную задачу, нужно четко расставить приоритет с помощью скобок. Как в математике. Поместим скобки справа и слева от OR:
SELECT * FROM team
WHERE
(language = 'python' OR
language = 'php') AND
level = 'middle';
Теперь в таблице остались только мидлы на Python и PHP (Картинка 4).
Каждый раз когда в одном запросе встречаются OR и AND, обращайте внимание на порядок выполнения, иначе можно легко получить неверные данные.
Вообще, даже не так, каждый раз когда у вас есть в запросе есть OR и AND применяйте скобки для расстановки приоритетов, даже если уверены в своём коде.
Такая практика позволит избежать неприятных логических ошибок.
👉 JavaStart. Подписаться
Приоритет операторов AND, OR.
У нас есть таблица team с разработчиками. И на этот раз нам нужно разработать бэкенд для сайта. И для этого нам нужны все Python и PHP разработчики. Напишем:
SELECT * FROM team
WHERE language = 'python' OR language = 'php';
Обратите внимание, что нужны нам все Python И PHP разработчики, но пишем мы OR. После выполнения запроса мы получим такую таблицу как на Картинке 2.
В итоговую таблицу попали и те и другие программисты. Отлично. Но давайте расширим условие. Скажем, нам нужны только middle разработчики на этих языках. Добавим:
SELECT * FROM team
WHERE
language = 'python' OR
language = 'php' AND
level = 'middle';
После выполнения мы получим такую таблицу как на Картинке 3.
И результат довольно странный, в итоговой таблице присутствуют также джуниоры и сеньоры. И дело в том, что операторы OR и AND имеют приоритет выполнения и у AND он выше. Поэтому в первую очередь база данных находит всех мидлов, которые пишут на PHP. Такому условию соответствует только одна запись, а далее срабатывает оператор OR, который добавляет всех Python-разработчиков.
То есть мы ищем ИЛИ мидлов на PHP, ИЛИ Python-разработчиков без указания их уровня владения языком. Поэтому в таблицу также попали джуниоры и сеньоры.
Чтобы решить поставленную задачу, нужно четко расставить приоритет с помощью скобок. Как в математике. Поместим скобки справа и слева от OR:
SELECT * FROM team
WHERE
(language = 'python' OR
language = 'php') AND
level = 'middle';
Теперь в таблице остались только мидлы на Python и PHP (Картинка 4).
Каждый раз когда в одном запросе встречаются OR и AND, обращайте внимание на порядок выполнения, иначе можно легко получить неверные данные.
Вообще, даже не так, каждый раз когда у вас есть в запросе есть OR и AND применяйте скобки для расстановки приоритетов, даже если уверены в своём коде.
Такая практика позволит избежать неприятных логических ошибок.
👉 JavaStart. Подписаться
👍5✍3❤2⚡2🔥2
Какой метод вызывается автоматически при создании объекта класса?
Anonymous Quiz
2%
start()
3%
run()
14%
main()
61%
constructor()
7%
void()
4%
create()
8%
Посмотреть ответ
👍4🎉3❤1🔥1👏1
Всем привет!
Хотим с вами поделиться информацией про наш курс, который будет анонсирован уже в начале июня.
Все обучение вас будет сопровождать ваш личный ментор. Вы в любое время сможете задать вопросы, например, после просмотра лекции или при сдаче домашнего задания, также обсудить технологии или попросить дополнительный материал.
Помимо этого, у вас будет больше 5 часов собеседований один на один со своим ментором. Собеседования будут максимально приближены к реальным техническим собеседованиям на позиции junior/middle разработчика. Это очень сильно помогает в подготовке к собеседованиям на первую работу!
Всего будет три собеседования на разных этапах курса. Они будут проходить в Zoom. В зависимости от пройденного материала длительность собеседований будет от одного до двух часов. Ментор оценит ваши знания и подскажет над чем нужно еще поработать.
Помимо технических скиллов не стоит забывать про софт скиллы - это умение справляться с проблемными ситуациями. Работодатель очень часто смотрит на это. Бывают ситуации, когда на собеседовании заведомо дают задачу, к которой нет решения и смотрят, как себя поведет человек. Поэтому очень важно проработать и такие моменты.
👉 JavaStart. Подписаться
Хотим с вами поделиться информацией про наш курс, который будет анонсирован уже в начале июня.
Все обучение вас будет сопровождать ваш личный ментор. Вы в любое время сможете задать вопросы, например, после просмотра лекции или при сдаче домашнего задания, также обсудить технологии или попросить дополнительный материал.
Помимо этого, у вас будет больше 5 часов собеседований один на один со своим ментором. Собеседования будут максимально приближены к реальным техническим собеседованиям на позиции junior/middle разработчика. Это очень сильно помогает в подготовке к собеседованиям на первую работу!
Всего будет три собеседования на разных этапах курса. Они будут проходить в Zoom. В зависимости от пройденного материала длительность собеседований будет от одного до двух часов. Ментор оценит ваши знания и подскажет над чем нужно еще поработать.
Помимо технических скиллов не стоит забывать про софт скиллы - это умение справляться с проблемными ситуациями. Работодатель очень часто смотрит на это. Бывают ситуации, когда на собеседовании заведомо дают задачу, к которой нет решения и смотрят, как себя поведет человек. Поэтому очень важно проработать и такие моменты.
👉 JavaStart. Подписаться
👍7🔥3🤝2👨💻1
SQL, базы данных. Часть 19.
Сортировка результатов.
В SQL часто кроме фильтрации данных, также часто требуется отсортировать их по одному из столбцов.
В первом уроке мы написали SQL-запрос для получения данных о совершеннолетних пользователях (Картинка 1). Посмотрим на него еще раз:
SELECT last_name, first_name, birthday, age FROM users WHERE age >= 18;
Обратите внимание, что сейчас данные никак не упорядочены. Ни по фамилии, ни по имени, ни по дате рождения. Но давайте добавим после конструкции WHERE: ORDER BY last_name:
SELECT last_name, first_name, birthday, age
FROM users WHERE age >= 18 ORDER BY last_name;
Получим результат как на Картинке 2. После выполнение данного SQL запроса мы получим таблицу отсортированную по столбцу last_name (фамилия). Так как last_name хранит строки, то сортировка происходит в алфавитном порядке.
Разумеется, сортировать можно не только по текстовым полям. Например, можно написать ORDER BY birthday:
SELECT last_name, first_name, birthday, age
FROM users
WHERE age >= 18
ORDER BY birthday;
И получить данные упорядоченные по дате рождения в хронологическом порядке как на Картинке 3.
А если в конструкции ORDER BY после имени столбца написать DESC, то данные будут отсортированы в обратном порядке — свежие даты выше. Смотрим на Картинку 4.
SELECT last_name, first_name, birthday, age
FROM users
WHERE age >= 18
ORDER BY birthday DESC;
Про ключевое слово DESC часто спрашивают на собеседовании на позицию Junior разработчика или Trainee. Могут даже спросить и мидла. Данное ключевое слово очень часто применяется в повседневной практики на коммерческом проекте! Так что запомните это SQL слово)
👉 JavaStart. Подписаться
Сортировка результатов.
В SQL часто кроме фильтрации данных, также часто требуется отсортировать их по одному из столбцов.
В первом уроке мы написали SQL-запрос для получения данных о совершеннолетних пользователях (Картинка 1). Посмотрим на него еще раз:
SELECT last_name, first_name, birthday, age FROM users WHERE age >= 18;
Обратите внимание, что сейчас данные никак не упорядочены. Ни по фамилии, ни по имени, ни по дате рождения. Но давайте добавим после конструкции WHERE: ORDER BY last_name:
SELECT last_name, first_name, birthday, age
FROM users WHERE age >= 18 ORDER BY last_name;
Получим результат как на Картинке 2. После выполнение данного SQL запроса мы получим таблицу отсортированную по столбцу last_name (фамилия). Так как last_name хранит строки, то сортировка происходит в алфавитном порядке.
Разумеется, сортировать можно не только по текстовым полям. Например, можно написать ORDER BY birthday:
SELECT last_name, first_name, birthday, age
FROM users
WHERE age >= 18
ORDER BY birthday;
И получить данные упорядоченные по дате рождения в хронологическом порядке как на Картинке 3.
А если в конструкции ORDER BY после имени столбца написать DESC, то данные будут отсортированы в обратном порядке — свежие даты выше. Смотрим на Картинку 4.
SELECT last_name, first_name, birthday, age
FROM users
WHERE age >= 18
ORDER BY birthday DESC;
Про ключевое слово DESC часто спрашивают на собеседовании на позицию Junior разработчика или Trainee. Могут даже спросить и мидла. Данное ключевое слово очень часто применяется в повседневной практики на коммерческом проекте! Так что запомните это SQL слово)
👉 JavaStart. Подписаться
🔥4👍3❤2✍2⚡1
Каким образом можно реализовать наследование в Java?
Anonymous Quiz
2%
С помощью ключевого слова inherits
12%
С помощью ключевого слова implements
0%
С помощью ключевого слова inheritsFrom
83%
С помощью ключевого слова extends
0%
С помощью ключевого слова implementsBy
2%
Посмотреть ответ
👍5👨💻2⚡1✍1❤1🎉1
Всем привет!
Расскажу немного про себя, как и почему я создавал курс.
Как рассказывал ранее, я был первым из своих друзей и знакомых, кто начал работать Java разработчиком. Спустя примерно год опыта на первой работе, многие из моих знакомых тоже захотели себя в этом попробовать.
Часто были вопросы вроде: с чего начать, какие видео посмотреть, какую книгу лучше выбрать и т.д. Сложно было помочь с такого масштаба вопросами, потому что когда учился сам, то было много разных источников, которые уже не собрать, да и эффективность многих из них тоже под вопросом.
Я продолжал строить свою карьеру, для перехода из одной компании в другую около сотни собеседований было вполне нормальной практикой. Так накопился большой опыт собеседований и материалов для подготовки. Параллельно с этим, поток желающих начать, как и желающих уже сменить работу, не уменьшался.
Недостаток эффективности в обучении все еще сохранялся, особенно в продвинутых темах как Spring, Hibernate и прочие, не говоря уже про собеседования и pet проекты. После успешных кейсов своих друзей я решил создать курс. Я хорошо помнил свои проблемы в обучении, видел с чем сталкиваются другие и чего не хватает для понимания сложных тем.
Помимо цели обучения, есть цель устройства на работу. Пройдя очень много собеседований, я начал понимать, как это работает. Первое, что нужно сделать, это попасть на собеседование, нужно хорошее резюме, и пройти HR (HR делит ваше резюме на 2, значит нужно его умножить на 3? а если нечего умножать?). Далее собеседование. На самом старте собеседований не много, значит даже к первому нужно быть максимально готовым.
Учитывая все особенности получения первой работы, я перешел к созданию курса. После обучения нескольких потоков людей уже было несколько редакций и расширений курса, так как требования к junior разработчикам все-таки растут.
👉 JavaStart. Подписаться
Расскажу немного про себя, как и почему я создавал курс.
Как рассказывал ранее, я был первым из своих друзей и знакомых, кто начал работать Java разработчиком. Спустя примерно год опыта на первой работе, многие из моих знакомых тоже захотели себя в этом попробовать.
Часто были вопросы вроде: с чего начать, какие видео посмотреть, какую книгу лучше выбрать и т.д. Сложно было помочь с такого масштаба вопросами, потому что когда учился сам, то было много разных источников, которые уже не собрать, да и эффективность многих из них тоже под вопросом.
Я продолжал строить свою карьеру, для перехода из одной компании в другую около сотни собеседований было вполне нормальной практикой. Так накопился большой опыт собеседований и материалов для подготовки. Параллельно с этим, поток желающих начать, как и желающих уже сменить работу, не уменьшался.
Недостаток эффективности в обучении все еще сохранялся, особенно в продвинутых темах как Spring, Hibernate и прочие, не говоря уже про собеседования и pet проекты. После успешных кейсов своих друзей я решил создать курс. Я хорошо помнил свои проблемы в обучении, видел с чем сталкиваются другие и чего не хватает для понимания сложных тем.
Помимо цели обучения, есть цель устройства на работу. Пройдя очень много собеседований, я начал понимать, как это работает. Первое, что нужно сделать, это попасть на собеседование, нужно хорошее резюме, и пройти HR (HR делит ваше резюме на 2, значит нужно его умножить на 3? а если нечего умножать?). Далее собеседование. На самом старте собеседований не много, значит даже к первому нужно быть максимально готовым.
Учитывая все особенности получения первой работы, я перешел к созданию курса. После обучения нескольких потоков людей уже было несколько редакций и расширений курса, так как требования к junior разработчикам все-таки растут.
👉 JavaStart. Подписаться
👍14🔥4⚡2🤩1