2. Consultando con SQL¶
En este curso aprenderás a:
Conocer la sintaxis básica de SQL
Conocer los conceptos básicos de una consulta (comando SELECT)
Conocer los conceptos básicos de varias cláusulas SQL (FROM, WHERE, GROUP BY, HAVING)
Se trata de saber consultar un almacén de datos sencillo de una sola tabla usando el lenguaje SQL. Para practicar he usado referencias al excelente tutorial de W3Schools . Evitamos las consultas multitabla hasta aprender bien SQL.
Esfuerzo Necesario
El curso está organizado en 8 sesiones de clase. Cada clase (sesión) implica una dedicación de entre 2 y 4 horas.
La dedicación depende del conocimiento previo, motivación y capacidad de aprendizaje del estudiante para esa sesión en concreto.
Entorno de desarrollo SQL
Para aprender SQL lo mejor es probar directamente. Estas pueden ser tres opciones:
Usar el editor online de W3S . Ya tiene un modelo de datos de referencia.
O puedes probar con sqlite online
O, puedes probar con diferentes SGBD con una BD de referencia, usando este servicio online de consultas sql .
Y, aunque se verá más tarde en el tema de SGBD, puedes usar sqlite porque muy probablemente ya lo tengas instalado en tu sistema.
Curso Videos MOCC
El curso MOCC SQL fácil, fácil te puede ayudar mucho (21 videos fáciles de ver y entender).
2.1. El Lenguaje SQL¶
S tructured Q uery L anguage -> sql_intro
Qué es y qué se puede hacer
Aunque hay estándares, cada SGBD tiene su estilo
Cada SGBD te ofrece una consola para ejecutar sentencias SQL
Usa un modelo de datos específico: el modelo relacional (todo son tablas)
Sintaxis SQL -> sql_syntax
Siempre basado en tablas (relaciones). Incluso un valor resultado es una tabla (una relación)
Declaraciones SQL compuestas de:
comandos (definen las acciones), p.ej SELECT, UPDATE o DELETE
clausulas (condicionan los datos), p.ej WHERE <expression> o GROUP BY <expr>
expresiones,
… y más.
Revisar la sintaxis básica de una declaración SQL
Usa estos tres ejemplos de código (diferentes SGBD) para entender la sintaxis SQL. No se trata de ejecutarlos.
Cual es el comando SQL
Cual serían las cláusulas
Cuales son los operadores?
¿Cual crees que sería el nombre (o nombres) del campo resultado?
Cuales sería el origen de los datos
¿Hay alguna condicion sobre los datos?
¿Hay algún valor constante en la declaración?
2.2. Tipos de Datos y Valores Nulos¶
La consulta más básica es una operación sencilla sin origen de datos (devuelve el resultado de evaluar esa expresión ):
SELECT 1 ; – Cualquier valor lo devuelve, y hay diferentes tipos de datos
SELECT 10 + 14; – Sirve como calculadora y trabaja con números (diferentes tipos de datos)
SELECT (10 < 20); – Y también operadores de comparación y valores boolean (0 o 1)
SELECT “2022-10-01”; – Y fechas, horas y datos de tipo temporal
Aunque depende de los SGBD (sql_datatypes) lo más común es usar estos tipos de datos:
Números: enteros (INT) o decimales ( DECIMAL(n,p).
Cadenas de Caracteres: VARCHAR(N). Con comillas SIMPLES.
Fechas: DATE / TIMESTAMP. Como si fuera texto
Y más (sql_datatypes)
Revisa la documentación de tu SGBD porque hay algunas diferencias
Hay un montón de operadores:
Aritméticos, p.ej + - * /
de Comparación, p.ej < = <>*
Lógicos, p.ej AND OR IN NOT
Y bueno, muchos más (sql_operators)
El valor nulo (NULL) -> sql_null_values
Es un campo que no tiene un valor, o bueno tiene valor NULL
No tiene que ver con que sea 0 o cadena vacía (“”), el SGBD ve que no hay un valor ahí (y puede complicar las consultas)
Necesitas un operador especial para ver si hay valores nulos (operador IS NULL )
Si hay valores nulos tienes que tenerlos en cuenta (y detectarlos con el operador IS )
Practicas con el Tutorial
Realiza los ejercicios que te va marcando el tutorial y puedes también revisar los ejemplos que te interesen (sql_examples)
2.3. El comando SELECT¶
Hacer consultas:
Devuelve 0, 1 o más columnas (campos) con los registros de una tabla (o más de una). Devuelve tablas, no valores (aunque a veces no lo parezca)
Especificas qué necesitas (qué campos, de qué orígenes y con qué condiciones), y ejecutas las consultas
Se pueden usar alias (AS -> sql_alias) de campos y tablas (cambio de nombre temporal). P.ej SELECT 10 AS Diez; También vale SELECT 10 Diez (o sea que el AS es opcional)
Se usa el comando SELECT -> sql_select
Una versión más rigurosa es el comando SELECT DISTINCT -> sql_distinct (elimina los repetidos).
Especificas el origen de los datos
Lo habitual es especificarlos en la clausula FROM y que sea una tabla
Pero puede ser un origen más complejo: tabla resultado de otras tablas, tablas relacionadas entre sí, otras consultas, expresiones relacionales, etc
En este tema usaremos un solo origen de datos (o ninguno), que estamos empezando
Practicas con el Tutorial
Realiza los ejercicios que te va marcando el tutorial y puedes también revisar los ejemplos que te interesen (sql_examples)
2.4. Filtrar y Ordenar los resultados¶
Clausula WHERE -> sql_where
Se usa en diferentes comandos SQL
Filtrar los datos ANTES de seleccionarlos (crea como una tabla temporal)
Defines un predicado para establecer tus condiciones
Un predicado es una expresión cuyo resultado es verdadero o falso
Para crear el predicado usas (habitualmente):
Valores fijos. P.ej números (10) o texto (“Hola”)
Nombres de campos de tus tablas. P.ej id o «nombre»
Operadores. P.ej aritméticos o de comparación. id < 4 o nombre = “Pepe”
Operadores lógicos para encadenar expresiones. P.ej ( ( id < 5) AND nombre like “A_*”) )
El resultado del predicado ha de ser verdadero o falso (booleano)
Algunos operadores muy habituales:
AND OR NOT -> sql_and. Para encadenar predicados
LIKE -> sql_like. Para buscar patrones usando caracteres especiales
IN -> sql_in. Como si encadenaras varios OR.
BETWEEN -> sql_between. Para definir rango de valores
Y algunos más que veremos más adelante.
Clausula ORDER BY: sql_orderby. Ordena los resultados por campo y valor.
Clausula LIMIT (o TOP o …) -> sql_top
Sirve para limitar el número de resultados
Depende del SGBD
Practicas con el Tutorial
Realiza los ejercicios que te va marcando el tutorial y puedes también revisar los ejemplos que te interesen (sql_examples)
2.5. Funciones en SQL¶
Cada SGBD tiene un conjunto de funciones predeterminadas (librerías)
Trabajan con un conjunto de datos (a veces agrupados)
Algunas funciones son estándar SQL:
Min() y Max() -> sql_min_max
count(), average(), sum() -> sql_count_avg_sum
Puedes crear tus propias funciones y usar programación dentro del SGBD (Programando el SGBD)
Practicas con el Tutorial
Realiza los ejercicios que te va marcando el tutorial y puedes también revisar los ejemplos que te interesen (sql_examples)
2.6. Agrupando Datos¶
Se puede trabajar con
datos agrupados (GROUP BY -> sql_groupby) según un campo (o varios) que
pueden tener (HAVING -> sql_having) alguna condición sobre ese grupo
El predicado define la condición para agrupar los registros (en clausula HAVING)
Practicas con el Tutorial
Realiza los ejercicios que te va marcando el tutorial y puedes también revisar los ejemplos que te interesen (sql_examples)
2.7. Practica Ejercicios SQL (I)¶
Ejercicios SQL
Usa el listado de Ejercicios para usar SQL para practicar
2.8. Practica Ejercicios SQL (y II)¶
Ejercicios SQL
Usa el listado de Ejercicios para usar SQL para practicar