[⑭MySQL | tipo de datos (2)] cadena | tipo binario

prefacio

✨Bienvenido a la columna MySQL de Xiao K , esta sección le brindará cadenas MySQL | intercambio de tipos binarios✨


inserte la descripción de la imagen aquí

tipo de 5 cuerdas

El tipo de cadena se utiliza para almacenar datos de cadena y también puede almacenar datos binarios de imágenes y sonidos. Las cadenas pueden ser comparaciones de cadenas que distinguen entre mayúsculas y minúsculas o no, y también se pueden realizar búsquedas de coincidencia de expresiones regulares.

Los tipos de datos de cadena en MySQL se enumeran en la siguiente tabla y Mla representación entre paréntesis puede especificar su longitud.

escribe un nombre ilustrar rango de longitud espacio de almacenamiento utilizado
ENCANTO) Longitud fija 0<=M<=255 millones de bytes
VARCHAR(M) cadena de longitud variable 0<=M<=65535 M+1bytes
TEXTO PEQUEÑO cuerda muy pequeña 0<=L<=255 L+1bytes
TEXTO pequeña cuerda 0<=L<=65535 L+2 bytes
TEXTO MEDIO cuerda de tamaño mediano 0<=L<=16777215 L+3bytes
TEXTO LARGO cuerda grande 0<=L<=4294967295 L+4 bytes
ENUM Tipo de enumeración, solo puede tener un valor de cadena de enumeración 0<=L<=65535 1 o 2 bytes, según la cantidad de valores de enumeración (el máximo es 65535)
COLOCAR Una colección de cadenas, los objetos de cadena pueden tener cero o más miembros SET 0<=L<=64 1, 2, 3, 4 u 8 bytes, dependiendo del número de miembros del conjunto (hasta 64 miembros)

Tipos CHAR y VARCHAR

Tanto el tipo CHAR como el VARCHAR pueden almacenar cadenas relativamente cortas.

tipo características longitud rango de longitud ocupar espacio de almacenamiento
ENCANTO) Longitud fija METRO 0<=M<=255 millones de bytes
VARCHAR(M) Longitud variable METRO 0<=M<=65535 (longitud real + 1/2) bytes

Tipo de CARACTERÍSTICA:

  • CHAR(M) es una cadena de caracteres de longitud fija y la longitud de la cadena de caracteres se especifica cuando se define. Si no se especifica, el valor predeterminado es 1 carácter.

  • Si la longitud real de los datos es menor que la longitud declarada del tipo CHAR al guardar, alcanzará 右侧填充空格la longitud especificada. Al recuperar valores CHAR, se eliminan los espacios finales.

  • Al definir un campo de tipo CHAR, la longitud del campo declarado es el número de bytes de espacio de almacenamiento ocupados por el campo de tipo CHAR.

CREATE TABLE test_char
(
	f1 CHAR,
	f2 CHAR(5)
);

DESC test_char;

INSERT INTO test_char(f1) VALUES('h');
#Data too long for column 'f1' at row 1
INSERT INTO test_char(f1) VALUES('he');
INSERT INTO test_char(f1) VALUES('你');

INSERT INTO test_char(f2) VALUES('C语言');
#Data too long for column 'f2' at row 1
INSERT INTO test_char(f2) VALUES('C语言Plus');

#测试在右侧填充的空格,会在查询的时候去掉的情况
SELECT CONCAT(f2,'***') FROM test_char;
#注意:自己插入的空格也会被去掉
INSERT INTO test_char(f2) VALUES('fk  ');

SELECT * FROM test_char;

tipo VARCHAR:

  • Cuando se define VARCHAR(M), se debe especificar la longitud M; de lo contrario, se informará un error.

  • VARCHAR(M) significa que se pueden almacenar M caracteres y el espacio real ocupado es la longitud real de la cadena más 1 o 2.

  • VARCHAR Los espacios finales se conservan al guardar y recuperar el valor.

#错误,没有指定长度
CREATE TABLE test_varchar
(
	name VARCHAR
);

CREATE TABLE test_varchar
(
	name VARCHAR(5)
);

INSERT INTO test_varchar VALUES('星星'),('太阳月亮');
#Data too long forcolumn 'NAME' at row 1
INSERT INTO test_varchar VALUES('星星太阳月亮');

Tipo de texto

TEXTO se utiliza para guardar cadenas de tipo texto, como contenido de artículos, comentarios, etc. Los espacios finales no se eliminan al guardar o consultar el valor de una columna de TEXTO.

Hay 4 tipos de TEXTO: TEXTO PEQUEÑO, TEXTO, TEXTO MEDIO y TEXTO LARGO. El espacio de almacenamiento y la longitud de los datos de diferentes tipos de TEXTO son diferentes.

Al insertar datos en un campo de tipo TEXTO, el sistema los almacena automáticamente de acuerdo con la longitud real y no es necesario definir la longitud de antemano.

tipo ilustrar tamaño (bytes)
TEXTO PEQUEÑO texto pequeño 0<=L<=255
TEXTO Texto sin formato 0<=L<=65535
TEXTO MEDIO texto medio 0<=L<=16777215
TEXTO LARGO texto largo 0<=L<=4294967295 (equivalente a 4 GB de caracteres)

El tipo de texto TEXT puede almacenar segmentos de texto relativamente grandes y la velocidad de búsqueda es ligeramente más lenta, por lo que si el contenido no es particularmente grande, se recomienda utilizar CHAR y VARCHAR en su lugar. Tampoco es necesario agregar un valor predeterminado para el tipo TEXTO y es inútil agregarlo.

tipo de enumeración

El tipo ENUM también se denomina tipo de enumeración y el rango de valores del tipo ENUM debe especificarse en el campo de definición. Al configurar valores de campo, el tipo ENUM solo permite seleccionar un único valor de los miembros y no se pueden seleccionar varios valores a la vez. Si hay espacios en el miembro creado, los espacios finales se eliminarán automáticamente.

tipo rango de longitud ocupar espacio de almacenamiento
ENUM 1<=L<=65535 1 o 2 bytes
  • Los valores ENUM se representan internamente como números enteros, cada valor de enumeración tiene un valor de índice;
  • Los valores de miembro permitidos por el valor de la lista se numeran a partir de 1, que es el número de índice que almacena MySQL, y la enumeración puede tener hasta 65535 elementos.

Los valores ENUM se ordenan en el orden del índice de columnas, con las cadenas vacías ordenándose antes que las cadenas no nulas y los valores NULL ordenándose antes que todos los demás valores de enumeración.

Consejo: las columnas ENUM siempre tienen un valor predeterminado. Si una columna ENUM se declara como NULL, el valor NULL es un valor válido para la columna y el valor predeterminado es NULL. Si una columna ENUM se declara NOT NULL, su valor predeterminado es el primer elemento de la lista de valores permitidos.

  • Ver todos los valores de los campos de enumeración
SELECT
column_type
FROM
information_schema. COLUMNS
WHERE
#TABLE_SCHEMA = "test" AND
DATA_TYPE = 'enum'
AND table_name="test_enum"
AND column_name="ch";
  • prueba
CREATE TABLE test_enum
(
	gender ENUM('男','女','unknown')
);

INSERT INTO test_enum VALUES('男');
#Data truncated for column 'ch' at row 1
INSERT INTO test_enum VALUES('中');
#可以使用索引来插入枚举元素(注意:索引从1开始)
INSERT INTO test_enum VALUES(1),('2');

#当enum字段没有申明为NOT NULL时,插入NULL也是合法的
INSERT INTO test_enum VALUES(NULL);

SELECT * FROM test_enum;

Tipo de conjunto

SET es un objeto de cadena, que puede tener cero o más valores, y la columna SET puede tener hasta 64 miembros, y el valor es una columna de valores especificados cuando se crea la tabla.

Gama de miembros espacio de almacenamiento utilizado
1<=L<=8 1 byte
9<=L<=16 2 bytes
17<=L<=24 3 bytes
25<=L<=32 4 bytes
33<=L<=64 8 bytes
  • Al igual que los tipos ENUM, los valores SET se representan internamente como números enteros y cada valor de la lista tiene un número de índice. Los espacios finales en los valores de los miembros SET se eliminan automáticamente cuando se crea la tabla.

  • Sin embargo, a diferencia del tipo ENUM, el campo del tipo ENUM solo puede seleccionar un valor para insertar de los valores de columna definidos, mientras que la columna de tipo SET puede seleccionar una unión de múltiples caracteres de los valores de columna definidos.

Consejo: si los valores de las columnas insertadas en el campo SET están duplicados, MySQL eliminará automáticamente los valores duplicados; el orden de los valores insertados en el campo SET no es importante y MySQL los mostrará en el orden definido cuando se almacenan en la base de datos;

prueba

CREATE TABLE test_set
(
	hobby SET('吃饭','睡觉','写Bug')
);

INSERT INTO test_set VALUES('吃饭');

INSERT INTO test_set VALUES('吃饭,睡觉');

#重复插入时,会自动删除重复数据
INSERT INTO test_set VALUES('吃饭,睡觉,吃饭');
#插入的值在set中不存在时,会报错
INSERT INTO test_set VALUES('吃饭,睡觉,花钱');

SELECT * FROM test_set;

6 tipos binarios

El tipo de cadena binaria en MySQL almacena principalmente algunos datos binarios, como imágenes, audio, video y otros datos binarios.

Incluye BIT, BINARY, VARBINARY, TINYBLOB, BLOB, MEDIUMBLOB y LONGBLOB.

La siguiente tabla enumera los tipos de datos binarios en MySQL y Mla representación entre paréntesis puede especificar su longitud.

escribe un nombre ilustrar tamaño (bytes)
BITS(M) tipo de campo de bits Aproximadamente (M+7)/8 bytes
BINARIO(M) cadena binaria de longitud fija millones de bytes
VARBINARIO (M) cadena binaria de longitud variable M+1bytes
PEQUEÑA GOTA (M) gota muy pequeña L+1 bytes, donde L<2^8
GOTA (M) BLOB pequeño L+2 bytes, donde L<2^16
BOB MEDIANO (M) BLOB mediano L+3 bytes, donde L<2^24
GOTA DE PULMÓN (M) masa muy grande L+4 bytes, donde L<2^32

tipo de TBI

Tipo de campo de bits. M representa el número de dígitos para cada valor, que van del 1 al 64. Si se omite M, el valor predeterminado es 1. Si el valor asignado a una columna BIT(M) tiene menos de M bits de longitud, el valor se rellena con ceros a la izquierda. Por ejemplo, asignar un valor de b'101' a una columna BIT(6) tiene el mismo efecto que asignar b'000101'.

El tipo de datos BIT se usa para almacenar valores de campos de bits, por ejemplo, para almacenar datos 13 en forma binaria, y la forma binaria de 13 es 1101, donde se requiere un tipo BIT con al menos 4 bits, es decir, el tipo de columna. se puede definir como BIT(4). No se pueden insertar datos mayores que 1111 binario en un campo de tipo BIT(4).

Consejo: De forma predeterminada, MySQL no puede insertar valores más allá del rango permitido de la columna, por lo tanto, al insertar datos, asegúrese de que los valores insertados estén dentro del rango especificado.

Tipos BINARIO y VARBINARIO

Los tipos BINARY y VARBINARY son similares a CHAR y VARCHAR excepto que contienen cadenas de bytes binarios. El formato de sintaxis utilizado es el siguiente:

Nombre de columna BINARY(M) o VARBINARY(M)

La longitud del tipo BINARIO es fija. Después de la longitud especificada, si la longitud es menor que la longitud máxima, se rellenará "\0" a la derecha de ellos para alcanzar la longitud especificada. Por ejemplo, si el tipo de datos de la columna se especifica como BINARIO(3), al insertar a, el contenido almacenado es en realidad "a\0\0", al insertar ab, el contenido almacenado real es "ab\0", independientemente de el contenido almacenado Si se alcanza la longitud especificada, el espacio de almacenamiento es el valor especificado M.

La longitud del tipo VARBINARY es variable, después de especificar la longitud, la longitud puede estar entre 0 y el valor máximo. Por ejemplo, si el tipo de datos de la columna se especifica como VARBINARY(20), si la longitud del valor insertado es solo 10, el espacio de almacenamiento real es 10 más 1 y el espacio ocupado real es la longitud real de la cadena más 1. .

tipo BLOB

Un BLOB es un objeto binario que se utiliza para almacenar cantidades variables de datos. Hay cuatro tipos de BLOB: TINYBLOB, BLOB, MEDIUMBLOB y LONGBLOB, y tienen diferentes longitudes máximas de valores que pueden contener, como se muestra en la siguiente tabla.

tipo de datos rango de almacenamiento
PEQUEÑO BLOB La longitud máxima es 255 (28-1) bytes
GOTA La longitud máxima es 65535 (216-1) bytes
MEDIUMBLOB La longitud máxima es 16777215 (224-1) bytes
GOTA DE PULMÓN La longitud máxima es 4294967295 o 4 GB (231-1) bytes

Las columnas BLOB almacenan cadenas binarias (cadenas de bytes) y las columnas TEXT almacenan cadenas no decimales (cadenas de caracteres). Las columnas BLOB son conjuntos de caracteres, y la clasificación y comparación se basan en los valores numéricos de los bytes de valor de la columna; las columnas TEXT tienen un conjunto de caracteres y los valores se ordenan y comparan según el conjunto de caracteres.

Resumir

En general, elegir un tipo de datos apropiado puede mejorar el rendimiento de la base de datos, ahorrar espacio de almacenamiento, garantizar la coherencia y validez de los datos y facilitar el procesamiento y el cálculo de los datos. Por lo tanto, al diseñar una base de datos, es muy importante elegir el tipo de datos adecuado. ~La siguiente sección trae el intercambio de vistas de MySQL.

Supongo que te gusta

Origin blog.csdn.net/qq_72157449/article/details/132396010
Recomendado
Clasificación