Las restricciones se pueden especificar cuando la tabla se crea con el CREATE TABLE declaración, o después de que se crea la tabla con el ALTER TABLE declaración.
CREATE TABLE table_name ( column1 datatype constraint, column2 datatype constraint, column3 datatype constraint, .... );
Las restricciones de SQL se utilizan para especificar reglas para los datos de una tabla.
Las restricciones se utilizan para limitar el tipo de datos que pueden incluirse en una tabla.
Las restricciones pueden ser de nivel de columna o de tabla.
Las siguientes restricciones se usan comúnmente en SQL:
...Tipo | Descripcion |
---|---|
NOT NULL | Asegura que una columna no puede tener un valor NULL |
UNIQUE | Asegura que todos los valores en una columna sean diferente |
PRIMARY KEY | Una combinación de un NOT NULLy UNIQUE. Identifica de forma única cada fila en una tabla |
FOREYGN KEY | Previene acciones que destruirían enlaces entre tablas |
CHECK | Asegura que los valores en una columna satisfacen una condición específica |
DEFAULT | Establece un valor predeterminado para una columna si no hay valor está especificado |
CREATE INDEX | Se utiliza para crear y recuperar datos de la base de datos. muy rápidamente |
NOT NULL
De forma predeterminada, una columna puede contener valores NULL.
Si ponemos NOT NULL a columna es obligatoria que no contenga valores nulos
Ejemplo de NOT NULL
CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255) NOT NULL, Age int );
UNIQUE
La restricción UNIQUE asegura que todos los valores en una columna sean diferentes.
Las restinciones UNIQUE y PRIMARY KEY proporcionan una garantía de unicidad para una columna o conjunto de columnas.
PRIMARY KEY tiene automaticamente una restrincion UNIQUE
Las tablas pueden tener la restrincion UNIQUE muchas veces
PRIMARY KEY cada tabla solo puede tener una restincion
Ejemplo de UNIQUE
CREATE TABLE Persons ( ID int NOT NULL UNIQUE, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int );
mysql:
CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int, UNIQUE (ID) );
Para usar la restrincion UNIQUE en varias columnas
CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int, CONSTRAINT UC_Person UNIQUE (ID,LastName) );
DROP una restricción ÚNICA
Para eliminar una restrincion UNIQUE utilize el seguinte codigo
Mysql
ALTER TABLE Persons DROP INDEX UC_Person;
Servidor SQL/Oracle/MS Access:
ALTER TABLE Persons DROP CONSTRAINT UC_Person;
Restrincion PRIMARY KEY
Las restrinciones PRIMARY KEY identifican de forma unica cada registro de una tabla
Las restrinciones PRIMARY KEY no pueden ser nulas
Las restrinciones PRIMARY KEY solo puede haber una por cada tabla
mysql:
CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int, PRIMARY KEY (ID) );
Servidor SQL/Oracle/MS Access:
CREATE TABLE Persons ( ID int NOT NULL PRIMARY KEY, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int );
para defenir PRIMARY KEY en varias columas use el seguinte codigo
MySQL/SQL Server/Oracle/MS Access:
CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int, CONSTRAINT PK_Person PRIMARY KEY (ID,LastName) );
NOTA: En el ejemplo anterior solo hay UNO PRIMARY KEY(PK_Persona). Sin embargo, el VALOR de la clave primaria se compone de DOS COLUMNAS (ID + Apellido).
PRIMARY KEY (Alter table)
Para Crear un Primary Key cuando la tabla ya esta creada use el seguiente codigo
ALTER TABLE Persons ADD PRIMARY KEY (ID);
para permitir el nombramiento de PRIMARY key y defenir PRIMARY KEY en varias columnas use el seguiente codigo:
ALTER TABLE Persons ADD CONSTRAINT PK_Person PRIMARY KEY (ID,LastName);
NOTA Si se usa alter table para poner una llave primaria, las columnas onde se va a inplantar la llave deben estar declaradas como NOT NULL
DROP PRIMARY KEY
Para se eliminar una llave primaria utilize el seguiente codigo
mysql:
ALTER TABLE Persons DROP PRIMARY KEY;
Servidor SQL/Oracle/MS Access:
ALTER TABLE Persons DROP CONSTRAINT PK_Person;
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias