ronald.vargas.quesada@gmail.com / Blog de Tecnologías Oracle desde 2009, San José, Costa Rica, 23 de Febrero 15 Aniversario -"No vivas para que tu presencia se note, sino para que tu ausencia se sienta" Bob Marley
El próximo sábado 04 de noviembre, estaré presente en el #PWNEDCR 0X6
Todos somos concientes que cuando aplicamos una funcionalidad con el fin de mejorar la calidad y la eficiencia de la seguridad de una base de datos, la misma no deje rastro alguno, de lo que queremos proteger.
Por esto es así o debemos tomar algunas medidas adicionales.?
Es cierta la oferta que nos hacen con respecto a que: encriptar los repositorios de nuestros datos, trae consigo la solución a nuestros problemas de privacidad de información.?
Son tan sólo 40 minutos, pero les aseguro que les tomará mucho más tiempo validar y tomar las medidas necesarias, para resguardarse de no estar expuestos.
La combinación de modelos de lenguaje grande (LLM) de IA generativa con Oracle SQL le permite describir lo que desea ( intención declarativa ) y dejar que la base de datos genere la consulta SQL relevante para su esquema. Algunos LLM pueden ser buenos para generar SQL, pero poder ejecutar ese SQL en su base de datos es otra cuestión. Select AI permite generar SQL que es específico para la base de datos.
Código del laboratorio.
select credential_name,
username,
enabled
from user_credentials
order by credential_name;
select dbms_cloud.get_metadata(
credential_name => 'OPENAI_CRED',
object_uri => 'api.openai.com') as metadata
from dual;
select table_name from dba_tables where owner='SH'
SELECT AI how many customers in San Francisco are married
SELECT AI runsql cuantos clientes en San Francisco están casados
SELECT AI showsql cuantos clientes en San Francisco están casados
SELECT COUNT(*) AS total_clients_married
FROM SH.CUSTOMERS c
WHERE c.CUST_CITY = 'San Francisco'
AND c.CUST_MARITAL_STATUS = 'Married'
select * from sh.products
SELECT AI Cual es el nombre del producto para el id 19
select * from sh.sales
SELECT AI Cual es el monto de ventas del producto id 14 agrupado por el nombre del producto
SELECT AI cual es el cliente que más compras ha realizado
SELECT AI cual es la suma total de compras que ha hecho el cliente Heather Tucker
select sum(amount_sold) from sh.sales
where time_id < '01/01/00'
SELECT AI Cual es el monto en ventas previo al cambio de milenio.
select * from sh.customers
select count(*) from sh.customers
SELECT AI Cuantos clientes nacieron en los 2 años posteriores al fin de la segunda guerra mundial
SELECT AI Cuantos clientes nacieron en los 2 años posteriores al fin de
la segunda guerra mundial agrupados por año
"Sorry, unfortunately a valid SELECT statement could not be generated for your natural language prompt. Here is some more information to help you further:
Para responder a esta pregunta, necesitaríamos tener acceso a una tabla que contenga la información de los clientes, incluyendo su fecha de nacimiento. Supongamos que tenemos una tabla llamada "clientes" con las siguientes columnas:
- id_cliente (identificador único del cliente)
- nombre (nombre del cliente)
- fecha_nacimiento (fecha de nacimiento del cliente)
Podemos utilizar la función EXTRACT para extraer el año de la fecha de nacimiento y luego agrupar los resultados por año. La consulta sería la siguiente:
```sql
SELECT EXTRACT(YEAR FROM fecha_nacimiento) AS año, COUNT(*) AS cantidad_clientes
FROM clientes
WHERE EXTRACT(YEAR FROM fecha_nacimiento) BETWEEN 1946 AND 1947
GROUP BY EXTRACT(YEAR FROM fecha_nacimiento)
ORDER BY EXTRACT(YEAR FROM fecha_nacimiento);
```
Esta consulta contará la cantidad de clientes que nacieron entre los años 1946 y 1947, agrupados por año de nacimiento. Los resultados se mostrarán en orden ascendente por año."
Para responder a esta pregunta, necesitaríamos tener acceso a una tabla que
contenga información sobre los clientes, incluyendo su fecha de nacimiento.
Supongamos que tenemos una tabla llamada "clientes" con las siguientes columnas:
- id_cliente (identificador único del cliente)
- nombre (nombre del cliente)
- fecha_nacimiento (fecha de nacimiento del cliente)
Podemos utilizar la función EXTRACT para extraer el año de la fecha de nacimiento y
luego agrupar los resultados por año. La consulta sería la siguiente:
```sql
SELECT EXTRACT(YEAR FROM fecha_nacimiento) AS año, COUNT(*) AS cantidad_clientes
FROM clientes
WHERE EXTRACT(YEAR FROM fecha_nacimiento) BETWEEN 1946 AND 1947
GROUP BY EXTRACT(YEAR FROM fecha_nacimiento)
ORDER BY EXTRACT(YEAR FROM fecha_nacimiento);
```
Esta consulta contará la cantidad de clientes que nacieron entre los años 1946 y 1947,
agrupados por año de nacimiento.
Los resultados se mostrarán en orden ascendente por año."
SELECT AI Cuanto fue la suma de ventas realizadas por clientes que nacieron en los
2 años posteriores al fin de la segunda guerra mundial.
select * from sh.sales
select * from sh.customers
select sum(amount_sold) from sh.sales
where cust_id in (
select cust_id from sh.customers where
cust_year_of_birth between 1946 and 1947)
select max(cust_year_of_birth) from sh.customers
SELECT AI showsql Cuantos clientes nacieron posterior a la caida del muro de Berlin
select count(cust_year_of_birth) from sh.customers
where cust_year_of_birth > 1989
SELECT AI narrate Cuál es el producto más vendido por los clientes que nacieron
posterior a la caida del muro de Berlin
SELECT AI showsql
Cuántos clientes nacieron en el año de estreno de la película Volver al futuro I
select count(*) from sh.customers
where cust_year_of_birth = 1985
SELECT AI Cual es el monto de los productos vendidos por aquellos clientes que nacieron
en el mismo año de la publicación del primer video en youtube.
SELECT AI narrate Cual es el monto de los productos vendidos por aquellos clientes que nacieron
en el mismo año de la publicación del primer video en youtube.
select count(*) from sh.customers
where cust_year_of_birth = 2005
SELECT AI Cuantos clientes nacieron en el mismo cuando en que se creó el teléfono celular.
select count(*) from sh.customers
where cust_year_of_birth = 1973
SELECT AI chat
Quien es Larry Ellison el CEO de Oracle
"Sorry, unfortunately a valid SELECT statement could not be generated for your natural language prompt. Here is some more information to help you further:
Larry Ellison es el cofundador y presidente ejecutivo de Oracle Corporation. Es conocido por ser uno de los empresarios más exitosos en la industria de la tecnología.
Ellison ha estado al frente de Oracle desde su fundación en 1977 y ha desempeñado un papel fundamental en el crecimiento y éxito de la empresa. Bajo su liderazgo, Oracle se ha convertido en una de las compañías de software más grandes y reconocidas a nivel mundial."
set serveroutput on;
declare
l_prompt varchar2(4000) := 'Cual es el monto de los productos vendidos por aquellos clientes que nacieron
en el mismo año de la publicación del primer video en youtube.?';
l_response clob;
l_profile_name varchar2(100) := 'openai_gpt35';
begin
l_response := dbms_cloud_ai.generate(
prompt => l_prompt,
profile_name => l_profile_name,
action => 'showsql'
);
dbms_output.put_line(l_response);
end;
set serveroutput on;
declare
l_prompt varchar2(4000) := 'Cual es el monto de los productos vendidos por aquellos clientes que nacieron
en el mismo año de la publicación del primer video en youtube.?';
l_response clob;
l_profile_name varchar2(100) := 'OPENAI';
begin
l_response := dbms_cloud_ai.generate(
prompt => l_prompt,
profile_name => l_profile_name,
action => 'showsql'
);
dbms_output.put_line(l_response);
end;
SELECT SUM(s.AMOUNT_SOLD) AS MONTO_VENDIDO
FROM SH.SALES s
JOIN SH.CUSTOMERS c ON s.CUST_ID = c.CUST_ID
WHERE c.CUST_YEAR_OF_BIRTH = EXTRACT(YEAR FROM TO_DATE('23-04-2005', 'DD-MM-YYYY'))
El producto más vendido por los clientes que nacieron posterior a la caída del muro de Berlín es el "Model A3827H Black Image Cartridge",