JavaRush /Blog Java /Random-ES /Parte 1: Introducción a SQL
Marat Sadykov
Nivel 41

Parte 1: Introducción a SQL

Publicado en el grupo Random-ES

JDBC. Conexión de una base de datos y creación de una aplicación de consola Java en IntelliJ IDEA

Introducción

Este artículo abre una breve serie dedicada a los conceptos básicos de la interacción con bases de datos en Java y una introducción a SQL . Muchos programas están ocupados procesando y modificando información y manteniéndola actualizada. Dado que los datos son una parte muy importante de la lógica del programa, a menudo se les asigna un almacenamiento separado. La información contenida en él está estructurada y sujeta a reglas especiales para garantizar su correcto procesamiento y almacenamiento. Se accede a los datos y se modifican mediante un lenguaje de consulta especial: SQL (lenguaje de consulta estructurado).
Parte 1. Introducción a SQL - 1
Un sistema de gestión de bases de datos es un software que garantiza la interacción de varios programas externos con datos y servicios adicionales (registro, recuperación, copia de seguridad, etc.), incluso a través de SQL. Es decir, una capa de software entre los datos y los programas externos que trabajan con ellos. En esta parte, responderemos las preguntas sobre qué es SQL, qué es un servidor SQL y crearemos el primer programa para interactuar con el DBMS.

Tipos de DBMS

Existen varios tipos de DBMS según la forma en que organizan el almacenamiento de datos:
  • Jerárquico. Los datos están organizados en una estructura de árbol. Un ejemplo es un sistema de archivos que comienza desde la raíz del disco y luego crece con ramas de archivos de diferentes tipos y carpetas de distintos grados de anidamiento.
  • Red. Una modificación de la jerarquía, cada nodo puede tener más de un padre.
  • Orientado a objetos. Los datos se organizan en forma de clases/objetos con sus atributos y principios de interacción según la programación orientada a objetos.
  • Relacional. Los datos de este tipo de DBMS están organizados en tablas. Las tablas se pueden vincular entre sí, la información que contienen está estructurada.
En esta serie de artículos, veremos los DBMS relacionales (como los más comunes) usando H2 como ejemplo y crearemos una aplicación desde cero que emule algo similar a cómo funciona un intercambio. Pregunta: ¿Por qué no PostgreSQL, MySQL, MSSQL u Oracle? Respuesta: Para no distraerse con la instalación de un conjunto de programas por separado. Configuración adicional, creación de una base de datos, las complejidades de trabajar en diferentes sistemas operativos y versiones. Para trabajar con H2, debe realizar un mínimo de acciones. Pero nada le impide cambiar el JDBC H2 actual a un DBMS relacional de otro fabricante (solo cambian la línea de dirección del servidor y el nombre de la clase del controlador).

SQL

Los programas externos generan consultas al DBMS en el lenguaje de gestión de datos Structured Query Language. ¿Qué es SQL y en qué se diferencia de los lenguajes de programación convencionales? Una de las características de SQL es la declaratividad. Es decir, SQL es un lenguaje declarativo . Esto significa que al ingresar comandos, es decir, al crear consultas al servidor SQL, describimos qué es exactamente lo que queremos obtener y no de qué manera. Al enviar una solicitud al servidor SELECT * FROM CUSTOMER(traducción aproximada de SQL al ruso: "haga una selección de la tabla CLIENTE, la selección consta de todas las filas de la tabla" ), recibiremos datos de todos los usuarios. No importa en absoluto cómo y desde dónde el servidor descarga y genera los datos que nos interesan. Lo principal es formular correctamente la solicitud.
  • ¿Qué es SQL Server y cómo funciona? La interacción con el DBMS se produce según el principio cliente-servidor. Algún programa externo envía una solicitud en forma de operadores y comandos en lenguaje SQL, el DBMS la procesa y envía una respuesta. Para simplificar, supongamos que SQL Server = DBMS.
Si sabes conducir una marca de coche, lo más probable es que puedas conducir otras sin problemas. Los conceptos básicos de conducción son los mismos en todas partes, salvo pequeños detalles. Lo mismo ocurre con los servidores SQL de diferentes fabricantes: cada uno de ellos tiene su propia versión de SQL, pero cumple con los estándares especificados (SQL92, SQL2003...). Usaremos operadores y comandos dentro del marco SQL92. Las sentencias SQL básicas se dividen en los siguientes grupos:
  • Lenguaje de definición de datos ( DDL ): definiciones de datos. Creación de la estructura de la base de datos y sus objetos;
  • Lenguaje de manipulación de datos ( DML ): interacción real con datos: inserción, eliminación, modificación y lectura;
  • Lenguaje de control de transacciones ( TCL ): gestión de transacciones;
  • Lenguaje de control de datos ( DCL ): gestión de derechos de acceso a datos y estructuras de bases de datos.
En una serie de artículos veremos los primeros tres grupos, prestando especial atención a DML.

JDBC

En los años 80 del siglo pasado conquistaron el mercado los ordenadores personales del tipo PC XT/AT. Esto se debió en gran medida a la modularidad de su diseño. Esto significa que el usuario podría cambiar fácilmente uno u otro componente de su computadora (procesador, tarjeta de video, discos, etc.). Esta maravillosa propiedad se ha conservado hasta el día de hoy: cambiamos la tarjeta de video y actualizamos el controlador (a veces incluso se actualiza solo, automáticamente). La mayoría de las veces, no sucede nada malo con tales manipulaciones y los programas existentes continuarán funcionando con el sistema actualizado sin necesidad de reinstalarlos. Lo mismo se aplica al trabajar en Java con un DBMS. Para estandarizar el trabajo con servidores SQL, la interacción con él se puede realizar a través de un único punto: JDBC (Java DataBase Connectivity). Es una implementación del paquete java.sql para trabajar con un DBMS. Los fabricantes de todos los servidores SQL populares lanzan controladores JDBC para ellos. Considere el siguiente diagrama. La aplicación utiliza instancias de clases de java.sql . Luego pasamos los comandos necesarios para recuperar/modificar los datos. A continuación, java.sql interactúa con el DBMS a través del controlador jdbc y nos devuelve el resultado final. Parte 1. Introducción a SQL - 2 Para cambiar a un DBMS de otro fabricante, suele ser suficiente cambiar JDBC y realizar configuraciones básicas. Las partes restantes del programa no cambian.

primer programa

Pasemos a la parte práctica. Creemos un proyecto Java utilizando JetBrains IntelliJ IDEA IDE . Tenga en cuenta que Ultimate Edition contiene una herramienta maravillosa para trabajar con SQL y bases de datos: Data Grip . Sin embargo, para la mayoría de los usuarios es de pago. Por lo tanto, con fines educativos solo podemos utilizar la edición comunitaria IntelliJ IDEA disponible públicamente . Entonces:
  1. Inicie el IDE y cree un nuevo proyecto:
    Parte 1. Introducción a SQL - 3

  2. Seleccione un proyecto Java, indique la versión del SDK (en el ejemplo JDK8, pero esto no es crítico):
    Parte 1. Introducción a SQL - 4

  3. En el siguiente paso, seleccione la aplicación de consola como tipo :
    Parte 1. Introducción a SQL - 5

  4. Indicamos el nombre del proyecto , el paquete y su ubicación en el disco (creé un directorio separado específicamente para esto):
    Parte 1. Introducción a SQL - 6

  5. Dejemos el IDE a un lado por un minuto y descarguemos desde www.h2database.com el archivo JDBC necesario para trabajar con el DBMS H2 (descarga ZIP independiente de la plataforma):
    Parte 1. Introducción a SQL - 7

  6. Nos adentramos en el archivo descargado (nos interesa el archivo jar en la ruta h2\bin , que necesitaremos más adelante, cópialo):
    Parte 1. Introducción a SQL - 8

  7. Volvemos al IDE y creamos directorios en la raíz del proyecto: db , donde se ubicarán los archivos con datos DBMS; lib – aquí está la biblioteca JDBC JAR:
    Parte 1. Introducción a SQL - 9

  8. Mueva el archivo jar del paso 6 al directorio lib y agréguelo al proyecto como biblioteca:
    Parte 1: Introducción a SQL - 10

  9. Cambiemos el nombre del archivo java a src/sql/demo a StockExchange.java (en caso de que lo hayas olvidado, vamos a emular un “exchange” simple), cambiemos su contenido y ejecutemos:
    Parte 1. Introducción a SQL - 11
Ahora podemos conectarnos y desconectarnos del DBMS. Cada paso se refleja en la consola. Cuando se conecta por primera vez al DBMS, se crea un archivo de base de datos stockExchange.mv.db .

análisis de código

El 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 !");
        }
    }
}

Bloque constante:

  1. DB_Driver : Aquí definimos el nombre del controlador, que se puede encontrar, por ejemplo, haciendo clic en la biblioteca conectada y expandiendo su estructura en el directorio lib del proyecto actual.
  2. DB_URL : Dirección de nuestra base de datos. Consta de datos separados por dos puntos:
  3. Protocolo=jdbc
  4. Proveedor (fabricante/nombre) DBMS=h2
  5. La ubicación del DBMS, en nuestro caso la ruta al archivo (c:/JavaPrj/SQLDemo/db/stockExchange). Para los DBMS de red, aquí se indican adicionalmente los nombres o direcciones IP de servidores remotos, números de puerto TCP/UDP, etc.

Error al procesar:

Llamar a métodos en nuestro código puede devolver errores a los que debes prestar atención. En esta etapa simplemente los reportamos en la consola. Tenga en cuenta que los errores al trabajar con un DBMS suelen ser SQLException .

Lógica de funcionamiento:

  1. Class.forName (DB_Driver): nos aseguramos de que esté disponible el controlador JDBC correspondiente (que descargamos e instalamos previamente).
  2. DriverManager.getConnection (DB_URL): establece una conexión DBMS. Usando la dirección pasada, el propio JDBC determinará el tipo y la ubicación de nuestro DBMS y devolverá una Conexión, que podemos usar para comunicarnos con la base de datos.
  3. conexión.close() – cierra la conexión al DBMS y termina de trabajar con el programa.
En la siguiente parte de la serie, nos familiarizaremos con los operadores DDL y los tipos de datos SQL, y también crearemos la estructura inicial de nuestra base de datos y la llenaremos con tablas. Segunda parte Tercera parte
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION