Base de Datos Estructurada Modulo
Base de Datos Estructurada Modulo
2.2-Introducción
2.5-Lectura complementaria
2.6-Actividad en el Foro
no obligatoria)
Bases de Datos Estructurados | 2
Bases de Datos Estructurados | 3
Iconos individuales
Contexto
Sistemas de
elementos sustanciales
Bases de ventajas
Datos
Softwar
Arquitectura e
Usuario
s
Si analizamos cualquier sistema informático, encontraremos siempre como uno de
los componentes esenciales, una Base de Datos. Por lo tanto, el objetivo de esta
unidad, es desde un contexto sistémico, resaltar la importancia que tiene las bases
de datos, conocer sus fundamentos, desarrollando los conceptos iniciales, y resaltar
las ventajas que brindan.
Es justo decir que las bases de datos juegan un papel fundamental en la mayoría de
las áreas en las que se utilizan computadores, como en el ámbito empresarial, en el
comercio electrónico, ingeniería, medicina, justicia, educación y bibliotecas entre
otros.
Podemos afirmar que, los sistemas de bases de datos son un componente esencial
de la vida cotidiana en la sociedad moderna. Actualmente, la mayoría de nosotros
nos enfrentamos a diversas actividades que implican cierta interacción con una base
de datos. Por ejemplo, ir al banco a depositar o retirar fondos, realizar una reserva
en un hotel o una compañía aérea, acceder al catálogo de una biblioteca para buscar
un libro, o comprar algo online (un juguete o una TV, por ejemplo), son actividades
que implican que alguien o algún programa de computadora acceda a una base de
datos. Incluso la compra de productos en un supermercado, en muchos casos,
provoca la actualización automática de la base de datos que mantiene el stock de la
tienda.
Estas interacciones son ejemplos de lo que podemos llamar aplicaciones de bases
de datos tradicionales, en las que la mayor parte de la información que hay
almacenada y a la que se accede es textual o numérica. En los últimos años, los
En este contexto actual, remarcando la importancia que tienen las bases de datos,
continuaremos el desarrollo de esta unidad, definiendo los conceptos básicos de las
bases de datos.
⮚ Hardware
⮚ Usuarios Haga un listado de las aplicaciones de
⮚ Software su celular, web y software que utiliza
⮚ Datos cotidianamente.
Por ejemplo, una biblioteca, una red social, una clínica, una universidad.
✔ Una base de datos representa algún aspecto del mundo real, lo que en
ocasiones se denomina minimundo o universo de discurso.
✔ Una base de datos se diseña, construye y rellena con datos para un propósito
específico.
Cada una de estas ventajas, se describen por si sola, para tener una descripción más
detallada de cada uno de estos puntos, realizar la lectura obligatoria de los capítulos
sugeridos de la bibliografía.
DBMS
Un sistema de administración de datos (DBMS, database management system) es
una colección de programas que permite a los usuarios crear y mantener una base
de datos. El DBMS es un sistema de software de propósito general que facilita los
procesos de definición, construcción, manipulación y compartición de bases de datos
entre varios usuarios y aplicaciones.
⮚ Control de la redundancia
La redundancia resultante de almacenar los mismos datos varias veces conduce a
serios problemas.
En primer lugar, las actualizaciones lógicas sencillas (como la introducción de los
datos de un estudiante nuevo) hay que hacerlas varias veces: una por cada archivo
donde se almacenen los datos de los estudiantes. Esto lleva a una duplicación del
esfuerzo.
En segundo lugar, se derrocha espacio de almacenamiento al guardar
repetidamente los mismos datos, y este problema puede llegar a ser muy serio en las
bases de datos más grandes.
En tercer lugar, los archivos que representan los mismos datos pueden acabar
siendo incoherentes
Cuando varios usuarios comparten una base de datos, es probable que la mayoría
de los mismos no tengan autorización para acceder a toda la información de la base
de datos. Un DBMS debe proporcionar seguridad y un subsistema de autorización
Un DBMS debe ofrecer la posibilidad de recuperarse ante fallos del hardware o del
software. El subsistema de copia de seguridad y recuperación del DBMS es el
responsable de la recuperación.
Con respecto al software DBMS es el que maneja todo acceso a la base de datos. De manera
conceptual, lo que sucede es lo siguiente (ver figura ) :
1. Un usuario emite una petición de acceso, utilizando algún sublenguaje de datos específico
(por lo regular SQL).
2. El DBMS intercepta esa petición y la analiza.
3. El DBMS inspecciona, en su momento, (las versiones objeto de) el esquema externo para
ese usuario, la transformación externa/conceptual correspondiente, el esquema conceptual,
la transformación conceptual/interna y la definición de la estructura de almacenamiento.
4. El DBMS ejecuta las operaciones necesarias sobre la base de datos almacenada.
En términos generales:
⮚ El nivel interno (también conocido como el nivel físico) es el que está más
cerca del almacenamiento físico; es decir, es el que tiene que ver con la forma
en que los datos están almacenados físicamente.
⮚ El nivel externo (también conocido como el nivel lógico de usuario) es el más
próximo a los usuarios; es decir, el que tiene que ver con la forma en que los usuarios
individuales ven los datos.
⮚ El nivel conceptual (también conocido como el nivel lógico de la comunidad,
o en ocasiones sólo como el nivel lógico, sin calificar) es un nivel de
indirección entre los otros dos.
El nivel interno: También conocido como el nivel físico, es el que está más cerca del
almacenamiento físico, es decir, en el que tiene que ver con la forma en que los datos
están almacenados físicamente.
Por lo tanto, el nivel externo es el nivel del usuario individual. Cada usuario tiene a
su disposición un lenguaje. En nuestro caso, lo importante acerca de dichos
lenguajes es que incluyan un sub-lenguaje de datos es decir un subconjunto del
lenguaje total que se ocupe específicamente de los objetos y operaciones de la base
de datos. Se dice que el sublenguaje de datos SLD está incrustado dentro de un
lenguaje anfitrión correspondiente. El lenguaje anfitrión es el responsable de
proporcionar diversas propiedades que no son específicas de la base de datos, como
las variables locales, las operaciones de cálculo, la lógica de bifurcación, etc. Un
sublenguaje de datos específico soportado por casi todos los sistemas actuales es el
lenguaje SQL que utiliza de manera interactiva, como un lenguaje de consulta
independiente, e incrustado en otros lenguajes como PL/I o JAVA.
Esta vista conceptual está definida por medio del esquema conceptual, el cual
comprende definiciones de cada uno de los diversos tipos de registros conceptuales.
El esquema conceptual está escrito con otro lenguaje de definición de datos, el
llamado DDL conceptual. Estas definiciones de DDL no deben comprender en lo
absoluto ninguna consideración de la representación física ni de la técnica de acceso,
deben ser únicamente definiciones del contenido de la información.
En este nivel encontraremos los usuarios sistemistas, que son los Analistas,
programadores, usuarios de nivel técnico
Transformaciones
EL DBA
En muchas empresas donde las dimensiones, procesos y volumen de información que manejan, se
puede encontrar un usuario específico para tales tareas. En un entorno de bases de datos, el recurso
principal es la base de datos en sí misma, mientras que el recurso secundario es el DBMS y el software
relacionado. La administración de estos recursos es responsabilidad del usuario administrador de la
base de datos (DBA, database administrator).
el DBA es la persona que proporciona el apoyo técnico necesario para implementar decisiones de
estrategia y política con respecto a los datos de la empresa, por lo tanto, es el responsable del control
general del sistema al nivel técnico. Ahora podemos describir con un poco más de detalle algunas de
las tareas del DBA. En general, estas tareas comprenden al menos todas las siguientes (ver video):
Lectura complementaria
Tipos de Bases
de Datos
Modelo
Relacional
Aspecto
Estructural y de
integridad
Aspecto de
Manipulación y
Algebra
Relacional
Existen diferentes categorías de bases de datos no son necesariamente excluyentes unas con otras,
siendo su más grande diferenciación entre las relacionales y las no relacionales. Por eso, entre los
ejemplos podrás encontrar la misma base de datos en diferentes categorías.
Una de las ventajas de las bases de datos NoSQL es que los desarrolladores pueden realizar cambios
en la base de datos sobre la marcha, sin que ello afecte a las aplicaciones que la utilizan.
Ejemplos:
Ejemplos:
⮚ Google Firebase
⮚ Microsoft Azure SQL Database
⮚ Amazon Relational Database Service
⮚ Oracle Autonomous Database.
Cuando se consulta una base de datos en columnas, básicamente se ignoran todos los datos que no se
aplican a la consulta específica, ya que solo se puede recuperar la información de las columnas que se
desea. Esta es una gran ventaja al encontrarse con datasets de proporciones gigantescas, con millones
de registros.
Ejemplos:
⮚ Google BigQuery
⮚ Cassandra
⮚ HBase
⮚ MariaDB
⮚ Azure SQL Data Warehouse
5. Bases de datos de columnas anchas (wide column)
Las bases de datos de columnas anchas tienen la ventaja de ser altamente escalables, pudiendo manejar
incluso petabytes de datos en sus registros, lo que las hace ideales para soportar aplicaciones de big data
en tiempo real.
Ejemplos:
⮚ BigTable
⮚ Apache Cassandra
⮚ Scylla
6. Bases de datos orientadas a objetos
Una base de datos orientada a objetos se basa en la programación orientada a objetos (POO), por lo que
los datos y todos sus atributos, están unidos como un objeto.
Las bases de datos orientadas a objetos se gestionan mediante sistemas de gestión de bases de datos
orientados a objetos (OODBMS - Object Oriented DataBase Management System).
Estas bases de datos funcionan bien con lenguajes de programación orientados a objetos, como C++ y
Java.
Las bases de datos clave-valor son altamente escalables y pueden manejar grandes volúmenes de tráfico,
lo que las hace ideales para procesos como la gestión de sesiones para aplicaciones web, sesiones de
usuario para juegos masivos en línea y carritos de compra en línea.
Ejemplos:
⮚ Sistema de Gestión de la Información de IBM (IMS)
⮚ Registro de Windows
Las bases de datos de documentos son sencillas y escalables, lo que las hace útiles para las aplicaciones
móviles que necesitan iteraciones rápidas.
Ejemplos:
⮚ MongoDB
⮚ Amazon DocumentDB
⮚ Apache CouchDB
Ejemplos:
⮚ Datastax Enterprise Graph
⮚ Neo4J AuraDB
⮚ Druid
⮚ eXtremeDB
⮚ InfluxDB
[Link]
El modelo relacional es sin lugar a dudas el fundamento de la tecnología moderna de base de datos; este
fundamento es el que hace de este campo una ciencia. El modelo relacional se ocupa de tres aspectos
principales de la información: la estructura de datos, la manipulación de datos y la integridad de los datos.
⮚ Aspecto estructural: El usuario percibe la información de la base de datos como tablas y nada
más que tablas;
⮚ Aspecto de manipulación: Los operadores disponibles para que el usuario manipule estas
tablas, por ejemplo, para fines de recuperación de datos— son operadores que derivan tablas a
partir de tablas. En particular, tres de estos operadores son importantes: restringir, proyectar y
juntar (también se lo conoce como reunir)
Aspecto Estructural
El modelo relacional representa la base de datos como una colección de relaciones. Informalmente, cada
una de estas relaciones se parece a una tabla de valores. Las tablas son la estructura lógica en un sis
tema relacional, no la estructura física. De hecho, en el nivel físico el sistema es libre de almacenar los
datos en cualquier forma en que desee.
Los principios del modelo relacional fueron establecidos originalmente en 1969-70 por E.F. Codd (en ese
entonces, investigador de IBM). Fue a fines de 1968 que Codd, matemático de formación, descubrió por
primera vez que la disciplina de las matemáticas podía ser usada para dar ciertos principios sólidos y
cierto rigor a un campo —la administración de base de datos— que hasta ese momento era muy deficiente
en cualquiera de estas cualidades.
Primeras Definiciones:
⮚ Cuando una relación está pensada como una tabla de valores, cada fila representa una colección
de valores relacionados.
⮚ Cada fila de la tabla representa un hecho que, por lo general, se corresponde con una relación o
entidad real.
⮚ El nombre de la tabla y de las columnas se utiliza para ayudar a interpretar el significado de cada
uno de los valores de las filas.
⮚ Los nombres de columna especifican el modo de interpretar los valores de cada fila en función de
la columna en la que se encuentren.
⮚ Todos los datos de una columna son del mismo tipo de dato. El tipo de dato que describe los
valores que pueden aparecer en cada columna está representado por un dominio de posibles
valores
Un dominio D es un conjunto de valores atómicos. Por atómico queremos decir que cada valor de un
dominio es indivisible en lo que al modelo relacional se refiere. Una forma habitual de especificar un
dominio es indicar un tipo de dato desde el que se dibujan los valores del mismo. Por ejemplo, para el
atributo salario, el dominio de posibles valores es de números decimales, para el atributo nombre, el
dominio es una cadena de caracteres.
La anterior definición de relación puede ser enunciada más formalmente del siguiente modo. Una
relación es una relación matemática de grado n en los dominios dom(A 1), dom(A2), ... , dom(A,,) que
es un subconjunto del producto cartesiano de los dominios que definen R:
Ordenación de los valores dentro de una tupla y definición alternativa de una relación. Según la
definición anterior de relación, una n-tupla es una lista ordenada de n valores, por lo que el orden de
valores dentro de una de ellas (y por consiguiente de los atributos de un esquema de relación) es
importante. Sin embargo, a nivel lógico, el orden de los atributos y sus valores no es tan importante
mientras se mantenga la correspondencia entre ellos.
Valores y NULLs en las tuplas. Cada valor en una tupla es un valor atómico, es decir, no es divisible en
componentes dentro del esqueleto del modelo relacional básico. Por tanto, no están permitidos los
atributos compuestos y multivalor. Este modelo suele recibir a veces el nombre de modelo relacional
plano. Una gran palie de la teoría que se esconde tras el modelo relacional fue desarrollada con este
principio en mente, el cual recibe el nombre de principio de primera forma normal
Un concepto importante es el de los valores NULL (nulo), que se utilizan para representar los valores
de atributos que pueden ser desconocidos o no ser aplicables a una tupla. Para estos casos, existe un
valor especial llamado NULL. Por ejemplo, si de un proveedor en ciudad figura NULL, es que, todavía
desconocemos la ciduad de ese proveedor.
Aspecto de integridad
o De dominio,
o De clave, en valores NULL,
o De integridad de entidad y de integridad referencial.
Otra categoría impOliante de restricciones son las dependencias de datos, las cuales incluyen las
dependencias funcionales y las dependencias multivalor. Suelen emplearse para comprobar la
corrección del diseño de una base de datos relacional y en un proceso llamado normalización
Restricciones de dominio
Las restricciones de dominio especifican que dentro de cada tupla, el valor de un atributo A debe ser
un valor atómico del dominio dom(A). Los tipos de datos asociados a ellos suelen incluir valores
numéricos estándar para datos enteros (como entero corto, entero o entero largo) y reales (de coma
flotante de simple y doble precisión).
También están disponibles tipos de datos para el almacenamiento de caracteres, valores lógicos,
cadenas de longitud fija y variable, fechas, horas y moneda. Es posible describir otros dominios como
un subrango de valores de un tipo de dato, o como un tipo de dato enumerado en el que todos sus
posibles valores están explícitamente listados.
t¡[SK] ≠ t2[SK]
Una superclave o clave candidata especifica una restricción de exclusividad por la que dos tuplas
distintas en cualquier estado r de R pue den tener el mismo valor para SK. Cada relación tiene, al
menos, una superclave predeterminada: el conjunto de todos sus atributos. Sin embargo, una
superclave puede contar con atributos redundantes, por lo que un concepto más importante es el de
1. Dos tuplas diferentes de la relación no pueden tener valores idénticos para (todos) los
atributos de la clave. UNICIDAD
2. Es una superclave mínima, es decir, una superclave de la cual no podemos eliminar ningún
atributo y seguiremos teniendo almacenada la restricción de exclusividad de la condición 1.
MINIMALIDAD
3. Otra restricción en los atributos de una clave, es que no permiten valores NULL.
La primera condición se aplica tanto a las claves como a las superclaves, mientras que la segunda sólo
a las claves. Por ejemplo, considere la relación EMPLEADO. El conjunto de atributo {Dni} es una clave
de EMPLEADO porque dos tuplas de empleados distintas no pueden tener el mismo valor para el Dni.
Cualquier conjunto de atributos que incluya el Dni (por ejemplo, {Dni, Nombre, Edad} es una
superclave. Sin embargo, la superclave {Dni, Nombre, Edad} no es una clave de EMPLEADO porque la
eliminación del Nombre, la Edad, o ambas, del conjunto aun no deja una superclave. En general,
cualquier superclave formada a partir de un único atributo es también una clave. Una clave con
múltiples atributos debe exigir todos ellos para mantener la condición de exclusividad.
En general, una relación puede contar con más de una clave candidata. Es común designar una de ellas
como la clave principal de la relación, y será la que se utilice para identificar las tuplas en la relación.
Para expresar de un modo más formal la integridad referencial, primero debemos definir el concepto
de una foreign key (clave externa). Las condiciones de una foreign key, dadas más abajo, especifican
una restricción de integridad referencial entre dos esquemas de relación R1 y R2. Un conjunto de
atributos FK en una relación R, es una foreing de R1 que referencia a la relación R2 si satisface las
siguientes reglas:
1. Los atributos en FK tienen el mismo dominio, o dominios, que los atributos de clave principal
PK de R2; se dice que los atributos FK referencian o hacen referencia a la relación R2.
2. Un valor de FK en una tupla t1 del estado actual r1(R1) tampoco aparece como valor de PK en
alguna tupla t2 del estado actual r2(R2) o es NULL. En el caso anterior, tenemos que t1 [FK] =
t2[PK], Y decimos que la tupla t1 referencia o hace referencia a la tupla t2.
Aspecto de Manipulación
El modelo relacional incluye un conjunto de operaciones para manipular la base de datos. El conjunto de
operaciones básicas del modelo relacional es el álgebra relacional, el cual permite al usuario especificar las
peticiones fundamentales de recuperación. El resultado de una recuperación es una nueva relación, la cual puede
estar constituida por una o más relaciones. Por consiguiente, las operaciones de álgebra producen nuevas
relaciones que pueden ser manipuladas más adelante usando operaciones del mismo álgebra. Una secuencia de
operaciones de álgebra relacional conforma una expresión de álgebra relacional, cuyo resultado será también una
nueva relación que representa el resultado de una consulta a la base de datos (o una petición de recuperación).
⮚ algunos de sus conceptos se han incorporado al lenguaje estándar de consultas SQL para los
RDBMS.
El álgebra relacional tiende a ser considerado como una parte integral del modelo de datos relacional. Sus
operaciones pueden dividirse en dos grupos.
⮚ Uno de ellos incluye el conjunto de operaciones de la teoría matemática de conjuntos, los cuales
son aplicables porque cada relación está definida de modo que sea un conjunto de tuplas en el
modelo relacional formal. Estas operaciones incluyen UNiÓN (UNION), INTERSECCiÓN
(INTERSECTlON), DIFERENCIA DE CONJUNTOS (SET DIFFERENCE) Y PRODUCTO CARTESIANO
(CARTESIAN PRODUCT)
⮚ El otro grupo está constituido por las operaciones desarrolladas específicamente para las bases de
datos relacionales, como la SELECCIÓN (SELECT), la PROYECCIÓN (PROJECT), la CONCATENACIÓN
o COMBINACIÓN (JOIN) y otras.
[Link]
[Link]
La siguiente sección empieza tratando las operaciones SELECCIÓN y PROYECCIÓN porque son operaciones
unarias que operan en relaciones individuales.
Lectura complementaria
Tema: ALgebra
Ejercicio 1
Tabla A
A B
1 2
3 4
B C D
2 5 6
4 7 8
9 10 11
Dada las tablas S y P
Ejercicio 3: JOINS
Tabla domicilio
Hacer:
a. Inner join
b. Left join
c. Right join
d. Full Join
introduccion
Sublenguajes
SQL - nivel
inicial
SQL - nivel
avanzado
SQL (Structured Query Language) es un lenguaje de consultas estructurado, para crear, controlar y
manipular bases de datos relacionales.
Su estandarización fue crucial para su difusión, prácticamente la mayoría de los sistemas relacionales
soportan las bases del SQL estándar y suelen incluir algunos aportes propios.
1974: Desarrollado por IBM como un prototipo del sistema relacional llamado SYSTEM R que incluía el
lenguaje SEQUEL, posteriormente llamado SQL
1976: es publicada la sintaxis completa BNF para SQL en el “IBM Journal od Research and
Development”
1977: ORACLE inicia el desarrollo de RSI incorporando lenguaje SQL
1979: ORACLE aparece como primer gestor relacional comercial, incluyendo SQL
1981: Primera implementación de IBM con el sistema SQL/DS
1983: desde ese año es estándar de facto
1986: Primer estándar (SQL-86) (ANSI)
1989: SQL-89 Revisión del anterior (ISO)
1992: se publica el segundo estándar (SQL-2 o SQL-92)
1999: aparece el tercer estándar (SQL-3 o SQL-99)
2003, 2006, 2008,2011,2016: Revisiones
[Link]
Las siguientes imagenes muestran el orden de procesamiento y el orden de escritura de una consulta
SQL
Durante el procesamiento de una sentencia SQL, se distinguen cuatro fases: análisis de la sintaxis
(parsing), análisis de las variables (binding), ejecución (executing) y recuperación de datos (fetching)
Durante esta fase el servidor de la base de datos realiza las siguientes acciones:
Fase de binding
En esta fase el servidor de la base de datos:
Fase de ejecución
En la fase de ejecución el servidor Oracle realiza las siguientes acciones:
⮚ Ejecuta la sentencia SQL siguiendo el plan de ejecución determinado durante la fase de parsing.
⮚ Realiza las operaciones de entrada/salida necesarias para la ejecución de las sentencias de
manipulación de datos (DML) y ordena los datos en caso de ser necesario.
Fase de fetching
Durante esta fase el servidor devuelve los registros de una sentencia SELECT. En cada iteración (fetch)
el servidor devuelve múltiples registros. El número de registros que devuelve por iteración es
configurable, es decir, se puede cambiar el tamaño de la matriz de registros
Commando Descripción
Create Crea un Nuevo objeto, este puede ser una base de datos, una
table, vista, usuario, disparador, procedimiento, etc
Drop Elimina un objeto de la base de datos
Alter Modifica un objeto de la base de datos
Todos los ejemplos se basarán en la sintaxis para la recuperación de datos SELECT, a continuación, una imagen que
los organizará para recorrer los ejemplos. También pueden organizarse con la hoja de trucos que presentamos para
entender varios conceptos y ejemplos.
Podemos utilizar la cláusula SQL PARTITION BY con la cláusula OVER para poder especificar la columna en la que
necesitamos efectuar la agregación.
SELECT Customercity,
AVG(Orderamount) OVER(PARTITION BY Customercity) AS AvgOrderAmount,
MIN(OrderAmount) OVER(PARTITION BY Customercity) AS MinOrderAmount,
SUM(Orderamount) OVER(PARTITION BY Customercity) TotalOrderAmount
FROM [dbo].[Orders];
En la salida, vamos a obtener los valores agregados similares a una cláusula GROUP By . Usted puede notar una
diferencia en la salida del PARTITION BY y de salida de la cláusula de GROUP BY de SQL.
SELECT Customercity,
CustomerName,
OrderAmount,
AVG(Orderamount) OVER(PARTITION BY Customercity) AS AvgOrderAmount,
MIN(OrderAmount) OVER(PARTITION BY Customercity) AS MinOrderAmount,
SUM(Orderamount) OVER(PARTITION BY Customercity) TotalOrderAmount
FROM [dbo].[Orders];
Obtenemos las columnas CustomerName y OrderAmount junto con la salida de la función agregada. A su vez
obtenemos todas las filas disponibles en la tabla Pedidos.
Obtiene un número limitado de registro usando la sentencia Se obtiene todos los registros en una table usando la sentencia
Group By PARTITION BY.
Retorna una fila por grupo en el conjunto de resultados. Por Tenos 15 registros de la tabla de Órdenes. En la salida de la
ejemplo, se obtiene un resultado por cada grupo de consulta del SQL PARTITION BY, también tenemos 15 filas con el
CustomerCity en la sentencia GROUP BY. valor Mínimo, Máximo y promedio.
En la captura de pantalla que se muestra a continuación, usted puede realizar agregaciones (Promedio , Mínimo y
Máx.) para CustomerCity Chicago. Y así puede proporcionar valores en las columnas respectivas.
[Link]
✅Si querés formatear el desorden de otra persona o el tuyo propio, un Embellecedor de SQL es
esencial. SQL Beautifier te formatea tu query para que termine con el formato correcto.
✅ Generador de SQL
Muchas veces cuando estas empezando no te acuerdas todas las sintaxis de cada consulta que quieres
hacer en SQL, en vez de googlear o usar Chat GPT.
Pero existe rasgoml para ésto, solo le indicas lo que quieres hacer y te devuelve el formato correcto
da la query.