Tema Título Subtema Versión
04 El modelo físco: SQL Introducción, DDL, DML v 1.1

TEMA 4: El modelo físico: SQL

Introducción

Muchas veces hemos oído estadísticas de fútbol que dicen cosas como:

  • Esta jornada se han sacado 7 tarjetas rojas, que es récord esta temporada e igualan el récord de la pasada temporada, que se hizo en la jornada 5.
  • El partido de esta jornada con más expulsiones fue el Sevilla-Valencia, con 3. En total fueron expulsados ​​11 jugadores, pero no supera el récord de la pasada temporada, que eran 12 expulsiones, en las jornadas 6 y 33.
  • En lo que va de campeonato, Messi lleva ya más goles que 15 equipos de primera. Sólo 3 clubs superan los 8 goles de Messi: el Betis con 9, el Real Madrid con 16 y, cómo no, el Barça, con 22. Messi acabó la liga pasada con 31 goles. Por el momento, en la presente temporada su media es 1 gol cada 48 minutos.

¿Cómo se hacen todas esas estadísticas? ¿Hay alguien repasando todos los datos una a una de todas las jornadas y va viendo récords, medias, etc? Es evidente que no. Para ello, habrá que hacer, con el lenguaje SQL:

  • Crear la estructura idónea de base de datos (sólo una vez):
CREATE TABLE partidos ( ... );
  • Introducir los datos de los resultados de los partidos (después de cada jornada):

INSERT INTO partidos VALUES ( ... );

UPDATE partidos SET goles\_casa = goles\_casa + 1 WHERE ...
- Hacer las consultas que necesitamos (para cada información estadística):

SELECT SUM(tarjetas)
   FROM partidos
   WHERE jornada = 7;

Para realizar esas y otras operaciones es necesario un tipo de programa llamado Sistema de Gestión de Bases de Datos (SGBD).

Un SGBD es un conjunto de programas que permiten crear BD, almacenar datos, modificarlos, borrarlos y consultarlos.

El SGBD que vamos a usar nosotros es MySQL (MariaDB).

Este SGBD, como otros muchos, para interactuar con las BD usa el lenguaje SQL: Structured Query Language (Lenguaje de consultas estructurado). Las instrucciones de SQL (sentencias) se pueden clasificar en 5 grupos:

SQL = DDL + DML + DQL + DCL + TCL

  • DDL (Lenguaje de Definición de Datos). Crear tablas con los campos, llaves, etc.
  • DML (Lenguaje de Manipulación de Datos). Insertar datos en las tablas, borrarlos o modificarlos.
  • DQL (Lenguaje de Consulta de Datos). Consultar datos guardados en la BD.
  • DCL (Lenguaje de Control de Datos). Restringir permisos de acceso a las tablas a determinados usuarios.
  • TCL (Lenguaje de Control de Transacciones). Permitir acceso concurrente (simultáneo) de varios usuarios a los datos.

SQL es un lenguaje informático para realizar labores de gestión con una BD. Las instrucciones (órdenes o sentencias) pueden ejecutarse de forma independiente (consola, etc) o bien pueden incorporarse a otro lenguaje (C, Java...) para permitirnos acceder a una BD desde un programa.

Las sentencias SQL

Todas las sentencias SQL comienzan con una palabra clave que describe lo que hace la sentencia (SELECT, INSERT, DELETE...). La sentencia continúa con una o más cláusulas, que también comienzan con una palabra clave (WHERE, FROM, ORDER BY...).

Las sentencias terminan con “;”

Manual MySQL:

A continuación veremos un resumen de las sentencias más importantes.

SENTENCIAS SQL
SUBLENGUAJE SENTENCIA DESCRIPCIÓN
DDL (Definición de datos) CREATE DATABASE Crea una BD
USE Selecciona una BD para su uso
DROP DATABASE Elimina una BD
CREATE TABLE Crea una tabla
DROP TABLE Elimina una tabla
ALTER TABLE Modifica la estructura de una tabla
CREATE INDICE Crear un índice para una columna
DROP ÍNDICE Elimina un índice de una columna
CREATE VIEW Crea una vista
DROP VIEW Elimina una vista
DML (Manipulación de datos) INSERT Añade filas a una tabla
DELETE Eliminar filas de una tabla
UPDATE Modifica datos de una tabla
DQL (Consultas) SELECT Muestra datos de una BD
DCL (Control de datos) GRANT Da permisos de acceso a usuarios
REVOKE Quita permisos de acceso a usuarios
TCL (Control de transacciones) BEGIN Inicia una transacción
CONMITO Finaliza una transacción
ROLLBACK Aborta la transacción
SAVEPOINT Para abortar parcialmente la transacción

SQL Injection

SQL Injection es una técnica de ataque que permite a un atacante interferir con las consultas que una aplicación hace a su base de datos. Es una de las vulnerabilidades más comunes en aplicaciones web y puede permitir a un atacante ver, modificar o eliminar datos sensibles.

Para prevenir ataques de SQL Injection, es importante utilizar consultas preparadas y parámetros en lugar de concatenar directamente los valores de entrada del usuario en las consultas SQL.

SQL Injection

SQL Injection