Un artículo de una serie sobre la creación de un proyecto Java. Su objetivo es analizar tecnologías clave y el resultado es escribir un bot de Telegram. La parte introductoria está aquí . Hola, ingenieros de software. Hoy hablamos de bases de datos y el lenguaje SQL. ¿A quién va dirigido este artículo? Sí a todos los que estén interesados. Algunos podrán comenzar su viaje con este artículo, otros podrán refrescar su memoria con datos interesantes. Esta parte será puramente teórica. Antes de decirle qué son las bases de datos y la sintaxis SQL, debemos comprender y determinar por qué las estudiaremos. En esta etapa, hablaremos SÓLO sobre bases de datos SQL: no consideraremos NoSQL en esta serie de artículos.
Base de datos: que es
Una base de datos (en adelante DB) es un lugar donde se almacenan datos estructurados , que pueden obtenerse mediante un lenguaje de consulta. Las bases de datos no sólo pueden almacenar, sino también procesar y cambiar información en grandes volúmenes. Como nota: intente cambiar rápidamente un conjunto de valores en Excel según algunos criterios. En principio, nada complicado. No como en nuestro mundo real no digitalizado. Por ejemplo, cambiar el nombre de carriles, calles, ciudades. Si todo fuera virtual y se ingresara en la base de datos, se normalizaría, serían un par de bagatelas. Tal como están las cosas, muchos medios de almacenamiento sufren porque no pueden cambiar automáticamente. En este contexto, SQL para bases de datos es un lenguaje que la base de datos comprende y responde en consecuencia. Digamos que cambiar el nombre de la ciudad no sería difícil; cambiar el nombre de Dnepropetrovsk a Dnipro sería algo como esto:UPDATE city SET name = “Днипро” WHERE id = 1231;
Todas las solicitudes posteriores al sistema ya producirán el nombre que necesitamos.
¿Por qué se necesitan las bases de datos?
Como ya dije, usando bases de datos puedes almacenar datos. ¿Pero cuáles son estos datos? Para entenderlo usando un ejemplo de la vida real, podemos hablar de alguna aplicación. Por ejemplo, sobre el mismo robot de Telegram. Queremos saber cuántas personas están usando el bot. ¿Cómo se puede implementar esto? En una aplicación Java normal, puede crear muchos elementos únicos: un conjunto, que almacenará el apodo del usuario o la identificación del chat. esto funcionara? Voluntad. Exactamente hasta que se detenga la aplicación Java, y tan pronto como se inicie nuevamente, el conjunto de elementos únicos estará vacío. Es decir, los datos que estaban almacenados en la aplicación en ejecución simplemente desaparecieron. ¿Qué puedes hacer al respecto? Puede mover el almacenamiento del estado del sistema (datos) desde una aplicación Java a otro lugar. Puede almacenarlo en formato CSV en un archivo normal en su computadora. Puedes hacerlo en una línea en un archivo separado. Puede hacer esto y luego sobrescribir estos datos antes de que se detenga la aplicación Java. Aunque la garantía de que la grabación será exitosa está lejos de ser cercana al 100%, porque simplemente desconecta el cable de alimentación del servidor y la grabación no se realizará. Este enfoque tiene un inconveniente importante: no existe ninguna funcionalidad para obtener, agregar y buscar información a nivel de archivo. Sí, por supuesto, puedes leer un archivo y crear objetos para él, pero tendrás que inyectar todos los datos en la aplicación CADA vez. Y puede haber muchos, por ejemplo, un par de gigabytes. Esto se puede evitar almacenando datos en una base de datos. ¿Cómo? A través de tablas y relaciones entre ellas. En esto se basan todas las bases de datos relacionales.SQL: un lenguaje que entienden las bases de datos
Existen Sistemas de Gestión de Bases de Datos (en adelante DBMS) y el lenguaje que entienden es SQL. SQL es un lenguaje de programación para manipular y administrar bases de datos. Para entender cómo funciona esto, veamos la figura: el usuario envía consultas SQL al DBMS, el DBMS entiende lo que hay que hacer, lo hace y, si la solicitud era para obtener datos, los devuelve. Por lo tanto, como desarrolladores, debemos dominar el lenguaje de consulta SQL. Podrías pensar: “Oh, otro idioma. Con la ayuda de Dios, aquí apenas entiendo Java e inmediatamente me ofrecen otro idioma”. Esto no es cierto: SQL se inventó como lenguaje de especificación de un DBMS para que los contables que están muy alejados de las bases de datos y de la programación en general pudieran escribir en este lenguaje. Esto significa que aprenderlo no será tan difícil. Lo principal es PRÁCTICA-PRÁCTICA-PRÁCTICA. Hoy habrá teoría, pero el próximo artículo será sobre práctica. Dado que una base de datos relacional es un conjunto de tablas de matrices bidimensionales y relaciones entre ellas, el trabajo trabajará en torno a ellas. Si hablamos de un ejemplo, podemos mostrar dos tablas: "Países" y "Ciudades" y cómo están conectadas. En esta etapa, es importante que comprendamos que los registros de la tabla son datos sobre algún objeto del mundo Java. Por ejemplo, estas dos tablas se pueden describir en Java así:public class Country {
private Long id;
private String name;
}
public class City {
private Long id;
private String name;
private Country country;
private Integer population;
}
Bueno, ¿no es hermoso, eh? La base de datos puede almacenar cualquier número de tablas. En nuestro caso son dos.
Estructura de la mesa
Creo que todo el mundo se ha topado con tablas de Excel de una forma u otra y comprende los términos fila y columna . En el contexto de las bases de datos, hablamos más de registros y campos: así, resulta que cada objeto de la clase Ciudad es un registro en una tabla de la base de datos.Clave primaria
A menudo sucede que los campos de las bases de datos tienen los mismos valores. Por ejemplo, las redes sociales, donde se puede encontrar a más de una persona por nombre, apellido e incluso patronímico. Y las bases de datos relacionales requieren un campo único que pueda usarse para acceder a un registro. Esto se llama primera clave o clave primaria. Normalmente, el campo ID(id) se utiliza como clave; es la abreviatura de identificador. Es por eso que necesita agregar un campo de ID a cada tabla .clave externa
En nuestro ejemplo, dicho campo se encuentra en la tabla Ciudad, que utiliza la clave de País. Y funciona así: cada ciudad conoce un identificador de información único para su país, y si lo tomamos y creamos una consulta en la base de datos, recibiremos información completa sobre el país. Como puede ver en la imagen, existe una relación entre dos tablas: aquí se muestra el principio de una clave externa.¿Qué secciones hay en SQL?
Por cierto, durante las entrevistas a menudo les preguntan qué operaciones hay en SQL:- DDL (lenguaje de definición de datos) es un grupo de operadores que cambian/crean tablas, su estructura y más. Es decir, crear una tabla, eliminarla, crear/eliminar campos en las tablas; crear una nueva clave primaria y así sucesivamente;
- DML (Lenguaje de manipulación de datos) es un grupo de operadores que gestionan la modificación de datos. Todas estas son operaciones que cambian datos en la base de datos: agregar, obtener, cambiar y eliminar;
- DCL (lenguaje de control de datos) es un medio para confirmar los derechos del usuario para realizar acciones. Operaciones para otorgar acceso y derechos a un usuario específico para que pueda realizar operaciones DDL/DML.
¿Qué tipos de datos hay en SQL?
Las tablas pueden almacenar y procesar ciertos tipos de datos. Todo aquí será similar a lo que usamos en Java. Hablemos de los principales. Solo hay tres, agregaremos otros según sea necesario y/o desee: Como se puede ver en la imagen, estos son:- INT : valores enteros. Se utiliza para un identificador único y para un número entero simple;
- VARCHAR es nuestra Cadena ;
- La FECHA es nuestra fecha local.
GO TO FULL VERSION