JavaRush /جاوا بلاگ /Random-UR /Разбираем базы данных и язык SQL - "Java-проект от А до Я...

Разбираем базы данных и язык SQL - "Java-проект от А до Я"

گروپ میں شائع ہوا۔
Статья из серии о создании Java-проекта. Ее цель — разбор ключевых технологий, итог — написание телеграм-бота. Вводная часть — здесь. Алоха, инженеры-программисты. Сегодня говорим о базах данных и языке SQL.“Java-проект от А до Я”: разбираем базы данных и язык SQL - 1На кого рассчитана эта статья? Да на всех, кому интересно. Одни могут начать свой путь с этой статьи, другие смогут освежить в памяти интересные факты. Эта часть будет сугубо теоретической. Прежде чем рассказывать, что такое базы данных и SQL-синтаксис, нужно понять и определить, для чего мы их будем изучать. На данном этапе будем говорить ТОЛЬКО об SQL базах данных: NoSQL в этом цикле статей рассматривать не будем.

База данных: что это

“Java-проект от А до Я”: разбираем базы данных и язык SQL - 2База данных (далее БД) — это место, где хранятся структурированные данные, которые можно получить при помощи языка requestов. Базы данных умеют не только хранить, но и обрабатывать и изменять информацию в больших объемах. Для ремарки: попробуйте быстро изменить в Excel набор значений по Howим-то признакам. В принципе, ничего сложного. Не то что в нашем не оцифрованном реальном мире. Например, переименование переулков, улиц, городов. Было бы все виртуально и занесено в БД, была бы она нормализована, это была бы пара пустяков. А так страдает множество носителей данных, которые не могут автоматически измениться. В этом контексте SQL для баз данных — это язык, который БД понимает и реагирует соответственно. Скажем, переименовать город не составило бы труда, переименование Днепропетровска в Днипро выглядело бы примерно так:

UPDATE city SET name = “Днипро” WHERE id = 1231;
Все последующие requestы в систему уже выдавали бы то Name, которое нам нужно.

Зачем нужны базы данных

Как я уже говорил, при помощи баз данных можно хранить данные. Но что это за данные? Whatбы понять на жизненном примере, можно поговорить о Howом-то приложении. Например, о том же телеграм-боте. Мы хотим знать, сколько человек пользуется ботом. Как это можно реализовать? В обычном Java-приложении можно создать множество уникальных элементов — Set, которое будет хранить nickname пользователя or ID-шник чата. Будет это работать? Будет. Ровно до тех пор, пока Java-приложение не остановят, а How только его запустят вновь, то множество уникальных элементов будет пустым. То есть данные, которые хранorсь в работающем приложении, просто пропали. What можно с этим сделать? Можно вынести хранение состояния системы (данные) из Java-applications куда-то в другое место. Можно хранить это в CSV-формате в обычном файле на компьютере. Можно вообще одной строкой в отдельном файле. Это можно сделать, и потом перезаписывать эти данные перед тем, How Java-приложение остановится. Хотя гарантия, что запись будет успешная, далеко не близка к 100%, потому что банально можно выдернуть шнур питания serverа, и запись не произойдет. В этом подходе есть существенный недостаток: нет ниHowой функциональности по получению, агрегированию и поиску информации на уровне файлов. Да, конечно, можно вычитать файл, создать под него an objectы, но при этом придется КАЖДЫЙ раз выкачивать в приложение все данные. А их может быть много, например, пара гигаbyte. Этого можно избежать, если хранить данные в БД. Каким образом? Через таблицы и отношения между ними. На этом все реляционные базы данных и стоят.

SQL: язык, который понимают базы данных

Существуют Системы Управления Базами Данных (далее — СУБД) и язык, который они понимают — SQL. SQL — язык программирования для манипулирования и управления базами данных. Для понимания, How это работает, посмотрим на рисунок:“Java-проект от А до Я”: разбираем базы данных и язык SQL - 3Пользователь отправляет SQL-requestы в СУБД, СУБД понимает, что нужно сделать, делает это, и если request был на получение данных, то возвращает их. Поэтому нам How разработчикам нужно освоить язык requestов SQL. Вы можете подумать: «О, еще один язык. Я тут Java с божьей помощью еле-еле понимаю, а вы мне еще один язык сразу предлагаете». Это не так: SQL был придуман How язык-спецификация для СУБД так, чтобы писать на этом языке могли бухгалтеры, которые очень далеки от баз данных и программирования в целом. Это значит, что выучить его будет не так уж и сложно. Главное — ПРАКТИКА-ПРАКТИКА-ПРАКТИКА. Сегодня будет теория, но следующая статья будет о практике. Так How реляционная база данных — это набор двумерных-массивов-таблиц и отношения между ними, то и работа будет идти вокруг них. Если говорить о примере, то можно показать две таблицы — «Страны» и «Города» и How они связаны.“Java-проект от А до Я”: разбираем базы данных и язык SQL - 4Для нас на данном этапе важно понять, что записи в таблице — это данные о Howом-то an objectе из Java-мира. Например, эти две таблицы через Java можно описать так:

public class Country {
   private Long id;
   private String name;
}

public class City {

   private Long id;
   private String name;
   private Country country;
   private Integer population;
}
Ну не красота ли, а? В базе данных может храниться сколько угодно таблиц. В нашем случае их две.

Структура таблицы

Я думаю, что все так or иначе сталкивались с excel-tableми, и вам понятны термины строка и столбец. В рамках баз данных мы больше говорим о записях и полях:“Java-проект от А до Я”: разбираем базы данных и язык SQL - 5Таким образом получается, что каждый an object класса City — это запись в таблице в базе данных.

Первичный ключ

“Java-проект от А до Я”: разбираем базы данных и язык SQL - 6Часто бывает так, что поля в базах данных имеют одинаковые значения. Например, соцсети, где по имени, фамorи и даже отчеству может найтись более одного человека. А реляционные базы данных требуют наличия уникального поля, по которому можно было бы получить доступ к записи. Вот это и называется первый ключ or Primary Key. Обычно в качестве такого ключа используют поле ID(id) — это сокращение от identifier. Именно поэтому в каждую таблицу нужно добавить поле ID.“Java-проект от А до Я”: разбираем базы данных и язык SQL - 7

Внешний ключ

В нашем примере такое поле есть в таблице City, которая использует ключ от Country. И работает это так: каждый город знает уникальный идентификатор информации по своей стране, и если взять его и создать request в БД, мы получим исчерпывающую информацию о стране. Как видно на картинке, есть связь (relation) между двумя tableми:“Java-проект от А до Я”: разбираем базы данных и язык SQL - 8Здесь показан принцип внешнего ключа.

Какие разделы есть в SQL

На собеседованиях, кстати, часто спрашивают, Howие операции есть в SQL:
  • DDL (Data Definition Language) — группа операторов, изменяющих/создающих таблицы, их структуру и другое. То есть создание таблицы, ее удаление, создание/удаление полей в tableх; создание нового первичного ключа и так далее;
  • DML (Data Manipulation Language) — группа операторов, управляющих изменением данных. Это все операции, которые изменяют данные в БД: добавление, получение, изменение и удаление;
  • DCL (Data Control Language) — средства подтверждения прав пользователя на выполнение действий. Операции по предоставлению доступа и прав для конкретного пользователя, чтобы он мог выполнять DDL/DML операции.

Какие типы данных есть в SQL

Таблицы могут хранить и обрабатывать определенные типы данных. Здесь будет все похоже на то, что мы используем в Java. Поговорим об основных. Их всего три, другие уже будем добавлять по необходимости и/or по желанию:“Java-проект от А до Я”: разбираем базы данных и язык SQL - 9Как видно из картинки, это:
  • INT — целочисленные значения. Используются для уникального идентификатора и для просто целого числа;
  • VARCHAR — это наш String;
  • DATE — это наш LocalDate.
Пока что все просто, да? Типы полей задаются при создании таблицы. Ясно, что нельзя будет записать в поле meaning другого типа.

Кто такие SQL операторы

Оператор — это отдельная команда, которая производит Howое-то действие. Операторы состоят из предложений, те, в свою очередь, из ключевых слов, которые используются в requestах. Посмотрим на пример:“Java-проект от А до Я”: разбираем базы данных и язык SQL - 10Здесь уже интереснее, здесь уже построен request. What там делают? Все просто, там говорится: “Взять три поля (Name, Age и CreatedDate) из таблицы Clients, выбрать только те записи, где name равно Roman”.

Вывод

В этой статье мы начали изучать базы данных. Мы поняли, что это такое и зачем оно нам. Далее пробежались по первым признакам SQL, о которых более детально поговорим уже в следующей статье. Традиционно предлагаю зарегистрироваться на GitHub и подписаться на мой аккаунт, чтобы следить за этой серией и другими моими проектами, которые я веду там.

Домашнее задание

Whatбы добавить интереса к этой серии статей на JRTB, время от времени будут домашние задания. Например, без сегодняшнего задания следующую статью уже будет значительно сложнее понять, ведь там будет много практики. Поэтому задание: установить СУБД MySQL себе на компьютер и войти в базу данных or через консоль, or через другие решения. Всем спасибо за прочтение, до скорых встреч!

Список всех материалов серии в начале этой статьи.

تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION