Sei sulla pagina 1di 5

INTEGRIDAD

La Integridad en SQL es la caracterstica 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 administracin.
CREATE TABLE [[base de datos.] propietario.] nombre_tabla
(nombre_columna tipodatos [not null | null] [[ IDENTITY ]
[(semilla, incremento)]] [CONSTRAINT .] [,nombre_columna ] )
[ON nombre_segmento]

La visualizacin de la creacin de la tabla es con sp_help nombre_tabla

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


que se aadir automticamente a la columna para la primera fila, y un valor
(incremento) que aadir al ltimo valor insertado para la columna. Se puede
omitir la introduccin 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 Garca)

INSERT INTO tabla_identidad


(nombre)
VALUES (Mara Prez)

INSERT INTO tabla_identidad


(nombre)
VALUES (Pedro Pineda)

SELECT * FROM tabla_identidad

numero_fila nombre
---------------- -----------
1 Jos Garca
2 Mara Prez
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 Tcnico 3211 52 10 4411
Fred Stanhope Servicio Tcnico 6732 39 11 5522
Sue Sommers Logstica 4411 51 10 1997
Lance Finepoint Biblioteca 5522 40 8 9998
Mark Mc Guire Servicio Tcnico 1997 55 10 7773
Sally Springer Ventas 9998 49 9 8883
Ludmilla Valencia Software 7773 60 7 8805
Barbara Lint Servicio Tcnico 8883 37 11 7779
Jeffrey Vickers Correo 8805
Jim Walter Director de Unidad 7779

RESTRICCIN PRIMARY KEY: Asegura que todas las filas de la tabla sean
nicas, impidiendo que se inserten valores duplicados en 1 o ms columnas
que define la clave primaria. Tambin impide el uso del null en la columna(s)
donde se define la restriccin. Crea adems un ndice nico sobre la
columna(s) definida.

CONSTRAINT nombre_restriccin 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 omisin. El almacenamiento de los datos


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

RESTRICCIN FOREIGN KEY: Asocia una o ms columnas de una tabla con


un conjunto idntico de columna(s) que haya(n) sido definido(s) como
restriccin PRIMARY KEY en otra tabla.

CONSTRAINT nombre_restriccin 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
RESTRICCIN 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 restriccin sin ser llave. La omisin 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))

RESTRICCIN CHECK: Limita los valores que es posible insertar en una


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

CREATE TABLE Alumnos


(Cdigo char (7), nombre varchar (30), especialidad char (2), constraint
especialidad_valida check (especialidad IN (I1, I2)))

CREATE TABLE Alumnos


(Cdigo char (7), nombre varchar (30), especialidad char (2) check
(especialidad IN (I1, I2)))

RESTRICCIN DEFAULT: dispone de un valor que se aadir


automticamente a una columna de una tabla en el caso que no se le cree
ningn 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)

INSTRUCCIN 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

Potrebbero piacerti anche