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

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

Синтаксис — это набор правил, позволяющих правильно сочетать элементы языка. Синтаксис SQL основан на синтаксисе английского языка и имеет много общих элементов с синтаксисом языка Visual Basic для приложений (VBA).

Например, простой запрос SQL, извлекающий список фамилий контактов с именем Mary, может выглядеть следующим образом:

SELECT last_name
FROM contacts
WHERE first_name = 'Mary';

Общий формат инструкции SQL:

SELECT field_1
FROM table_1
WHERE criterion_1
;

Точка с запятой обязательны в конце каждого запроса в SQL ))

Этот запрос SQL следует читать так:
"Выбрать данные из столбца "фамилия" и таблицы "контакты", а именно те записи, в которых столбец "имя" имеет значение "Mary".

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
SQL, базы данных. Часть 9.

SQL операторы.

Работать с данными помогают операторы — определенные слова или символы, которые используются для выполнения конкретной операции — например, для выбора из множества по конкретному параметру.

Операторы в SQL делятся на несколько групп в соответствии с задачами, которые они решают:

DDL (Data Definition Language) — операторы определения данных. Они работают с объектами, то есть с целыми таблицами. Если базу нужно дополнить таблицей с новыми данными или, наоборот, убрать одну из таблиц с ошибочными данными — используется этот набор операторов.

CREATE — создание объекта (таблицы) в базе данных
ALTER — изменение объекта
DROP — удаление объекта

DML (Data Manipulation Language) — операторы манипуляции данными. Эти операторы уже работают с содержимым таблиц — строками, атрибутами и значениями. С их помощью можно вносить изменения в конкретное значение.
Например, заменить поле в колонке «Фамилия» в строке с данными сотрудницы компании посте того, как она вышла замуж. Или удалить строку с данными уволенного сотрудника.

SELECT — выбор данных в соответствии с условием
INSERT — добавление новых данных
UPDATE — изменение существующих данных
DELETE — удаление данных

DCL (Data Control Language) — оператор определения доступа к данным. Он определяет, кто из пользователей может отправлять запросы к базе, менять объекты и значения. Например, можно отозвать доступ у сотрудника, перешедшего в другой отдел, а также открыть доступ к базе новому маркетологу или разработчику.

GRANT — предоставление доступа к объекту
REVOKE — отзыв ранее выданного разрешения
DENY — запрет, который является приоритетным над разрешением

JavaStart. Подписаться
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
SQL, базы данных. Часть 10.

Как начать работу с SQL?

Для начала работы с SQL достаточно разбираться в основах Excel, чтобы понимать принцип работы запросов, а также иметь базовый уровень английского на уровне A1-A2. Эти навыки необходимы, чтобы понимать синтаксис SQL, например, простые ключевые слова:

SELECT — выбери данные
FROM — вот отсюда
JOIN — добавь еще эти таблицы
WHERE — при таком условии
GROUP BY — сгруппируй данные по этому признаку
ORDER BY — отсортируй данные по этому признаку
LIMIT — нужно такое количество результатов
; — конец предложения

Установить себе на машину какую-нибудь СУБД (MySQL / Microsoft SQL Server / PostgreSQL / Oracle) для возможности создания таблиц и управлением данными.

Также можно установить дополнительную программу с визуальным красивым и понятным интерфейсом. Разные системы для работы с SQL имеют схожую структуру: есть редактор запросов, результат запросов и список таблиц, которые используются для обработки. Это, например, может быть программа pgAdmin, DBeaver или другие. Или прекрасный уже встроенный интерфейс в среду разработки (IntelliJ IDEA или др.).
Можно даже пользоваться терминалом MacOS или Windows.

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Какая коллекция в Java не гарантирует порядок элементов и не допускает дубликатов?
Anonymous Quiz
6%
ArrayList
22%
HashMap
63%
HashSet
6%
LinkedList
3%
Посмотреть ответ
Нет, я из undefined

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
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. Подписаться
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%
Посмотреть ответ
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. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM