Lenguaje de consulta estructurado (SQL)

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. Los siguientes son algunos datos interesantes sobre SQL.

  • SQL no distingue entre mayúsculas y minúsculas. Pero es una práctica recomendada usar palabras clave (como SELECCIONAR, ACTUALIZAR, CREAR, etc.) en letras mayúsculas y usar cosas definidas por el usuario (nombre de tabla, nombre de columna, etc.) en letras minúsculas.
  • Podemos escribir comentarios en SQL usando “–” (doble guión) al comienzo de cualquier línea.
  • SQL es el lenguaje de programación para bases de datos relacionales (explicadas a continuación) como MySQL, Oracle, Sybase, SQL Server, Postgre, etc. Otras bases de datos no relacionales (también llamadas NoSQL) como MongoDB, DynamoDB, etc. no usan SQL
  • Aunque existe un estándar ISO para SQL, la mayoría de las implementaciones varían ligeramente en la sintaxis. Entonces, podemos encontrar consultas que funcionan en SQL Server pero no funcionan en MySQL.
  • .

    ¿Qué es la base de datos relacional?

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

    ALUMNO

    ROLLO_NO NOMBRE DIRECCIÓN TELÉFONO AÑOS
    1 RAM DELHI 9455123451 18
    2 RAMESH GURGAÓN 9652431543 18
    3 SUJIT ROHTAK 9156253131 20
    4 SEGURO DELHI 9156768971 18

     TABLA 1

    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 de 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 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 en particular. La columna ROLL_NO se extrae de la relación ESTUDIANTE.

    ROLLO_NO
    1
    2
    3
    4

    Las consultas para tratar con la base de datos relacional pueden ser categorías como:

    Lenguaje de definición de datos: se utiliza para definir la estructura de la base de datos. p.ej; CREAR TABLA, AGREGAR COLUMNA, SOLTAR COLUMNA, etc.

    Lenguaje de Manipulación de Datos: Se utiliza para manipular datos en las relaciones. p.ej; INSERTAR, ELIMINAR, ACTUALIZAR, etc.

    Lenguaje de Consulta de Datos: Se utiliza para extraer los datos de las relaciones. p.ej; SELECCIONE

    Entonces, primero consideraremos el lenguaje de consulta de datos. Una consulta genérica para recuperar de una base de datos relacional es:

  1. SELECCIONE [ DISTINTO ] Lista_de_atributos DESDE R1,R2….RM
  2. [ Condición DONDE ]
  3. [ GROUP BY (Atributos)[ CONDICIÓN QUE TIENE ]]
  4. [ ORDENAR POR (Atributos)[ 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 consultas sobre la relación que se muestra en la Tabla 1.

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

SELECT ROLL_NO, NAME FROM STUDENT;
ROLLO_NO NOMBRE
1 RAM
2 RAMESH
3 SUJIT
4 SEGURO

Caso 2: Si queremos recuperar ROLL_NO y NAME de los alumnos cuyo ROLL_NO es mayor a 2, la consulta será:

SELECT ROLL_NO, NAME FROM STUDENT 
WHERE ROLL_NO>2;
ROLLO_NO NOMBRE
3 SUJIT
4 SEGURO

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

SELECT * FROM STUDENT 
WHERE ROLL_NO>2;
ROLLO_NO NOMBRE DIRECCIÓN TELÉFONO AÑOS
3 SUJIT ROHTAK 9156253131 20
4 SEGURO 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 STUDENT ORDER BY AGE;
ROLLO_NO NOMBRE DIRECCIÓN TELÉFONO AÑOS
1 RAM DELHI 9455123451 18
2 RAMESH GURGAÓN 9652431543 18
4 SEGURO DELHI 9156768971 18
3 SUJIT ROHTAK 9156253131 20

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

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

SELECT DISTINCT ADDRESS FROM STUDENT;
DIRECCIÓN
DELHI
GURGAÓN
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 AGRESIÓN: Las funciones de agregación se utilizan para realizar operaciones matemáticas sobre valores de datos de una relación. Algunas de las funciones de agregación comunes 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 (PHONE) FROM STUDENT;
CUENTA(TELÉFONO)
4
  • SUMA: La función SUMA se utiliza para sumar los valores de un atributo en una relación. p.ej;

SELECCIONE SUMA (EDAD) DEL ESTUDIANTE;

SUMA(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.

PROMEDIO: Da los valores medios de las tuplas. También se define como la suma dividida por los valores de conteo.
Sintaxis: AVG (nombre de atributo)
O
Sintaxis: SUM (nombre de atributo)/COUNT (nombre de atributo)
La sintaxis mencionada anteriormente también recupera el valor promedio de tupples.

MÁXIMO: Extrae el valor máximo entre el conjunto de tuplas.
Sintaxis:MAX(nombre de atributo)

MINIMO: Extrae el valor mínimo entre el conjunto de todas las tuplas.
Sintaxis:MIN(nombreatributo)

GROUP BY: Group by se utiliza 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 grupo. p.ej;

SELECT ADDRESS, SUM(AGE) FROM STUDENT
GROUP BY (ADDRESS);

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

DIRECCIÓN SUMA(EDAD)
DELHI 36
GURGAÓN 18
ROHTAK 20

Si intentamos ejecutar la consulta que se indica a continuación, dará como resultado un error porque, aunque hemos calculado SUM(AGE) para cada dirección, hay más de 1 ROLL_NO para cada dirección que hemos agrupado. Por lo tanto, no se puede mostrar en el conjunto de resultados. Necesitamos usar funciones agregadas en columnas después de la declaración SELECT para dar sentido al conjunto resultante siempre que estemos usando GROUP BY.

SELECT ROLL_NO, ADDRESS, SUM(AGE) FROM STUDENT
GROUP BY (ADDRESS); 

NOTA: Un atributo que no forma parte de la cláusula GROUP BY no se puede utilizar para la selección. Cualquier atributo que sea parte de GROUP BY CLAUSE se puede utilizar para la selección, pero no es obligatorio. Pero podríamos usar atributos que no son parte de la cláusula GROUP BY en una función agregada.
Cuestionario sobre SQL

Artículo aportado por Sonal Tuteja. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *