Listado completo de tutoriales

11 - Clave primaria.


Ver video

Una clave primaria es un campo (o varios) que identifica 1 solo registro (fila) en una tabla.

Para un valor del campo clave existe solamente 1 registro. Los valores no se repiten ni pueden ser nulos.

Veamos un ejemplo, si tenemos una tabla con datos de personas, el número de documento puede establecerse como clave primaria, es un valor que no se repite; puede haber personas con igual apellido y nombre, incluso el mismo domicilio (padre e hijo por ejemplo), pero su documento será siempre distinto.

Si tenemos la tabla "usuarios", el nombre de cada usuario puede establecerse como clave primaria, es un valor que no se repite; puede haber usuarios con igual clave, pero su nombre de usuario será siempre distinto.

Establecemos que un campo sea clave primaria al momento de creación de la tabla:

 create table usuarios (
  nombre varchar(20),
  clave varchar(10),
  primary key(nombre)
 );

Para definir un campo como clave primaria agregamos "primary key" luego de la definición de todos los campos y entre paréntesis colocamos el nombre del campo que queremos como clave.

Si visualizamos la estructura de la tabla con "describe" vemos que el campo "nombre" es clave primaria y no acepta valores nulos(más adelante explicaremos esto detalladamente).

Ingresamos algunos registros:

 insert into usuarios (nombre, clave)
  values ('Leonardo','payaso'); 
 insert into usuarios (nombre, clave)
  values ('MarioPerez','Marito');
 insert into usuarios (nombre, clave)
  values ('Marcelo','River');
 insert into usuarios (nombre, clave)
  values ('Gustavo','River');

Si intentamos ingresar un valor para el campo clave que ya existe, aparece un mensaje de error indicando que el registro no se cargó pues el dato clave existe. Esto sucede porque los campos definidos como clave primaria no pueden repetirse.

Ingresamos un registro con un nombre de usuario repetido, por ejemplo:

 insert into usuarios (nombre, clave)
  values ('Gustavo','Boca');

Una tabla sólo puede tener una clave primaria. Cualquier campo (de cualquier tipo) puede ser clave primaria, debe cumplir como requisito, que sus valores no se repitan.

Al establecer una clave primaria estamos indexando la tabla, es decir, creando un índice para dicha tabla; a este tema lo veremos más adelante.

Servidor de MySQL instalado en forma local.

Si tenemos el MySQL instalado en nuestro equipo probemos ejecutar el siguiente conjunto de comandos SQL para la creación de una clave primaria en una tabla. Ingresemos a "Workbench":

drop table if exists usuarios;

create table usuarios (
  nombre varchar(20),
  clave varchar(10),
  primary key (nombre)
 );

describe usuarios;

insert into usuarios (nombre, clave) values ('Leonardo','payaso');
insert into usuarios (nombre, clave) values ('MarioPerez','Marito');
insert into usuarios (nombre, clave) values ('Marcelo','River');
insert into usuarios (nombre, clave) values ('Gustavo','River');

insert into usuarios (nombre, clave) values ('Gustavo','Boca');

El resultado es:

MySQL clave primaria primary key

Acotaciones

Vimos que MySQL 8 trae por defecto la variable 'SQL_SAFE_UPDATES' activa (con valor 1), luego significa que no podemos ejecutar comandos delete sin el where o con el where pero disponiendo condiciones respecto a campos que no son clave primaria.

No importa el valor de la variable 'SQL_SAFE_UPDATES' para que se pueda efectuar el borrado de una fila por la clave primaria (recordemos que dicho delete es muy acotado y solo se eliminará una sola fila):

MySQL clave primaria primary key SQL_SAFE_UPDATES con valor 1

Recordemos que activar la variable SQL_SAFE_UPDATES es una medida de seguridad para evitar la ejecución de comandos 'delete' masivos, queda en nosotros como administradores de la base de datos en tenerlo activo o desactivo.

Retornar