Skip to content

07. Bases de Datos Relacionales

Melissa Diaz edited this page Jan 26, 2025 · 2 revisions

Bases de Datos Relacionales con MySQL

Note

Puedes encontrar las actividades relacionadas con esta sección en el siguiente enlace:
GitHub - Actividades de MySQL

Una base de datos es un conjunto organizado de datos que se utiliza para representar y modelar aspectos relevantes de la realidad. Estos datos se mantienen de forma permanente y están destinados a ser procesados y transformados en información útil y significativa.

Una base de datos relacional organiza los datos en tablas compuestas por filas (registros únicos) y columnas (campos de los registros). Estas bases de datos destacan por su:

  1. Organización eficiente y flexible de los datos.
  2. Integridad de datos mediante restricciones y reglas.
  3. Facilidad de manipulación usando SQL para consultas complejas.

Tienen 3 características:

  1. Modelo relacional: Los datos se organizan en conjuntos de tablas compuestas por columnas y filas.
  2. Relaciones predefinidas: Permite representar conexiones entre datos de forma estructurada.
  3. Uso de SQL: Facilita la recuperación, modificación, creación y gestión de datos.

Elementos de una base de datos relacionales

  1. Tablas: Representan un conjunto de objetos (entidad).
    • Se refiere a un objeto del mundo real con una existencia independiente. Cada entidad posee atributos, que son características particulares que la describen.
  2. Filas: Representa un objeto con existencia independiente (un registro).
  3. Columnas: Representa las características específicas de cada objeto (atributos).
    • Representa una característica o propiedad de una entidad en el modelo entidad-relación. Los atributos de una entidad deben cumplir con los siguientes criterios:
      • Completos: Deben capturar toda la información relevante del objeto desde la perspectiva del sistema.
      • Plenamente desarrollados: Cada atributo debe describir un aspecto distinto de la entidad.
      • Mutuamente independientes: Cada atributo debe ser capaz de tomar un valor sin depender de los valores de otros atributos.

Relaciones entre Tablas

En el modelo de bases de datos, una relación representa el conjunto de asociaciones entre las instancias de dos entidades.

  • Las relaciones son bidireccionales, lo que significa que la conexión entre las entidades funciona en ambas direcciones.

Note

Es fundamental que las relaciones entre tablas estén correctamente definidas para garantizar la integridad y coherencia de la información almacenada.

Identificación de Relaciones Correctas entre Tablas

Claves Primarias (Primary Key)

Un identificador, o clave primaria, es un atributo (o conjunto de atributos) que permite identificar de manera única cada fila en una tabla.

  • Ninguna otra fila puede tener el mismo valor en este atributo.
  • Ejemplo: ID de un cliente o producto.

Claves Foráneas (Foreign Key)

Las claves foráneas son atributos que establecen relaciones entre diferentes tablas:

  • Conectan información de una tabla con otra.
  • Generalmente, una clave foránea en una tabla corresponde a la clave primaria en otra.
    • Por ejemplo: La clave primaria ID de la tabla Usuarios puede ser clave foránea en la tabla Pedidos.

  • Es recomendable utilizar identificadores numéricos siempre que sea posible:
    • Son más eficientes y fáciles de manejar en el almacenamiento y recuperación de datos.
    • Define correctamente las restricciones de claves primarias y foráneas para garantizar relaciones sólidas entre las tablas.

SQL

  • SQL (Structured Query Language) es el estándar para interactuar con bases de datos relacionales.
  • Permite:
    • Filtrar, ordenar y agregar datos.
    • Manipular grandes conjuntos de datos eficientemente.

Sublenguajes en SQL

  1. DDL (Data Definition Language): Define y modifica estructuras de bases de datos.
    Comandos: CREATE, ALTER, DROP.
  2. DML (Data Manipulation Language): Manipula datos almacenados.
    Comandos: SELECT, INSERT, UPDATE, DELETE.
  3. DCL (Data Control Language): Controla permisos y accesos.
    Comandos: GRANT, REVOKE.
  4. TCL (Transaction Control Language): Maneja transacciones.
    Comandos: COMMIT, ROLLBACK, SAVEPOINT.

Sistema de Gestión de Bases de Datos (DBMS)

Un DBMS (Database Management System), administra, organiza y asegura el acceso a los datos.
MySQL es un DBMS popular y de código abierto que implementa SQL.

💡 Script: Archivo ejecutable con instrucciones en SQL u otro lenguaje para realizar tareas específicas.


Servidor vs. Base de Datos

  • Servidor MySQL: Controla la gestión y acceso a bases de datos.
  • Base de datos: Contiene datos organizados en tablas.

Tablas

  1. Filas y Columnas: Cada fila es un registro único; cada columna representa un atributo específico.
  2. Estructura Predefinida: Define las columnas y tipos de datos antes de insertar datos.
  3. Relaciones: Usan claves primarias y foráneas para conectar datos entre tablas.
  4. Integridad de los Datos: Se aplican restricciones para garantizar la validez y consistencia de los datos.

Ejemplo Tabla "clientes":

cliente_id nombre apellido correo_electronico telefono fecha_registro
1 Juan Pérez juan@example.com 555123456 2023-09-26
2 María López maria@example.com 555789012 2023-09-26

Cada fila en la tabla representa un cliente individual, y cada columna almacena un atributo específico de los clientes.

  • cliente_id: Identificador único (clave primaria).
  • fecha_registro: Fecha en que el cliente se registró.

Note

Las tablas son la base para organizar datos en filas (registros) y columnas (atributos). Al crear tablas, es posible definir restricciones como claves primarias y foráneas para asegurar integridad y organización.


Comandos Básicos en MySQL

Note

Para ingresar al servidor MySQL: mysql -u tu_usuario -p

  • Mostrar bases de datos disponibles:
SHOW DATABASES;
  • Incluye bases de datos del sistema como information_schema y mysql.
  • Bases de datos de ejemplo para práctica: sakila y world.
  • Seleccionar una base de datos:
USE sakila;
  • Listar tablas en la base de datos seleccionada:
SHOW TABLES;
  • Consultar datos en tablas:

    • Consulta todas las filas y columnas:

       SELECT * FROM nombre_tabla;
    • Mostrar campos específicos:

       SELECT campo1, campo2 FROM nombre_tabla;

      Ejemplo:

       SELECT name FROM category;
       SELECT name, category_id FROM category;
           ```
  • * Muestra todos los campos.
  • Es posible seleccionar campos específicos separados por comas.

Sublenguaje DDL (Data Definition Language)

El DDL se utiliza para definir y estructurar la arquitectura de una base de datos, incluyendo bases de datos, tablas, campos e índices. A diferencia del DML, se enfoca en la definición y estructura de la base de datos.

Dentro de DDL, se encuentran comandos que definen, modifican o eliminan estructuras de la base de datos, como:

  1. CREATE: Crea nuevas bases de datos, tablas, campos e índices.

    CREATE DATABASE nombre_base_datos;
    
    CREATE TABLE nombre_tabla (
    	columna1 tipo_dato restriccion_opcional,
    	columna2 tipo_dato restriccion_opcional
    );
  • Ejemplo:
CREATE TABLE empleados (
	id INT AUTO_INCREMENT PRIMARY KEY,
	nombre VARCHAR(50) NOT NULL,
	edad INT,
	salario DECIMAL(10, 2)
);
  1. DROP: Elimina bases de datos, tablas o índices.

    DROP DATABASE nombre_base_datos;
    DROP TABLE nombre_tabla;
  2. ALTER: Modifica tablas agregando o cambiando columnas.

    ALTER TABLE nombre_tabla
    ADD nueva_columna tipo_dato;
    ALTER TABLE nombre_tabla
    MODIFY columna_existente nuevo_tipo_dato;

CREATE TABLE

Tipos de Datos en MySQL

Entre los comunes se encuentran:

  • INTEGER (INT): Números enteros.
  • VARCHAR(n): Cadenas de texto de longitud variable.
  • DECIMAL(p, s): Números decimales con precisión.
  • DATE: Fechas (YYYY-MM-DD).
  • DATETIME: Fechas con hora (YYYY-MM-DD HH:MM:SS).
  • BOOLEAN: Valores verdadero/falso.
  • BLOB: Datos binarios (imágenes, archivos).
Tipos Numéricos
Tipo de Dato Descripción
INT Número entero
SMALLINT Entero pequeño
TINYINT Entero muy pequeño
BIGINT Entero grande
FLOAT Número decimal de precisión simple
DOUBLE Número decimal de precisión doble
DECIMAL(p, s) Número decimal con precisión p y escala s
Tipos de Cadenas
Tipo de Dato Descripción
VARCHAR(n) Cadena de longitud variable (hasta n caracteres)
CHAR(n) Cadena de longitud fija (exactamente n caracteres)
TEXT Cadena de texto largo (hasta 65,535 caracteres)
BLOB Datos binarios largos (hasta 65,535 bytes)
Tipos de Fecha y Hora
Tipo de Dato Descripción
DATE Fecha en formato "YYYY-MM-DD"
TIME Hora en formato "HH:MM:SS"
DATETIME Fecha y hora en formato "YYYY-MM-DD HH:MM:SS"
TIMESTAMP Fecha y hora con soporte para zonas horarias
Tipos Booleanos
Tipo de Dato Descripción
BOOLEAN Valor booleano (verdadero o falso)
Restricciones de datos

Las restricciones son reglas aplicadas a las columnas o tablas para garantizar la integridad y consistencia de los datos. Algunas de las restricciones más comunes incluyen:

1. PRIMARY KEY

Una clave primaria garantiza que los valores en esa columna sean únicos. Se agrega después del tipo de dato:

CREATE TABLE estudiantes (
	id INT PRIMARY KEY,
	nombre VARCHAR(50),
	edad INT
);
2. UNIQUE

Asegura que los valores en una columna o conjunto de columnas sean únicos.

CREATE TABLE empleados (
	id INT PRIMARY KEY,
	codigo_empleado INT UNIQUE,
	correo VARCHAR(100) UNIQUE
);
3. NOT NULL

Garantiza que una columna no pueda contener valores nulos.

CREATE TABLE pedidos (
	id INT PRIMARY KEY,
	fecha_pedido DATE NOT NULL,
	cliente_id INT
);
4. DEFAULT

Asigna un valor predeterminado a una columna si no se proporciona un valor.

CREATE TABLE cuentas (
	id INT PRIMARY KEY,
	saldo DECIMAL(10, 2) DEFAULT 0.00
);
5. CHECK

Define una condición que debe cumplirse para que los valores en una columna sean válidos.

CREATE TABLE productos (
	id INT PRIMARY KEY,
	precio DECIMAL(10, 2),
	cantidad INT,
	CHECK (precio > 0),
	CHECK (cantidad >= 0)
);
6. AUTO_INCREMENT

Genera automáticamente un valor único para una columna cada vez que se inserta un nuevo registro.

CREATE TABLE empleados (
	empleado_id INT AUTO_INCREMENT PRIMARY KEY,
	nombre VARCHAR(50),
	salario DECIMAL(10, 2)
);
7. INDEX

Crea índices en una columna para acelerar las consultas de búsqueda:

CREATE TABLE productos (
	producto_id INT PRIMARY KEY,
	nombre VARCHAR(100),
	categoria VARCHAR(50),
	INDEX idx_categoria (categoria)
);
8. FOREIGN KEY

Establece una relación entre dos tablas, garantizando que los valores en una columna coincidan con los valores en una columna de otra tabla.

CREATE TABLE pedidos (
	id INT PRIMARY KEY,
	cliente_id INT,
	FOREIGN KEY (cliente_id) REFERENCES clientes(id)
);
9. ENUM

Restringe los valores de una columna a un conjunto de valores predefinidos.

CREATE TABLE tallas (
	id INT PRIMARY KEY,
	talla ENUM('XS', 'S', 'M', 'L', 'XL')
);
10. SET

Permite que una columna contenga múltiples valores de un conjunto predefinido.

CREATE TABLE preferencias (
	id INT PRIMARY KEY,
	opciones SET('Notificaciones', 'Correo', 'SMS', 'Teléfono')
);

ALTER TABLE

El comando ALTER TABLE se utiliza para realizar cambios en una tabla existente sin necesidad de eliminarla y volver a crearla. Permite agregar, modificar o eliminar columnas, así como aplicar restricciones adicionales a la tabla.

  • Agregar una columna nueva:
ALTER TABLE nombre_tabla ADD nombre_columna tipo_de_dato restriccion_opcional;
  • Modificar una columna existente:
ALTER TABLE nombre_tabla MODIFY nombre_columna nuevo_tipo_de_dato nueva_restriccion_opcional;
  • Eliminar una columna:
ALTER TABLE nombre_tabla DROP nombre_columna;
  • Agregar una restricción CHECK o UNIQUE:
ALTER TABLE nombre_tabla ADD CONSTRAINT nombre_restriccion CHECK (nombre_columna IS NOT NULL);
  • Agregar una clave foránea:
ALTER TABLE nombre_tabla
ADD FOREIGN KEY (nombre_columna) REFERENCES nombre_tabla_a_referenciar(nombre_campo_a_referenciar);
  • Eliminar una clave foránea:
ALTER TABLE nombre_tabla DROP FOREIGN KEY nombre_de_la_clave_foranea;

Note

Consultar el nombre de una clave foránea:

SELECT constraint_name,
       table_name,
       column_name,
       referenced_table_name,
       referenced_column_name
FROM information_schema.key_column_usage
WHERE referenced_table_name IS NOT NULL
AND table_name = "nombre_de_la_tabla";

DROP TABLE

El comando DROP TABLE se utiliza para eliminar una tabla y todos los datos que contiene de forma permanente. Es importante tener precaución al usar este comando, ya que no hay forma de recuperar los datos una vez que se ha ejecutado.

DROP TABLE nombre_de_tabla;

📍 Es importante tener precaución al usar DROP TABLE, ya que puede provocar la pérdida irrecuperable de datos.


Funciones de Fecha

  • CURRENT_DATE: Devuelve la fecha actual sin la hora.
  • NOW(): Devuelve la fecha y hora actuales.

Nota: Ambas funciones deben estar entre paréntesis: ...DEFAULT (CURRENT_DATE);


Sublenguaje DML (Data Manipulation Language)

El lenguaje DML se utiliza para manipular datos almacenados en una base de datos. Esto incluye insertar, actualizar, eliminar y consultar registros. Las principales instrucciones DML son: INSERT INTO, UPDATE, DELETE, y SELECT.

  1. SHOW DATABASES: Lista las bases de datos disponibles.
  2. SHOW TABLES: Muestra tablas en la base de datos seleccionada.
  3. SELECT: Recupera datos. Ejemplo:
    SELECT * FROM nombre_tabla;
  4. INSERT: Agrega registros. Ejemplo:
    INSERT INTO tabla (columna1, columna2) VALUES (valor1, valor2);
  5. UPDATE: Modifica registros existentes. Ejemplo:
    UPDATE nombre_tabla SET columna = nuevo_valor WHERE condición;
  6. DELETE: Elimina registros. Ejemplo:
    DELETE FROM nombre_tabla WHERE condición;

1. INSERT INTO (Inserción de Datos)

Permite agregar nuevos registros a una tabla.

INSERT INTO empleados (nombre, apellido, edad, salario) 
VALUES ('Juan', 'Pérez', 30, 2500.50);
  • INSERT INTO nombre_tabla (columnas): Especifica la tabla y las columnas a llenar.
  • VALUES (valores): Define los valores que se insertarán en las columnas, siguiendo el mismo orden.

Note

Se pueden omitir los nombres de las columnas en la query si se van a añadir valores para todas las columnas de la tabla. Es importante que el orden de los valores sea el mismo que el de las columnas predefinidas en la tabla.


2. UPDATE (Actualización de Datos)

Se utiliza para modificar valores de registros existentes.

UPDATE empleados 
SET salario = 2700.00 
WHERE nombre = 'Juan';
  • UPDATE nombre_tabla: Especifica la tabla a actualizar.
  • SET columna1 = valor1: Define qué columna(s) se actualizarán y sus nuevos valores.
  • WHERE condición (opcional): Filtra los registros a modificar.

Note

Si se omite la cláusula WHERE, los cambios se aplicarán a todos los registros de la tabla.


💡 Es posible usar operadores lógicos como AND o OR en WHERE para combinar múltiples condiciones.


3. DELETE (Eliminación de Datos)

Permite eliminar registros de una tabla.

DELETE FROM empleados 
WHERE nombre = 'Juan';
  • DELETE FROM nombre_tabla: Indica la tabla de donde se eliminarán registros.
  • WHERE condición (opcional): Filtra los registros a eliminar.

Note

📍 Sin WHERE, todos los registros de la tabla serán eliminados.


4. SELECT (Consulta de Datos)

Esencial para recuperar y visualizar datos de una base de datos.

SELECT nombre, salario 
FROM empleados 
WHERE edad > 25;
  • SELECT columnas: Define qué columnas serán recuperadas.
  • FROM nombre_tabla: Especifica la tabla de donde se obtendrán los datos.
  • WHERE condición (opcional): Filtra los registros que se recuperarán.
Subconsultas con Comando SELECT

Ejemplo: Incrementar el salario en un departamento específico usando el comando SELECT como una subconsulta:

UPDATE empleados 
SET salario = salario * 1.07 
WHERE departamento_id = (SELECT id FROM departamentos WHERE nombre = 'Ventas');

Esto funciona porque la subconsulta devuelve un único valor, en este caso, el id del departamento de ventas.

💡 Nota: Es importante colocar las subconsultas entre paréntesis para que funcionen correctamente.


Puntos importantes:

  1. La subconsulta se ejecuta dentro de una consulta más grande.
  2. Se utiliza en lugar de un valor en cláusulas como WHERE, FROM, HAVING, etc.
  3. Puede colocarse en diversas partes de la consulta principal según los requisitos específicos:
    • En la cláusula WHERE para filtrar resultados.
    • En la cláusula FROM para actuar como una tabla temporal.
    • En la cláusula SELECT para recuperar un valor específico.
  4. Puede devolver un único valor o una lista de valores.
    • Si se espera un único valor, utiliza operadores de comparación como = en la cláusula WHERE.

Columnas generadas

💡En SQL, es posible calcular automáticamente los valores de una columna en función de otras columnas usando columnas generadas. Estas columnas se definen mediante una expresión y pueden ser almacenadas (STORED) o virtuales (calculadas en tiempo real).

Para crear una columna generada:

CREATE TABLE mi_tabla (
    id INT AUTO_INCREMENT PRIMARY KEY,
    columna_calculada tipo GENERATED ALWAYS AS (expresion) STORED
);

Para modificar una columna generada existente:

ALTER TABLE mi_tabla
MODIFY columna_calculada tipo GENERATED ALWAYS AS (expresion) STORED;
  • GENERATED ALWAYS AS: Define que el valor de la columna se calcula automáticamente.
  • STORED: La columna almacena el resultado del cálculo. También puede usarse VIRTUAL si no se desea almacenar el valor físicamente, solo calcularlo cuando se consulta.

Clausula SELECT

La sentencia SELECT permite:

  • Mostrar filas de una base de datos.
  • Seleccionar una o varias columnas de una o varias tablas.

Sintaxis básica:

SELECT columnas FROM tablaOrigen;

Ejemplo:

SELECT nombre, apellido FROM Alumnos;

Dada la tabla:

Id Nombre Apellido Edad
1 Agustín Cocco 24
2 Martín Bullón 21

Resultado:

Nombre Apellido
Agustín Cocco
Martín Bullón

Operaciones Matemáticas

Puedes realizar cálculos entre columnas:

SELECT nombre, (salario + comision) FROM empleados;

Dada la tabla:

Id Nombre Salario Comisión
1 Agustín 5000 300
2 Martín 2000 250

Resultado:

Nombre (salario + comisión)
Agustín 5300
Martín 2250

Cláusulas Adicionales

1. DISTINCT

Elimina duplicados en los resultados.

SELECT DISTINCT nombre, apellido FROM Alumnos;

Dada la tabla:

Id Nombre Apellido Edad
1 Agustín Cocco 24
2 Martín Bullón 21
3 Agustín Cocco 26

Resultado:

Nombre Apellido
Agustín Cocco
Martín Bullón

2. WHERE

Filtra resultados según condiciones específicas.

SELECT nombre, apellido FROM Alumnos WHERE nombre = 'Agustín';

Operadores Relacionales:

Operador Significado Ejemplo
> Mayor que edad > 21
< Menor que edad < 18
= Igual que edad = 20
>= Mayor o igual que edad >= 30
<= Menor o igual que edad <= 10
<> o != Distinto que edad <> 5

Operadores Lógicos

Operador Significado
AND Devuelve resultados cuando todas las condiciones son verdaderas.
OR Devuelve resultados cuando al menos una condición es verdadera.
NOT Devuelve resultados cuando la condición es falsa.

Ejemplo AND:

SELECT * FROM Alumnos WHERE edad > 18 AND curso = 'Matemáticas';

Ejemplo OR:

SELECT * FROM Alumnos WHERE edad > 18 OR curso = 'Historia';

3. BETWEEN

Selecciona valores dentro de un rango, inclusive.

SELECT * FROM Alumnos WHERE edad BETWEEN 21 AND 40;

Dada la tabla:

Id Nombre Apellido Edad
1 Agustín Cocco 24
2 Martín Bullón 39
3 Mariela Lima 60

Resultado:

Id Nombre Apellido Edad
1 Agustín Cocco 24
2 Martín Bullón 39

4. IN

Selecciona valores específicos.

SELECT * FROM Alumnos WHERE nombre IN ('Agustín', 'Mariela');

Resultado:

Id Nombre Apellido Edad
1 Agustín Cocco 24
3 Mariela Lima 20

5. LIKE

Busca patrones en cadenas de texto.

Símbolo Significado
% Cero, uno o más caracteres.
_ Un carácter único.

Ejemplos:

  • LIKE 'a%' → Comienza con "a".
  • LIKE '%a' → Termina con "a".
  • LIKE '%ar%' → Contiene "ar".
  • LIKE '_e%' → Tiene "e" en la segunda posición.

Ejemplo:

SELECT nombre FROM Alumnos WHERE nombre LIKE 's%';

Dada la tabla:

Id Nombre Apellido Edad
1 Sebastián Gómez 24
2 Sabrina Martínez 15

Resultado:

Nombre
Sebastián
Sabrina
6. ORDER BY

La cláusula ORDER BY organiza los resultados de una consulta según las columnas especificadas, en orden ascendente (ASC) o descendente (DESC). Por defecto, el orden es ascendente si no se especifica.

Ejemplo:

Dada una tabla de alumnos:

Id Nombre Apellido Edad
1 Jerónimo Wiunkhaus 24
2 Ana Gadea 15
3 Mariela Lima 20

Consulta:

SELECT nombre, apellido FROM Alumno ORDER BY nombre ASC;

Resultado:

Nombre Apellido
Ana Gadea
Jerónimo Wiunkhaus
Mariela Lima

7. GROUP BY

GROUP BY agrupa filas con valores repetidos en una o más columnas y permite realizar funciones de agregación (como SUM, COUNT, etc.) sobre el grupo.
Ejemplo:

SELECT nombre, SUM(salario) FROM empleados GROUP BY nombre;

Dada una tabla de empleados:

Id Nombre Salario
1 Franco 1000
2 Mariela 2000
3 Franco 1000
4 Mariela 350

Resultado:

Nombre SUM(Salario)
Franco 2000
Mariela 2350
8. HAVING

HAVING filtra los resultados después de aplicar GROUP BY, usando condiciones basadas en funciones agregadas.

Ejemplo:

SELECT COUNT(id), pais FROM personas GROUP BY pais HAVING COUNT(id) > 1;

Dada la tabla de personas:

Id Nombre País
1 Franco Argentina
2 Juliana Alemania
3 Agustín Argentina
4 Gastón Alemania
5 Mariela Uruguay

Resultado:

COUNT(Id) País
2 Argentina
2 Alemania

Se agrupan los datos por país, se cuenta el número de personas por grupo y HAVING filtra los países con más de una persona.

8. AS

Proporcionar un alias temporal a una columna o tabla dentro de una consulta, haciéndola más legible.

  • Uso:
SELECT columna AS alias FROM tabla;
  • Ejemplo:

Tabla Alumnos:

Id Nombre Apellido Edad
1 Xavier Collado 24
2 Ana Gadea 15
3 Mariela Lima 20
Consulta:
SELECT nombre AS "Nombre Alumno", apellido AS "Apellido Alumno" FROM Alumnos;

Resultado:

Nombre Alumno Apellido Alumno
Xavier Collado
Ana Gadea
Mariela Lima

Note

  • El uso de AS es opcional. Escribir un alias directamente después del nombre de la columna también funciona.
  • Todas las cláusulas/sentencias pueden ser usadas juntas. No es necesario que se utilicen por separado.
9. LIMIT

Limitar el número de resultados devueltos por una consulta.

  • Uso:
SELECT columnas FROM tabla LIMIT numero;
  • Ejemplo:

Dada la tabla Alumnos:

Id Nombre Apellido Edad
1 Jerónimo Wiunkhaus 24
2 Ana Gadea 15
3 Mariela Lima 20

Consulta:

SELECT nombre, apellido FROM Alumnos LIMIT 1;

Resultado:

Nombre Apellido
Jerónimo Wiunkhaus
10. CASE

Realizar evaluaciones condicionales en SQL.

  • Uso:
CASE 
    WHEN condición THEN resultado
    ELSE resultado_predeterminado
END
  • Ejemplo:
    Dada la tabla empleados:
Nombre Salario
Ana 3500
Luis 2500
Marta 1500

Consulta:

SELECT nombre, 
       CASE 
           WHEN salario >= 3000 THEN 'Alto'
           WHEN salario >= 2000 THEN 'Medio'
           ELSE 'Bajo'
       END AS categoria_salario
FROM empleados;

Resultado:

Nombre categoria_salario
Ana Alto
Luis Medio
Marta Bajo

Funciones de Agregación

En la gestión de bases de datos, una función de agregación es una función en la que los valores de varias filas se agrupan bajo un criterio para formar un valor único más significativo. Estas funciones se ponen en el SELECT Existen 5 tipos de funciones de agregación:

  1. MAX: Retorna el valor máximo de una columna.
SELECT MAX(salario) FROM empleados;

Resultado:

MAX(salario)
2000
  1. MIN: Retorna el valor mínimo de una columna.
SELECT MIN(salario) FROM empleados;

Resultado:

MIN(salario)
1000
  1. AVG: Retorna el promedio de los valores de una columna.
SELECT AVG(salario) FROM empleados;

Resultado:

AVG(salario)
1325
  1. COUNT: Retorna el número de filas o elementos en una columna.
SELECT COUNT(id) FROM empleados;

Resultado:

COUNT(id)
3

También se puede usar COUNT(*) para contar todas las filas, incluidas las NULL.

5. SUM: Calcula la suma de los valores en una columna.

SELECT SUM(salario) FROM empleados;

Tabla empleados:

Id Nombre Salario
1 Franco 1000
2 Agustina 2000
3 Ignacio 1500

Resultado:

SUM(salario)
4500

Uso de GROUP BY con funciones de agregación

La cláusula GROUP BY se utiliza junto con funciones de agregación para agrupar filas con valores repetidos y aplicar cálculos sobre ellas.

Ejemplo: Suma de salarios por nombre

Consulta:

SELECT nombre, SUM(salario) FROM empleados GROUP BY nombre;

Tabla empleados:

Id Nombre Salario
1 Franco 1000
2 Mariela 2000
3 Franco 1000
4 Mariela 350

Resultado:

Nombre SUM(Salario)
Franco 2000
Mariela 2350

Agrupa las filas por el campo nombre y suma los valores de la columna salario para cada grupo.


Ejemplo: Conteo de personas por país

Consulta:

SELECT COUNT(id), pais FROM personas GROUP BY pais;

Tabla personas:

Id Nombre País
1 Franco Argentina
2 Juliana Alemania
3 Agustín Argentina

Resultado:

COUNT(Id) País
2 Argentina
1 Alemania

Agrupa las filas por el campo pais y cuenta cuántos id hay en cada grupo.


Función ROUND

Redondea valores numéricos a un número específico de decimales.

SELECT ROUND(columna, decimales) FROM tabla;

Si decimales no se indica, redondea al entero más cercano.

  • Ejemplo:
    Dada la tabla empleados:
Id Nombre Apellido Salario
1 Franco Medina 1000.55
2 Agustina Koch 2000.35
3 Ignacio Pérez 1600.75

Consulta:

SELECT ROUND(AVG(salario)) FROM Empleados;

Resultado:

ROUND(AVG(salario))
1326

Orden de Implementación en MySQL

Cuando se estructuran consultas SQL con múltiples cláusulas, el orden correcto es importante:

orden implementación

  1. SELECT: Especifica las columnas que se desean recuperar.
  2. FROM: Indica la tabla de origen.
  3. WHERE: Filtra filas antes del agrupamiento.
  4. GROUP BY: Agrupa filas con valores comunes.
  5. HAVING: Filtra grupos tras el agrupamiento.
  6. ORDER BY: Ordena los resultados.
  7. LIMIT: Restringe la cantidad de resultados.

💡 Nota: En subconsultas, este orden se reinicia.

Ejemplo combinando varias cláusulas:

SELECT nombre AS "Nombre Alumno", ROUND(AVG(edad)) AS "Edad Promedio"
FROM Alumnos
WHERE edad > 18
GROUP BY nombre
HAVING COUNT(*) > 1
ORDER BY "Edad Promedio" DESC
LIMIT 3;

Diferencias clave entre las cláusulas WHERE y HAVING en SQL

Característica WHERE HAVING
Propósito Filtra filas antes de que se realicen las operaciones de agrupación o agregación. Filtra grupos de resultados después de que se hayan realizado las operaciones de agregación.
Uso Se utiliza para establecer condiciones en las columnas individuales. Se utiliza para establecer condiciones en los resultados de las funciones de agregación.
Operaciones Puede usarse con cualquier columna de la tabla y no requiere una operación de agregación. Generalmente se utiliza con la cláusula GROUP BY, aunque también puede aplicarse sin ella si se trata de una agregación en toda la tabla.
Ejemplos:
  • Uso de WHERE:

    SELECT nombre, salario
    FROM empleados
    WHERE salario > 3000;

    Filtra los empleados con un salario mayor a 3000 antes de realizar cualquier agrupación._

  • Uso de HAVING:

    SELECT departamento, AVG(salario) AS promedio_salario
    FROM empleados
    GROUP BY departamento
    HAVING promedio_salario > 5000;

    Agrupa por departamento, calcula el promedio de salario y luego filtra los departamentos con un promedio superior a 5000._


Consultas Multitabla

En MySQL es posible combinar datos de múltiples tablas para obtener información más compleja. Esto se logra enumerando las tablas en la cláusula FROM de la consulta, separadas por comas. Este enfoque genera lo que se conoce como el producto cartesiano (todas las filas de una tabla se combinan con todas las filas de las demás tablas).

SELECT * FROM tabla1, tabla2;

Si no se define una condición con WHERE, cada fila de la primera tabla se combina con cada fila de la segunda, generando combinaciones innecesarias.

Ejemplo:

SELECT * FROM empleados, departamentos;

Resultado: Cada empleado se combina con todos los departamentos, generando un total de 33 filas (11 empleados × 3 departamentos). Este resultado incluye datos irrelevantes y carece de lógica relacional.


Para evitar combinaciones innecesarias, se usa una condición en la cláusula WHERE que relaciona las tablas mediante sus columnas clave. En este caso, se emplea la relación entre empleados.departamento_id y departamentos.id.

Consulta Relacional:

SELECT * FROM empleados, departamentos 
WHERE empleados.departamento_id = departamentos.id;

De esa forma solo se muestran las combinaciones donde el departamento_id del empleado coincide con el id del departamento, eliminando filas irrelevantes.

Note

  1. La consulta inicial (antes de WHERE) genera el producto cartesiano.
  2. La cláusula WHERE filtra las combinaciones irrelevantes, dejando solo las que cumplen la condición relacional.

Ejemplo Final:

SELECT e.id, e.nombre, e.apellido, e.salario, d.nombre AS departamento
FROM empleados e, departamentos d 
WHERE e.departamento_id = d.id;

Cada empleado se muestra solo con su departamento correspondiente.


Uso de Alias para Simplificar Consultas

Para evitar repetir los nombres completos de las tablas, podemos usar alias con la cláusula AS. Esto hace las consultas más legibles y fáciles de manejar.

Ejemplo con Alias:

SELECT * 
FROM empleados AS e, departamentos AS d 
WHERE e.departamento_id = d.id;

El uso de AS es opcional:

SELECT * 
FROM empleados e, departamentos d 
WHERE e.departamento_id = d.id;

JOIN en MySQL

Los JOIN en MySQL permiten combinar datos de varias tablas de manera eficiente y lógica.

  • Permiten combinar datos de dos o más tablas en una sola consulta.
  • Aunque con las consultas multi tablas se realizan JOINS implícitos, la sintaxis explícita con la cláusula JOIN es más legible y fácil de mantener.

Estructura básica de un JOIN

La estructura básica de un JOIN en MySQL es la siguiente:

SELECT *
FROM tabla1
JOIN tabla2
ON tabla1.columna = tabla2.columna;
  • SELECT: Define las columnas que se desean recuperar.
  • FROM: Especifica la tabla principal de la consulta.
  • JOIN: Palabra clave para realizar la operación de unión.
  • ON: Condición que relaciona las tablas.

Tipos de JOIN más comunes

sql-join

  1. INNER JOIN
    • Recupera solo las filas que tienen coincidencias en ambas tablas.

    • Sintaxis:

      SELECT clientes.nombre, pedidos.producto
      FROM clientes
      INNER JOIN pedidos
      ON clientes.id = pedidos.cliente_id;
    • Nota: INNER JOIN es equivalente a JOIN. Sin embargo, es buena práctica usar INNER JOIN explícitamente.


  1. LEFT JOIN (o LEFT OUTER JOIN)
    • Recupera todas las filas de la tabla izquierda y las filas coincidentes de la tabla derecha. Si no hay coincidencia, devuelve NULL para las columnas de la tabla derecha.

    • Sintaxis:

      SELECT e.nombre, d.nombre
      FROM empleados e
      LEFT JOIN departamentos d
      ON e.departamento_id = d.id;

  1. RIGHT JOIN (o RIGHT OUTER JOIN)
    • Similar al LEFT JOIN, pero devuelve todas las filas de la tabla derecha y las filas coincidentes de la tabla izquierda. Las filas sin coincidencia en la tabla izquierda tienen valores NULL.

    • Sintaxis:

      SELECT e.nombre, d.nombre
      FROM empleados e
      RIGHT JOIN departamentos d
      ON e.departamento_id = d.id;
    • Nota: Se recomienda usar LEFT JOIN en lugar de RIGHT JOIN por su mayor compatibilidad con diferentes sistemas de bases de datos.


Funciones de texto

Funciones de longitud y conteo

  • CHAR_LENGTH() / CHARACTER_LENGTH()

Devuelve el número de caracteres de una cadena.

SELECT CHAR_LENGTH('Hola Mundo'); -- Resultado: 10
  • LENGTH()

Devuelve la longitud de una cadena en bytes.

SELECT LENGTH('Hola Mundo'); -- Resultado: 10 (cada carácter = 1 byte en UTF-8)

Funciones de concatenación

  • CONCAT()

Combina varias cadenas en una sola.

SELECT CONCAT('Hola', ' ', 'Mundo'); -- Resultado: 'Hola Mundo'
  • CONCAT_WS(separador, ...)

Similar a CONCAT(), pero incluye un separador entre las cadenas.

SELECT CONCAT_WS('-', '2025', '01', '21'); -- Resultado: '2025-01-21'

Funciones de manipulación de cadenas

  • INSERT(cadena, posición, longitud, subcadena)

Inserta una subcadena en una posición específica y reemplaza un número dado de caracteres.

SELECT INSERT('Hola Mundo', 6, 5, 'SQL'); -- Resultado: 'Hola SQL'
  • REPLACE(cadena, buscar, reemplazar)

Reemplaza todas las ocurrencias de una subcadena en una cadena.

SELECT REPLACE('Hola Mundo', 'Mundo', 'SQL'); -- Resultado: 'Hola SQL'
  • REVERSE()

Invierte el orden de los caracteres de una cadena.

SELECT REVERSE('Hola'); -- Resultado: 'aloH'
  • REPEAT(cadena, número)

Repite una cadena el número especificado de veces.

SELECT REPEAT('SQL', 3); -- Resultado: 'SQLSQLSQL'

Funciones para extraer subcadenas

  • LEFT(cadena, número)

Devuelve los caracteres más a la izquierda de una cadena.

SELECT LEFT('Hola Mundo', 4); -- Resultado: 'Hola'
  • RIGHT(cadena, número)

Devuelve los caracteres más a la derecha de una cadena.

SELECT RIGHT('Hola Mundo', 5); -- Resultado: 'Mundo'
  • MID() / SUBSTR() / SUBSTRING()

Devuelve una subcadena desde una posición dada y de una longitud específica.

SELECT SUBSTRING('Hola Mundo', 6, 5); -- Resultado: 'Mundo'
  • SUBSTRING_INDEX(cadena, delimitador, número)

Devuelve la parte de la cadena antes o después de un número específico de ocurrencias de un delimitador.

SELECT SUBSTRING_INDEX('2025-01-21', '-', 2); -- Resultado: '2025-01'

Funciones de búsqueda y posición

  • INSTR(cadena, subcadena) / LOCATE(subcadena, cadena)

Devuelve la posición de la primera aparición de una subcadena.

SELECT LOCATE('Mundo', 'Hola Mundo'); -- Resultado: 6
  • MATCH(columnas) AGAINST(texto)

Realiza una búsqueda de texto completo.

SELECT MATCH(titulo) AGAINST('SQL') FROM articulos;

Funciones de conversión de mayúsculas y minúsculas

  • LOWER(cadena) / LCASE(cadena)

Convierte una cadena a minúsculas.

SELECT LOWER('HOLA'); -- Resultado: 'hola'
  • UPPER(cadena) / UCASE(cadena)

Convierte una cadena a mayúsculas.

SELECT UPPER('hola'); -- Resultado: 'HOLA'

Funciones de eliminación y relleno

  • LTRIM(cadena)

Elimina los espacios al inicio de una cadena.

SELECT LTRIM('   Hola'); -- Resultado: 'Hola'
  • RTRIM(cadena)

Elimina los espacios al final de una cadena.

SELECT RTRIM('Hola   '); -- Resultado: 'Hola'
  • TRIM(cadena)

Elimina los espacios al inicio y al final de una cadena.

SELECT TRIM('   Hola   '); -- Resultado: 'Hola'
  • LPAD(cadena, longitud, relleno)

Rellena la cadena por la izquierda con un carácter hasta alcanzar una longitud específica.

SELECT LPAD('SQL', 6, '*'); -- Resultado: '**SQL'
  • RPAD(cadena, longitud, relleno)

Rellena la cadena por la derecha con un carácter hasta alcanzar una longitud específica.

SELECT RPAD('SQL', 6, '*'); -- Resultado: 'SQL***'

Otras funciones de texto

  • FORMAT(numero, decimales)

Formatea un número con el número especificado de decimales.

SELECT FORMAT(1234.5678, 2); -- Resultado: '1,234.57'
  • SPACE(número)

Devuelve una cadena con el número de espacios especificado.

SELECT SPACE(5); -- Resultado: '     ' (5 espacios)
  • STRCMP(cadena1, cadena2)

Compara dos cadenas.

SELECT STRCMP('Hola', 'Mundo'); -- Resultado: -1 (porque 'Hola' < 'Mundo')
  • GROUP_CONCAT(campo SEPARATOR separador)

Concatena valores de un grupo en una sola cadena separada por un delimitador.

SELECT GROUP_CONCAT(nombre SEPARATOR ', ') FROM usuarios;
-- Resultado: 'Juan, María, Pedro'

Coincidencias y patrones

  • LIKE patrón

Busca cadenas utilizando patrones.

SELECT * FROM usuarios WHERE nombre LIKE 'J%'; -- Nombres que comienzan con 'J'
  • REGEXP patrón

Comprueba si una cadena coincide con una expresión regular.

SELECT * FROM usuarios WHERE nombre REGEXP '^J.*o$'; -- Nombres que comienzan con 'J' y terminan con 'o'

Funciones de hora y fecha

Funciones de fechas y tiempos

  • ADDDATE(fecha, intervalo)

Agrega un intervalo de tiempo a una fecha.

SELECT ADDDATE('2025-01-21', INTERVAL 5 DAY); -- Resultado: '2025-01-26'
  • ADDTIME(hora, tiempo)

Agrega un tiempo a una hora.

SELECT ADDTIME('10:00:00', '02:30:00'); -- Resultado: '12:30:00'
  • CONVERT_TZ(fecha, zona_origen, zona_destino)

Convierte una fecha de una zona horaria a otra.

SELECT CONVERT_TZ('2025-01-21 12:00:00', 'UTC', 'America/New_York'); -- Resultado: '2025-01-21 07:00:00'
  • CURDATE() / CURRENT_DATE()

Devuelve la fecha actual.

SELECT CURDATE(); -- Resultado: '2025-01-21'
  • CURRENT_TIME() / CURTIME()

Devuelve la hora actual.

SELECT CURTIME(); -- Resultado: '14:35:12'
  • CURRENT_TIMESTAMP() / NOW()

Devuelve la fecha y hora actuales.

SELECT NOW(); -- Resultado: '2025-01-21 14:35:12'
  • DATE(expresión)

Extrae la parte de fecha de una expresión de fecha o datetime.

SELECT DATE('2025-01-21 14:35:12'); -- Resultado: '2025-01-21'
  • DATE_ADD(fecha, intervalo)

Agrega un intervalo de tiempo a una fecha.

SELECT DATE_ADD('2025-01-21', INTERVAL 1 MONTH); -- Resultado: '2025-02-21'
  • DATE_FORMAT(fecha, formato)

Formatea una fecha según un formato.

SELECT DATE_FORMAT('2025-01-21', '%d/%m/%Y'); -- Resultado: '21/01/2025'
  • DATE_SUB(fecha, intervalo)

Resta un intervalo de tiempo de una fecha.

SELECT DATE_SUB('2025-01-21', INTERVAL 7 DAY); -- Resultado: '2025-01-14'
  • DATEDIFF(fecha1, fecha2)
    Devuelve la diferencia en días entre dos fechas.
SELECT DATEDIFF('2025-01-21', '2025-01-14'); -- Resultado: 7

Funciones relacionadas con días, meses y años

  • DAY(fecha) / DAYOFMONTH(fecha)

Devuelve el día del mes (0-31).

SELECT DAY('2025-01-21'); -- Resultado: 21
  • DAYNAME(fecha)

Devuelve el nombre del día de la semana.

SELECT DAYNAME('2025-01-21'); -- Resultado: 'Tuesday'
  • DAYOFWEEK(fecha)

Devuelve el índice del día de la semana (1 = domingo, 7 = sábado).

SELECT DAYOFWEEK('2025-01-21'); -- Resultado: 3
  • DAYOFYEAR(fecha)

Devuelve el número del día del año (1-366).

SELECT DAYOFYEAR('2025-01-21'); -- Resultado: 21
  • MONTH(fecha)

Devuelve el mes de la fecha pasada (1-12).

SELECT MONTH('2025-01-21'); -- Resultado: 1
  • MONTHNAME(fecha)

Devuelve el nombre del mes.

SELECT MONTHNAME('2025-01-21'); -- Resultado: 'January'
  • YEAR(fecha)

Devuelve el año de la fecha pasada.

SELECT YEAR('2025-01-21'); -- Resultado: 2025

Funciones relacionadas con tiempo

  • HOUR(hora)

Devuelve la hora de una expresión de tiempo.

SELECT HOUR('14:35:12'); -- Resultado: 14
  • MINUTE(hora)

Devuelve los minutos de una expresión de tiempo.

SELECT MINUTE('14:35:12'); -- Resultado: 35
  • SECOND(hora)

Devuelve los segundos de una expresión de tiempo.

SELECT SECOND('14:35:12'); -- Resultado: 12
  • TIME(expresión)

Extrae la porción de tiempo de una expresión pasada.

SELECT TIME('2025-01-21 14:35:12'); -- Resultado: '14:35:12'
  • TIME_FORMAT(hora, formato)

Formatea una hora según el formato especificado.

SELECT TIME_FORMAT('14:35:12', '%h:%i %p'); -- Resultado: '02:35 PM'
  • TIME_TO_SEC(hora)

Convierte una hora en segundos.

SELECT TIME_TO_SEC('01:02:03'); -- Resultado: 3723
  • SEC_TO_TIME(segundos)

Convierte segundos en formato hh:mm:ss.

SELECT SEC_TO_TIME(3723); -- Resultado: '01:02:03'

Funciones avanzadas de fechas

  • EXTRACT(parte FROM fecha)

Extrae una parte específica de una fecha.

SELECT EXTRACT(YEAR FROM '2025-01-21'); -- Resultado: 2025
  • FROM_DAYS(días)

Convierte un número de días en una fecha.

SELECT FROM_DAYS(738500); -- Resultado: '2025-01-21'
  • UNIX_TIMESTAMP()

Devuelve la marca de tiempo Unix actual.

SELECT UNIX_TIMESTAMP(); -- Resultado: 1737524312
  • FROM_UNIXTIME(marca_de_tiempo)

Convierte una marca de tiempo Unix en una fecha.

SELECT FROM_UNIXTIME(1737524312); -- Resultado: '2025-01-21 14:35:12'
  • LAST_DAY(fecha)

Devuelve el último día del mes para la fecha dada.

SELECT LAST_DAY('2025-01-21'); -- Resultado: '2025-01-31'

Vistas en Bases de Datos

Una vista en una base de datos es una consulta almacenada que se comporta como una tabla virtual. Permite a los usuarios consultar y manipular datos de forma estructurada y controlada.

Se usan para:

  1. Simplificación de Consultas:
    Las vistas pueden ocultar la complejidad de las consultas SQL al proporcionar una capa de abstracción sobre las tablas subyacentes.

  2. Seguridad de Acceso:
    Las vistas permiten limitar el acceso a columnas o filas específicas, facilitando la implementación de políticas de seguridad más estrictas.

  3. Reutilización de Consultas:
    Pueden reutilizarse para evitar redundancia en las consultas y facilitar el mantenimiento del código.

Para crear una vista en una base de datos, se utiliza la declaración CREATE VIEW.

CREATE VIEW nombre_de_la_vista AS
SELECT columnas 
FROM tabla 
WHERE condiciones;

La cláusula OR REPLACE permite reemplazar una vista existente.

  • Si la vista no existe, CREATE OR REPLACE VIEW actúa como CREATE VIEW.
  • Si la vista ya existe, esta será reemplazada.

Ejemplo:

CREATE OR REPLACE VIEW nombre_de_la_vista AS
SELECT columnas 
FROM tabla 
WHERE condiciones;

Operaciones en Vistas
  1. Actualización de Datos:

Es posible actualizar datos en vistas basadas en una sola tabla que cumplan con ciertas restricciones.

CREATE VIEW nombre_de_la_vista AS
SELECT columnas FROM tabla WHERE condiciones;
  1. Join en Vistas:

Las vistas pueden incluir combinaciones (JOIN) para integrar datos de múltiples tablas.

CREATE VIEW vista_pedidos AS SELECT p.id AS pedido_id, pr.nombre AS producto, p.cantidad 
FROM pedidos p 
JOIN productos pr ON p.producto_id = pr.id;
  1. Indexación en Vistas:

Se pueden crear índices en vistas para mejorar el rendimiento de consultas frecuentes.

CREATE INDEX idx_nombre ON vista_materializada(nombre)
  1. Seguridad y Permisos:

Es posible configurar los permisos necesarios tanto para las tablas subyacentes como para las vistas.

-- Revocar permisos directos en la tabla
REVOKE SELECT ON empleados FROM usuario;

-- Otorgar permisos en la vista
GRANT SELECT ON vista_segura TO usuario;

Funciones matemáticas

  • ABS(valor)

Devuelve el valor absoluto del número dado.

SELECT ABS(-5); -- Resultado: 5
  • ACOS(valor)

Devuelve el arcocoseno del número dado (en radianes).

SELECT ACOS(0.5); -- Resultado: 1.047197551
  • ASIN(valor)

Devuelve el arcoseno del número dado (en radianes).

SELECT ASIN(0.5); -- Resultado: 0.523598776
  • ATAN(valor)

Devuelve el arcotangente del número dado (en radianes).

SELECT ATAN(1); -- Resultado: 0.785398163
  • ATAN2(y, x)

Devuelve el arcotangente de dos valores dados (en radianes).

SELECT ATAN2(1, 2); -- Resultado: 0.463647609
  • CEIL(valor)

Devuelve el entero más pequeño que no sea menor que el número dado.

SELECT CEIL(4.3); -- Resultado: 5
  • CEILING(valor)

Devuelve el entero más pequeño que no sea menor que el número dado (sinónimo de CEIL).

SELECT CEILING(4.3); -- Resultado: 5
  • CONV(numero, base_origen, base_destino)

Convierte un número entre diferentes bases numéricas.

SELECT CONV('A', 16, 10); -- Resultado: 10
  • COS(valor)

Devuelve el coseno del número dado (en radianes).

SELECT COS(PI()); -- Resultado: -1
  • COT(valor)

Devuelve la cotangente del número dado (en radianes).

SELECT COT(PI()/4); -- Resultado: 1
  • CRC32(cadena)

Calcula un valor de comprobación de redundancia cíclica para una cadena dada.

SELECT CRC32('texto'); -- Resultado: 395194957
  • DEGREES(radianes)

Convierte un valor en radianes a grados.

SELECT DEGREES(PI()); -- Resultado: 180
  • EXP(valor)

Devuelve el valor de e elevado a la potencia dada.

SELECT EXP(1); -- Resultado: 2.718281828
  • FLOOR(valor)

Devuelve el entero más grande que no sea mayor que el número dado.

SELECT FLOOR(4.7); -- Resultado: 4
  • LN(valor)

Devuelve el logaritmo natural del número dado.

SELECT LN(2.718281828); -- Resultado: 1
  • LOG(valor)

Devuelve el logaritmo natural del número dado (base e).

SELECT LOG(10); -- Resultado: 2.302585093
  • LOG10(valor)

Devuelve el logaritmo base 10 del número dado.

SELECT LOG10(100); -- Resultado: 2
  • LOG2(valor)

Devuelve el logaritmo base 2 del número dado.

SELECT LOG2(8); -- Resultado: 3
  • MOD(dividendo, divisor)

Devuelve el residuo de la división entre dos números.

SELECT MOD(10, 3); -- Resultado: 1
  • PI()

Devuelve el valor de pi.

SELECT PI(); -- Resultado: 3.141592653
  • POW(base, exponente)

Devuelve el número base elevado a la potencia especificada.

SELECT POW(2, 3); -- Resultado: 8
  • POWER(base, exponente)

Devuelve el número base elevado a la potencia especificada (sinónimo de POW).

SELECT POWER(2, 3); -- Resultado: 8
  • RADIANS(grados)

Convierte un valor en grados a radianes.

SELECT RADIANS(180); -- Resultado: 3.141592653
  • RAND()

Devuelve un valor aleatorio de punto flotante entre 0 y 1.

SELECT RAND(); -- Resultado: 0.548813503 (varía en cada ejecución)
  • ROUND(valor, decimales)

Redondea el número al número especificado de decimales.

SELECT ROUND(3.14159, 2); -- Resultado: 3.14
  • SIGN(valor)

Devuelve el signo del número dado: -1 para negativos, 0 para cero, y 1 para positivos.

SELECT SIGN(-5); -- Resultado: -1
  • SIN(valor)

Devuelve el seno del número dado (en radianes).

SELECT SIN(PI()/2); -- Resultado: 1
  • SQRT(valor)

Devuelve la raíz cuadrada del número dado.

SELECT SQRT(16); -- Resultado: 4
  • TAN(valor)

Devuelve la tangente del número dado (en radianes).

SELECT TAN(PI()/4); -- Resultado: 1
  • TRUNCATE(valor, decimales)

Trunca el número al número especificado de decimales.

SELECT TRUNCATE(3.14159, 2); -- Resultado: 3.14

Clone this wiki locally