En este post te mostraré un ejemplo de cómo agregar una columna a una tabla y además convertir esa columna en una llave o clave foránea. Es decir, primero la agregamos y después la convertimos en llave.

Agregar columna

Para agregar una columna en MySQL hacemos:

ALTER TABLE tabla ADD COLUMN columna DEFINICIÓN;

En mi caso tengo una tabla de materias y la relacionaré con la tabla cursos, así que es:

alter table materias add column id_curso bigint unsigned;

Con eso hemos agregado la columna pero no la clave. Es importante notar que mi columna se llama id_curso.

Crear clave foránea

Ahora que tenemos la columna vamos a crear una restricción o constraint con:

ALTER TABLE tabla ADD CONSTRAINT nombre_constraint FOREIGN KEY(columna_creada_anteriormente) REFERENCES tabla(columna);

En mi caso tengo la columna llamada id_curso y la relacionaré con la columna id de la tabla cursos así que queda de la siguiente manera:

ALTER TABLE materias
ADD CONSTRAINT FK_materias_cursos 
FOREIGN KEY(id_curso)
REFERENCES cursos(id);

Finalmente al mostrar la estructura de la tabla vemos que es correcto y que en la columna Key tiene MUL.

describe materias;
+------------+---------------------+------+-----+---------+----------------+
| Field      | Type                | Null | Key | Default | Extra          |
+------------+---------------------+------+-----+---------+----------------+
| id         | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
| nombre     | text                | NO   |     | NULL    |                |
| created_at | timestamp           | YES  |     | NULL    |                |
| updated_at | timestamp           | YES  |     | NULL    |                |
| id_curso   | bigint(20) unsigned | YES  | MUL | NULL    |                |
+------------+---------------------+------+-----+---------+----------------+
Si el post ha sido de tu agrado te invito a que me sigas para saber cuando haya escrito un nuevo post, haya actualizado algún sistema o publicado un nuevo software. Facebook | X | Instagram | Telegram | También estoy a tus órdenes para cualquier contratación en mi página de contacto