JavaRush /Blogue Java /Random-PT /Analisamos bancos de dados e a linguagem SQL. (Parte 2) -...
Roman Beekeeper
Nível 35

Analisamos bancos de dados e a linguagem SQL. (Parte 2) - "Projeto Java de A a Z"

Publicado no grupo Random-PT
Um artigo de uma série sobre a criação de um projeto Java (links para outros materiais estão no final). Seu objetivo é analisar tecnologias-chave, o resultado é escrever um bot de telegrama. “Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 1Boa saúde, queridos leitores. Hoje vamos conversar um pouco e escrever mais, pois nossas mãos lembram muito melhor que nossos olhos. Você deve estar se perguntando: por que usamos MySQL? Existem, por exemplo, o mesmo PostgreSQL e outras soluções. Tudo é simples aqui. Primeiro de tudo, é grátis. Em segundo lugar, possui uma interface UI conveniente (falaremos sobre isso em um artigo separado). Em terceiro lugar, ela é familiar e agradável para mim. Além de tudo isso, o MySQL também é muito comum.

Verificando o dever de casa

Da última vez, dei uma tarefa - instalar o MySQL na minha máquina e fazer login nela. Através do console ou de alguma outra forma. Está tudo feito? “Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 2Bem feito para aqueles que fizeram isso! Não importa o nível que você esteja no JavaRush, é importante saber instalar e configurar as ferramentas necessárias para o trabalho de acordo com os manuais. E garanto a você que serão muitos. Quem tentou, mas não conseguiu, também não tem medo. Isso nem sempre acontece na primeira vez: às vezes é preciso fazer uma pausa e tentar novamente com forças renovadas. Quem instalou o MySQL sozinho - escreva “+” nos comentários para que eu saiba que alguém está fazendo isso. Eu farei isso sozinho também. Como não tenho mais um laptop Windows, vou mostrá-lo em um MacBook. Não creio que o processo de instalação seja muito diferente. Para quem deseja instalá-lo usando o manual em inglês, clique aqui .

Instalando MySQL no MacOS

Em primeiro lugar, acesse o link a seguir , selecione o sistema operacional, seja Windows, Ubuntu ou MacOS, conforme mostrado abaixo: “Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 3Baixe e inicie. No entanto, tudo não deu certo para mim imediatamente. Acontece que a Apple não permite a instalação da versão mais recente: “Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 4você pode, é claro, desabilitar isso, mas o MacBook está funcionando e não vou mexer nas configurações. Portanto, por tentativa e erro, encontrei uma versão que pode ser instalada - esta é 5.7.21 . Para encontrar outras versões, vá até a aba Arquivo e selecione a versão desejada: “Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 5Em seguida, execute o arquivo baixado. Clique em próximo, próximo, próximo, mas no final tome cuidado! Haverá um nome de usuário e senha para fazer login no banco de dados. Para mim ficou assim: “Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 6Diz aqui que haverá um usuário com o nome root e a senha Vac/zto=.24q . Isso conclui a instalação.

Faça login na linha de comando do MySQL

Para fazer login, você precisa ter certeza de que o servidor MySQL está ligado. Para fazer isso, vá em Preferências do Sistema , encontre o ícone do MySQL lá: “Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 7Vá até ele e veja que o servidor deve primeiro ser ligado. Para fazer isso, basta clicar em Iniciar Servidor MySQL e pronto. Sim, você também pode marcar a caixa para que o servidor seja inicializado em segundo plano sempre que a máquina for iniciada. “Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 8É importante ressaltar que iniciarei todas as solicitações no terminal com o símbolo $ para deixar claro. Em seguida, você precisa se conectar diretamente ao servidor MySQL por meio da linha de comando. Para fazer isso, abra o terminal e escreva: $ mysql E existem duas opções:
  1. Se a resposta for “ERRO 1045 (28000): Acesso negado para o usuário 'roman_beskrovnyi'@'localhost' (usando senha: NO" , isso significa que o servidor está instalado e está sendo recuperado. Você só precisa passar o comando correto para isso.
  2. Se a resposta for command not found: mysql , está tudo bem - simplesmente não há link para o servidor. Para fazer isso, você precisará criar um alias com a variável mysql, então escrevemos a seguinte linha:

    $ alias mysql=/usr/local/mysql/bin/mysql

    Isso só ajudará nesta sessão de terminal. Mas não precisamos de mais - definitivamente não trabalharemos no terminal o tempo todo.

  3. O MySQL não está instalado, não engane o seu computador.
A seguir, usamos o nome e a senha fornecidos durante a instalação e escrevemos: $ mysql --user=root -p“Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 9 Lá escrevemos a senha, e ficaremos felizes desta forma: “Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 10Apenas a última linha diz que estamos logados no MySQL Servidor de terminal. Mas essa senha para root acabou sendo uma senha de uso único e precisa ser alterada para outra. Por razões de segurança, claro. Se não alterarmos isso e tentarmos criar um novo banco de dados no servidor, receberemos a seguinte resposta: ERRO 1820 (HY000): Você deve redefinir sua senha usando a instrução ALTER USER antes de executar esta instrução . “Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 11Eles são forçados, por assim dizer. Bem, ok, é difícil para nós? Vamos simplificar a senha (isso é apenas para trabalho local; para trabalho real, a senha deve ser complexa, claro). Digamos root∫ , como o nome de usuário. Para alterar a senha, é necessário inserir a linha: ALTER USER 'root'@'localhost' IDENTIFIED BY 'root'; E a resposta será assim: “Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 12Para ter certeza de que tudo funciona corretamente, vamos tentar criar um novo banco de dados usando a seguinte sintaxe : $ CREATE DATABASE test_db; Para garantir que tal banco de dados seja criado no servidor, escrevemos o comando: $ SHOW DATABASES; E como resultado obtemos o seguinte: “Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 13Só isso :) É impossível dizer que foi simples e rápido. Portanto, quem fez isso sozinho - respeito especial. Para quem ainda não fez, não se preocupe, existem manuais para todos os tipos de instalação: Tudo é descrito lá de forma bastante sensata. A única coisa é que tudo está em inglês. Agora escrevemos nossas primeiras linhas em SQL.

Escrevendo nossas primeiras linhas em SQL

Como você deve ter notado acima, conhecemos dois comandos:
  1. CREATE DATABASE - cria um banco de dados no servidor;
  2. SHOW DATABASES - Mostra todos os bancos de dados criados e disponíveis no servidor.
Observo que o SQL não se importa com a forma como escrevemos seus comandos - sejam todos em letras maiúsculas ou não. No entanto, é considerado de boa educação escrever comandos em letras maiúsculas. A seguir, para excluir um banco de dados, você precisa escrever o comando DROP DATABASE database_name ; onde database_name é o nome do banco de dados que queremos excluir. Já criamos um banco de dados de teste chamado test_db , então vamos excluí-lo. Para fazer isso escrevemos: $ DROP DATABASE test; Vale ressaltar que a resposta Consulta OK, 0 linhas afetadas (0,02 seg) é muito importante, pois confirma que a solicitação foi bem-sucedida. Além disso, informa quantas linhas nas tabelas essa consulta foi alterada e em que horas. “Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 15Em geral, a palavra DROP é responsável por remover algo. Neste caso, excluímos o banco de dados. Mas isso também pode ser usado para outros fins (por exemplo, derrubar uma mesa). E agora, para confiar , confira o resultado, vamos ver quantos bancos de dados restam: $ SHOW DATABASES; “Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 16Como podemos ver, não existe um banco de dados denominado test_db. CHTD :D

Crie seu próprio banco de dados e tabela

Crie um banco de dados de cidades: $ CREATE DATABASE cidades; Para trabalhar em um banco de dados específico, você precisa fazer login nele. Para isso, utilize o comando USE database_name , após o qual todos os comandos para trabalhar com tabelas serão executados neste banco de dados. $ USAR cidades; Como pode ser visto na resposta - Banco de dados alterado , a transição para este banco de dados foi bem-sucedida. “Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 17O próximo passo é criar a tabela. Qual? Bem, primeiro vamos criar uma tabela com os países. Por que é que? Porque as cidades precisam de uma chave estrangeira para o país em que estão localizadas. E pode ser obtido depois que esses países geralmente começarem a constar do banco de dados (doravante - abreviado do banco de dados). Como lembramos do artigo anterior , na tabela onde são descritos os países, temos dois campos - ID e nome, onde ID é um identificador único e nome é o nome do país. Portanto, criar tal banco de dados é tão fácil quanto descascar peras. Escrevemos: $ CREATE TABLE país (id INT, nome VARCHAR(30)); “Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 18Como você pode ver, tudo correu bem. Por analogia com SHOW DATABASES, podemos observar a lista de tabelas: $ SHOW TABLES; “Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 19Aqui está, nossa mesa. Agora vamos aprender como excluir tabelas. Para fazer isso escrevemos: $ DROP TABLE país; “Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 20É importante observar que uma vez excluída uma tabela ou banco de dados, ela não poderá ser restaurada!

Trabalhando com a mesa

Vamos restaurar a tabela que criamos. Para fazer isso, basta repetir o que já fez. Para observar a estrutura da tabela, você precisa usar o seguinte comando - DESC table_name : $ DESC country; “Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 21Como você pode ver, todas as informações sobre a tabela estão registradas aqui. Para adicionar algo a uma tabela, você precisa usar o comando INSERT INTO table_name VALUES() . Vamos adicionar três registros para três países: $ INSERT INTO country VALUES (1, 'Ucrânia'); $ INSERT INTO país VALUES (2, 'Rússia'); $ INSERT INTO país VALUES (3, 'Belorus'); “Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 22Para ver o que está armazenado no banco de dados, usaremos uma simples solicitação de obtenção de dados. Para fazer isso, queremos obter os dados de todos os campos da tabela de países. Lembre-se da frase anterior com atenção porque a consulta sql será assim: $ SELECT * FROM country; Onde * significa que você precisa preencher todos os campos. “Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 23É assim que ficamos lindos. Se quisermos obter apenas um campo específico, não há problema: em vez de um asterisco, escrevemos os nomes dos campos que devem ser separados por vírgulas. Experimente você mesmo ;) Já criamos uma tabela, mas de alguma forma não temos informações suficientes sobre ela. O tamanho da população certamente não faria mal, certo? E como fazer isso?
  1. Adicione um novo campo ao esquema da tabela - população.
  2. Atualize as entradas existentes.
Para o primeiro, usaremos o comando ALTER TABLE table_name ADD COLUMN . Em geral, ALTER TABLE é um conjunto de comandos para operações DDL (lembra o que é isso? Foi no artigo anterior). A propósito, SELECT refere-se a uma operação DML. Vamos escrever o seguinte: $ ALTER TABLE país ADD COLUMN população INT; $ DESC país; “Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 24Como você pode ver na figura, adicionamos com sucesso um novo campo à tabela e verificamos com o segundo comando se o campo está no esquema. A segunda etapa é atualizar as entradas da tabela e atribuir valores. Vamos pegar o número da Wikipedia. Não que eu confie neles, mas mesmo assim esta é a maneira mais rápida e fácil. Para fazer isso, use outro comando DML. Mas primeiro, vamos dizer o que queremos fazer: queremos atualizar a tabela de país, tornar o campo de população igual a 41806221 no registro onde id = 1. E aqui está como fica esta construção: UPDATE nome_tabela SET linha_tabela1 = valor WHERE linha_tabela2 = valor2; Com base nisso, escrevemos: $ UPDATE país SET população = 41806221 WHERE id = 1; Aqui usamos a palavra-chave WHERE“Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 25 pela primeira vez . É necessário adicionar valores para filtragem. Por exemplo, desta vez dissemos que é necessário atualizar apenas para o campo (campos) cujo id é igual a um (até que dissemos ao sql que esta é a chave primária - pode haver vários deles). Também poderíamos especificar uma condição como WHERE id > 2. Se não tivéssemos especificado a filtragem, esse valor teria sido gravado em todos os registros da tabela. Para Rússia, Bielorrússia e outros países, atualize-se ;) Agora vamos tentar obter dados da tabela para os campos nome e população, desde que o id seja maior que 1. $ SELECT nome, população FROM país WHERE id >1; Assim, recebemos apenas os campos que nós mesmos queríamos. Usando INSERT INTO podemos especificar quais campos queremos adicionar e quais queremos deixar vazios. Para fazer isso, escrevemos: $ INSERT INTO country (nome, população) VALUES('Georgia', 1234566); Para verificar o que aconteceu, vejamos a lista de todos os campos: $ SELECT * FROM country; Sem id a entrada fica ruim, e a população, claro, foi tirada da cabeça, então é preciso deletar. Use o comando DELETE FROM table_name : $ DELETE FROM country WHERE name = 'Georgia'; Assim aprendemos como deletar um campo da tabela.“Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 26“Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 27“Projeto Java de A a Z”: analisamos bancos de dados e a linguagem SQL.  Parte 2 - 28

Trabalho de casa

A lição de casa será a seguinte:
  1. Você precisa adicionar uma chave primária (PRIMARY KEY) do campo ID ao esquema da tabela de países.
  2. Adicione outro país à tabela de países - Moldávia.
  3. Seguindo o esquema do artigo anterior, crie uma tabela cidade, que conterá todos os campos descritos. Os nomes dos campos serão os seguintes: id, nome, country_id, população.
  4. Adicione uma chave primária à tabela de cidades.
  5. Adicione uma chave estrangeira à tabela de cidades.
A tarefa é interessante, para quem sabe será rápida e descomplicada. Para quem ainda não o fez, servirá como um excelente reforço ao material deste artigo.

Vamos resumir

Fizemos muitas coisas neste artigo. Primeiro, instalamos e iniciamos o servidor de banco de dados MySQL. Em segundo lugar, aprendemos toda uma lista de palavras-chave e consultas, com a ajuda das quais podemos agora criar/excluir bancos de dados e tabelas. Aprendemos como adicionar dados a tabelas, atualizá-los e excluí-los. Aqui estão todos os comandos que usamos, junto com suas descrições:
  • CRIAR BANCO DE DADOS nome_dados; - criar um novo banco de dados
  • MOSTRAR BANCOS DE DADOS; — veja a lista de bancos de dados
  • DROP DATABASE nome_banco_dados; - excluir banco de dados
  • USE nome_banco_dados; - trabalhar no banco de dados
  • CREATE TABLE nome_tabela (id INT, ....); - criar uma tabela
  • MOSTRAR TABELAS; — veja a lista de tabelas
  • DESC TABLE nome_tabela; - veja o diagrama da tabela
  • DROP TABLE nome_tabela; - excluir tabela
  • INSERT INTO nome_tabela VALUES(); - adicione um campo à tabela
  • SELECT * FROM nome_tabela WHERE linha_tabela = valor; — obtém campos na tabela sob a condição após WHERE
  • SELECT * FROM nome_tabela; - obtém todos os campos da tabela
  • ALTER TABLE nome_tabela ADD COLUMN nome_coluna COLUMN_TYPE; — adicione um novo campo ao esquema da tabela
  • UPDATE talbe_name SET talbe_row1 = valor1 WHERE table_row2 = valor2; — atualizar registros na tabela: definir os valores de um campo sujeito à condição de outro campo
  • DELETE FROM nome_tabela WHERE linha_tabela1 = valor1; — remover um campo (ou campos) de uma tabela sob uma determinada condição.
Acho que fizemos um excelente trabalho com você. Convido a todos que gostam do meu trabalho a se inscreverem na minha conta GitHub , onde posto projetos interessantes e novidades que estão acontecendo na minha carreira. Convido todos que tenham interesse em trabalhar com código aberto a participarem dos meus projetos (repositórios). Obrigado a todos pela atenção. Fique ligado no próximo artigo sobre bancos de dados em 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