Diferencia entre char, varchar y VARCHAR2 en Oracle

1. CHAR:
el tipo de datos char se utiliza para almacenar los valores de los caracteres. Es un tipo de datos de longitud fija, es decir, una vez inicializados, no podemos cambiar el tamaño en el momento de la ejecución. Por lo tanto, también se denomina tipo de datos estático.
Se utiliza para almacenar caracteres normales y también caracteres alfanuméricos. El tipo de datos char puede almacenar una string de caracteres de una longitud máxima de 2000 bytes de caracteres. Además, por cada carácter, se almacena un byte en la memoria. Dado que el tamaño es fijo y no se puede cambiar, provocará un desperdicio de memoria.
Forex: si almacena 5 caracteres en char (10), Oracle almacenará los 5 bytes y los 5 bytes restantes se rellenarán en el lado derecho, lo que provocará un desperdicio de memoria, como se muestra en el ejemplo de la última parte del artículo. .
.
La sintaxis es la siguiente.

char_name CHAR(length BYTE)
char_name CHAR(length CHAR)

NOTA: si el tamaño del carácter no se especifica explícitamente, el oráculo asignará 1 byte de forma predeterminada, algo como esto.

// Assigns 1 byte
char_name CHAR 

2. VARCHAR:
el tipo de datos VarChar se utiliza para almacenar los valores de los caracteres. Es un tipo de datos de longitud variable, es decir, podemos cambiar el tamaño del carácter en el momento de la ejecución. Por lo tanto, también se denomina tipo de datos dinámico.
Se utiliza para almacenar caracteres normales y también caracteres alfanuméricos. El tipo de datos VarChar puede almacenar una string de caracteres de una longitud máxima de 4000 bytes . Además, por cada carácter, se almacena un byte en la memoria.

VARCHAR es un estándar ANSI que se utiliza para distinguir entre strings nulas y vacías. Sin embargo, en Oracle VARCHAR y VARCHAR2 es totalmente lo mismo.
Se recomienda no utilizar VARCHAR ya que Oracle puede cambiar su uso en un futuro próximo.

La sintaxis es la siguiente:

char_name VARCHAR(length BYTE)
char_name VARCHAR(length CHAR)

3. VARCHAR2:
VARCHAR2 es lo mismo que VARCHAR en la base de datos de Oracle. La principal diferencia es que VARCHAR es el estándar ANSI y VARCHAR2 es el estándar de Oracle.
El tipo de datos VarChar2 se utiliza para almacenar los valores de los caracteres. Es un tipo de datos de longitud variable, es decir, podemos cambiar el tamaño de la variable de carácter en el momento de la ejecución. Por lo tanto, también se denomina tipo de datos dinámico.
Se utiliza para almacenar caracteres normales y también caracteres alfanuméricos. El tipo de datos VARCHAR2 puede almacenar una string de caracteres de una longitud máxima de 4000 bytes de caracteres. Además, por cada carácter, se almacena un byte en la memoria. Dado que es un tipo de datos dinámico, no se desperdiciará memoria.
Forex: si almacena 5 caracteres en char (10), Oracle solo almacenará 5 bytes en lugar de 10 como en el caso de VARCHAR y CHAR.

La sintaxis es similar a la de VARCHAR

char_name VARCHAR2(length BYTE)
char_name VARCHAR2(length CHAR)

// allocates length bytes of character
char_name VARCHAR2(length) 

Ahora, comprendamos mejor la diferencia a través de una consulta en Oracle DataBase.

Vamos a crear una tabla que contenga tres variables a, b, c de char, varchar y varchar2 respectivamente. 

// creating a table
create table t(a char(10) , b varchar(10) , c varchar2(10)) 

Insertar valores en la tabla

// inserting the values in the table
insert into t(a,b,c) values('rahul','krishna','loki') 
// for displaying table values
select * from t; 

Recuperación de información detallada de a y b

// dump() function is used to obtain detailed information of a and b 
select a,dump(a),b,dump(b),c,dump(c) from t 

Como se puede ver en el ejemplo anterior:

  1. Rahul se almacena en el tipo de datos char y tiene una longitud de 5 caracteres. Dado que es una variable Char, Oracle asigna espacio para Rahul y los 5 caracteres restantes se rellenan a la derecha. Esto conduce al desperdicio de memoria.
     
  2. Krishna se almacena en el tipo de datos VarChar y tiene una longitud de 7 caracteres. Dado que es una variable VarChar, Oracle asigna espacio para los 7 caracteres solo a diferencia del caso en VarChar.
     
  3. Loki se almacena en el tipo de datos VarChar2 y tiene una longitud de 4 caracteres. Dado que es una variable VarChar2, asigna espacio para los 4 caracteres solo aunque declaramos el tamaño como 10 bytes, similar a Krishna como se discutió en el segundo punto.

Diferencia entre char, varchar y VARCHAR2 en Oracle:

sno   

Carbonizarse

VarChar/VarChar2

1 Char significa «Carácter» VarChar/VarChar2 significa carácter variable
2 Se utiliza para almacenar strings de caracteres de longitud fija. Se utiliza para almacenar strings de caracteres de longitud variable.
3 Tiene un Tamaño Máximo de 
2000 Bytes
Tiene un Tamaño Máximo de 4000 Bytes  
4 Char rellenará los espacios del lado derecho para llenar la longitud especificada durante la Declaración VarChar no rellenará los espacios del lado derecho para completar la longitud especificada durante la Declaración. 
5 No es necesario especificar el tamaño en el momento de la declaración. Tomará 1 Byte por defecto  Se requiere especificar el tamaño al momento de la declaración
6 Es un tipo de datos estático (es decir, longitud fija) Es un tipo de datos dinámico (es decir, longitud variable)
7 Puede conducir al desperdicio de memoria.  Gestiona la memoria de manera eficiente
8 Es un 50% mucho más rápido que VarChar/VarChar2  Es relativamente más lento en comparación con Char

Nota: No hay diferencia entre VarChar y VarChar2 en Oracle. Sin embargo, se recomienda no usar VarChar para almacenar datos, ya que está reservado para uso futuro para almacenar algún otro tipo de variable. Por lo tanto, siempre use VarChar2 en lugar de VarChar.

Por lo tanto, se recomienda utilizar el tipo de datos Char cuando la longitud de la string de caracteres es fija y no cambiará en el futuro.
Si la longitud de la string de caracteres no es fija, se prefiere VarChar2. 

Publicación traducida automáticamente

Artículo escrito por phanitejau y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *