Restricción Primary key SQL

 Restricción Primary key SQL



A medida que nos introducimos en el mundo de las base de datos, debemos ir aprendiendo algunas sentencias, operaciones e instrucciones muy útiles e importantes en la estructuración de nuestras tablas. Este articulo lo he enfocado para hablas sobre la Restricción Primary Key muy útil al momento de crear una tabla dentro de una base de datos. Aprenderemos la importancia de la Restricción Primary key y como créala mas cuando hablamos de tablas relacionales.


Índice Contenido

Que es la Restriccion Primary Key


Que es la Restriccion Primary Key

La Restricción Primary Key(Llave Primaria) Define una columna o grupos de columnas como únicas, es decir los registros contenidos en estas columnas son exclusivos.

La columna definida como llave primaria no puede permitir valores Nulos por ende los registros almacenados en dicha columna serán exclusivos y no se podrán editar.

Dentro de una tabla que contenga muchas columnas la lleva primaria debe ser única por lo cual no es permitido que hayan mas de dos llaves primarias en dicha tabla. Por el contrario la llave primaria puede constar de varias columnas.

Para crear una llave primaria debemos hacer uso de la instrucción PRIMARY KEY, si deseamos nombrar la llave primaria debemos anteceder la instrucción CONSTRAINT para nombrar dicha llave primaria.

Sintaxis

PRIMARY KEY(NOMBRE_COLUMNA)
CONSTRAINT PK_NOMBRE_RESTRICCION PRIMARY KEY(NOMBRE_COLUMNA)



Agregar la Restriccion Primary key a una tabla nueva

Visto la sintaxis para crear una llave primaria vamos a crear dos tablas. La primera tabla la nombraremos "Alumnos" y la segunda tabla la nombraremos como "Notas", en la primer tabla vamos a almacenar información de un alumnos como por ejemplo su nombre, apellidos, edad, etc., y en la otra tabla vamos a guardar registros de notas obtenidas por un alumno.

CREATE TABLE Alumnos(
ALUMNOID INT NOT NULL,
NOMBRE VARCHAR(100) NULL,
APELLIDOS VARCHAR(100) NULL,
EDAD INT NULL,
PRIMARY KEY(ALUMNOID),
);
GO

CREATE TABLE Notas(
NOTAID INT IDENTITY NOT NULL,
ALUMNOID INT  NULL,
MATERIA VARCHAR(80) NULL,
NOTA INT NOT NULL,
CONSTRAINT PK_NOTAS PRIMARY KEY(NOTAID),
);
GO

La primera tabla que hemos creado se almacenara toda la información de un alumnos, ahora bien en dicha tabla el campo "ALUMNOID" lo hemos definido como su llave primaria por lo cual en esta columna todo los registros almacenados serán únicos y no podremos editarlos además que no permitirá valores nulos.

La segunda tabla en la cual almacenaremos los registros de notas de un alumnos, su llave primaria es la columna "NOTAID" y en esta columnas de igual forma los registros guardados serán únicos y no podremos modificarlos aparte de eso que hemos definido la columna como IDENTITY lo que nos indica que el registro se autoincrementara solo.

Ahora vamos a crear las tablas en SQL Server Management Studio y vamos a realizar algunas ejemplo de inserción y modificación de registros en cada tabla creada.


Hasta em momento hemos visto como crear una tabla y su llave primaria atraves de Transact-Sql, pero también podemos hacerlo mediante el diseñador que trae Management Studio veamos como hacer, para ello vamos a crear un tercer tabla llamada "MATERIAS".

Lo primero que haremos es irnos al explorador de objetos, buscar nuestra base de datos desplegarnos ala opción tablas y damos clic derecho nueva tabla.



A continuación definimos las columnas para nuestra tabla.


Definida las columnas de nuestra nueva tabla ahora sobre la columna materia damo clic derecho y nos aparecerá la opción Set Primary Key, damos clic para asignar la columna "MATERIAID" como la llave primaria.


Luego de haber dado clic en la opción Set Primary Key, observamos la estructura de la tabla y ala par de la columna MATERIAID aparece un símbolo de una llave lo que significa que es la llave primaria de la tabla. Por ultimo cerramos la ventana donde creamos la tabla nos preguntara si deseamos guardar la tabla y damos clic en si y asignamos el nombre a nuestra tabla "MATERIAS".

 

Ahora vamos a realizar unos ejemplos insertando y actualizando registros en las tablas creadas.




Como hemos visto se realizo la inserción de  registros en las tres tablas sin obtener ningún error. Ahora bien que pasaría si insertamos registros erróneos en la tabla alumnos y la tabla notas. Vamos a suponer que en la tabla alumnos volvemos a tratar de insertar un codigo ya existente en dicha tabla, como mencionábamos al inicio del articulo los registros en las tabla definidos como llave primaria son registros únicos por ende al tratar de guardar el mismo codigo de alumno no va a enviar el siguiente error.



El error mostrado en pantalla nos dice que no se puede insertar una clave duplicada y se termina la instrucción.

Ahora veamos que pasa en la tabla "Notas" al tratar de insertar registros en ella.


Al tratar  de insertar un nuevo registro de nota, la sentencia Insert Into no se ejecuta y nos envía un  mensaje diciendo que no se puede insertar un valor explicito. Esto es porque a la sentencia Insert le hemos agregado la columna "NOTAID" la cual al momento de crear la tabla la hemos definido como autoincremental es decir que el codigo se generara de forma automática.

Ahora que sucede si tratamos de actualizar la llave primaria de la tabla Alumnos, veamos el ejemplo. 

Al tratar de actualizar el registro de la llave primaria la sentencia UPDATE  no se ejecutara y la instrucción finalizar, ya que la llave primaria de una tabla no puede ser modificado.




Agregar la Restriccion Primary Key a una tabla existente

Para agregarle una llave primaria a una tabla ya existente tenemos que hacer uso de la instrucción ALTER TABLE.

Sintaxis

ALTER TABLE NOMBRE_TABLA ADD PRIMARY KEY(NOMBRE_COLUMNA)
ALTER TABLE NOMBRE_TABLA ADD CONSTRAINT NOMBRE_RESTRICCION PRIMARY KEY(NOMBRE_COLUMNA)

A continuación vamos a crear una tabla llamada "Promedios" y posteriormente vamos asignarle la llave primaria.

CREATE TABLE PROMEDIOS(
ID INT IDENTITY NOT NULL,
ALUMNOID INT NOT NULL,
PROMEDIO1 DECIMAL(11,2) NULL,
PROMEDIO2 DECIMAL(11,2) NULL,
);
GO

Ahora vamos a crearle la llave primaria.

ALTER TABLE PROMEDIOS ADD PRIMARY KEY(ID)
ALTER TABLE PROMEDIOS ADD CONSTRAINT PK_PROMEDIOS PRIMARY KEY(ID)

Para agregar la llave primaria podemos hacerlo de la forma simple o asignándole un nombre mediante la instrucción Constraint.

Ahora vayamos a Sql Server Management Studio y creemos la tabla y posteriormente agreguemos la llave primaria.


Después de haber creado la tabla promedios procedamos a crear también su llave primaria.


En el caso de que la llave primaria sea mas de una columna la porción de codigo seria se la siguiente manera.

ALTER TABLE PROMEDIOS ADD CONSTRAINT PK_PROMEDIOS PRIMARY KEY(ID,ALUMNOID) 

Lo que le estamos indicando entre los paréntesis que mi llave primaria son las columna "ID" y "ALUMNOID".



Eliminar una Restriccion Primary Key

Para eliminar una restricción Primary Key podemos hacerlo de 2 maneras la primera mediante Transact-SQL utilizando la instrucción DROP, y la segunda forma de hacerlo es atraves del asistente del Sql Server Management Studio.

Mediante Transact-Sql la sintaxis es la siguiente:

ALTER TABLE NOMBRE_TABLA DROP PRIMARY KEY

Para el caso nuestro vamos a suponer que eliminamos la llave primaria de la tabla Alumnos la consulta seria la siguiente:

ALTER TABLE Alumnos DROP PRIMARY KEY(PK__Alumnos__8AF91F695D8BC84F)

En el caso de no haber usado la instrucción CONSTRAINT para nombrar la llave primaria debemos buscar el nombre que se le asigno por defecto ala restricción para eso podemos hacer uso del siguiente comando.

exec sp_helpconstraint NOMBRE_TABLA 

Lo que hace este comando al ejecutarlo es mostrarnos la información del nombre de la tabla y de las restricciones que la tabla contiene.


Al ejecutar el comando podemos ver el nombre de la columna y también el nombre de la restricción de llave primaria.

Ahora que sabemos el nombre de la tabla ejecutémoslo en Sql Server Management Studio.


Si volvemos a ejecutar el comando para saber el nombre de restricción vamos a observar que solamente nos aparece el nombre de la tabla, esto porque hemos eliminado la llave primaria.



Ahora para eliminar una llave primaria mediante el asistente de Sql Server Management Studio debemos irnos al explotador de objetos, buscamos nuestra base de datos y nos desplegamos hacia la opción tablas. Para el ejemplo vamos a quitar la llave primaria ala tabla "PROMEDIO".




A continuación hacemos clic derecho sobre el nombre de la tabla y seleccionamos la opción Desing.

Se nos va a cargar la pantalla de diseño de la tabla "PROMEDIO".


Nos colocamos sobre la columna ID y damos clic derecho nos van 

aparecer varias opciones, haremos clic en la primera opción que dice Remove Primary Key.


Al dar clic sobre la opción Remove Primary Key eliminamos la llave primaria de la tabla, guardamos los cambios y ya no aparecerá el símbolo de una llave ala par de la columna.


La columna "ID" ha dejado se ser llave primaria de la tabla PROMEDIOS.

En este articulo hemos aprendido como usar la Restricción Primary key. es importante saber definirla en nuestra tablas mas cuando trabajábamos con tablas relacionales donde involucramos otra restricción como es la Foreign Key(Llave Secundaria).


Publicar un comentario

0 Comentarios