Una restricción de clave principal representa una clave que comprende una o más columnas que ayudarán a identificar de manera única cada tupla/registro en una tabla.
Propiedades :
- No se permiten valores duplicados, es decir, la columna asignada como clave principal debe tener valores ÚNICOS únicamente.
- NO hay valores NULL presentes en la columna con clave principal. Por lo tanto, hay un valor obligatorio en la columna que tiene la clave principal.
- Solo existe una clave principal por tabla, aunque la clave principal puede tener varias columnas.
- No se puede insertar una nueva fila con la clave principal ya existente.
- Clasificado como: a) Clave principal simple que tiene una sola columna 2) Clave principal compuesta que tiene una columna múltiple.
- Definido en la instrucción Crear tabla/Alterar tabla.
La clave principal se puede crear en una tabla utilizando la restricción PRIMARY KEY. Se puede crear en dos niveles.
- Columna
- Mesa.
CLAVE PRIMARIA SQL a nivel de columna:
si la clave principal contiene solo una columna, debe definirse a nivel de columna. El siguiente código crea la clave principal «ID» en la tabla de personas.
Sintaxis:
Create Table Person ( Id int NOT NULL PRIMARY KEY, Name varchar2(20), Address varchar2(50) );
Aquí se agrega NOT NULL para asegurarse de que ID debe tener valores únicos. SQL establecerá automáticamente valores nulos para la clave principal si no se especifica.
Ejemplo-1:
Para verificar el funcionamiento de la clave principal:
Insert into Person values(1, 'Ajay', 'Mumbai');
Producción :
1 row created
Ejemplo-2:
Veamos si vuelve a insertar los mismos valores.
Insert into Person values(1, 'Ajay', 'Mumbai');
Producción :
Error at line 1: unique constraint violated
Dado que estamos insertando valores duplicados, se generará un error ya que la clave principal «Id» solo puede contener valores únicos.
Ejemplo-3:
Insert into Person values('', 'Ajay', 'Mumbai');
Producción :
Error at line 1: cannot insert Null into<"user"."Person"."ID">
La clave principal no puede contener valores nulos, por lo que también arrojará un error.
SQL PRIMARY KEY a nivel de tabla:
siempre que la clave principal contenga varias columnas, debe especificarse a nivel de tabla.
Sintaxis:
Create Table Person (Id int NOT NULL, Name varchar2(20), Address varchar2(50), PRIMARY KEY(Id, Name) );
Aquí, solo tiene una clave principal en una tabla, pero consta de varias columnas (Id, nombre). Sin embargo, lo siguiente está permitido.
Insert into Person values(1, 'Ajay', 'Mumbai'); Insert into Person values(2, 'Ajay', 'Mumbai');
Dado que varias columnas forman la clave principal, ambas filas se consideran diferentes. SQL permite que cualquiera de los dos valores se pueda duplicar, pero la combinación debe ser única.
SQL PRIMARY KEY con ALTER TABLE:
la mayoría de las veces, la clave principal se define durante la creación de la tabla, pero a veces es posible que la clave principal no se cree en la tabla ya existente. Sin embargo, podemos agregar la clave principal usando Alter Statement.
Sintaxis:
Alter Table Person add Primary Key(Id);
Para agregar la clave principal en varias columnas mediante la siguiente consulta.
Alter Table Person add Primary Key(Id, Name);
Es necesario que la columna agregada como clave principal DEBE contener valores únicos o, de lo contrario, se violará. Una identificación no puede convertirse en clave principal si contiene valores duplicados. Viola la regla básica de la clave principal. Alterar la tabla para agregar Id como clave principal que puede contener valores duplicados genera un error.
Producción :
Error at line 1: cannot validate- primary key violated
Además, una columna agregada como clave principal mediante la declaración de modificación no debe tener valores nulos. Alterar la tabla para agregar Id como clave principal que puede contener valores nulos genera un error.
Producción :
Error at line 1: column contains NULL values; cannot alter to NOT NULL
ELIMINAR RESTRICCIÓN DE CLAVE PRINCIPAL:
para eliminar la restricción de clave principal en la tabla, use el SQL dado de la siguiente manera.
ALTER table Person DROP PRIMARY KEY;
Publicación traducida automáticamente
Artículo escrito por dhatriganda07 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA