Mi Blog
👉 Cómo crear una tabla en MySQL/MariaDB

Cómo crear una tabla en MySQL/MariaDB

 
(2 votos)

La creación de tablas es el primer y fundamental paso para dar forma a la estructura que almacenará y organizará nuestros datos. Exploraremos de manera detallada y accesible cómo crear tablas en MySQL/MariaDB, proporcionando los conocimientos esenciales para aquellos que buscan dominar la administración eficiente de bases de datos relacionales.

Seguid leyendo y os enseñaré a crear tablas en vuestras bases de datos MySQL/MariaDB...

⬇️ Compra en Amazon el hardware que utilizo ⬇️

🔥 ¡DESCÚBRELOS! 🔥

 

 

¿QUÉ ES UNA TABLA EN UNA BASE DE DATOS?

En MySQL y MariaDB, una tabla es una estructura fundamental para organizar y almacenar datos de manera sistemática en una base de datos relacional. Una tabla se compone de filas y columnas, donde cada fila representa un registro único y cada columna representa un atributo específico del conjunto de datos.

Principales Componentes de una Tabla:

  • Filas (Registros): Cada fila de la tabla corresponde a un conjunto completo de datos relacionados entre sí. Por ejemplo, si tienes una tabla de empleados, cada fila podría representar la información de un empleado específico, como nombre, edad, salario, etc.
  • Columnas (Campos): Las columnas definen los atributos individuales de los registros. Siguiendo con el ejemplo de una tabla de empleados, las columnas podrían incluir "Nombre", "Edad", "Salario", entre otras.
  • Celdas: Cada intersección entre una fila y una columna se llama celda. Es en estas celdas donde se almacenan los datos específicos correspondientes a un atributo y un registro particular.

 

Características Clave:

  • Sintaxis de Creación: La creación de una tabla implica definir la estructura de las columnas, especificar los tipos de datos que contendrán y establecer restricciones como claves primarias y foráneas.
  • Claves Primarias: Una tabla puede tener una columna o un conjunto de columnas designadas como claves primarias. Esta(s) clave(s) aseguran la unicidad de cada registro en la tabla, lo que facilita la identificación y manipulación de datos de manera eficiente.
  • Relaciones entre Tablas: En bases de datos relacionales, es común establecer relaciones entre tablas mediante el uso de claves foráneas. Esto permite conectar datos entre diferentes tablas, facilitando consultas y análisis más complejos.

 

 

Los datos se organizan en filas y columnas dentro de las tablas

 

 

1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL

  • Un equipo con MySQL/MariaDB instalado
  • Una base de datos creada

 

 

 

 

2.- SINTAXIS PARA CREAR UNA TABLA

La sintaxis básica para crear una tabla en MySQL/MariaDB es la siguiente:

MariaDB [(none)]> CREATE TABLE nombre_tabla

 

 

Pero la línea anterior no es correcta ya que, para poder crear una tabla de forma correcta necesitamos, además de indicar el nombre de la tabla, la estructura de la tabla y los tipos que datos que vamos a guardar en cada uno de las columnas.

Por tanto, la línea anterior se convertirá en la siguiente:

MariaDB [(none)]> CREATE TABLE nombre_tabla [características_tabla]

 

 

A su vez, existen muchas opciones a la hora de crear una tabla de MySQL/MariaDB. Según la documentación oficial para crear una tabla la sintaxis es la siguiente:

CREATE [OR REPLACE] [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
(create_definition,...) [table_options ]... [partition_options]
CREATE [OR REPLACE] [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[(create_definition,...)] [table_options ]... [partition_options]
select_statement
CREATE [OR REPLACE] [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
{ LIKE old_table_name | (LIKE old_table_name) }
select_statement:
[IGNORE | REPLACE] [AS] SELECT ... (Some legal select statement)

 

 

3.- DEFINICIÓN DE LA TABLAS

La sintaxis para definir las diferentes definiciones sobre una tabla es la siguiente:

create_definition: {
col_name column_definition
| {INDEX | KEY} [index_name] [index_type] (key_part,...)
[index_option] ...
| {FULLTEXT | SPATIAL} [INDEX | KEY] [index_name] (key_part,...)
[index_option] ...
| [CONSTRAINT [symbol]] PRIMARY KEY
[index_type] (key_part,...)
[index_option] ...
| [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY]
[index_name] [index_type] (key_part,...)
[index_option] ...
| [CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (col_name,...)
reference_definition
| check_constraint_definition
}

 

 

A continuación, explico cada uno de las definiciones de la sintaxis:

  • CONSTRAINT: Se trata de una restricción que se puede aplicar a nivel de columna o tabla para definir reglas específicas sobre los datos. Estas reglas pueden incluir la obligatoriedad de valores, la validación de rangos, entre otras condiciones.
  • PRIMARY KEY: La clave primaria es esencial en una tabla, ya que identifica de manera única cada registro. Solamente se puede definir una clave primaria por tabla, y suele asociarse con una columna como el documento de identidad DNI en el caso de una persona.
  • UNIQUE: Esta restricción asegura que los valores en una columna sean únicos en comparación con el resto de los registros. Generalmente se utiliza para evitar duplicados y garantizar la exclusividad de ciertos datos, siendo común en columnas declaradas como claves primarias.
  • INDEX | KEY: Ambos términos son intercambiables y se utilizan para crear índices en la tabla. Estos índices mejoran el rendimiento de las consultas al agilizar la búsqueda de datos en la base de datos. Similar a un índice de un libro, ayudan a evitar explorar cada página al buscar un parámetro.
  • FULLTEXT | SPATIAL: El índice FULLTEXT se aplica a columnas con formatos específicos y almacenamiento MyISAM, optimizando búsquedas extensas en texto. SPATIAL se utiliza para columnas que contienen datos geométricos y son útiles en aplicaciones que requieren funcionalidades espaciales, como mapas o ubicaciones geográficas.
  • FOREIGN KEY: Conocida como clave foránea, esta función índice permite establecer relaciones entre tablas. Los valores en la columna correspondiente deben existir en ambas tablas, creando conexiones significativas, como asociar el código postal de la tabla 'usuarios' con la tabla 'población'.

 

 

4.- OPCIONES SOBRE LAS TABLAS

Si necesitamos añadir alguna opción "especial" sobre la tabla, podemos incluir todos los siguientes parámetros:

table_option: {
AUTOEXTEND_SIZE [=] value
| AUTO_INCREMENT [=] value
| AVG_ROW_LENGTH [=] value
| [DEFAULT] CHARACTER SET [=] charset_name
| CHECKSUM [=] {0 | 1}
| [DEFAULT] COLLATE [=] collation_name
| COMMENT [=] 'string'
| COMPRESSION [=] {'ZLIB' | 'LZ4' | 'NONE'}
| CONNECTION [=] 'connect_string'
| {DATA | INDEX} DIRECTORY [=] 'absolute path to directory'
| DELAY_KEY_WRITE [=] {0 | 1}
| ENCRYPTION [=] {'Y' | 'N'}
| ENGINE [=] engine_name
| ENGINE_ATTRIBUTE [=] 'string'
| INSERT_METHOD [=] { NO | FIRST | LAST }
| KEY_BLOCK_SIZE [=] value
| MAX_ROWS [=] value
| MIN_ROWS [=] value
| PACK_KEYS [=] {0 | 1 | DEFAULT}
| PASSWORD [=] 'string'
| ROW_FORMAT [=] {DEFAULT | DYNAMIC | FIXED | COMPRESSED | REDUNDANT | COMPACT}
| START TRANSACTION
| SECONDARY_ENGINE_ATTRIBUTE [=] 'string'
| STATS_AUTO_RECALC [=] {DEFAULT | 0 | 1}
| STATS_PERSISTENT [=] {DEFAULT | 0 | 1}
| STATS_SAMPLE_PAGES [=] value
| tablespace_option
| UNION [=] (tbl_name[,tbl_name]...)
}

 

 

No voy a explicar cada uno de los campos, pero si lo necesitáis, desde MySQL podéis ejecutar el comando siguiente y ver para que sirve cada uno de ellos:

MariaDB [(none)]> help CREATE TABLE

 

 

 

 

 

5.- TIPOS DE DATOS

En una tabla podemos guardar datos de muchos tipos, numéricos, de fechas, texto, etc, etc ... Ya vimos en otro post los: Tipos de datos en MySQL y Mariadb.

Data types
| BIT[(length)]
| TINYINT[(length)] [UNSIGNED] [ZEROFILL]
| SMALLINT[(length)] [UNSIGNED] [ZEROFILL]
| MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]
| INT[(length)] [UNSIGNED] [ZEROFILL]
| INTEGER[(length)] [UNSIGNED] [ZEROFILL]
| BIGINT[(length)] [UNSIGNED] [ZEROFILL]
| REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]
| DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]
| FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]
| DECIMAL[(length[,decimals])] [UNSIGNED] [ZEROFILL]
| NUMERIC[(length[,decimals])] [UNSIGNED] [ZEROFILL]
| DATE
| TIME
| TIMESTAMP
| DATETIME
| YEAR
| CHAR[(length)] [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name]
| VARCHAR(length) [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name]
| BINARY[(length)]
| VARBINARY(length)
| TINYBLOB
| BLOB
| MEDIUMBLOB
| LONGBLOB
| TINYTEXT [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name]
| TEXT [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name]
| MEDIUMTEXT [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name]
| LONGTEXT [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name]
| ENUM(value1,value2,value3,...) [CHARACTER SET charset_name] [COLLATE collation_name]
| SET(value1,value2,value3,...) [CHARACTER SET charset_name] [COLLATE collation_name]
| spatial_type
| JSON

 

 

6.- EJEMPLO REAL DE CREACIÓN DE UNA TABLA

A continuación, vamos a crear una tabla sencilla en MySQL/MariaDB, desde comandos. Crearemos una tabla llamada coches, dentro de la base de datos llamada db1 y utilizando diferentes tipos de datos. Recordad usar IF NOT EXISTS si no queréis recibir un error si una tabla con el mismo nombre existe. En este ejemplo no lo utilizaremos ya que es un entorno de pruebas y además, sabemos que la tabla coches no existe. Para ello ejecutaremos:

MariaDB [(none)]> CREATE TABLE `db1`.`coches` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT 'Clave primaria',
`matricula` VARCHAR(8) NOT NULL,
`marca` VARCHAR(16) NOT NULL,
`modelo` VARCHAR(32) NOT NULL,
`fecha_matriculacion` DATE NOT NULL,
`kilometros` INT(8) NOT NULL,
`combustible` VARCHAR(45) NOT NULL COMMENT 'Combustible, diesel,gasolina o eléctrico',
`reservado` TINYINT NOT NULL,
PRIMARY KEY (`id`));

 

 

Crear tablas en MySQL/MariaDBCrear tabla MySQL/MariaDB

 

 

Una vez creada la tabla, podremos visualizar sus características ejecutando el comando siguiente para verificar que todo está correcto:

MariaDB [(none)]> DESCRIBE `db1`.`coches`;
+---------------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| matricula | varchar(8) | NO | | NULL | |
| marca | varchar(16) | NO | | NULL | |
| modelo | varchar(32) | NO | | NULL | |
| fecha_matriculacion | date | NO | | NULL | |
| kilometros | int(8) | NO | | NULL | |
| combustible | varchar(45) | NO | | NULL | |
| reservado | tinyint(4) | NO | | NULL | |
+---------------------+-------------+------+-----+---------+----------------+
8 rows in set (0,000 sec)

 

 

Crear tablas en MySQL/MariaDBEstructura de la tabla en MySQL/MariaDB

 

 

Para cualquier otra cosa, siempre podréis leer desde la línea de comandos como se crean las tablas y todas sus opciones con el comando:

MariaDB [(none)]> help CREATE TABLE

 

 

ENJOY!