7 SQL Constraints
7 SQL Constraints
Constraints
Las CONSTRINTS o RESTRICCIONES se utilizan en SQL para especificar ciertas
condiciones o reglas que deben cumplir los datos de las tablas.
Si alguna de estas reglas especificadas no se cumple, la constraint aborta la acción
Las constraints se pueden especificar al crear la tabla, dentro de la instrucción
CREATE o posteriormente utilizando la instrucción ALTER. Asimismo, en la instrucción
ALTER se pueden definir de dos formas, dándole nombre a la constraint o sin
especificar nombre
La constraint podrá ser revocada por medio de la instrucción ALTER con DROP.
Por tanto para cada constraint tendremos que aprender:
Definirla en la CREATE (con o sin nombre)
Crearla posteriormente con ALTER (con o sin nombre)
Borrar Constraints con nombre
Constraints
En SQL tenemos las siguientes Constraints:
NOT NULL: Indica que una columna no puede guardar el valor NULL (ausencia de
dato)
UNIQUE: Asegura que cada fila tiene un valor distinto de esta columna
PRIMARY KEY: Especifica que una o varias columnas forman la clave primaria de
la tabla
FOREIGN KEY: Especifica que una o varias columnas forman clave ajena que
relaciona su valor con otra tabla. Asegura la integridad referencial.
CHECK: Asegura que los valores de la columna cumple una condición específica
DEFAULT: Especifica el valor por defecto que tomará la columna cuando no se
especifica ninguno.
3
Constraint: NOT NULL
Posteriormente en ALTER:
ALTER TABLE Personas
ALTER column Nombre nvarchar(30) NOT NULL
4
Constraint: UNIQUE
La restricción UNIQUE hace que el campo definido con ella sea un identificador de
la fila.
Esta propiedad la cumplen los campos definidos con UNIQUE y con PRIMARY KEY
Al definir PRIMARY KEY se tiene por defecto la restricción UNIQUE.
Podemos definir tantos campos como quereamos con la restricción UNIQUE pero
solo uno con PRIMARY KEY
Definición:
En CREATE:
CREATE TABLE Personas CREATE TABLE Personas
( Codigo int NOT NULL, ( Codigo int NOT NULL,
Nombre nvarchar(30) , Nombre nvarchar(30) ,
Apellidos nvarchar(30) UNIQUE) Apellidos nvarchar(30) ,
UNIQUE (Nombre, Apellidos))
Posteriormente en ALTER:
ALTER TABLE Personas ALTER TABLE Personas
ADD UNIQUE (Codigo) ADD CONSTRAINT uc_PersonaID UNIQUE (Codigo)
5
Constraint: PRIMARY KEY
6
Constraint: FOREIGN KEY
La restricción FOREIGN KEY definida sobre un o varios campos de una tabla hace
que sus valores deban coincidir con los valores de la clave primaria de otra tabla
Definición:
En CREATE:
CREATE TABLE Personas CREATE TABLE Departamentos
( Codigo int PRIMARY KEY, ( Codigo int,
Nombre nvarchar(30) , Descrip nvarchar(30)
Apellidos nvarchar(30) CONSTRAINT pk_Dtos PRIMARY KEY (Codigo))
Departamento int FOREIGN KEY REFERENCES Departamentos)
Posteriormente en ALTER:
ALTER TABLE Personas ALTER TABLE Personas
ADD FOREIGN KEY (Departamento) ADD CONSTRAINT fk_perDto FOREIGN KEY (Departamento)
REFERENCES Departamentos REFERENCES Departamentos
7
Constraint: FOREIGN KEY- INTEGRIDAD
8
Constraint: FOREIGN KEY- INTEGRIDAD
9
Constraint: CHECK
La restricción CHECK limita los valores que pueden tomar las columnas de una tabla
Si se especifica sobre una columna limitará los valores de esa columna. Si se
especifica sobre una tabla limitará los valores de una columna basándose en los
valores de otra
Definición:
En CREATE:
CREATE TABLE Personas CREATE TABLE Curso
( Codigo int PRIMARY KEY CHECK (Codigo>0), ( Codigo int PRIMARY KEY,
Nombre nvarchar(30) , FechaInicio date,
Apellidos nvarchar(30)) FechaFin date,
CHECK (FechaInicio<FechaFin))
Posteriormente en ALTER:
ALTER TABLE Personas ALTER TABLE Personas
ADD CHECK(Codigo>0) ADD CONSTRAINT ck_cursos CHECK (FechaInicio<FechaFin)
10
Constraint: DEFAULT
Posteriormente en ALTER:
ALTER TABLE Cursos
ADD DEFAULT Getdate() for FechaInicio
ALTER TABLE Personas
ADD CONSTRAINT dk_cursos DEFAULT GetDate() for FechaInicio
11
DROP CONSTRAINT
Para borrar cualquier restricción que hayamos creado con nombre, utilizaremos la
siguiente variante del la instrucción ALTER:
12