Tengo una tabla simple de 'personas':
mysql> desc people; +-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | id | int | NO | PRI | NULL | | | name | varchar(255) | YES | | NULL | | +-------+--------------+------+-----+---------+-------+ 2 rows in set (0.01 sec) Cuando show create table people; comando, me muestra el comando completo que creó mi tabla:
mysql> show create table people; +--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | people | CREATE TABLE `people` ( `id` int NOT NULL, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci | +--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) En este comando, veo una oración ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci .
La pregunta es: ¿Qué significa? Especialmente, ¿qué significa ENGINE=InnoDB ?
InnoDB es un motor de almacenamiento en MySQL. Como se explica en la documentación :
Los motores de almacenamiento son componentes de MySQL que manejan las operaciones de SQL para diferentes tipos de tablas.
InnoDBes el motor de almacenamiento predeterminado y de uso más general, y Oracle recomienda usarlo para tablas, excepto para casos de uso especializados. (La declaraciónCREATE TABLEen MySQL 8.0 crea tablas InnoDB de forma predeterminada).MySQL Server utiliza una arquitectura de motor de almacenamiento conectable que permite que los motores de almacenamiento se carguen y descarguen de un servidor MySQL en ejecución.
A partir del estado actual de la técnica, MyISAM, que era el único motor disponible en los primeros días de 5.x, está siendo abandonado e InnoDB es el estándar de facto: ofrece las funcionalidades más típicas que se pueden encontrar en otras bases de datos de alto perfil. , como transacciones y bloqueo a nivel de fila.
InnoDB es un motor de almacenamiento que permite Foriegn Key, Rollback, commit y ACID Compliant...
CHARSET = es un conjunto de caracteres que son legales en una cadena.
uft8mb4 significa que cada carácter se almacena como máximo 4 bytes en el esquema de codificación UTF-8.
ai se refiere a la insensibilidad al acento
ci se refiere a la insensibilidad a mayúsculas y minúsculas.
COLLATE = conjunto de reglas utilizadas para comparar caracteres