28% de descuento del curso en SQL Server

Estrada Web Group Estrada Web Group
Tipos de datos GUID
Estrada Web Group
Estrada Web Group
Estrada Web Group Estrada Web Group
Calificar:
12 septiembre SQL

Tipos de datos GUID de SQL Server

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, con GUID, 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 email
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.

 

Compartir:

Cargando...
Descarga el código fuente

Obten el código del sistema de gestión de proyectos.

Shape