JavaRush /Blogue Java /Random-PT /Parte 1: Introdução ao SQL
Marat Sadykov
Nível 41

Parte 1: Introdução ao SQL

Publicado no grupo Random-PT

JDBC. Conectando um banco de dados e criando um aplicativo de console Java no IntelliJ IDEA

Introdução

Este artigo abre uma pequena série dedicada aos fundamentos da interação com bancos de dados em Java e uma introdução ao SQL . Muitos programas estão ocupados processando e modificando informações e mantendo-as atualizadas. Como os dados são uma parte muito importante da lógica do programa, muitas vezes é alocado um armazenamento separado para eles. As informações nele contidas são estruturadas e sujeitas a regras especiais para garantir o correto processamento e armazenamento. Os dados são acessados ​​e modificados usando uma linguagem de consulta especial - SQL (Structured Query Language).
Parte 1. Introdução ao SQL - 1
Um sistema de gerenciamento de banco de dados é um software que garante a interação de diversos programas externos com dados e serviços adicionais (logging, recuperação, backup, etc.), inclusive por meio de SQL. Ou seja, uma camada de software entre os dados e os programas externos que trabalham com eles. Nesta parte responderemos às questões sobre o que é SQL, o que é um servidor SQL e criaremos o primeiro programa para interagir com o SGBD.

Tipos de SGBD

Existem vários tipos de SGBD com base na forma como organizam o armazenamento de dados:
  • Hierárquico. Os dados são organizados em uma estrutura de árvore. Um exemplo é um sistema de arquivos que começa na raiz do disco e depois cresce com ramificações de arquivos de diferentes tipos e pastas com vários graus de aninhamento.
  • Rede. Uma modificação do hierárquico, cada nó pode ter mais de um pai.
  • Orientado a Objeto. Os dados são organizados na forma de classes/objetos com seus atributos e princípios de interação conforme OOP.
  • Relacional. Os dados deste tipo de SGBD estão organizados em tabelas. As tabelas podem ser vinculadas entre si, as informações nelas contidas são estruturadas.
Nesta série de artigos, veremos SGBDs relacionais (como os mais comuns) usando H2 como exemplo e criaremos um aplicativo do zero que emula algo semelhante ao funcionamento de uma exchange. Pergunta: Por que não PostgreSQL, MySQL, MSSQL ou Oracle? Resposta: Para não se distrair com a instalação de um conjunto separado de programas. Configuração adicional, criação de um banco de dados, os meandros de trabalhar em diferentes sistemas operacionais e versões. Para trabalhar com H2, você precisa realizar um mínimo de ações. Mas nada impede que você altere o JDBC H2 atual para um SGBD relacional de outro fabricante (apenas a linha de endereço do servidor e o nome da classe do driver mudam).

SQL

Programas externos geram consultas ao SGBD na linguagem de gerenciamento de dados Structured Query Language. O que é SQL e como ele difere das linguagens de programação convencionais? Uma das características do SQL é a declaratividade. Ou seja, SQL é uma linguagem declarativa . Isso significa que ao inserir comandos, ou seja, criar consultas ao servidor SQL, descrevemos exatamente o que queremos obter, e não de que forma. Ao enviar uma solicitação ao servidor SELECT * FROM CUSTOMER(tradução aproximada de SQL para o russo: “faça uma seleção na tabela COSTUMER, a seleção consiste em todas as linhas da tabela” ), receberemos dados de todos os usuários. Não importa como e de onde o servidor baixa e gera os dados que nos interessam. O principal é formular corretamente o pedido.
  • O que é SQL Server e como funciona? A interação com o SGBD ocorre segundo o princípio cliente-servidor. Algum programa externo envia uma solicitação na forma de operadores e comandos na linguagem SQL, o SGBD processa e envia uma resposta. Para simplificar, vamos supor que SQL Server = SGBD.
Se você consegue dirigir uma marca de carro, provavelmente conseguirá dirigir outras sem problemas. Os princípios básicos da condução são os mesmos em todos os lugares, exceto em pequenos detalhes. O mesmo se aplica a servidores SQL de diferentes fabricantes - cada um deles tem sua própria versão do SQL, mas atende aos padrões especificados (SQL92, SQL2003...). Usaremos operadores e comandos dentro da estrutura SQL92. As instruções SQL básicas são divididas nos seguintes grupos:
  • Linguagem de definição de dados ( DDL ) – definições de dados. Criação da estrutura do banco de dados e seus objetos;
  • Linguagem de Manipulação de Dados ( DML ) – interação real com dados: inserção, exclusão, modificação e leitura;
  • Linguagem de Controle de Transações ( TCL ) – gerenciamento de transações;
  • Data Control Language ( DCL ) – gerenciamento de direitos de acesso a dados e estruturas de banco de dados.
Numa série de artigos examinaremos os três primeiros grupos, prestando especial atenção ao DML.

JDBC

Na década de 80 do século passado, os computadores pessoais do tipo PC XT/AT conquistaram o mercado. Isso se deveu em grande parte à modularidade de seu design. Isso significa que o usuário pode facilmente alterar um ou outro componente de seu computador (processador, placa de vídeo, discos, etc.). Essa propriedade maravilhosa sobrevive até hoje: trocamos a placa de vídeo e atualizamos o driver (às vezes ele até se atualiza, automaticamente). Na maioria das vezes, nada de ruim acontece com essas manipulações e os programas existentes continuarão a funcionar com o sistema atualizado sem reinstalação. O mesmo se aplica ao trabalho em Java com um SGBD. Para padronizar o trabalho com servidores SQL, a interação com ele pode ser realizada através de um único ponto - JDBC (Java DataBase Connectivity). É uma implementação do pacote java.sql para trabalhar com um SGBD. Os fabricantes de todos os servidores SQL populares lançam drivers JDBC para eles. Considere o diagrama abaixo. A aplicação utiliza instâncias de classes de java.sql . Em seguida, passamos os comandos necessários para recuperar/modificar os dados. Em seguida, java.sql interage com o SGBD por meio do driver jdbc e nos retorna o resultado final. Parte 1. Introdução ao SQL - 2 Para mudar para um SGBD de outro fabricante, muitas vezes é suficiente alterar o JDBC e realizar configurações básicas. As restantes partes do programa não mudam.

Primeiro programa

Vamos passar para a parte prática. Vamos criar um projeto Java usando o JetBrains IntelliJ IDEA IDE . Observe que a Ultimate Edition contém uma ferramenta maravilhosa para trabalhar com SQL e bancos de dados - Data Grip . No entanto, é pago para a maioria dos usuários. Portanto, para fins educacionais, só podemos usar o IntelliJ IDEA Community Edition, disponível publicamente . Então:
  1. Inicie o IDE e crie um novo projeto:
    Parte 1. Introdução ao SQL - 3

  2. Selecione um projeto Java, indique a versão do SDK (no exemplo JDK8, mas isso não é crítico):
    Parte 1. Introdução ao SQL - 4

  3. Na próxima etapa, selecione o aplicativo de console como o tipo :
    Parte 1. Introdução ao SQL - 5

  4. Indicamos o nome do projeto , pacote e sua localização no disco (criei um diretório separado especificamente para isso):
    Parte 1. Introdução ao SQL - 6

  5. Vamos deixar o IDE de lado por um minuto e baixar em www.h2database.com o arquivo JDBC necessário para trabalhar com o H2 DBMS (download ZIP independente da plataforma):
    Parte 1. Introdução ao SQL - 7

  6. Entramos no arquivo baixado (estamos interessados ​​​​no arquivo jar no caminho h2\bin , que precisaremos mais tarde, copie-o):
    Parte 1. Introdução ao SQL - 8

  7. Voltamos ao IDE e criamos diretórios na raiz do projeto: db , onde estarão localizados os arquivos com dados do SGBD; lib – aqui está a biblioteca JDBC JAR:
    Parte 1. Introdução ao SQL - 9

  8. Mova o arquivo jar da etapa 6 para o diretório lib e adicione-o ao projeto como uma biblioteca:
    Parte 1: Introdução ao SQL - 10

  9. Vamos renomear o arquivo java de src/sql/demo para StockExchange.java (caso você tenha esquecido, vamos emular um simples “exchange”), alterar seu conteúdo e executar:
    Parte 1: Introdução ao SQL - 11
Agora podemos conectar e desconectar do DBMS. Cada etapa é refletida no console. Quando você se conecta pela primeira vez ao SGBD, um arquivo de banco de dados stockExchange.mv.db é criado .

Análise de código

O código real:
package sql.demo;

import java.sql.*;

public class StockExchangeDB {
    // Блок объявления констант
    public static final String DB_URL = "jdbc:h2:/c:/JavaPrj/SQLDemo/db/stockExchange";
    public static final String DB_Driver = "org.h2.Driver";

    public static void main(String[] args) {
        try {
            Class.forName(DB_Driver); //Проверяем наличие JDBC драйвера для работы с БД
            Connection connection = DriverManager.getConnection(DB_URL);//соединениесБД
            System.out.println("Соединение с СУБД выполнено.");
            connection.close();       // отключение от БД
            System.out.println("Отключение от СУБД выполнено.");
        } catch (ClassNotFoundException e) {
            e.printStackTrace(); // обработка ошибки  Class.forName
            System.out.println("JDBC драйвер для СУБД не найден!");
        } catch (SQLException e) {
            e.printStackTrace(); // обработка ошибок  DriverManager.getConnection
            System.out.println("Ошибка SQL !");
        }
    }
}

Bloco constante:

  1. DB_Driver : Aqui definimos o nome do driver, que pode ser encontrado, por exemplo, clicando na biblioteca conectada e expandindo sua estrutura no diretório lib do projeto atual.
  2. DB_URL : Nosso endereço de banco de dados. Consiste em dados separados por dois pontos:
  3. Protocolo=jdbc
  4. Fornecedor (fabricante/nome) DBMS=h2
  5. A localização do SGBD, no nosso caso o caminho para o arquivo (c:/JavaPrj/SQLDemo/db/stockExchange). Para SGBDs de rede, os nomes ou endereços IP de servidores remotos, números de porta TCP/UDP e assim por diante são indicados adicionalmente aqui.

Erro ao processar:

Chamar métodos em nosso código pode retornar erros aos quais você deve prestar atenção. Nesta fase, simplesmente os reportamos no console. Observe que os erros ao trabalhar com um SGBD são geralmente SQLException .

Lógica de operação:

  1. Class.forName (DB_Driver) – garantimos que o driver JDBC correspondente esteja disponível (que baixamos e instalamos anteriormente).
  2. DriverManager.getConnection (DB_URL) – estabelece uma conexão DBMS. Usando o endereço passado, o próprio JDBC determinará o tipo e localização do nosso SGBD e retornará uma Conexão, que poderemos usar para nos comunicarmos com o banco de dados.
  3. connection.close() – fecha a conexão com o SGBD e finaliza o trabalho com o programa.
Na próxima parte da série conheceremos os operadores DDL e os tipos de dados SQL, além de criar a estrutura inicial do nosso banco de dados e preenchê-lo com tabelas. Segunda parte Terceira parte
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION