2010-08-17 15 views
7

He siguientes confusiones -
1. ¿Qué tipo de datos se utiliza para la mayor cantidad de almacenamiento de datos
2. Cuando especificamos varcha (100) por lo que este 100 representamos 100 characters o 100 bits or bytes¿Cuál es la diferencia entre los campos de datos TEXT y VARCHAR?

+0

Como se puede ver a partir de las respuestas, esto depende mucho de qué servidor de base de datos que está utilizando - p.ejVARCHAR de mySQL es muy diferente de varchar – Piskvor

Respuesta

1

Suponiendo que estamos hablando de MS SQL servidor:

1) varchar(max): varchar(max) es un reemplazo para el texto

2) varchar(100) = 100 caracteres (un solo byte caracteres ASCII)

(mientras que nvarchar(100) = 100 caracteres (Caracteres de doble byte Unicode))

Ref: char and varchar (Transact-SQL)

[acaba de encontrar un posible duplicado: ms sql server; varchar(MAX) vs TEXT]

2

TEXTO almacenará hasta 64 K - MySQL (por ejemplo) proporciona variantes también: TINYTEXT (256 bytes), MEDIUMTEXT (16MB) y LONGTEXT (4GB).

Una columna VARCHAR (100) tendrá capacidad para hasta 100 caracteres de texto. Puede utilizar un VARBINARIO para datos binarios, en cuyo caso un campo VARBINARIO (100) contendrá hasta 100 bytes.

4

En SQL Server

VARCHAR (100) = 100 caracteres ASCII y 102 bytes

nvarchar (100) = 100 caracteres Unicode/ASCII y 202 bytes de almacenamiento

texto y ntext subir a 2 GB pero están en desuso (del servidor sql 2005), debe usar varchar (max) y nvarchar (max) que también van hasta 2 GB en lugar de

+0

de MSSQL. Los requisitos de almacenamiento no son 100 bytes para 'VARCHAR (100)', sino 102 bytes: http://msdn.microsoft.com/en-us/library/ms176089.aspx. Lo mismo vale para 'NVARCHAR'. –

+0

Sí, sé que se utilizan 2 bytes para denotar la posición de inicio y final, esta también es la razón por la que utiliza char (2) not varchar (2). Gracias, actualizó la respuesta – SQLMenace

+0

Realmente no, los 2 bytes se utilizan para almacenar el tamaño de la matriz 'VARCHAR' y no como una posición de inicio y fin. Y no utiliza 'CHAR' en lugar de' VARCHAR' si las columnas difieren significativamente en tamaño, ya que esto será una pérdida de espacio en comparación con 'VARCHAR'. –

2

Si se utiliza MySQL la diferencia está principalmente relacionada con la storage requirements:

  • VARCHAR: L + 1 bytes si los valores de columna requieren 0 - 255 bytes, L + 2 bytes si los valores pueden requerir más de 255 bytes

  • TEXT: L + 2 bytes, donde L < 2^16

donde L es el tamaño real de la entrada

Cuestiones relacionadas