Please open Telegram to view this post
VIEW IN TELEGRAM
💯5👍3✍2🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6💯3👍1
SQL, базы данных. Часть 16.
Давайте добавим к нашему запросу по таблице products (Картинка 1) еще одно условие. Например, нам нужны не просто товары, а товары стоимостью до 10 000 рублей.
Был запрос:
SELECT * FROM products
WHERE country IN ("RU", "UA", "BL");
Стал запрос:
SELECT * FROM products
WHERE country IN ("RU", "UK", "BL") AND price < 10000;
Посмотрим на результат на Картинке 2.
Получили новую таблицу с тремя записями, которые удовлетовряют новому условию. И в этом условии мы совместили AND и IN. То есть в SQL-запросах можно совмещать логические операции AND и OR с оператором IN. Что делает их очень гибкими.
Теперь давайте попробуем выбрать товары, стоимостью от 10000 до 20000.
Условие с country уберем и напишем:
SELECT * FROM products
WHERE price >= 10000 AND price <= 20000;
В результате получается такая таблица как на Картинке 3.
Рассмотрим запрос. Как видите в этой конструкции мы снова написали двойное условие по одному полю — price. И с одной стороны всё логично и понятно, а с другой стороны эту конструкцию также можно упростить.
Напишем:
SELECT * FROM products
WHERE price BETWEEN 10000 AND 20000;
Теперь запрос звучит так: ВЫБРАТЬ все столбцы из таблицы products, в которых цена между 10000 и 20000. Звучит более чем понятно.
После запуска мы получим всё тот же один товар.
Вообще AND, OR, IN и BETWEEN — это основные конструкции для построения условий в SQL запросах и используются они в блоке WHERE. Вы можете применять их как поодиночке, так комбинируя в самых различных вариантах.
✅ JavaStart. Подписаться
Давайте добавим к нашему запросу по таблице products (Картинка 1) еще одно условие. Например, нам нужны не просто товары, а товары стоимостью до 10 000 рублей.
Был запрос:
SELECT * FROM products
WHERE country IN ("RU", "UA", "BL");
Стал запрос:
SELECT * FROM products
WHERE country IN ("RU", "UK", "BL") AND price < 10000;
Посмотрим на результат на Картинке 2.
Получили новую таблицу с тремя записями, которые удовлетовряют новому условию. И в этом условии мы совместили AND и IN. То есть в SQL-запросах можно совмещать логические операции AND и OR с оператором IN. Что делает их очень гибкими.
Теперь давайте попробуем выбрать товары, стоимостью от 10000 до 20000.
Условие с country уберем и напишем:
SELECT * FROM products
WHERE price >= 10000 AND price <= 20000;
В результате получается такая таблица как на Картинке 3.
Рассмотрим запрос. Как видите в этой конструкции мы снова написали двойное условие по одному полю — price. И с одной стороны всё логично и понятно, а с другой стороны эту конструкцию также можно упростить.
Напишем:
SELECT * FROM products
WHERE price BETWEEN 10000 AND 20000;
Теперь запрос звучит так: ВЫБРАТЬ все столбцы из таблицы products, в которых цена между 10000 и 20000. Звучит более чем понятно.
После запуска мы получим всё тот же один товар.
Вообще AND, OR, IN и BETWEEN — это основные конструкции для построения условий в SQL запросах и используются они в блоке WHERE. Вы можете применять их как поодиночке, так комбинируя в самых различных вариантах.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4✍3🔥3
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6💯4🔥1
Какое ключевое слово в Java используется для создания анонимного внутреннего класса?
Anonymous Quiz
10%
extends
11%
implements
56%
new
17%
instanceof
6%
Посмотреть ответ
✍3👍3🎉2
Что такое локальная переменная?
Anonymous Quiz
7%
Переменная, определенная вне методов, конструкторов или блоков
81%
Переменная, определенная внутри методов, конструкторов или блоков
4%
Статическая переменная, определенная вне методов, конструкторов или блоков
3%
Ни один вариант из перечисленных
4%
Посмотреть ответ
👍3✍2🎉1
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-запрос. Возможно здесь кроется ошибка, особенно если мы сравниваем с одним полем.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5✍2🔥2
Какой оператор в Java используется для прерывания выполнения цикла и перехода к следующему этапу цикла?
Anonymous Quiz
39%
break
4%
return
55%
continue
2%
switch
0%
Посмотреть ответ
✍5🎉4👨💻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 применяйте скобки для расстановки приоритетов, даже если уверены в своём коде.
Такая практика позволит избежать неприятных логических ошибок.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
✍4👍4🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7💯3🤓3
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. Могут даже спросить и мидла. Данное ключевое слово очень часто применяется в повседневной практики на коммерческом проекте!
✅ 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. Могут даже спросить и мидла. Данное ключевое слово очень часто применяется в повседневной практики на коммерческом проекте!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4✍3👨💻3🔥2