Postgres VARCHAR vs TEXT

Introducción

Si usted está trabajando con PostgreSQL, es importante tener una sólida comprensión de los diferentes tipos de datos para que pueda elegir los correctos al crear sus tablas de base de datos. Dos tipos de caracteres comunes utilizados en PostgreSQL son los tipos TEXT y VARCHAR. Aunque hay muchas similitudes entre estos dos tipos, también hay algunas diferencias clave. En este artículo, aprenderemos más sobre estos tipos de caracteres y compararemos las diferencias entre Postgres VARCHAR vs TEXT.

Requisitos previos

Antes de continuar con nuestra comparación de Postgres VARCHAR vs TEXT, hagamos una pausa para revisar algunos requisitos previos que se requieren para seguir los ejemplos de este artículo:

  • Asegúrese de que el servidor PostgreSQL ha sido instalado y configurado correctamente. El servicio tiene que estar funcionando en segundo plano.

Los usuarios de Linux y Windows pueden descargar PostgreSQL aquí:

  • Para iniciar el servidor PostgreSQL en un entorno Linux, utilice el siguiente comando:
1
sudo service postgresql start
  • Puede ver si el servicio se está ejecutando con el comando que se muestra a continuación:
1
service postgresql status

La salida de este comando tendrá el siguiente aspecto:

1
2
3
4
5
6
7
8
9
â— postgresql.service – PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor prese
Active: active (exited) since Thu 2019-08-01 14:51:20 PST; 36min ago
Process: 1230 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
PID principal: 1230 (code=exited, status=0/SUCCESS)
Aug 01 14:51:20 user-UX330UAK systemd: Starting PostgreSQL RDBMS…
Aug 01 14:51:20 user-UX330UAK systemd: Iniciando PostgreSQL RDBMS.
líneas 1-8/8 (END)

Si está trabajando en una máquina Windows, las siguientes instrucciones se pueden utilizar para iniciar, detener y reiniciar el servidor PostgreSQL:

  1. Abrir el Panel de Control
  2. Abrir Herramientas Administrativas
  3. Abrir Servicios
  4. Localizar el servicio del Servidor PostgreSQL
  5. Por último, iniciar, detener o reiniciar el servicio

¿Cuáles son los tipos de caracteres de PostgreSQL?

Hay tres tipos de caracteres en PostgreSQL: character(n), que se conoce comúnmente como char(n), character varying(n), que se conoce comúnmente como varchar(n), y text. El valor de n debe ser un entero positivo para estos tipos. Todos los tipos de caracteres de PostgreSQL son capaces de almacenar cadenas de hasta n caracteres.

Si intenta almacenar una cadena más larga en una columna de este tipo de caracteres de PostgreSQL, obtendrá un error a menos que los caracteres que exceden el límite estén compuestos completamente por espacios. Si este es el caso, la cadena o caracteres que exceden serán truncados a la longitud máxima permitida.

El tipo de datos VARCHAR se comporta de manera similar al tipo de datos TEXT cuando no se especifica el valor de n. El rendimiento de ambos tipos de caracteres también es similar cuando se omite n.

A diferencia de otras bases de datos, los tipos de caracteres de PostgreSQL no tienen diferencias de rendimiento entre ellos. La mayor parte del tiempo, usaremos TEXT o VARCHAR dependiendo de nuestras necesidades; usaremos el VARCHAR(n) cuando queramos que PostgreSQL realice la comprobación de los límites de longitud.

Ejemplos de uso de los tipos de carácter de PostgreSQL

En este ejemplo, continuaremos nuestra comparación de Postgres VARCHAR vs TEXT mirando más de cerca los tipos de carácter y cómo funcionan en una base de datos PostgreSQL.

Antes de que podamos proceder con nuestros ejemplos, necesitaremos crear una tabla:

1
2
3
4
5
CREATE TABLE pgsql_char_sample (
id serial PRIMARY KEY,
my_char VARCHAR (8),
my_text TEXT
);

Después de crear nuestra tabla, podemos realizar una operación de inserción:

1
2
3
4
5
6
INSERT INTO pgsql_char_sample (my_char, mi_texto)
VALUES
(
‘Esta cadena de muestra es para la columna varchar’,
‘Esta cadena de muestra es para la columna de texto que se insertará en la tabla PostgreSQL’
);

La sentencia mostrada anteriormente dará lugar a un error:

1
ERROR: VALUE too long FOR TYPE CHARACTER VARYING(8)

Este error se produce porque se ha intentado insertar una cadena con más de ocho caracteres en la columna my_char que tiene un tipo de datos varchar(8).

Intentemos insertar de nuevo los datos de muestra, esta vez con valores diferentes:

1
2
3
4
5
6
INSERT INTO pgsql_char_sample (my_char, mi_texto)
VALUES
(
‘Cadena’,
‘Esta cadena de ejemplo es para la columna de texto que se insertará en la tabla PostgreSQL’
);

Para verificar que nuestra operación de inserción fue exitosa, podemos utilizar la siguiente sentencia:

1
SELECT * FROM pgsql_char_sample;

El resultado debería ser algo así:

1
2
3
4
id | my_char | my_text
—-+———+———————————————————————————-
1 | Cadena | Esta cadena de ejemplo ES PARA la COLUMNA de texto que se va a insertar en la TABLA PostgreSQL
(1 FILA)

En el ejemplo que miramos, podemos ver que la única diferencia entre las columnas VARCHAR(n) y TEXT es que se puede establecer un límite contra la columna VARCHAR. En este caso, establecemos el VARCHAR a una longitud de ocho caracteres, por lo que no se pueden insertar cadenas de mayor longitud. Como mencionamos antes, los tipos de caracteres VARCHAR y TEXT no tienen diferencias observables en el rendimiento.

Conclusión

Cuando se almacenan datos de caracteres en PostgreSQL, es importante elegir el tipo de datos correcto para cada columna de la tabla. En este artículo, comparamos los tipos de carácter de Postgres VARCHAR vs TEXT, discutiendo sus similitudes y diferencias básicas. Con la información proporcionada en este artículo, usted estará preparado para diseñar sus propias tablas de base de datos en PostgreSQL y elegir los tipos de datos correctos para sus necesidades.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.