Introducción a SQL o lenguaje de consulta estructurado
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