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 | |
+------------+---------------------+------+-----+---------+----------------+