2. Consultando con SQL#

En este curso aprenderás a:

  1. Conocer la sintaxis básica de SQL

  2. Conocer los conceptos básicos de una consulta (comando SELECT)

  3. 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:

  1. Usar el editor online de W3S . Ya tiene un modelo de datos de referencia.

  2. O puedes probar con sqlite online

  3. 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 loz 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#

  1. Intro -> sql_intro

    1. Qué es y qué se puede hacer

    2. Aunque hay estándares, cada SGBD tiene su estilo

    3. Cada SGBD te ofrece una consola para ejecutar sentencias SQL

  2. Sintaxis SQL -> sql_syntax

    https://desarrolloweb.com/articulos/images/componentes-sentencia-sql.gif
    1. Siempre basado en tablas (relaciones). Incluso un valor resultado es una tabla (una relación)

    2. Declaraciones SQL compuestas de:

      1. comandos (definen las acciones), p.ej SELECT, UPDATE o DELETE

      2. clausulas (condicionan los datos), p.ej WHERE <expression> o GROUP BY <expr>

      3. expresiones,

      4. … y más.

Revisar la sintaxis básica de una declaración SQL

Usa estos tres ejemplos de código en diferentes SGBD para entender la sintaxis SQL. No se trata de ejecutarlos.

https://i.ytimg.com/vi/Nkj_KRv_aqQ/maxresdefault.jpg https://docplayer.es/docs-images/108/174234382/images/64-0.jpg https://www.campusmvp.es/recursos/image.axd?picture=Valores-Agregados-SQL-Ej3.png
  1. Cual es el comando SQL

  2. Cual serían las cláusulas

  3. Cuales son los operadores?

  4. ¿Cual crees que sería el nombre (o nombres) del campo resultado?

  5. Cuales sería el origen de los datos

  6. ¿Hay alguna condicion sobre los datos?

  7. ¿Hay algún valor constante en la declaración?

2.2. Tipos de Datos y Valores Nulos#

  1. La consulta más básica es una operación sencilla sin origen de datos (devuelve el resultado de evaluar esa expresión ):

    1. SELECT 1 ; – Cualquier valor lo devuelve, y hay diferentes tipos de datos

    2. SELECT 10 + 14; – Sirve como calculadora y trabaja con números (diferentes tipos de datos)

    3. SELECT (10 < 20); – Y también operadores de comparación y valores boolean (0 o 1)

    4. SELECT “2022-10-01”; – Y fechas, horas y datos de tipo temporal

  2. Aunque depende de los SGBD (sql_datatypes) lo más común es usar estos tipos de datos:

    1. Números: INT / DECIMAL(n,p). Sin comillas y con punto decimal

    2. Cadenas de Caracteres: VARCHAR(N). Con comillas SIMPLES.

    3. Fechas: DATE / TIMESTAMP. Como si fuera texto

    4. Y más (sql_datatypes)

    5. Revisa la documentación de tu SGBD porque hay algunas diferencias

  3. Hay un montón de operadores:

    1. Aritméticos, p.ej + - * /

    2. de Comparación, p.ej < = <>*

    3. Lógicos, p.ej AND OR IN NOT

    4. Y bueno, muchos más (sql_operators)

  4. El valor nulo (NULL) -> sql_null_values

    1. Es un campo que no tiene un valor, o bueno tiene valor NULL

    2. No tiene que ver con que sea 0 o cadena vacía (“”), el SGBD ve que no hay un valor ahí (y le complica un poco)

    3. Necesitas un operador especial para ver si hay valores nulos (operador IS NULL )

    4. 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#

  1. Hacer consultas:

    1. 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)

    2. Especificas qué necesitas (qué campos, de qué orígenes y con qué condiciones), y ejecutas las consultas

    3. 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)

    4. Se usa el comando SELECT -> sql_select

    5. Una versión más rigurosa es el comando SELECT DISTINCT -> sql_distinct

  2. Especificas el origen de los datos

    1. Lo habitual es especificarlos en la clausula FROM y que sea una tabla

    2. Pero puede ser un origen más complejo: tabla resultado de otras tablas, tablas relacionadas entre sí, otras consultas, expresiones relacionales, etc

    3. 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#

  1. Clausula WHERE -> sql_where

    1. Se usa en diferentes comandos SQL

    2. Filtrar los datos ANTES de seleccionarlos (crea como una tabla temporal)

    3. Defines un predicado para establecer tus condiciones

    4. Un predicado es una expresión cuyo resultado es verdadero o falso

  2. Para crear el predicado usas (habitualmente):

    1. Valores fijos. P.ej números (10) o texto (“Hola”)

    2. Nombres de campos de tus tablas. P.ej id o «nombre»

    3. Operadores. P.ej aritméticos o de comparación. id < 4 o nombre = “Pepe”

    4. Operadores lógicos para encadenar expresiones. P.ej ( ( id < 5) AND nombre like “A_*”) )

    5. El resultado del predicado ha de ser verdadero o falso (booleano)

  3. Algunos operadores muy habituales:

    1. AND OR NOT -> sql_and_or. Para encadenar predicados

    2. LIKE -> sql_like. Para buscar patrones usando caracteres especiales

    3. IN -> sql_in. Como si encadenaras varios OR.

    4. BETWEEN -> sql_between. Para definir rango de valores

    5. Y algunos más que veremos más adelante.

  4. Clausula ORDER BY: sql_orderby. Ordena los resultados por campo y valor.

  5. Clausula LIMIT (o TOP o …) -> sql_top

    1. Sirve para limitar el número de resultados

    2. 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#

  1. Cada SGBD tiene un conjunto de funciones predeterminadas (librerías)

  2. Trabajan con un conjunto de datos (a veces agrupados)

  3. Algunas funciones son estándar SQL:

    1. Min() y Max() -> sql_min_max

    2. count(), average(), sum() -> sql_count_avg_sum

  4. Puedes crear tus propias funciones

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#

  1. Se puede trabajar con

    1. datos agrupados (GROUP BY -> sql_groupby) según un campo (o varios) que

    2. pueden tener (HAVING -> sql_having) alguna condición sobre ese grupo

  2. 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