Introducción a SQL o lenguaje de consulta estructurado

Avatar Tutor | octubre 17, 2018

El lenguaje de consulta estructurado es un lenguaje de base de datos estándar que se utiliza para crear, mantener y recuperar la base de datos relacional.

¿Qué es la base de datos relacional?

Base de datos relacional significa que los datos se almacenan y se recuperan en forma de relaciones (tablas). La Tabla 1 muestra la base de datos relacional con solo una relación llamada ESTUDIANTE que almacena ROLL_NO, NOMBRE, DIRECCIÓN, TELÉFONO y EDAD de los estudiantes.

ESTUDIANTE

ROLL_NO NOMBRE DIRECCIÓN TELÉFONO EDAD
1 RAM DELHI 9455123451 18
2 RAMESH GURGAON 9652431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH DELHI 9156768971 18

Estas son algunas terminologías importantes que se utilizan en términos de relación.

Atributo: Los atributos son las propiedades que definen una relación. p.ej.; ROLL_NO, NOMBRE etc.

Tupla: Cada fila en la relación se conoce como tupla. La relación anterior contiene 4 tuplas, una de las cuales se muestra como:

1 RAM DELHI 9455123451 18

Grado: El número de atributos en la relación se conoce como grado de la relación. La relación de ESTUDIANTE definida anteriormente tiene grado 5.

Cardinalidad: el número de tuplas en una relación se conoce como cardinalidad. La relación ESTUDIANTE definida anteriormente tiene cardinalidad 4.

Columna: la columna representa el conjunto de valores para un atributo particular. La columna ROLL_NO se extrae de la relación ESTUDIANTE.

Tipos de Consultas

Lenguaje de definición de datos: se utiliza para definir la estructura de la base de datos. p.ej; CREATE TABLE, ADD COLUMN, DROP COLUMN y así sucesivamente.

Lenguaje de manipulación de datos: se utiliza para manipular datos en las relaciones. p.ej.; INSERT, DELETE, UPDATE y así sucesivamente.

Lenguaje de consulta de datos: se utiliza para extraer los datos de las relaciones. p.ej.; SELECT

Así que primero consideraremos el lenguaje de consulta de datos. Una consulta genérica para recuperar de una base de datos relacional es:

SELECT [DISTINCT] Attribute_List FROM R1,R2….RM
[WHERE condition]
[GROUP BY (Attributes)[HAVING condition]]
[ORDER BY(Attributes)[DESC]];

Parte de la consulta representada por la declaración 1 es obligatoria si desea recuperar de una base de datos relacional. Las declaraciones escritas dentro de [] son opcionales. Veremos la posible combinación de consulta en la relación que se muestra en la Tabla 1.

Caso 1: si queremos recuperar los atributos ROLL_NO y NOMBRE de todos los alumnos, la consulta será:

SELECT ROLL_NO, NOMBRE FROM ESTUDIANTE;
ROLL_NO NOMBRE
1 RAM
2 RAMESH
3 SUJIT
4 SURESH

Caso 2: Si queremos recuperar ROLL_NO y NOMBRE de los estudiantes cuyo ROLL_NO es mayor que 2, la consulta será:

SELECT ROLL_NO, NOMBRE FROM ESTUDIANTE 
WHERE ROLL_NO>2;
ROLL_NO NOMBRE
3 SUJIT
4 SURESH

CASO 3: Si queremos recuperar todos los atributos de los estudiantes, podemos escribir * en lugar de escribir todos los atributos como:

SELECT * FROM ESTUDIANTE 
WHERE ROLL_NO>2;
ROLL_NO NOMBRE DIRECCIÓN TELÉFONO EDAD
3 SUJIT ROHTAK 9156253131 20
4 SURESH DELHI 9156768971 18

CASO 4: Si queremos representar la relación en orden ascendente por EDAD, podemos usar la cláusula ORDER BY como:

SELECT * FROM ESTUDIANTE ORDER BY EDAD;
ROLL_NO NOMBRE DIRECCIÓN TELÉFONO EDAD
1 RAM DELHI 9455123451 18
2 RAMESH GURGAON 9652431543 18
4 SURESH DELHI 9156768971 18
3 SUJIT ROHTAK 9156253131 20

Nota: ORDER BY EDAD es equivalente a ORDER BY EDAD ASC. Si queremos recuperar los resultados en orden descendente de EDAD, podemos usar ORDER BY EDAD DESC.

CASO 5: Si queremos recuperar valores distintos de un atributo o grupo de atributos, DISTINCT se utiliza como en:

SELECT DISTINCT DIRECCIÓN FROM ESTUDIANTE;
DIRECCIÓN
DELHI
GURGAON
ROHTAK

Si no se usa DISTINCT, DELHI se repetirá dos veces en el conjunto de resultados. Antes de comprender GROUP BY y HAVING, debemos comprender las funciones de agregación en SQL.

Funciones de Agregación

Las funciones de agregación se utilizan para realizar operaciones matemáticas en valores de datos de una relación. Algunas de las funciones comunes de agregación utilizadas en SQL son:

COUNT: la función Count se usa para contar el número de filas en una relación. p.ej;

SELECT COUNT (TELÉFONO) FROM ESTUDIANTE;
COUNT(TELÉFONO)
4

SUM: SUM es usado para sumar los valores de un atributo en una relación. e.g;

SELECT SUM (EDAD) FROM ESTUDIANTE;

SUM(EDAD)
74

De la misma manera, se pueden utilizar MIN, MAX y AVG. Como hemos visto anteriormente, todas las funciones de agregación devuelven solo 1 fila.

GROUP BY: Group by se usa para agrupar las tuplas de una relación en función de un atributo o grupo de atributos. Siempre se combina con la función de agregación que se calcula en el grupo. p.ej.;

SELECT DIRECCION, SUM(EDAD) FROM ESTUDIANTE
GROUP BY (DIRECCION);

En esta consulta, se calculará SUM (EDAD) pero no para la tabla completa sino para cada dirección. es decir.; suma de EDAD para la dirección DELHI (18 + 18 = 36) y similar para otra dirección también. La salida es:

DIRECCION SUM(EDAD)
DELHI 36
GURGAON 18
ROHTAK 20

Si intentamos ejecutar la consulta que se proporciona a continuación, se generará un error porque hemos calculado SUM (EDAD) para cada dirección y puede haber más de 1 estudiante para cada dirección. Por lo tanto, no se puede mostrar en el conjunto de resultados.

SELECT ROLL_NO, DIRECCION, SUM(EDAD) FROM ESTUDIANTE
GROUP BY (DIRECCION);

Written by Tutor