SQL, базы данных. Часть 11.
Как уже было сказано ранее, реляционные базы данных представляют собой набор таблиц с информацией. Каждая таблица состоит из столбцов и строк.
Посмотрим на таблицу users (Картинка 1), которая хранит данные о пользователях в системе. В таблице 5 столбцов: также уникальный номер пользователя id, имя, фамилия, возраст — age и дата рождения — birthday.
Каждый столбец отвечает за какую-то информацию и эта информация относится к определенному типу данных. Столбцы first_name и last_name строковые, age и id содержат числа, а birthday — дату.
Название столбца, его тип и порядок строго задаются на этапе создания таблицы.
Записи таблицы (или строки) заполняются в процессе её использования, либо же при создании таблицы. Поэтому столбцов у нас жестко 5. А строк может быть сколько угодно.
Зарегистрировался пользователь на сайте — добавили строку.
Добавление, удаление, изменение или получение данных из таблиц, выполняется с помощью языка SQL.
Давайте попробуем получить всю информацию из таблицы users (Картинка 1). Для этого надо написать и выполнить такой SQL-запрос:
SELECT * FROM users;
В итоге мы получили всех пользователей из таблицы users (вывод на Картинке 2).
Рассмотрим SQL запрос подробнее.
Оператор SELECT говорит, что мы будем извлекать данные. После него идет список столбцов, которые мы хотим получить. Если указать звездочку (*), как у нас, то получим все столбцы в том порядке, в котором они определены в таблице: id, first_name, last_name и тд. Далее идет конструкция FROM users, которая буквально означает ИЗ users.
То есть вся SQL конструкция читается как ВЫБРАТЬ все столбцы ИЗ таблицы users.
Теперь вместо звездочки напишем: last_name, first_name, birthday, чтобы у нас получился такой SQL-запрос:
SELECT last_name, first_name, birthday FROM users;
Если его выполнить, то мы снова получим всех пользователей из таблицы users, но на этот раз только фамилию, имя и дату рождения. То есть записи все, а столбцы нет (Картинка 3).
Кроме того, что мы получили не все столбцы, мы дополнительно изменили их порядок на тот, который нам удобен. В оригинальной таблице first_name стоит перед last_name, а у нас наоборот.
Еще обратите внимание, что результатом работы SQL запроса является таблица. То есть мы берем исходную таблицу, которая хранится в базе, и с помощью SQL запроса получаем другую таблицу — с теми данными, которые нам нужны.
✅ JavaStart. Подписаться
Как уже было сказано ранее, реляционные базы данных представляют собой набор таблиц с информацией. Каждая таблица состоит из столбцов и строк.
Посмотрим на таблицу users (Картинка 1), которая хранит данные о пользователях в системе. В таблице 5 столбцов: также уникальный номер пользователя id, имя, фамилия, возраст — age и дата рождения — birthday.
Каждый столбец отвечает за какую-то информацию и эта информация относится к определенному типу данных. Столбцы first_name и last_name строковые, age и id содержат числа, а birthday — дату.
Название столбца, его тип и порядок строго задаются на этапе создания таблицы.
Записи таблицы (или строки) заполняются в процессе её использования, либо же при создании таблицы. Поэтому столбцов у нас жестко 5. А строк может быть сколько угодно.
Зарегистрировался пользователь на сайте — добавили строку.
Добавление, удаление, изменение или получение данных из таблиц, выполняется с помощью языка SQL.
Давайте попробуем получить всю информацию из таблицы users (Картинка 1). Для этого надо написать и выполнить такой SQL-запрос:
SELECT * FROM users;
В итоге мы получили всех пользователей из таблицы users (вывод на Картинке 2).
Рассмотрим SQL запрос подробнее.
Оператор SELECT говорит, что мы будем извлекать данные. После него идет список столбцов, которые мы хотим получить. Если указать звездочку (*), как у нас, то получим все столбцы в том порядке, в котором они определены в таблице: id, first_name, last_name и тд. Далее идет конструкция FROM users, которая буквально означает ИЗ users.
То есть вся SQL конструкция читается как ВЫБРАТЬ все столбцы ИЗ таблицы users.
Теперь вместо звездочки напишем: last_name, first_name, birthday, чтобы у нас получился такой SQL-запрос:
SELECT last_name, first_name, birthday FROM users;
Если его выполнить, то мы снова получим всех пользователей из таблицы users, но на этот раз только фамилию, имя и дату рождения. То есть записи все, а столбцы нет (Картинка 3).
Кроме того, что мы получили не все столбцы, мы дополнительно изменили их порядок на тот, который нам удобен. В оригинальной таблице first_name стоит перед last_name, а у нас наоборот.
Еще обратите внимание, что результатом работы SQL запроса является таблица. То есть мы берем исходную таблицу, которая хранится в базе, и с помощью SQL запроса получаем другую таблицу — с теми данными, которые нам нужны.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой из перечисленных классов является неизменяемым (immutable)?
Anonymous Quiz
9%
StringBuilder
74%
String
5%
ArrayList
8%
HashMap
5%
Посмотреть ответ
Please open Telegram to view this post
VIEW IN TELEGRAM
SQL, базы данных. Часть 13.
Чтобы выбрать совершеннолетних пользователей из данных таблиц, можно воспользоваться простым SQL запросом:
SELECT last_name, first_name, birthday FROM users WHERE age >= 18;
(не забываем точку с запятой в конце запроса, иначе будет синтаксическая ошибка 🤓)
Теперь попробуем немного уточнить запрос. Например, выберем всех совершеннолетних мужчин. В таблицу я добавил дополнительное строковое поле sex, которое хранит m для мужчин и w для женщин (Картинка 1).
После выполнения такого SQL запроса получиться такая таблица как на Картинке 2.
Посмотрим на SQL запрос. Сейчас блок WHERE содержит составное условие: возраст больше или равен 18 годам и пол равен m. Это простое логическое выражение, которому соответствуют все записи для которых оба условия верны. То есть у которых одновременно и возраст от 18 лет и sex = "m".
Кстати, о sex = "m". Так как мы используем равенство, в результирующей таблице в колонке sex для всех записей у нас выводится m. Это не логично, ведь мы и так знаем, что выбираем мужчин, поэтому смысла в том, что мы эту информацию выводим в таблице нет. А значит можно удалить sex из запроса. Удалим и посмотрим на результат выполнения SQL-запроса (Картинка 3). Строки выводятся те же, однако столбца sex больше нет.
SELECT last_name, first_name, birthday
FROM users
WHERE age >= 18 AND sex = 'm';
✅ JavaStart. Подписаться
Чтобы выбрать совершеннолетних пользователей из данных таблиц, можно воспользоваться простым SQL запросом:
SELECT last_name, first_name, birthday FROM users WHERE age >= 18;
(не забываем точку с запятой в конце запроса, иначе будет синтаксическая ошибка 🤓)
Теперь попробуем немного уточнить запрос. Например, выберем всех совершеннолетних мужчин. В таблицу я добавил дополнительное строковое поле sex, которое хранит m для мужчин и w для женщин (Картинка 1).
После выполнения такого SQL запроса получиться такая таблица как на Картинке 2.
Посмотрим на SQL запрос. Сейчас блок WHERE содержит составное условие: возраст больше или равен 18 годам и пол равен m. Это простое логическое выражение, которому соответствуют все записи для которых оба условия верны. То есть у которых одновременно и возраст от 18 лет и sex = "m".
Кстати, о sex = "m". Так как мы используем равенство, в результирующей таблице в колонке sex для всех записей у нас выводится m. Это не логично, ведь мы и так знаем, что выбираем мужчин, поэтому смысла в том, что мы эту информацию выводим в таблице нет. А значит можно удалить sex из запроса. Удалим и посмотрим на результат выполнения SQL-запроса (Картинка 3). Строки выводятся те же, однако столбца sex больше нет.
SELECT last_name, first_name, birthday
FROM users
WHERE age >= 18 AND sex = 'm';
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Что произойдет, если в блоке try произойдет исключение, но блок catch отсутствует?
Anonymous Quiz
20%
Никакой ошибки не будет, исключение будет проигнорировано
45%
Произойдет RuntimeException
30%
Программа аварийно завершится
5%
Посмотреть ответ
Please open Telegram to view this post
VIEW IN 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. Подписаться
Кроме операции 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 лет, ИЛИ мужской пол.
Все достаточно просто и логично!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой метод Stream API используется для преобразования элементов стрима в другие значения?
Anonymous Quiz
8%
collect()
17%
reduce()
3%
filter()
65%
map()
4%
get()
3%
Посмотреть ответ
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. Подписаться
Давайте создадим новую таблицу 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");
Конструкция получилась короче и понятнее. И с помощью неё мы выбираем данные, в которых страна равна любом из значений перечисленных в скобках. После запуска запроса мы получим результат, аналогичный предыдущему.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM