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. A 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 é
Um 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: O 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. Nesta 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: Assim, verifica-se que cada objeto da classe Cidade é um registro de uma tabela no banco de dados.Chave primária
Muitas 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 .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: O 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: Como 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.
GO TO FULL VERSION