JavaStart
920 subscribers
896 photos
27 videos
604 links
Учи Java вместе с нами!
Наша платформа с курсом - https://javastart.tech
Ютуб с обучающими видео - https://www.youtube.com/@javastart_tech
Download Telegram
SQL, базы данных. Часть 14.

Кроме операции AND (И), в условии можно применять OR (ИЛИ). Давайте заменим AND на OR, а также вернем колонки sex и age.

Был запрос (Картинка 2):

SELECT last_name, first_name, birthday, sex
FROM users
WHERE age >= 18 AND sex = 'm';

Стал:

SELECT last_name, first_name, birthday, sex, age
FROM users
WHERE age >= 18 OR sex = 'm';

Если посмотрим на результат (на Картинке 3), то увидим, что получили всех мужчин, а также женщин, которым исполнилось 18 лет. В частности в SQL-таблице одна женщина старше 18 лет и все мужчины, даже те, которым меньше 18. Всё это соответствует условию ИЛИ: ИЛИ возраст от 18 лет, ИЛИ мужской пол.

Все достаточно просто и логично!

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍4🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4👍3👨‍💻1
Какой метод Stream API используется для преобразования элементов стрима в другие значения?
Anonymous Quiz
9%
collect()
17%
reduce()
3%
filter()
65%
map()
4%
get()
3%
Посмотреть ответ
4👍3🔥2
SQL, базы данных. Часть 15.

Давайте создадим новую таблицу products и переключим наше внимание на нее.
В ней есть поля id, name, count (количество), price (цена) и поле country, которое содержит данные о стране производителе (Картинка 1).

Давайте выберем товары, произведенные в России, Белоруссии и Украине. Напишем SQL-запрос:

SELECT * FROM products
WHERE country = "RU" OR country = "UA" OR country = "BL";

После выполнения запроса мы получим следующую таблицу (Картинка 2).

Разберем запрос: в блоке WHERE мы используем три условия, разделенные OR (или). Во всех трех условиях мы с помощью символа равенства сравниваем значение в столбце country с одной из стран: ИЛИ Россия, ИЛИ Украина, ИЛИ Белоруссия.

Если мы хотим получить товары еще каких-то стран, то нужно добавить еще условия OR. Это не очень удобно, так как запрос становится громоздиким.

Но его можно упростить. Кроме стандартных условий сравнения AND и OR в языке SQL есть условие принадлежности IN, которое в данном случае подходит лучше. Напишем после WHERE:

SELECT * FROM products
WHERE country IN ("RU", "UA", "BL");

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

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍4👨‍💻3
Please open Telegram to view this post
VIEW IN TELEGRAM
💯5👍32🔥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. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43🔥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
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. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52🔥2
7 лет развития технологий

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6💯4👍1
Какой оператор в Java используется для прерывания выполнения цикла и перехода к следующему этапу цикла?
Anonymous Quiz
39%
break
4%
return
55%
continue
2%
switch
0%
Посмотреть ответ
5🎉4👨‍💻1