Conceptos Clave SQL y Fundamentos de Bases de Datos Relacionales

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 6,53 KB

Conceptos Fundamentales de Bases de Datos y SQL

Lenguaje de Manipulación de Datos (DML)

  • DML: Lenguaje que permite seleccionar, insertar, modificar y borrar datos específicos.

Cláusulas y Operadores SQL Comunes

  • ALL: Selecciona todos los datos de una tabla.
  • DISTINCT: Elimina los resultados de datos repetidos.
  • DISTINCTROW: Elimina los campos repetidos en las consultas multi-tabla.
  • BETWEEN: Permite seleccionar registros que estén incluidos en un rango.
  • LIKE: Se emplea para la búsqueda de datos específicos de tipo CHAR o VARCHAR.
  • IS / IS NOT: Permite comprobar los datos que son NULL o que no lo son.
  • ANY: Operador de comparación que indica que se buscan valores mayores que al menos uno de los indicados.
  • ALL (comparación): Similar a ANY, pero indica que es menor o mayor que todos los valores especificados.
  • IN: Permite buscar datos que están dentro de una subconsulta.
  • EXISTS: Permite filtrar los resultados de una consulta si existen subconsultas en la fila asociada.

Funciones de Agregación

Convierten un conjunto de registros en una información simple cuyo resultado es un cálculo. Son:

  • COUNT(*): Permite contar todas las filas de una tabla.
  • COUNT(columna): Cuenta las filas que no tienen NULL en una columna específica.
  • SUM(): Calcula la suma de los valores de una columna.
  • AVG(): Calcula el promedio de los valores de una columna.
  • MIN(): Encuentra el valor mínimo en una columna.
  • MAX(): Encuentra el valor máximo en una columna.

Diferencia entre WHERE y HAVING

  • WHERE: Opera en registros individuales.
  • HAVING: Opera sobre un grupo de registros.

Cláusulas de Paginación y Limitación

  • LIMIT: Limita el número de registros que se muestran en el resultado de la consulta.
  • OFFSET: Permite empezar desde un dato específico de la consulta para aplicar LIMIT.
  • ROW_COUNT(): Devuelve el número de filas afectadas por la instrucción anterior.

Tipos de JOIN en SQL

  • INNER JOIN: Devuelve únicamente aquellas filas que tienen valores idénticos en las columnas comparadas para unir las tablas.
  • NATURAL JOIN: Une tablas automáticamente basándose en columnas con los mismos nombres.
  • CROSS JOIN: Devuelve el producto cartesiano de dos tablas.
    EQUIVALE A SELECT * FROM tabla_referencia;
  • LEFT OUTER JOIN: Saca todos los valores de la tabla de la izquierda, incluso si los valores de la derecha son NULL.
  • RIGHT OUTER JOIN: Viceversa de LEFT OUTER JOIN.
  • FULL OUTER JOIN: Devuelve todos los valores de ambas tablas cuando hay coincidencias en los registros.

Diferencias entre Motores de Almacenamiento: MyISAM e InnoDB

  • MyISAM:
    • Las tablas ocupan menos espacio en memoria.
    • Permite una ejecución más rápida de las consultas de lectura (SELECT).
  • InnoDB:
    • Soporta transacciones.
    • Permite la integridad referencial (claves foráneas).
    • Aplica las características de ACID.
    • Permite ejecuciones eficientes de tipo INSERT y UPDATE.

Transacciones en Bases de Datos

Una transacción es un conjunto de sentencias que se ejecutan como una sola unidad (atómica).

Propiedades ACID

  • ATOMICIDAD: Garantiza que la transacción se ejecutará por completo o no se ejecutará en absoluto. En caso de interrupción, ninguna sentencia se ejecuta.
  • CONSISTENCIA: Asegura que, después de la transacción, el resultado será totalmente válido para la base de datos en la que se ejecuta.
  • AISLAMIENTO: Asegura que cada transacción se ejecutará de forma independiente, por lo que no se pueden ejecutar dos transacciones a la vez de forma concurrente sin control.
  • DURABILIDAD: Asegura que, después de la sentencia, el resultado se mantenga permanentemente en la base de datos.

Problemas de Concurrencia en Transacciones

  • DIRTY READ: Una transacción lee datos escritos por otra transacción que aún no ha hecho COMMIT.
  • NON-REPEATABLE READ: Una transacción lee los mismos datos dos veces y obtiene resultados diferentes porque otra transacción ha modificado esos datos y ha hecho COMMIT entre las dos lecturas.
  • PHANTOM READ: Una transacción lee datos que no existían cuando se inició la transacción, o que han sido insertados por otra transacción y han hecho COMMIT.

Niveles de Aislamiento

  • READ UNCOMMITTED: Permite los tres problemas (Dirty Read, Non-Repeatable Read, Phantom Read).
  • READ COMMITTED: Los datos de una transacción pueden ser leídos por otra transacción solo después de un COMMIT (problemas: Non-Repeatable Read y Phantom Read).
  • REPEATABLE READ: Consiste en que ningún registro leído con un SELECT pueda ser cambiado por otra transacción (problema: Phantom Read).
  • SERIALIZABLE: Las transacciones ocurren de forma totalmente aislada de otras transacciones, evitando todos los problemas de concurrencia.

Ejemplos de Sentencias DML

INSERT

INSERT INTO fabricante (codigo, nombre)
VALUES (13, 'FORD');

INSERT INTO producto (codigo, nombre, precio, codigo_fabricante)
VALUES (27, 'KA', 7000, 14);

INSERT SELECT

INSERT INTO backup
SELECT * FROM producto;

UPDATE

UPDATE producto
SET precio = precio * 5
WHERE codigo_fabricante = 30;

DELETE

DELETE FROM producto
WHERE codigo_fabricante = 40 AND precio <= 25;

Entradas relacionadas: