JavaRush /Blogue Java /Random-PT /Analisamos bancos de dados e a linguagem SQL – “Projeto J...
Roman Beekeeper
Nível 35

Analisamos bancos de dados e a linguagem SQL – “Projeto Java de A a Z”

Publicado no grupo Random-PT
Um artigo de uma série sobre como criar um projeto Java. Seu objetivo é analisar tecnologias-chave, o resultado é escrever um bot de telegrama. A parte introdutória está aqui . Aloha, engenheiros de software. Hoje estamos falando sobre bancos de dados e linguagem SQL. “Projeto Java de A a Z”: analisando bancos de dados e linguagem SQL - 1A quem se destina este artigo? Sim para todos os interessados. Alguns podem começar sua jornada com este artigo, outros poderão refrescar a memória com fatos interessantes. Esta parte será puramente teórica. Antes de dizermos o que são bancos de dados e sintaxe SQL, precisamos entender e determinar por que iremos estudá-los. Nesta fase falaremos SOMENTE sobre bancos de dados SQL: Não consideraremos NoSQL nesta série de artigos.

Banco de dados: o que é

“Projeto Java de A a Z”: analisando bancos de dados e linguagem SQL - 2Um banco de dados (doravante denominado DB) é um local onde são armazenados dados estruturados , que podem ser obtidos por meio de uma linguagem de consulta. Os bancos de dados podem não apenas armazenar, mas também processar e alterar informações em grandes volumes. Como observação: tente alterar rapidamente um conjunto de valores no Excel com base em alguns critérios. Em princípio, nada complicado. Não como em nosso mundo real não digitalizado. Por exemplo, renomear pistas, ruas, cidades. Se tudo fosse virtual e entrasse no banco de dados, seria normalizado, seriam algumas ninharias. Do jeito que está, muitas mídias de armazenamento sofrem porque não podem ser alteradas automaticamente. Neste contexto, SQL para bancos de dados é uma linguagem que o banco de dados entende e responde adequadamente. Digamos que renomear a cidade não seria difícil; renomear Dnepropetrovsk para Dnipro seria mais ou menos assim:
UPDATE city SET name = “Днипро” WHERE id = 1231;
Todas as solicitações subsequentes ao sistema já produziriam o nome que precisamos.

Por que os bancos de dados são necessários?

Como já disse, usando bancos de dados você pode armazenar dados. Mas o que são esses dados? Para entender usando um exemplo da vida real, podemos falar sobre alguma aplicação. Por exemplo, sobre o mesmo bot de telegrama. Queremos saber quantas pessoas estão usando o bot. Como isso pode ser implementado? Em um aplicativo Java normal, você pode criar muitos elementos exclusivos - um Conjunto, que armazenará o apelido do usuário ou ID de bate-papo. Isso vai funcionar? Vai. Exatamente até que o aplicativo Java seja interrompido e assim que for iniciado novamente, o conjunto de elementos únicos estará vazio. Ou seja, os dados armazenados no aplicativo em execução simplesmente desapareceram. O que você pode fazer sobre isso? Você pode mover o armazenamento do estado do sistema (dados) de um aplicativo Java para outro lugar. Você pode armazenar isso em formato CSV em um arquivo normal em seu computador. Você pode fazer isso em uma linha em um arquivo separado. Você pode fazer isso e substituir esses dados antes que o aplicativo Java pare. Embora a garantia de que a gravação será bem sucedida esteja longe de ser próxima de 100%, basta puxar o cabo de alimentação do servidor e a gravação não acontecerá. Esta abordagem tem uma desvantagem significativa: não há funcionalidade para obter, agregar e pesquisar informações no nível do arquivo. Sim, claro, você pode ler um arquivo e criar objetos para ele, mas terá que bombear todos os dados para o aplicativo TODAS as vezes. E pode haver muitos deles, por exemplo, alguns gigabytes. Isso pode ser evitado armazenando dados em um banco de dados. Como? Através de tabelas e relacionamentos entre elas. É nisso que todos os bancos de dados relacionais se baseiam.

SQL: uma linguagem que os bancos de dados entendem

Existem Sistemas de Gerenciamento de Banco de Dados (doravante denominados SGBD) e a linguagem que eles entendem é SQL. SQL é uma linguagem de programação para manipulação e gerenciamento de bancos de dados. Para entender como isso funciona, vejamos a figura: “Projeto Java de A a Z”: analisando bancos de dados e linguagem SQL - 3O usuário envia consultas SQL ao SGBD, o SGBD entende o que precisa ser feito, faz, e se a solicitação era para obter dados, então os retorna. Portanto, como desenvolvedores, precisamos dominar a linguagem de consulta SQL. Você pode pensar: “Oh, outro idioma. Com a ajuda de Deus, mal entendo Java aqui, e você está imediatamente me oferecendo outra linguagem.” Isso não é verdade: o SQL foi inventado como uma linguagem de especificação de um SGBD para que contadores que estão muito distantes dos bancos de dados e da programação em geral pudessem escrever nessa linguagem. Isso significa que aprender não será tão difícil. O principal é PRÁTICA-PRÁTICA-PRÁTICA. Hoje haverá teoria, mas o próximo artigo será sobre prática. Como um banco de dados relacional é um conjunto de tabelas de array bidimensionais e relacionamentos entre elas, o trabalho funcionará em torno delas. Se falarmos de um exemplo, podemos mostrar duas tabelas - “Países” e “Cidades” e como elas estão conectadas. “Projeto Java de A a Z”: analisando bancos de dados e linguagem SQL - 4Nesta fase, é importante entendermos que os registros da tabela são dados sobre algum objeto do mundo Java. Por exemplo, essas duas tabelas podem ser descritas em Java assim:
public class Country {
   private Long id;
   private String name;
}

public class City {

   private Long id;
   private String name;
   private Country country;
   private Integer population;
}
Bem, não é lindo, hein? O banco de dados pode armazenar qualquer número de tabelas. No nosso caso, existem dois deles.

Estrutura da tabela

Acho que todo mundo já se deparou com tabelas do Excel de uma forma ou de outra e entende os termos linha e coluna . No contexto de bancos de dados, falamos mais sobre registros e campos: “Projeto Java de A a Z”: analisando bancos de dados e linguagem SQL - 5Assim, verifica-se que cada objeto da classe Cidade é um registro de uma tabela no banco de dados.

Chave primária

“Projeto Java de A a Z”: analisando bancos de dados e linguagem SQL - 6Muitas vezes acontece que os campos nos bancos de dados têm os mesmos valores. Por exemplo, as redes sociais, onde mais de uma pessoa pode ser encontrada pelo nome, sobrenome e até patronímico. E os bancos de dados relacionais exigem um campo exclusivo que pode ser usado para acessar um registro. Isso é chamado de primeira chave ou chave primária. Normalmente, o campo ID(id) é usado como uma chave - é a abreviação de identificador. É por isso que você precisa adicionar um campo de ID a cada tabela .“Projeto Java de A a Z”: analisando bancos de dados e linguagem SQL - 7

Chave externa

No nosso exemplo, esse campo está na tabela Cidade, que utiliza a chave de País. E funciona assim: cada cidade conhece um identificador de informação único para o seu país, e se pegarmos e criarmos uma consulta no banco de dados, receberemos informações completas sobre o país. Como você pode ver na imagem, existe uma relação entre duas tabelas: “Projeto Java de A a Z”: analisando bancos de dados e linguagem SQL - 8O princípio de uma chave estrangeira é mostrado aqui.

Quais seções existem no SQL?

A propósito, durante as entrevistas eles são frequentemente questionados sobre quais operações estão no SQL:
  • DDL (Data Definition Language) é um grupo de operadores que alteram/criam tabelas, sua estrutura e muito mais. Ou seja, criar uma tabela, excluí-la, criar/excluir campos em tabelas; criando uma nova chave primária e assim por diante;
  • DML (Data Manipulation Language) é um grupo de operadores que gerenciam a modificação de dados. São todas operações que alteram dados no banco de dados: adicionar, obter, alterar e excluir;
  • DCL (Data Control Language) é um meio de confirmar os direitos do usuário para executar ações. Operações para fornecer acesso e direitos a um usuário específico para que ele possa realizar operações DDL/DML.

Quais tipos de dados existem no SQL

As tabelas podem armazenar e processar certos tipos de dados. Tudo aqui será semelhante ao que usamos em Java. Vamos falar sobre os principais. São apenas três, adicionaremos outros conforme necessário e/ou desejado: “Projeto Java de A a Z”: analisando bancos de dados e linguagem SQL - 9Como pode ser visto na foto, são eles:
  • INT - valores inteiros. Usado para um identificador exclusivo e para um número inteiro simples;
  • VARCHAR é nossa String ;
  • DATE é nosso LocalDate.
Até agora tudo é simples, certo? Os tipos de campo são especificados ao criar a tabela. É claro que não será possível escrever um valor de tipo diferente no campo.

O que são operadores SQL

Um operador é um comando separado que executa alguma ação. Os operadores consistem em sentenças, que por sua vez consistem em palavras-chave usadas em consultas. Vejamos um exemplo: “Projeto Java de A a Z”: analisando bancos de dados e linguagem SQL - 10Aqui é mais interessante, já foi construída uma consulta aqui. O que eles estão fazendo ali? É simples, diz: “Pegue três campos (Nome, Idade e Data de criação) da tabela Clientes, selecione apenas os registros onde o nome é igual a Roman.”

Conclusão

Neste artigo começamos a estudar bancos de dados. Entendemos o que é e por que precisamos dele. A seguir, revisamos os primeiros sinais do SQL, dos quais falaremos com mais detalhes no próximo artigo. Como de costume, sugiro se cadastrar no GitHub e seguir minha conta para acompanhar esta série e meus outros projetos que trabalho por lá.

Trabalho de casa

Para adicionar interesse a esta série de artigos sobre JRTB, haverá trabalhos de casa de tempos em tempos. Por exemplo, sem a tarefa de hoje, o próximo artigo será muito mais difícil de entender, porque haverá muita prática nele. Portanto, a tarefa é instalar o SGBD MySQL em seu computador e efetuar login no banco de dados por meio do console ou por meio de outras soluções. Obrigado a todos pela leitura, até breve!

Uma lista de todos os materiais da série está no início deste artigo.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION