Está en la página 1de 5

INTEGRIDAD

La Integridad en SQL es la característica que la herramienta proporciona para


que el usuario mantenga siempre su Base de Datos integra, protegida con la
calidad y seguridad debida. La Integridad la conforman la Propiedad Identity,
las Restricciones y el buen uso de las sentencias del Transact SQL.

CREACION DE UNA TABLA (Formato Completo)

Contiene opcionalmente propiedad IDENTITY, Restricciones y otras


declaraciones de administración.
CREATE TABLE [[base de datos.] propietario.] nombre_tabla
(nombre_columna tipodatos [not null | null] [[ IDENTITY ]
[(semilla, incremento)]] [CONSTRAINT ….] [,nombre_columna ] …)
[ON nombre_segmento]

La visualización de la creación de la tabla es con sp_help nombre_tabla

PROPIEDAD IDENTITY: Es posible especificar tanto un valor inicial (semilla)


que se añadirá automáticamente a la columna para la primera fila, y un valor
(incremento) que añadirá al último valor insertado para la columna. Se puede
omitir la introducción de un valor para la columna definida con esta propiedad.

Ejemplo: CREATE TABLE tabla_identidad


(numero_fila int IDENTITY (1,1), nombre char(15))

INSERT INTO tabla_identidad


(nombre)
VALUES (‘José García’)

INSERT INTO tabla_identidad


(nombre)
VALUES (‘María Pérez’)

INSERT INTO tabla_identidad


(nombre)
VALUES (‘Pedro Pineda’)

SELECT * FROM tabla_identidad

numero_fila nombre
---------------- -----------
1 José García
2 María Pérez
3 Pedro Pineda

16
RESTRICCIONES

Se definen para proporcionar integridad de los datos de una tabla y en


columnas individuales. Las restricciones son:
PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK y DEFAULT

TABLA: Empleados TABLA: Pagos


Nombre Departamento Placa Horas_Trabajadas Costos Pplaca
Bob Smith Ventas 1834 40 10 3211
Fred Sanders Ventas 1051 40 9 6732
Stan Humphries Servicio Técnico 3211 52 10 4411
Fred Stanhope Servicio Técnico 6732 39 11 5522
Sue Sommers Logística 4411 51 10 1997
Lance Finepoint Biblioteca 5522 40 8 9998
Mark Mc Guire Servicio Técnico 1997 55 10 7773
Sally Springer Ventas 9998 49 9 8883
Ludmilla Valencia Software 7773 60 7 8805
Barbara Lint Servicio Técnico 8883 37 11 7779
Jeffrey Vickers Correo 8805
Jim Walter Director de Unidad 7779

RESTRICCIÓN PRIMARY KEY: Asegura que todas las filas de la tabla sean
únicas, impidiendo que se inserten valores duplicados en 1 o más columnas
que define la clave primaria. También impide el uso del null en la columna(s)
donde se define la restricción. Crea además un índice único sobre la
columna(s) definida.

CONSTRAINT nombre_restricción PRIMARY KEY [CLUSTERED/NONCLUSTERED]


(nombre_columna _1 nombre_columna_n..)

CREATE TABLE EMPLEADOS


(Nombre char(20). Departamento varchar(20), placa integer,
Constraint placa_paga1 PRIMARY KEY CLUSTERED (placa))

CLUSTERED: Es el tipo de clave por omisión. El almacenamiento de los datos


de la tabla es en el mismo orden que el almacenamiento de la clave
(ordenado).
NONCLUSTERED: La creación de las claves es por punteros internos del SQL,
la tabla se crea en el mismo orden de ingreso de filas.

RESTRICCIÓN FOREIGN KEY: Asocia una o más columnas de una tabla con
un conjunto idéntico de columna(s) que haya(n) sido definido(s) como
restricción PRIMARY KEY en otra tabla.

CONSTRAINT nombre_restricción FOREIGN KEY (nombre_columna_1)


,nombre_columna_n… REFERENCES nombre_tabla
(nombre_columna_1 [,nombre_columna_n]...)

CREATE TABLE PAGOS (horas_trabajadas integer, costos integer, pplaca


integer, constraint placa_pagos_2 FOREIGN KEY (pplaca) references
EMPLEADOS (placa))

17
RESTRICCIÓN UNIQUE: Aplicado a cualquier columna de la tabla que no sea
PRIMARY ni FOREIGN KEY. Evita que se inserten valores duplicados en la
columna de esta restricción sin ser llave. La omisión es NONCLUSTRED.
Ejem: CREATE TABLE empleados
(nombre char(20), departamento varchar(20), placa integer, constraint
placas_unicas UNIQUE NONCLUSTERED (placa))
ó
CREATE TABLE empleados
(nombre char(20), departamento varchar(20), placa integer UNIQUE
NONCLUSTERED (placa))

RESTRICCIÓN CHECK: Limita los valores que es posible insertar en una ó


más columnas de una tabla. Se usa para intervalos de valores conocidos para
una columna como estado civil, sexo, especialidad etc.

CREATE TABLE Alumnos


(Código char (7), nombre varchar (30), especialidad char (2), constraint
especialidad_valida check (especialidad IN (‘I1’, ‘I2’)))
ó
CREATE TABLE Alumnos
(Código char (7), nombre varchar (30), especialidad char (2) check
(especialidad IN (‘I1’, ‘I2’)))

RESTRICCIÓN DEFAULT: dispone de un valor que se añadirá


automáticamente a una columna de una tabla en el caso que no se le cree
ningún valor con INSERT.
nombre_ columna DEFAULT constante

CREATE TABLE empleados


(nombre char (20), departamento varchar (20), placa integer, constraint
departamento_default DEFAULT ‘Ventas’ for departamento)
ó
CREATE TABLE empleados
(nombre char (20), departamento varchar (20) DEFAULT ‘VENTAS’, placa
integer)

INSTRUCCIÓN ALTER TABLE FORMATO COMPLETO:

ALTER TABLE nombre-tabla


ADD nombre-columna propiedades-columna
| DROP COLUMN nombre-columna
| ALTER COLUMN nombre-columna nuevas-propiedades-columna
| ADD CONSTRAINT nombre-restriccion
PRIMARY KEY … | UNIQUE … | FOREIGN KEY …
| DEFAULT … | CHECK …
| DROP CONSTRAINT nombre-restriccion

18
SENTENCIAS CREATE TABLE CON RESTRICCIONES DE LA BASE DE
DATOS EJEMPLO

CREATE TABLE OFICINAS


(OFICINA integer primary key,
CIUDAD varchar(30) not null,
REGION varchar (30) not null,
DIR integer not null,
OBJETIVO money not null,
VENTAS money not null);

CREATE TABLE REPVENTAS


(NUM_EMPL integer primary key,
NOMBRE varchar (30) not null,
Edad integer not null,
OFICINA_REP integer foreign key references oficinas(oficina),
TITULO varchar (30) not null,
CONTRATO datetime not null,
DIRECTOR integer,
CUOTA money,
VENTAS money not null);

CREATE TABLE CLIENTES


(NUM_CLIE INTEGER primary key,
EMPRESA VARCHAR (50)not null,
REP_CLIE INTEGER foreign key references repventas(num_empl),
LIMITE_CREDITO money not null);

CREATE TABLE PRODUCTOS


(ID_FAB char(3),
ID_PRODUCTO varchar (5),
DESCRIPCION varchar (30) not null,
PRECIO money not null,
EXISTENCIAS integer not null,
constraint pkfabproducto primary key (id_fab,id_producto));

CREATE TABLE PEDIDOS


(NUM_PEDIDO integer primary key,
FECHA_PEDIDO datetime not null,
CLIE integer foreign key references clientes(num_clie),
REP integer foreign key references repventas(num_empl),
FAB CHAR (3) not null,
PRODUCTO varchar (5) not null,
CANT integer not null,
IMPORTE money not null,
Constraint fkfabproducto foreign key (fab,producto) references
productos(id_fab,id_producto))

19
20

También podría gustarte