Tema SQL
UUID() (MySQL / MariaDB)
Genera un identificador único universal versión 1 (MAC + tiempo) en formato cadena con guiones. Cada llamada produce un valor nuevo en la sesión, útil como clave sustituta o token.
Descripción
UUID() devuelve un CHAR de 36 caracteres en forma estándar 8-4-4-4-12 hexadecimal. No garantiza orden cronológico estable para índices B-tree en clústeres (los UUID v1 son algo secuenciales por tiempo pero no como enteros autoincrementales). Para índices primarios en tablas enormes, algunos equipos prefieren UUID v4 aleatorio o BINARY(16) almacenado compacto (UUID_TO_BIN en MySQL 8). UUID() en SELECT sin tabla genera una fila; en INSERT puede ser valor por columna DEFAULT en versiones recientes o en trigger. No uses UUID() en predicados que deban cachearse idénticos entre ejecuciones: cada evaluación es distinta.
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.
UUID()
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.
- Formato
- Cadena con guiones; convierte a binario compacto si el espacio importa.
- Colisión
- Prácticamente despreciable; no sustituye auditoría humana.
- Alternativas
- AUTO_INCREMENT, secuencias, o UUID v4 según política de réplicas.
Ejemplos
Ejemplo 1
SELECT UUID() AS id_ejemplo;
INSERT INTO sesiones (id, creado_en)
VALUES (UUID(), NOW());
Ejemplo 2
SELECT UUID() AS uno, UUID() AS dos;
-- dos valores distintos en la misma fila
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.