Tipos de datos GUID de SQL Server

Resumen: en este tutorial, aprenderás sobre los tipos de datos GUID de SQL Server y cómo usar la función NEWID() para generar valores GUID.
Introducción al tipo de datos GUID de SQL Server
Todas las cosas en nuestro mundo están numeradas, por ejemplo, los libros tienen ISBN, los automóviles tienen VIN y las personas tienen números de seguro social (SSN).
Los números, o identificadores, nos ayudan a hacer referencia a las cosas sin ambigüedades. Por ejemplo, podemos identificar a John Doe usando su número único de seguro social 123-45-6789.
Un identificador único global o GUID
es una versión más amplia de este tipo de números de identificación.
Se garantiza que un GUID
es único en tablas, bases de datos e incluso servidores.
En SQL Server, GUID
es un tipo de datos binarios de 16 bytes, que se genera mediante la función NEWID()
:
SELECT
NEWID() AS GUID;
Si ejecutas la declaración anterior varias veces, verás un valor diferente cada vez. Aquí esta uno de ellos:
GUID
------------------------------------
3297F0F2-35D3-4231-919D-1CFCF4035975
(1 row affected)
En SQL Server, el tipo de datos UNIQUEIDENTIFIER
contiene valores GUID
.
Las siguientes sentencias declaran una variable con tipo UNIQUEIDENTIFIER
y le asignan un valor GUID
generado por la función NEWID()
.
DECLARE
@id UNIQUEIDENTIFIER;
SET @id = NEWID();
SELECT
@id AS GUID;
Resultado:
GUID
------------------------------------
69AA3BA5-D51E-465E-8447-ECAA1939739A
(1 row affected)
Uso de GUID de SQL Server como clave principal
A veces, se prefiere usar valores GUID
para la columna de clave principal de una tabla que usar números enteros.
El uso de GUID
como clave principal de una tabla ofrece las siguientes ventajas:
- Los valores
GUID
son globalmente únicos en tablas, bases de datos e incluso servidores. Por lo tanto, permite fusionar datos de diferentes servidores con facilidad. - Los valores de
GUID
no exponen la información, por lo que es más seguro usarlos en una interfaz pública, como una URL. Por ejemplo, si tienes la URL https://estradawebgroup.com/customer/100/ URL, no es tan difícil encontrar clientes con id 101, 102, etc. Sin embargo, conGUID
, no es posible: https://estradawebgroup.com/customer/F4AB02B7-9D55-483D-9081-CC4E3851E851/
Además de estas ventajas, almacenar GUID
en la columna de clave principal de una tabla tiene las siguientes desventajas:
Los valores GUID
(16 bytes) requieren más almacenamiento que INT (4 bytes) o incluso BIGINT (8 bytes)
Los valores GUID
dificultan la resolución de problemas y la depuración, comparando WHERE id = 100 con WHERE id = 'F4AB02B7-9D55-483D-9081-CC4E3851E851'.
Ejemplo de GUID de SQL Server
Primero, crea una nueva tabla llamada clientes en el esquema de marketing:
CREATE SCHEMA marketing;
GO
CREATE TABLE marketing.customers(
customer_id UNIQUEIDENTIFIER DEFAULT NEWID(),
first_name NVARCHAR(100) NOT NULL,
last_name NVARCHAR(100) NOT NULL,
email VARCHAR(200) NOT NULL
);
GO
En segundo lugar, inserta filas nuevas en la tabla marketing.customers:
INSERT INTO
marketing.customers(first_name, last_name, email)
VALUES
('John','Doe','john.doe@estradawebgroup.com'),
('Jane','Doe','jane.doe@estradawebgroup.com');
En tercer lugar, consulta los datos de la tabla marketing.customers:
SELECT
customer_id,
first_name,
last_name,
email
FROM
marketing.customers;
Resultado:
customer_id | first_name | last_name | |
---|---|---|---|
02521D0D-433D-49AE-827E-48F95EF5A6BD | John | Doe | john.doe@estradawebgroup.com |
7AC8ED66-F281-446A-A561-80D6CF63CE99 | Jane | Doe | jane.doe@estradawebgroup.com |
En este tutorial, aprendiste sobre el GUID
de SQL Server y cómo usar la función NEWID()
para generar valores GUID
.