SQL Tipos de datos para diversas bases de datos
Tipos de datos y rangos utilizados por Microsoft Access, MySQL y SQL Server.
Tipos de datos de Microsoft Access
| Tipo de datos | Descripción | Almacenamiento |
|---|---|---|
| Text | Para texto o una combinación de texto y números. Hasta 255 caracteres. | |
| Memo | Memo se utiliza para mayores cantidades de texto. Almacena hasta 65,536 caracteres.Notas:No se pueden ordenar los campos memo. Sin embargo, se pueden buscar. | |
| Byte | Permite números de 0 a 255. | 1 byte |
| Integer | Permite todos los números entre -32,768 y 32,767. | 2 bytes |
| Long | Permite todos los números entre -2,147,483,648 y 2,147,483,647. | 4 bytes |
| Single | Punto flotante de precisión simple. Maneja la mayoría de los decimales. | 4 bytes |
| Double | Punto flotante de doble precisión. Maneja la mayoría de los decimales. | 8 bytes |
| Currency | Para moneda. Admite 15 dígitos para la parte entera, más 4 decimales.Consejo:Puede elegir qué moneda de qué país utilizar. | 8 bytes |
| AutoNumber | El campo AutoNumber asigna automáticamente un número a cada registro, normalmente comenzando desde 1. | 4 bytes |
| Date/Time | Para fecha y hora | 8 bytes |
| Yes/No | Campo lógico, que se puede mostrar como Yes/No, True/False o On/Off. En el código, use las constantes True y False (equivalentes a 1 y 0).Notas:No se permiten valores Null en el campo Sí/No. | 1 bit |
| Ole Object | Puede almacenar imágenes, audio, video u otros BLOBs (Binary Large OBjects). | Máximo 1GB |
| Hyperlink | Contiene enlaces a otros archivos, incluidas páginas web. | |
| Lookup Wizard | Le permite crear una lista de opciones desde la que se puede seleccionar en una lista desplegable. | 4 bytes |
Tipos de datos MySQL
En MySQL, hay tres tipos principales: Text (texto), Number (número) y Date/Time (fecha/hora).
Tipo Text:
| Tipo de datos | Descripción |
|---|---|
| CHAR(size) | Almacena cadenas de longitud fija (pueden contener letras, números y caracteres especiales). La longitud de la cadena se especifica entre paréntesis. Hasta 255 caracteres. |
| VARCHAR(size) | Almacena cadenas de longitud variable (pueden contener letras, números y caracteres especiales). La longitud máxima de la cadena se especifica entre paréntesis. Hasta 255 caracteres.Notas:Si la longitud del valor es mayor que 255, se convierte al tipo TEXT. |
| TINYTEXT | Almacena cadenas con una longitud máxima de 255 caracteres. |
| TEXT | Almacena cadenas con una longitud máxima de 65,535 caracteres. |
| BLOB | Para BLOBs (Binary Large OBjects). Almacena hasta 65,535 bytes de datos. |
| MEDIUMTEXT | Almacena cadenas con una longitud máxima de 16,777,215 caracteres. |
| MEDIUMBLOB | Para BLOBs (Binary Large OBjects). Almacena hasta 16,777,215 bytes de datos. |
| LONGTEXT | Almacena cadenas con una longitud máxima de 4,294,967,295 caracteres. |
| LONGBLOB | Para BLOBs (Binary Large OBjects). Almacena hasta 4,294,967,295 bytes de datos. |
| ENUM(x,y,z,etc.) | Le permite ingresar una lista de valores posibles. Puede enumerar hasta 65,535 valores en una lista ENUM. Si el valor insertado no existe en la lista, se inserta un valor vacío. Notas:Estos valores se ordenan según el orden en que los ingrese. Puede ingresar los valores posibles en este formato: ENUM('X','Y','Z') |
| SET | Similar a ENUM, con la diferencia de que SET solo puede contener hasta 64 elementos de lista y SET puede almacenar más de una selección. |
Tipo Number:
| Tipo de datos | Descripción |
|---|---|
| TINYINT(size) | Con signo de -128 a 127, sin signo de 0 a 255. |
| SMALLINT(size) | Rango con signo de -32768 a 32767, sin signo de 0 a 65535, tamaño predeterminado 6. |
| MEDIUMINT(size) | Rango con signo de -8388608 a 8388607, rango sin signo de 0 a 16777215. Tamaño predeterminado 9. |
| INT(size) | Rango con signo de -2147483648 a 2147483647, rango sin signo de 0 a 4294967295. Tamaño predeterminado 11. |
| BIGINT(size) | El rango con signo es de -9223372036854775808 a 9223372036854775807, el rango sin signo es de 0 a 18446744073709551615. Tamaño predeterminado 20. |
| FLOAT(size,d) | Números pequeños con punto decimal flotante. El número máximo de dígitos a mostrar se especifica en el parámetro size. El número máximo de dígitos a la derecha del punto decimal se especifica en el parámetro d. |
| DOUBLE(size,d) | Números grandes con punto decimal flotante. El número máximo de dígitos a mostrar se especifica en el parámetro size. El número máximo de dígitos a la derecha del punto decimal se especifica en el parámetro d. |
| DECIMAL(size,d) | Tipo DOUBLE almacenado como cadena, que permite un punto decimal fijo. El número máximo de dígitos a mostrar se especifica en el parámetro size. El número máximo de dígitos a la derecha del punto decimal se especifica en el parámetro d. |
Nota:El size anterior no representa la longitud real almacenada en la base de datos; por ejemplo, int(4) no significa que solo pueda almacenar números de 4 dígitos de longitud.
En realidad, la cantidad de espacio de almacenamiento que ocupa int(size) no tiene ninguna relación. int(3), int(4) e int(8) ocupan todos 4 bytes de espacio de almacenamiento en el disco. Aparte de una ligera diferencia en la forma en que se muestran al usuario, int(M) es igual al tipo de datos int.
Por ejemplo:
1. El valor de int es 10 (con zerofill especificado).
int(9)显示结果为000000010 int(3)显示结果为010Solo difiere en la longitud mostrada; ambos ocupan cuatro bytes de espacio.
Tipo Date:
| Tipo de datos | Descripción |
|---|---|
| DATE() | Fecha. Formato: YYYY-MM-DD Notas:El rango admitido es desde '1000-01-01' hasta '9999-12-31'. |
| DATETIME() | * Combinación de fecha y hora. Formato: YYYY-MM-DD HH:MM:SS Notas:El rango soportado es desde '1000-01-01 00:00:00' hasta '9999-12-31 23:59:59' |
| TIMESTAMP() | * Timestamp. Los valores TIMESTAMP se almacenan usando los segundos desde la época Unix ('1970-01-01 00:00:00' UTC) hasta el presente. Formato: YYYY-MM-DD HH:MM:SS Notas:El rango soportado es desde '1970-01-01 00:00:01' UTC hasta '2038-01-09 03:14:07' UTC |
| TIME() | Hora. Formato: HH:MM:SS Notas:El rango admitido es desde '-838:59:59' hasta '838:59:59'. |
| YEAR() | Año en formato de 2 o 4 dígitos. Notas:Valores permitidos en formato de 4 dígitos: 1901 a 2155. Valores permitidos en formato de 2 dígitos: 70 a 69, que representan de 1970 a 2069. |
* Aunque DATETIME y TIMESTAMP devuelven el mismo formato, funcionan de manera muy diferente. En una consulta INSERT o UPDATE, TIMESTAMP se establece automáticamente a la fecha y hora actuales. TIMESTAMP también acepta diferentes formatos, como YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD o YYMMDD.
Tipos de datos de SQL Server
Tipo String:
| Tipo de datos | Descripción | Almacenamiento |
|---|---|---|
| char(n) | Cadenas de longitud fija. Hasta 8,000 caracteres. | Defined width |
| varchar(n) | Cadenas de longitud variable. Hasta 8,000 caracteres. | 2 bytes + number of chars |
| varchar(max) | Cadenas de longitud variable. Hasta 1,073,741,824 caracteres. | 2 bytes + number of chars |
| text | Cadenas de longitud variable. Hasta 2 GB de datos de texto. | 4 bytes + number of chars |
| nchar | Cadena Unicode de longitud fija. Máximo 4,000 caracteres. | Defined width x 2 |
| nvarchar | Cadena Unicode de longitud variable. Máximo 4,000 caracteres. | |
| nvarchar(max) | Cadena Unicode de longitud variable. Máximo 536,870,912 caracteres. | |
| ntext | Cadena Unicode de longitud variable. Máximo 2 GB de datos de texto. | |
| bit | Permite 0, 1 o NULL. | |
| binary(n) | Cadena binaria de longitud fija. Máximo 8,000 bytes. | |
| varbinary | Cadena binaria de longitud variable. Máximo 8,000 bytes. | |
| varbinary(max) | Cadena binaria de longitud variable. Máximo 2 GB. | |
| image | Cadena binaria de longitud variable. Máximo 2 GB. |
Tipos de número:
| Tipo de datos | Descripción | Almacenamiento |
|---|---|---|
| tinyint | Permite todos los números del 0 al 255. | 1 byte |
| smallint | Permite todos los números entre -32,768 y 32,767. | 2 bytes |
| int | Permite todos los números entre -2,147,483,648 y 2,147,483,647. | 4 bytes |
| bigint | Permite todos los números entre -9,223,372,036,854,775,808 y 9,223,372,036,854,775,807. | 8 bytes |
| decimal(p,s) | Números con precisión y escala fijas. Permite números desde -10^38 +1 hasta 10^38 -1. El parámetro p indica el número máximo de dígitos que se pueden almacenar (a la izquierda y a la derecha del punto decimal). p debe ser un valor entre 1 y 38. El valor predeterminado es 18. El parámetro s indica el número máximo de dígitos almacenados a la derecha del punto decimal. s debe ser un valor entre 0 y p. El valor predeterminado es 0. |
5-17 bytes |
| numeric(p,s) | Números con precisión y escala fijas. Permite números desde -10^38 +1 hasta 10^38 -1. El parámetro p indica el número máximo de dígitos que se pueden almacenar (a la izquierda y a la derecha del punto decimal). p debe ser un valor entre 1 y 38. El valor predeterminado es 18. El parámetro s indica el número máximo de dígitos almacenados a la derecha del punto decimal. s debe ser un valor entre 0 y p. El valor predeterminado es 0. |
5-17 bytes |
| smallmoney | Datos de moneda entre -214,748.3648 y 214,748.3647. | 4 bytes |
| money | Datos de moneda entre -922,337,203,685,477.5808 y 922,337,203,685,477.5807. | 8 bytes |
| float(n) | Datos numéricos de precisión flotante desde -1.79E + 308 hasta 1.79E + 308. El parámetro n indica si el campo almacena 4 u 8 bytes. float(24) almacena 4 bytes, mientras que float(53) almacena 8 bytes. El valor predeterminado de n es 53. |
4 u 8 bytes |
| real | Datos numéricos de precisión flotante desde -3.40E + 38 hasta 3.40E + 38. | 4 bytes |
Tipos de fecha:
| Tipo de datos | Descripción | Almacenamiento |
|---|---|---|
| datetime | Desde el 1 de enero de 1753 hasta el 31 de diciembre de 9999, con precisión de 3.33 milisegundos. | 8 bytes |
| datetime2 | Desde el 1 de enero de 1753 hasta el 31 de diciembre de 9999, con precisión de 100 nanosegundos. | 6-8 bytes |
| smalldatetime | Desde el 1 de enero de 1900 hasta el 6 de junio de 2079, con precisión de 1 minuto. | 4 bytes |
| date | Almacena solo la fecha. Desde el 1 de enero de 0001 hasta el 31 de diciembre de 9999. | 3 bytes |
| time | Almacena solo la hora. Precisión de 100 nanosegundos. | 3-5 bytes |
| datetimeoffset | Igual que datetime2, más el desplazamiento de zona horaria. | 8-10 bytes |
| timestamp | Almacena un número único que se actualiza cada vez que se crea o modifica una fila. Los valores de timestamp se basan en un reloj interno y no corresponden al tiempo real. Cada tabla solo puede tener una variable timestamp. |
Otros tipos de datos:
| Tipo de datos | Descripción |
|---|---|
| sql_variant | Almacena hasta 8,000 bytes de datos de diferentes tipos de datos, excepto text, ntext y timestamp. |
| uniqueidentifier | Almacena un identificador único global (GUID). |
| xml | Almacena datos con formato XML. Máximo 2 GB. |
| cursor | Almacena una referencia a un puntero utilizado para operaciones de base de datos. |
| table | Almacena conjuntos de resultados para su procesamiento posterior. |