Tema SQL

Tipos de datos SQL

Clasificación de valores que puede almacenar cada columna: enteros y decimales con distinta precisión, texto de longitud fija o variable, fechas y marcas de tiempo, booleanos, binarios y tipos semiestructurados o espaciales según el motor.

Todos los temas

129 tema(s) · elige uno para abrirlo

SELECT básico INNER JOIN LEFT JOIN Filtro sobre agregados (HAVING) Subconsulta escalar en WHERE INSERT: nuevas filas UPDATE: modificar filas existentes DELETE UNION / UNION ALL CTE (WITH) DISTINCT EXISTS (subconsulta) CASE (expresión condicional) GROUP BY ORDER BY RIGHT JOIN CROSS JOIN CREATE TABLE CREATE INDEX CREATE VIEW ALTER TABLE TRUNCATE TABLE MERGE / UPSERT Tipos de datos SQL WHERE: predicados y filtros LIMIT, OFFSET y FETCH LIKE y comodines IN y BETWEEN ANY, SOME y ALL Funciones de agregación Funciones escalares (texto, número,... COALESCE, NULLIF e IFNULL/ISNULL FULL OUTER JOIN SELF JOIN Subconsulta correlacionada INTERSECT y EXCEPT / MINUS CTE recursiva (WITH RECURSIVE) Funciones de ventana (OVER) DROP VIEW DROP INDEX DROP TABLE CREATE DATABASE Restricciones: NOT NULL, UNIQUE, PRI... FOREIGN KEY (clave foránea) Secuencias e identidad (AUTO_INCREME... Tablas temporales GRANT y REVOKE (DCL) Transacciones (BEGIN, COMMIT, ROLLBA... Triggers (disparadores) Procedimientos almacenados Funciones definidas por el usuario JSON en SQL LATERAL y APPLY (CROSS / OUTER) PIVOT y UNPIVOT RETURNING y OUTPUT FETCH … WITH TIES y OFFSET/FETCH DISTINCT ON (PostgreSQL) TABLESAMPLE FOR UPDATE, SKIP LOCKED y NOWAIT FIND_IN_SET() (MySQL / MariaDB) GROUP_CONCAT() (MySQL / MariaDB) IF() (MySQL / MariaDB) IFNULL() (MySQL / MariaDB) NULLIF() (MySQL / MariaDB) FIELD() (MySQL / MariaDB) ELT() (MySQL / MariaDB) STR_TO_DATE() (MySQL / MariaDB) DATE_FORMAT() (MySQL / MariaDB) TIMESTAMPDIFF() (MySQL / MariaDB) UUID() (MySQL / MariaDB) RAND() (MySQL / MariaDB) CONCAT_WS() (MySQL / MariaDB) SUBSTRING_INDEX() (MySQL / MariaDB) JSON_EXTRACT() (MySQL / MariaDB) JSON_UNQUOTE() (MySQL / MariaDB) MAKE_SET() (MySQL / MariaDB) EXPORT_SET() (MySQL / MariaDB) SLEEP() (MySQL / MariaDB) BENCHMARK() (MySQL / MariaDB) STRING_AGG() (SQL Server) ISNULL() (SQL Server) GETDATE() (SQL Server) SYSDATETIME() (SQL Server) DATEDIFF() (SQL Server) DATEADD() (SQL Server) IIF() (SQL Server) CHOOSE() (SQL Server) TRY_CAST / TRY_CONVERT (SQL Server) NEWID() (SQL Server) generate_series() (PostgreSQL) unnest() (PostgreSQL) array_agg() (PostgreSQL) jsonb_build_object() (PostgreSQL) jsonb_each() (PostgreSQL) to_tsvector() (PostgreSQL) to_tsquery() (PostgreSQL) set_config() (PostgreSQL) current_setting() (PostgreSQL) pg_sleep() (PostgreSQL) LAST_INSERT_ID() (MySQL / MariaDB) MATCH() … AGAINST() (MySQL / MariaDB... INSERT … ON DUPLICATE KEY UPDATE (My... UNIX_TIMESTAMP() / FROM_UNIXTIME() (... JSON_TABLE() (MySQL / MariaDB) REGEXP / RLIKE (MySQL / MariaDB) CONV() (MySQL / MariaDB) QUOTE() (MySQL / MariaDB) INSERT IGNORE (MySQL / MariaDB) ANY_VALUE() (MySQL / MariaDB) FOR JSON (SQL Server) CROSS APPLY / OUTER APPLY (SQL Serve... STUFF() (SQL Server) FORMAT() (SQL Server) TRY_PARSE() (SQL Server) EOMONTH() (SQL Server) STRING_SPLIT() (SQL Server) PIVOT (SQL Server) AT TIME ZONE (SQL Server) OPENJSON (SQL Server) date_trunc() (PostgreSQL) age() (PostgreSQL) jsonb_path_query / SQL/JSON (Postgre... Operadores de array (PostgreSQL) COPY (PostgreSQL) row_to_json / to_jsonb (PostgreSQL) Tipos rango (PostgreSQL) INTERVAL (PostgreSQL) FILTER en agregados (PostgreSQL) GENERATED … AS IDENTITY (PostgreSQL)

Descripción

El tipo de cada columna fija el dominio de valores válidos, el espacio en disco, el comportamiento en comparaciones y ordenaciones, y a menudo qué índices u operadores están disponibles. ANSI/ISO ofrece una base común; los productos añaden tipos propios o alias (p. ej. TEXT, JSONB, UUID, ARRAY, GEOMETRY). Elegir DECIMAL frente a FLOAT no es anecdótico: el primero es exacto para importes y el segundo aproximado para cálculos científicos. Al diseñar tablas, alinea tipos con el consumo real en aplicación y revisa límites (tamaño máximo de VARCHAR, zona horaria en TIMESTAMP).

Estructura general

Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.

SQL
columna TIPO [ restricciones ]

-- Ejemplos frecuentes
INT, BIGINT, DECIMAL(p,s), VARCHAR(n), TEXT
DATE, TIME, TIMESTAMP, BOOLEAN
BINARY, BLOB, JSON / JSONB (según motor)

Componentes

Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.

Numéricos
INTEGER/BIGINT para contadores; DECIMAL(p,s) o NUMERIC para cantidades exactas; FLOAT/REAL/DOUBLE para aproximaciones. Evita mezclar sin CAST explícito en comparaciones críticas.
Texto
CHAR(n) rellena longitud fija; VARCHAR(n) solo almacena lo usado hasta el límite; TEXT/CLOB para documentos largos. Collation y charset afectan orden y comparación de cadenas.
Temporal
DATE (solo día), TIME, TIMESTAMP WITH o WITHOUT TIME ZONE según motor. Literales y funciones actuales (NOW, CURRENT_TIMESTAMP) dependen del dialecto y de la sesión.

Ejemplos

Ejemplo 1

SQL
CREATE TABLE demo_tipos (
  id BIGINT PRIMARY KEY,
  nombre VARCHAR(120) NOT NULL,
  precio DECIMAL(12, 2),
  creado_en TIMESTAMP
);

Ejemplo 2

SQL
SELECT CAST('2024-01-15' AS DATE) AS d;

Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.