Agregar la clave principal a una tabla MySQL

Mehvish Ashiq 20 junio 2023
  1. Agregar la clave principal a una tabla MySQL
  2. Use CREAR TABLA para agregar clave principal en MySQL
  3. Use ALTER TABLE para agregar clave principal en MySQL
Agregar la clave principal a una tabla MySQL

Este artículo presenta cómo agregar la clave principal a una tabla MySQL usando las instrucciones CREATE TABLE y ALTER TABLE.

Agregar la clave principal a una tabla MySQL

Es importante mantener las siguientes reglas antes de agregar la clave principal.

  1. Los valores del campo de clave principal deben ser únicos.
  2. La columna utilizada para crear una clave principal no puede estar vacía o NULL.
  3. MySQL Server no inserta un nuevo registro con una clave principal ya existente.
  4. Solo se permite una clave principal en una tabla.

Podemos crear una clave primaria usando la declaración CREATE TABLE o la declaración ALTER TABLE. Veamos ambos a continuación.

Use CREAR TABLA para agregar clave principal en MySQL

Por lo general, creamos la clave principal al crear una tabla. Se prefiere el siguiente enfoque si la clave principal tiene una sola columna.

Usamos la restricción de clave principal como la restricción de campo (columna).

Código de ejemplo:

CREATE TABLE students(
	ID INT NOT NULL PRIMARY KEY,
    STUDENT_NAME VARCHAR(50) NOT NULL
);

Usamos la siguiente declaración para asegurarnos de que se crea la clave principal.

DESCRIBE students;
# Alternatively, we can write as given below
DESC students;

Producción :

+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| ID           | int         | NO   | PRI | NULL    |       |
| STUDENT_NAME | varchar(50) | NO   |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
2 rows in set (0.04 sec)

En el resultado anterior, el PRI debajo de la columna Clave muestra que el valor respectivo en la columna Campo se usa para crear una clave principal.

Supongamos que queremos crear una clave principal utilizando varias columnas. Entonces, podemos hacer eso como se indica a continuación.

Código de ejemplo:

CREATE TABLE courses(
	COURSE_ID INT NOT NULL,
    STUDENT_ID INT NOT NULL,
    COURSE_NAME VARCHAR(50) NOT NULL,
    CONSTRAINT PK_STUDENT_COURSE
   	PRIMARY KEY (COURSE_ID,STUDENT_ID)
);

Use la declaración DESCRIBE para verificar si se crea la clave principal.

DESCRIBE courses

Producción :

+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| COURSE_ID   | int         | NO   | PRI | NULL    |       |
| STUDENT_ID  | int         | NO   | PRI | NULL    |       |
| COURSE_NAME | varchar(50) | NO   |     | NULL    |       |
+-------------+-------------+------+-----+---------+-------+
3 rows in set (0.43 sec)

Vemos dos valores PRI en la columna Clave, lo que significa que COURSE_ID y STUDENT_ID se utilizan como clave principal.

Recuerde, debemos usar una restricción de clave primaria como una restricción de tabla (relación) cuando se trata de varias columnas separadas por comas (,), pero también se puede hacer con una sola columna. Consulte la siguiente consulta.

Código de ejemplo:

CREATE TABLE students(
	ID INT NOT NULL,
    STUDENT_NAME VARCHAR(50) NOT NULL,
    PRIMARY KEY(ID)
);

Tenga en cuenta que la clave principal tiene solo una columna, pero usamos la restricción de clave principal como una restricción de tabla. Puede encontrar la diferencia entre las restricciones de nivel de tabla y de nivel de columna aquí.

Use ALTER TABLE para agregar clave principal en MySQL

Después de crear una tabla, nos damos cuenta de que una columna en particular dentro de una tabla debe ser una clave principal para evitar la redundancia. En ese caso, usamos la instrucción ALTER TABLE.

Cuando una tabla no contiene una clave principal, esta declaración nos permite modificar y crear una clave principal para las columnas de una tabla existente. Supongamos que tenemos una tabla persona con ID y FULLNAME como columnas.

Código de ejemplo:

# Create a table without a primary key
CREATE TABLE person(
	ID INT NOT NULL,
    FULLNAME VARCHAR(50) NOT NULL
);

# Describe `person` table
DESCRIBE person;

Producción :

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| ID       | int         | NO   |     | NULL    |       |
| FULLNAME | varchar(50) | NO   |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
2 rows in set (0.07 sec)

Mira, no tenemos ninguna clave principal en la salida anterior. Ahora, podemos usar la declaración ALTER TABLE como se indica a continuación para crear una clave principal en la columna deseada.

Código de ejemplo:

ALTER TABLE person ADD PRIMARY KEY(ID);

Recuerde, el campo utilizado para crear una clave principal debe tener valores únicos y no contener NULL o vacío. Ahora, use la instrucción DESCRIBE para asegurarse de que se haya creado correctamente una clave principal.

Código de ejemplo:

DESCRIBE person;

Producción :

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| ID       | int         | NO   | PRI | NULL    |       |
| FULLNAME | varchar(50) | NO   |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
2 rows in set (0.07 sec)
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Artículo relacionado - MySQL Key