Apuntes SQL Server 20 Junio

34
Sql Sever Microsoft Sql Serve r es un manejador de base de da tos de alto desempeño de Microsoft. En ese ncia, se trata de un con junto d e compo nentes que p ermiten el alma cenamien to y el análisis de grandes cantidades de datos, o rganizados bajo el modelo relacional. Dentro de las capacidades de S! Server se encuentran las siguientes" #apacidad de manejo de datos a nivel corporativo. #apacidad de replicaci$n. Escalabilidad y disponibilidad. %ntegraci$n con %nternet. &ácil instalaci$n, implementaci$n y uso. Data 'are(ousing. Arquitectura de SQL Server. Principales servicios de SQL Server. )n ser vicio es un progr ama que se ejecu ta en el plan o subya cen te de la maqu ina , prop orcio nan do func iona lida d bas ada en peti cion es. De esa forma la fun cion alid ad siempre esta disponible, al mismo tiempo que se economizan recurso de almacenamiento temporal y de procesamientos solo cuando una petici$n es atendida el servicio despierta de su estado latente consumiendo lo recursos que se necesitan. S! Server basa su funcionamiento en servicios, mismos que mantienen una instancia del motor de bases de datos en operaci$n, generalmente en un servidor de producci$n. !os dos servicios más importantes de S! Server son los siguientes. S! Server relational database engine. Es un motor de almacena miento y procesamie nto de datos que almacena informaci $n en forma de tablas relacionad as, dis ponibles principalmente a trav*s de peticiones formuladas en el dialecto S! soportado por S! Serv er +llamado transac tS!-, de forma segura y con fiab le. !as consult as de dato s retornaran como resultad o arre glo s bidimensionales de datos aunque (abrá alg unos estatutos S! que por su naturaleza no retornarán datos. S! Server analy sis servi ces. ro porci ona (erra mie ntas para el anál isi s de datos facilitando la formaci$n de esquemas data 'are(ouse atrav*s de (erramientas para el procesamie nto anal/tico en l/nea +0!120n !ine 1nalytical rocessing- que utilizan bases de datos multidimensionales +cubos-. Servicio de soporte utilizados por SQL Server. Open Data Services (ODS). Es la capa de servicios de S! Server que transfiere las peticiones de los clientes al S! Server 3elational database engine. 0DS e4pone los m$dulos que permiten la ejecuci$n de c$digo transactS! sobre la base de datos. Elaboró Margarita Ramírez Ramírez Pag. No 1

Transcript of Apuntes SQL Server 20 Junio

Arquitectura de SQL Server

Sql Sever

Microsoft Sql Server es un manejador de base de datos de alto desempeo de Microsoft. En esencia, se trata de un conjunto de componentes que permiten el almacenamiento y el anlisis de grandes cantidades de datos, organizados bajo el modelo relacional.

Dentro de las capacidades de SQL Server se encuentran las siguientes:

Capacidad de manejo de datos a nivel corporativo.

Capacidad de replicacin.

Escalabilidad y disponibilidad.

Integracin con Internet.

Fcil instalacin, implementacin y uso.

Data warehousing.

Arquitectura de SQL Server.

Principales servicios de SQL Server.

Un servicio es un programa que se ejecuta en el plano subyacente de la maquina, proporcionando funcionalidad basada en peticiones. De esa forma la funcionalidad siempre esta disponible, al mismo tiempo que se economizan recurso de almacenamiento temporal y de procesamientos solo cuando una peticin es atendida el servicio despierta de su estado latente consumiendo lo recursos que se necesitan.

SQL Server basa su funcionamiento en servicios, mismos que mantienen una instancia del motor de bases de datos en operacin, generalmente en un servidor de produccin.

Los dos servicios ms importantes de SQL Server son los siguientes.

SQL Server relational database engine. Es un motor de almacenamiento y procesamiento de datos que almacena informacin en forma de tablas relacionadas, disponibles principalmente a travs de peticiones formuladas en el dialecto SQL soportado por SQL Server (llamado transact-SQL), de forma segura y confiable. Las consultas de datos retornaran como resultado arreglos bidimensionales de datos aunque habr algunos estatutos SQL que por su naturaleza no retornarn datos.SQL Server analysis services. Proporciona herramientas para el anlisis de datos facilitando la formacin de esquemas data warehouse atravs de herramientas para el procesamiento analtico en lnea (OLAP/On Line Analytical Processing) que utilizan bases de datos multidimensionales (cubos).

Servicio de soporte utilizados por SQL Server.

Open Data Services (ODS). Es la capa de servicios de SQL Server que transfiere las peticiones de los clientes al SQL Server Relational database engine. ODS expone los mdulos que permiten la ejecucin de cdigo transact-SQL sobre la base de datos.

SQL Server Replication. Permite mantener actualizadas mltiples copias de una base de datos, ubicadas en diferentes equipos, mejorando el desempeo de las aplicaciones al mismo tiempo que asegura la sincrona de datos.

SQL Server Data Transformation Services (DTS). Permite mejorar el proceso de construccin de productos OLAP, extrayendo y concentrando, automticamente, datos de su registro detallando (OLTP / On Line Transaction Processing), proporcionndoselos a OLAP en un formato mas til, que requiera menos procesamiento.

SQL Server English Query. Permite personalizar cuestionamiento en ingles al motor de base de datos, transformndolos en estatutos SQL y produciendo arreglos bidimensionales de datos como respuesta (resulset).Meta Data Services. Permite almacenar, visualizar y recuperar descripciones asociadas a los objetos que componen la base de datos, permitiendo la organizacin de las estructura interna de la base de datos (Metadatos), en un formato mas entendible.

MS DTC Services. El coordinador de transacciones distribuidas (MS DTC/Microsoft Distributed Transaction Coordinator), es un manejador de transacciones que permite a las aplicaciones ejecutar transacciones que involucran varios orgenes o fuentes de datos; este servicio se encarga de coordinar las tareas a realizar, identifica los orgenes de datos involucrados en una transaccin y se comunica con ellos, proporcionado respuesta a las aplicaciones que hayan realizado la peticin de ejecucin. Soporte para conectividad a la base de datos.

SQL Server soporta una gran cantidad de interfaces para el soporte nativo de los servicios de comunicacin a la base de datos, va programacin o va herramientas administrativas.

SQL Server dispone de herramientas grficas para la creacin y administracin de bases de datos y data warehouse.

Base de datos en una instancia SQL Server.

SQL Server almacena datos en bases de datos (databases). Los datos en una base de datos se organizan en componentes lgicos que pueden ser administrados mediante herramientas grficas o sentencias de cdigo. Los componentes lgicos principales son las tablas (tables), las vistas (views), procedimientos (procedures) y usuarios (users).

Fsicamente los datos se almacenan en archivos de extensin mdf (main / primary data file), ndf (secondary data file opcional), y ldf (log file); no existe una correspondencia directa entre el nmero de archivos fsicos y la organizacin lgica, ya que SQL Server permite la administracin de los datos en mltiples equipos.

Generalmente slo el administrador de la base de datos (DBA / Data base administrador) tendr contacto con la distribucin fsica de los datos. Existen dos diferentes tipos de bases de datos: a) Base de datos del sistema (system databases)

b) Bases de datos del usuario (user database).

Se tiene un grupo de bases de datos del sistema por cada instancia de SQL Server que se tenga instalada.

Master La base de datos master almacena toda la informacin necesaria para administrar una instancia de SQL Server, y adems refiere las cuentas de usuario, las bases de datos definidas en los sistemas y los procesos de los servidores.

A las tablas almacenadas en la base de datos master se les conoce como catlogo de sistema, y en algunos casos esta informacin se conoce como metadatos (datos acerca de los datos).

modelLa base de datos model se utiliza como plantilla para las nuevas bases de datos.

Por defecto, la base de datos model contiene las tablas del sistema en donde se definen las particularidades de una base de datos (tablas con el prefijo sys).

Cualquier cambio que se implica model aplicar para todas las bases de datos creadas con posterioridad al cambio.

msdbLa base de datos msdb es utilizada por el agente de SQL Server para las tareas de mantenimiento planificadas, tales como avisos, trabajos y grabacin de archivos de backup.

tempdbLa base de datos tempdb se usa como rea de almacenamiento temporal, utilizado por los procesos de SQL Server.Su contenido se borra automticamente cuando se apaga SQL Server.

Objetos de SQL Server

Los datos dentro de una base de datos SQL Server se organizan en forma de objetos lgicos, mismos que se enumeran a continuacin.

Tablas (table). Son un conjunto de atributos (columnas) que representan o identifican a una entidad.

Columnas (column). Son atributos del sujeto o evento, modelado en una tabla. A las columnas debe asignrselas un tipo de datos y un nombre nico.

Filas (rows). Son ocurrencia de datos, el conjunto de atributos de una tabla. Tipos de datos (data type). Son las diferentes especificaciones de dominio predeterminado permitidas por SQL Server.

Procedimientos almacenados (store procedures). Cdigo transact-SQL, almacenado bajo un nombre, que puede ser invocado a travs del estatuto EXEC. Disparadores (triggers). Son procedimientos almacenados que se activan cuando se agregan, modifican o eliminan datos de la base de datos. Se emplean para asegurar que se respeten en la base de datos las reglas del negocio u otro tipo de regla de integridad de datos.

Regla (rules). Las reglas se asignan a las columnas de modo que los datos se apeguen a los estndares que sean establecidos. Las reglas permiten asignar el dominio de reglas de negocio.

Claves primarias (primary key). Conjunto nominado de campos que permiten identificar como nico registro dentro de una tabla.

Claves forneas (foregin key). Conjunto nominado de campos que permiten referir a la clave principal de otra tabla, para desarrollar funciones de relacin de datos. Restricciones (Check Restriction/Constraints). Son mecanismos de obligatoriedad integridad de datos implementada por el sistema con base en el servidor.

Valores predeterminados (default value). Se pueden asignar valores predeterminados a los campos (celdas) de modo que si no se registran valores durante una operacin INSERT en una columna especfica, se asignaran dichos valores.

Vistas (views). Son consultas almacenadas en la base de datos que pueden hacer referencia a una o varias tablas. Pueden emplearlas como mecanismos de seguridad para que ciertos usuarios puedan consultar slo ciertas partes de una tabla, o determinados conjuntos de datos.

ndices (indexes). Proporciona acceso rpido a las filas de una tabla, basndose en los valores de las columnas clave de estas. Por omisin, las claves primarias siempre dan lugar a un ndice. Funciones definidas por el usuario (user defined funtions). Son procedimientos codificados en transact SQL y almacenados en la base de datos, que aceptan parmetros y retornan resultados, extendiendo el lenguaje nativo de transactSQL.

Elementos de Seguridad en SQL Server.

La seguridad de los datos, es decir, que estn disponibles slo para aquellas personas que tengan privilegios adecuados para conocerlos es una de las caractersticas primordiales de un manejador de base de datos.

Este es un tema que debe ser considerado y se recomienda hacer un plan de seguridad.

Un plan de seguridad identifica que usuarios pueden ver que datos y que actividades pueden realizar en la base de datos, en otras palabras quien hace que cosa cuando.

En un plan de seguridad se debe:

1. Enumerar todos los elementos (objetos) y actividades de la base de datos que deben controlarse.2. Identificar los individuos (usuarios) y grupos de organizacin.

3. Establecer las diferencias cruzadas entre los elementos y actividades de la base de datos, los individuos y los grupos.

La seguridad e SQL Server involucra los siguientes conceptos:

Identificador de inicio de sesin (login). Identificacin (ID) que un usuario debe utilizar para iniciar la sesin en un servidor. Un ID de inicio de sesin puede tener hasta 128 caracteres. Los caracteres pueden ser alfanumricos, pero el primer carcter debe ser una letra.

Usuario (user). Cuenta o identificador de SQL Server que representa un determinado usuario en una base de datos. La cuenta de Windows o el inicio de sesin de SQL de cada usuario se asigna a una cuenta de usuario de una base de datos.

Luego, se otorgan los permisos adecuados a la cuenta de usuario.

Cada cuenta de usuario slo puede tener acceso a los datos con los que tiene permiso para trabajar.

Grupo (group). Contiene cuentas de usuarios y grupos globales procedentes del grupo de dominios en el que se han creado y de cualquier dominio de confianza. Roles (roles). Son grupos de privilegios predefinidos, que son suficientes para determinados tipos de funciones o actividades de base de datos.

Autentificacin y autorizacin.

No se puede interactuar con SQL Server sino a travs de un identificador de entrada. Esta clave identifica la cuenta de usuario que controla el acceso de SQL server y verifica que se tengan los permisos adecuados para ejecutar la operacin de acceso solicitada a lo que se conoce como autentificacin.

SQL Server posee dos modos de autentificacin.

Autentificacin de Windows. Tambin conocida como seguridad integrada, consiste en permitir que SQL Server reconozca las cuentas del sistema operativo, proporcionndole privilegios. Como resulta lgico pensar, sistemas operativos como Windows 98 no permite este modo de autenticacin, dado que no tienen esquemas de seguridad robusta ni permiten relaciones de confianza.

Autentificacin de SQL Server. Consiste en proporcionar una cuenta y un password reconocidos por SQL Server, para integrarse a la base de datos. Tanto la cuenta y el password estn registrados de manera segura dentro de la misma base de datos.

Inicios de sesin (Login)

Un Identificador de inicio de sesin (login) es un identificador que un usuario debe utilizar para iniciar sesin en un servidor. Este puede tener hasta 128 caracteres. Los caracteres pueden ser alfanumricos, pero el primer carcter debe ser una letra.

Se pueden tener dos tipos de identificadores de acceso de sesin como local, y otro remoto: este ltimo es asignado por un usuario para obtener accesos a procedimientos remotos de un servidor remoto.

El identificador de inicio de sesin trabaja sobre la instancia del servidor SQL Server, y slo tiene que ver con el proceso de autenticacin.

Introduccin a Lenguaje estructurado de consulta.

SQL es una herramienta para organizar, gestionar y recuperar datos almacenados en una base de datos automatizada. El nombre SQL es una abreviatura de Structured Query Language (Lenguaje estructurado de consultas), SQL trabaja con bases de datos relacionales.

SQL es mucho ms que una herramienta de consulta, aunque ese fue su propsito original y recuperar datos sigue siendo una de sus funciones ms importantes. SQL se utiliza para controlar todas las funciones que un DBMS proporciona a sus usuarios, incluyendo:

Definicin de datos.

Recuperacin de datos.

Manipulacin de datos.

Control de acceso.

Comparticin de datos

Integridad de datos.

Sql juega tiene las siguientes funciones:

Consultas interactivas.

Lenguaje de programacin de base de datos.

Lenguaje de Administracin de base de datos.

Lenguaje cliente/servidor.

Lenguaje de bases de datos distribuidas.

Componentes de SQL

El lenguaje SQL est compuesto por comandos, clusulas, operadores y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos.

Tipos de sentencias de Transact SQL.

Sentencias de lenguaje de definicin de datos. Sentencias de lenguaje de Control de datos. Sentencias de lenguaje de manipulacin de datos. Comandos DDL

ComandoDescripcin

CREATEUtilizado para crear nuevas tablas, ndices y objetos.

DROPEmpleado para eliminar tablas, ndices, objetos.

ALTERUtilizado para modificar las tablas agregando campos o cambiando la estructura de los atributos.

Comandos DML

ComandoDescripcin

SELECTUtilizado para consultar registros de la base de datos que satisfagan un criterio determinado

INSERTUtilizado para insertar datos en la base de datos.

UPDATEUtilizado para modificar los valores de los campos y registros especificados

DELETEUtilizado para eliminar registros de una tabla de una base de datos

Sentencias de Lenguaje de definicin de datos.

Permiten la creacin, modificacin y borrado de objetos en la B.D.

Definicin de objetos de la Base de Datos.

CREATE object_name ALTER object_name DROP object_nameSentencias de Lenguaje de control de datos.

Permite asignar o cambiar permisos a los objetos de la B.D. GRANT DENY REVOKESentencias de Lenguaje de manipulacin de datos.

Use estatutos DML para cambiar datos o recuperar informacin.

SELECT INSERT UPDATE DELETEComentarios

Para agregar comentarios en SQL es posible agregar comentarios en una lnea ( -- )Ejemplo:

SELECT productname,(unitsinstock-unitsonorder) Calcula el inventario, supplierID FROM products

GO

Comentarios en un bloque

/*

Este cdigo despliega los registros de la tabla productos y despliega tambin el nombre, el precio unitario, y el precio con el aumento del 10 %.

*/USE northwind

SELECT unitprice, (unitprice * 1.1), productname FROM products

GO

Lenguaje de definicin de datos

Creacin de una Base de Datos.SintaxisCreate Database Nombre de Base de datos

Ejemplo

Create Database ejemplo

Ejemplo.

/*Crea la base de datos denominada prueba*/

/*Deja en uso la B.D. prueba */

/*Crea una tabla denominada Customer */

create database prueba

use prueba

Create Table Customer

(

CustomerNumber

int

Not null,

LastName

char(30)Not null,

FirstName

char(30) Not null,

Address

char(30)Not null,

city

char(20)Not null,

state

char(20)Not null,

zip

char(10) Not null

primary key (CustomerNumber)

)

La clasula primary key (Opcional);

Los campos pueden definirse como NOT NULL, puede haber tantos atributos not null, como sea requerido, de manera opcional, excepto en la llave primaria para lo cual es obligatorio. Adems al definir la llave primaria se genera automticamente un ndice con respecto al campo llave; para definir la llave se escribe entre los parntesis la palabra PRIMARY KEY.

Puede existir ms de una llave primaria en una tabla (llaves compuestas).

Definicin de una llave compuesta

Ejemplo

primary key (folio,id_pto)

Con el comando create es posible crear cualquier objeto en SQL Server.

Create Database Create table Create rule Create view Create stored procedures Create function Create trigger Comando ALTER.

Permite modificar la estructura creada en una B.D., El comando Alter table permite agregar atributos, modificar atributos, o eliminar atributos en una tabla.La sintaxis es:

ALTER TABLE Alumno DROP COLUMN nombre

Elimina la columna 'nombre' de la tabla 'Alumno'. ALTER TABLE Alumno DROP COLUMN nombre, DROP COLUMN paterno

Elimina ms de una columna. ALTER TABLE Alumno ADD CLAVE INT

Aade una columna llamada clave' del tipo int' al final de todas las dems existentes.

Estructura de la sentencia DROP TABLE.

Esta sentencia elimina los datos y la estructura de una tabla.

DROP TABLE Nombre de la tabla a borrar;

Ejemplo:

Borrar la tabla Alumno creada anteriormente.

DROP TABLE Alumno;

Estructura de la sentencia DROP INDEX.

Elimina un ndice creado anteriormente.

DROP INDEX Nombre del ndice a borrar;

Ejemplo:

DROP INDEX Indice1;

Sentencias de Lenguaje de manipulacin de datos.

Las sentencias de manipulacin de datos son:

SELECT: Permite visualizar informacin obtenida en una(s) tabla(s) de la B.D.

Sintaxis.

Select atributo(s) from tabla where condicion

Ejemplo.

SELECT CustomerNumber,LastName,city FROM Customers WHERE state= B.C.

Select * from Customers.

INSERT: Permite insertar valores en los atributos de una tabla.

Insert into Nombre de la tabla a la que se le va a insertar el registro values (Conjunto de valores del registro);

Ejemplo:

USE northwind

INSERT Customers(customerid,companyname,contactname,contacttitle,address,city,region,postalcode, country,phone ,fax)VALUES('PECOF','Pecos Coffee Company', 'Michael Dunn' ,'Owner', '1900 Oak Street', 'Vancouver','BC','V3F 2K1', 'Canada', '(604) 555-3392' ,'(604) 555-7293')

GO

Insert into Customer values (1,Prez,Luis,Ave. Otay #40,Tijuana,B.C.,22000)

Insert into alumno values ('jose','18')alter table alumno alter column edad int

select * from alumno

drop table alumno

La insercin de los datos se realiza conforme a la estructura con la que se creo la tabla, en el orden en que se cre dicha tabla. En caso de querer omitir un dato que no sea no nulo, solamente se ponen las comillas indicando el vaco de la cadena.

UPDATE. La sentencia Update permite actualizar los datos en una tabla.

Sintaxis

UPDATE Nombre de la tabla en donde se modificarn los datos.

SET Valores

WHERE (Condicin);

Ejemplo:

Modificar el CustomerNumber de Pedro Prez de la tabla Customer por el nmero 9631.

UPDATE Customer

SET Customers Nombre 9631

WHERE NombreA=Pedro Prez;

UPDATE Customer

Set cod_postal= 78788

WHERE ciudad = San Diego

UPDATE Orders

SET cantidad =cantidad + (cantidad *.07)

WHERE ciudad = San DiegoUPDATE Customer

SET state ='Jalisco'

WHERE LastName='Collado' and FirstName='Angel';

DELETE. Sentencia que permite eliminar una tabla, basada en una condicin de ser necesario.

DELETE

FROM Nombre de la tabla

WHERE Condicin;

Ejemplos:

Borrar el registro cuyo CustomerNumber es 9531.

DELETE

FROM Customer

WHERE CustomerNumber=9531;

Borrar todos los registros de la tabla alumno.

DELETE

FROM Alumno

En el primer ejemplo, se borrarn todo el registro (todos los datos), del cliente con nmero de cliente= 9531.

En el segundo ejemplo se borrarn todos los registros de la tabla Customer, pero sin borrar la estructura de la tabla, ya que la orden Delete slo borra registros, la sentencia Drop Table es la que borra toda la estructura de la tabla junto con los registros de la misma.

Delete from Clientes

Delete from Clientes where apellido = Lopez

Restricciones.

Integridad de dominio

Integridad referencial

Integridad de Identidad

Tipos de datos definidos por el usuario

SQL Server permite definir datos, que sern utilizados en varias tablas y se espera se garantice el mismo tipo de dato y la longitud, las reglas para identificadores de tipos de datos deben ser las mismas que para cualquier identificador.Creacin de un tipo de dato definido.

Se ejecute un procedimiento almacenado del sistema sp-addtype.

Sintaxis

exec sp_addtype NOMBRETIPO, TIPO_DEL_SISTEMA, OPCION_NULL

sp_help. Muestra la informacin de los tipos de datos.

Systypes. Tabla que almacena informacin de todos los tipos de datos.

Select name from systypes

Por ejemplo definir el uso de tipos de datos texto como un dato de tipo char(10), en el modelo de datos de varias tablas. Exec sp_addtype texto, char (10)

Exec sp_addtype entero, int,not null

Ejemplo:

Create table Alumno (

matricula entero,

nombre texto)Eliminacin de datos definidos por el usuario.Procedimiento almacenado de sistema

exec sp_droptype tipo_DatoEjemplo:

exec sp_droptype cityDonde tipo_Dato es el nombre del tipo de dato definido por el usuario que se pretende eliminar.

Valores predeterminados (Default)Cuando se insertan valores en un registro y no se especifica un valor para un campo que admite valores nulos, se ingresa automticamente null y si el campo est declarado identity, se inserta el siguiente de la secuencia. A estos valores se les denomina valores por defecto o predeterminados.

Para campos de cualquier tipo no declarados not null, es decir, que admiten valores nulos, el valor por defecto es null. Para campos declarados not null, no existe valor por defecto, a menos que se declare explcitamente con la clusula default.

Para todos los tipos, excepto los declarados identity, se pueden explicitar valores por defecto con la clusula default.Ejemplo

create table Equipo(

clave int identity,

descripcin varchar(40),

marca varchar(30) not null default 'Apple',

precio decimal(6,2),

cantidad tinyint default 0

);

Inserta valores predeterminados para las columnas especificadas, las columnas deben tener un valor por defecto o permitir valores nulos.Los valores predeterminados se asocian a uno o varios campos (o tipos de datos definidos por el usuario); se definen una sola vez y se pueden usar muchas veces.

Si no se coloca un valor cuando se ingresan datos, el valor predeterminado especfica el valor del campo al que est asociado.

Insercin de datos.

Insert into Equipo (clave,descripcin,marca,precio,cantidad)

Values (Ipad,default,6000.00,default)Si en una tabla se tienen valores predeterminados (identity, valores nulos o tener un valor por defecto), se puede ingresar un registro de la siguiente manera: insert into libros default values;

Sintaxis:

CREATE DEFAULT nombre_valor predeterminado AS valor predeterminado;

Ejemplo:

Creamos valor predeterminado Nombre_Carrera con el valor Arquitectura

create default Nombre_Carrera as ArquitecturaUna vez creado el valor predeterminado, se debe asociar a un campo (o a un tipo de datos definido por el usuario) ejecutando el procedimiento almacenado del sistema sp_bindefaultexec sp_bindefault Nombre_Carrera, 'Alumno.Nombre_Carrera'Es posible asociar un valor predeterminado a varios campos.La funcin que cumple un valor predeterminado es bsicamente la misma que una restriccin default, las siguientes caractersticas explican algunas semejanzas y diferencias entre ellas:

Un campo solamente puede tener definida una restriccin default, un campo solamente puede tener un valor predeterminado asociado a l,

Una restriccin default se almacena con la tabla, cuando sta se elimina, las restricciones tambin. Los valores predeterminados son objetos diferentes e independientes de las tablas, si eliminamos una tabla, las asociaciones desaparecen, pero los valores predeterminados siguen existiendo en la base de datos.

Una restriccin default se establece para un solo campo; un valor predeterminado puede asociarse a distintos campos (inclusive, de diferentes tablas).

Una restriccin default no puede establecerse sobre un campo identity, tampoco un valor predeterminado.

No se puede asociar un valor predeterminado a un campo que tiene una restriccin "default".

La sentencia create default no puede combinarse con otra sentencia en un mismo lote.

Si asocia a un campo que ya tiene asociado un valor predeterminado otro valor predeterminado, la nueva asociacin remplaza a la anterior.

Ejemplo:Crea un valor predeterminado que inserta ceros con el formato vlido para un nmero de telfono:

create default telfono as '(00)000-0000';

Es posible asociar un valor predeterminado a un tipo de datos definido por el usuario. Luego de crear un valor predeterminado, se puede asociar a un tipo de dato definido por el usuario con la siguiente sintaxis.

exec sp_bindefault NOMBREVALORPREDETERMINADO,

Para eliminar la asociacin, se utiliza

sp_unbindefault 'TIPODEDATODEFINIDOPORELUSUARIO'

sp_helpconstraint Es posible ver los valores predeterminados asociados a los campos de una tabla.

sp_help Es posible ver todos los objetos de la base de datos activa, incluyendo los valores predeterminados, en la columna Object_type aparece default.

CHECK y NOCHECK

Si se agrega una restriccin a una tabla que contiene datos, SQL Server verifica que cumplen con la restriccin.

Si se desea deshabilitar esta restriccin, es posible hacerse al momento de agregar la restriccin a una tabla con datos, incluyendo la opcin with nocheck en la instruccin alter table; si se emplea esta opcin, los datos no van a cumplir la restriccin.

Se pueden deshabilitar las restricciones check y foreign key, a otras restricciones, se les debe eliminar.

La sintaxis bsica al agregar la restricccin foreign key es la siguiente:

Ejemplo: Se crea una restriccin foreign key que controla que todos los cdigos de carrera tengan un cdigo vlido, es decir, dicho cdigo exista en la tabla carrera. La restriccin no se aplica en los datos existentes pero si en los siguientes ingresos, modificaciones y actualizaciones:

alter table alumnos

with nocheck

add constraint FK_Carreras_codigocarrera

foreing key (codigocarrera)

references carreras(codigo);

La comprobacin de restricciones se puede deshabilitar para modificar, eliminar o agregar datos a una tabla sin comprobar la restriccin.

Sintaxis

alter table NOMBRETABLA

OPCIONDECHEQUEO constraint NOMBRERESTRICCION;

En el siguiente ejemplo se deshabilita la restriccin creada anteriormente:

alter table Alumnos

nocheck constraint FK_alumnos_codigocarrera

Para habilitar una restriccin deshabilitada se ejecuta la misma instruccin pero con la clusula check o check all

alter table Alumnos

check constraint FK_alumnos_codigocarrera.

Si se emplea check constraint all no se coloca nombre de restricciones, habilita todas las restricciones que tiene la tabla nombrada (check y foreign key).

Entonces, las clusulas check y nocheck permiten habilitar o deshabilitar restricciones foreign key (y check). Pueden emplearse para evitar la comprobacin de datos existentes al crear la restriccin o para deshabilitar la comprobacin de datos al ingresar, actualizar y eliminar algn registro que no cumpla con la restriccin.

Podemos eliminar una restriccin foreign key con alter table. La sintaxis bsica es la misma que para cualquier otra restriccin:

alter table TABLA

drop constraint NOMBRERESTRICCION;

Eliminar una restriccin.

alter table NombreTabla

drop constraint FK_Alumnos_codigocarreraUNIQUELa restriccin unique impide la duplicacin de claves alternas (no primarias), es decir, especfica que dos registros no puedan tener el mismo valor en un campo. Se permiten valores nulos. Se pueden aplicar varias restricciones de este tipo a una misma tabla, y pueden aplicarse a uno o varios campos que no sean clave primaria.

Se emplea cuando ya se estableci una clave primaria pero se necesita asegurar que otros datos tambin sean nicos y no se repitan.Sintaxis:

alter table NOMBRETABLA

add constraint NOMBRERESTRICCION

unique (CAMPO);

Ejemplo:

alter table alumnos

add constraint UQ_alumnos_RFC

unique (RFC);CONSTRAINTS

Es posible agregar restricciones en una tabla, como determinar la llave primaria.Sintaxis

alter table NOMBRETABLA

add constraint NOMBRECONSTRAINT

primary key (CAMPO,...);

alter table Alumnos add constraint PK_alumnos_codigo

primary key(codigo);

SQL Server permite definir solamente una restriccin "primary key" por tabla, que asegura la unicidad de cada registro de una tabla.

Ejemplo

Create table cursos(

clave char(8) not null,

nombre char(30) not null,

vigente char(5),area int not null,

Constraint CK_cursos_vigente check vigente in(s,n),

Constraint PK_cursos_clave primary key (clave)

Constraint fk_cursos_area foreign key (area) references TablaAreas(area)

)

Creacin de Reglas

Hacen cumplir con la integridad del dominio, proporciona verificacin ms sofisticada de valores vlidos. Las reglas se usan para asegurar que los valores:Las reglas especifican los valores que se pueden ingresar en un campo, asegurando que los datos se encuentren en un intervalo de valores especfico, coincidan con una lista de valores o sigan un patrn.

Concuerden con un patrn (like)

Concuerden con una lista de valores (In)

Estn dentro de un rango de valores (Between)

Una regla se asocia a un campo de una tabla o a un tipo de dato definido por el usuario.

Un campo puede tener solamente UNA regla asociado a l.

Sintaxis: create rule NOMBREREGLA as @VARIABLE CONDICION

La variable puede tener cualquier nombre, pero debe estar precedido por el signo @, dicha variable ser remplazada por el valor del campo cuando se asocie.

Ejemplo:

create rule RG_sueldo as @sueldo between 100 and 1000

Una vez creada la regla, se debe asociar a un campo ejecutando un procedimiento almacenado del sistema exec sp_bindrule NOMBREREGLA, 'TABLA.CAMPO';

Se asocia la regla creada al atributo sueldo de la tabla empleados exec sp_bindrule regla_sueldo, 'empleados.sueldo';

No se puede crear una regla para campos de tipo text, image, o timestamp.

Si asocia una nueva regla a un campo que ya tiene asociada otra regla, la nueva regla remplaza la asociacin anterior; pero la primera regla no desaparece, solamente se deshace la asociacin.

La sentencia create rule no puede combinarse con otras sentencias en un lote.

La funcin que cumple una regla es bsicamente la misma que una restriccin check, las siguientes caractersticas explican algunas diferencias entre ellas:

Se pueden definir varias restricciones check sobre un campo, un campo solamente puede tener una regla asociada a l;

Una restriccin check se almacena con la tabla, cuando sta se elimina, las restricciones tambin se borran. Las reglas son objetos independientes de las tablas, si se elimina una tabla, las asociaciones desaparecen, pero las reglas siguen existiendo en la base de datos;

Una restriccin check puede incluir varios campos; una regla puede asociarse a distintos campos (incluso de distintas tablas);

sp_helpconstraint. Permite ver las reglas asociadas a los campos de una tabla.

sp_help. Permite ver todos los objetos de la base de datos activa, incluyendo las reglas, en tal caso en la columna "Object_type" aparece "rule".

Ejemplo:

Regla para una columna de no_parte, en donde la columna debe iniciar con una p o t, p.Regla

Create rule regla1 as @mivariable likep%or @mivariable like t%Enlazar la regla

sp_bindrule regla1 mivariable

Eliminar regladrop rule regla1

Ejemplo

Usaremos la misma tabla que se emple para los valores predeterminados.

Create rule reglatexto as @col like h%

Go

Create rule reglaentero as @valorentero < 100

Go

Create rule reglamoneda as @valormoneda Between $5.00 and $10.00

Go

Exec sp_bindrule Reglatexto, Mitabla.caracterExec sp_bindrule Reglaentero, Mitabla.valorenteroExec sp_bindrule Reglamoneda, Mitabla.monedaGo

Para verificar el funcionamiento de las reglas, inserte valores vlidos y no vlidos.

Insert Mitabla Values (90, Hola, $6.00)

go

Insert Mitabla Values (101, Buen dia, $16.00)

go

Recuperacin de datos mediante consultas

Instrucciones SELECT simples

Es posible crear consultas para recuperar informacin de la base de datos utilizando comandos de sql.

Hay tres componentes bsicos de la instruccin SELECT: SELECT, FROM y WHERE. La sintaxis bsica es la siguiente:

SELECT

FROM

WHERE

La parte SELECT de la instruccin especfica las columnas que desea recuperar. La clusula FROM define la tabla de la cual se recuperarn las columnas. La clusula WHERE limita las filas devueltas por su consulta.

La sintaxis completa de la instruccin SELECT es

SELECT [ALL DISTINCT]

[ INTO nueva_tabla ]

[ FROM ]

[ WHERE ]

[ GROUP BY [ALL] expresin_agrupar_por [,n] ]

[ WITH { CUBE ROLLUP } ] ]

[ HAVING ]

[ ORDER BY {nombre_columna [ ASC DESC ] } [ ,n ]

[ COMPUTE { { AVG COUNT MAX MIN SUM } (expresin) }

[,n] [BY expression [,n] ]

[ FOR BROWSE ] [ OPTION ( [,n]

SELECT * FROM nombre_tabla es la ms bsica de todas las consultas. Al utilizar un asterisco (*) para lista_columnas se recuperarn todas las columnas de la tabla.Al ejecutar una consulta con SELECT *, el orden de las columnas ser el mismo que especific en la instruccin CREATE TABLE.

Ejemplo:

SELECT * FROM employee

Para seleccionar columnas especficas, cada una debe separarse con una coma (,), no debe colocar una coma despus de la ltima columna.

SELECT nombre_columna FROM nombre_tabla

SELECT fname, lname, emp_id FROM employee

SELECT emp_id, lname, fname FROM employee

Clusulas

Las clusulas son condiciones de modificacin utilizadas para definir los datos que desea seleccionar o manipular.

ClusulaDescripcin

FROMUtilizada para especficar la tabla de la cual se van a seleccionar los registros.

WHEREUtilizada para especificar las condiciones que deben reunir los registros que se van a seleccionar.

GROUP BYUtilizada para separar los registros seleccionados en grupos especficos.

HAVINGUtilizada para expresar la condicin que debe satisfacer cada grupo.

ORDER BYUtilizada para ordenar los registros seleccionados de acuerdo con un orden especfico.

Clusula WHERE

La clusula WHERE puede usarse para determinar qu registros de las tablas enumeradas en la clusula FROM aparecern en los resultados de la instruccin SELECT. Si no se emplea esta clusula, la consulta devolver todas las filas de la tabla. WHERE es opcional, pero cuando aparece debe ir a continuacin de FROM.

Ejemplos:

Desplegar el apellido y salario de los empleados cuyo salario sea > 21000.

Select apellido, salario from empleados where salario > 21000;

Desplegar id_producto, existencias de la tabla Productos en donde existencia sea menor o igual a 1000.

Select id_producto, existencias from productos where existencias 100

Funciones de Agregado (Sumarias )Las funciones de agregado o sumatorias, se usan dentro de una clusula SELECT para devolver un nico valor que se aplica a un grupo de registros.

FuncinDescripcin

AVGCalcula el promedio de los valores de un campo determinado

COUNTDevuelve el nmero de registros de la seleccin

SUMDevuelve la suma de todos los valores de un campo determinado

MAXDevuelve el valor mayor de un campo especificado

MINDevuelve el valor menor de un campo especificado

Ejemplos:

Select avg(precio) from productos

Esta sentencia nos regresar un valor que es el promedio de los precios de todos los articulos de la tabla productos.Select sum(precio) from productos

Esta sentencia nos regresar un valor que es la suma de los precios de todos los articulos de la tabla productos.

Select count(no-pto) from productos

Esta sentencia nos regresar un valor que es la cantidad de articulos de la tabla productos.

Select max(precio) from productos

Esta sentencia nos regresar el precio mayor de los articulos de la tabla productos.

Select min(precio) from productos

Esta sentencia nos regresara el precio menor de los articulos de la tabla productos.

Operadores Lgicos

Los operadores lgicos soportados por SQL son: AND, OR, XOR, Eqv, Imp, Is y Not. A excepcin de los dos ltimos todos poseen la siguiente sintaxis:

operador

En donde expresin1 y expresin2 son las condiciones a evaluar, el resultado de la operacin vara en funcin del operador lgico.

Select * from empleados where (edad>25) and (edad 25) and (edad < 50) or (sueldo = 100)

Select * from empleados where not (estado='soltero') Select * from empleados where ((sueldo > 100) and (sueldo < 500)) or ((ciudad = 'madrid') and (estado = 'casado'))

Intervalos de Valores (Between).

Permite indicar que datos deseamos recuperar segn el intervalo de valores de un campo, la sintaxis del operador Between es:

Select campo(s) from Tabla where campo [Not] Between valor1 And valor2 (la condicin Not es opcional)

En este caso la consulta devolvera los registros que contengan en "campo" un valor incluido en el intervalo valor1, valor2 (ambos inclusive). Si anteponemos la condicin Not devolver aquellos valores no incluidos en el intervalo.

Ejemplo:

SELECT * FROM Pedidos WHERE CodPostal Between 28000 And 28999;

(Devuelve los pedidos realizados en las ciudades con codpostal entre 28000 y 28999)

Operador Like

Se utiliza para comparar una expresin de cadena con un modelo en una sentencia SQL. Su sintaxis es:

Expresin Like modelo

En donde expresin es una cadena modelo o campo contra el que se compara expresin. Se puede utilizar el operador Like para encontrar valores en los campos que coincidan con el modelo especficado. Por modelo se puede especificar un valor completo (Ana Mara), o se pueden utilizar caracteres comodn como los reconocidos por el sistema operativo para encontrar un rango de valores (Like An*).

Ejemplo:

Si introduce Like C* en una consulta SQL, la consulta devuelve todos los valores de campo que comiencen por la letra C.

Ejemplo:

Sentencia que devuelve los datos que comienzan con la letra P, seguido de cualquier letra entre A y F y de tres dgitos:

Like 'P[A-F]###'

Este ejemplo devuelve los campos cuyo contenido empiece con una letra de la A a la D seguidas de cualquier cadena.

Like '[A-D]*'

Test de pertenencia In

Este operador devuelve aquellos registros cuyo campo indicado coincide con alguno de los que pertenecen a una lista.

Su sintaxis es:

expresin [Not] In(valor1, valor2, . . .)

Ejemplo:

Desplegar los datos de los pedidos cuya ciudad este entre la lista de ciudades determinadas.Select * from pedidos where ciudad In (Tijuana, 'Madrid', 'Londres', 'New York');

Agrupamiento de Registros

GROUP BY

Agrupa los registros con valores idnticos, para cada registro se crea un valor sumario si se incluye una funcin SQL agregada, como por ejemplo Sum o Count, en la instruccin SELECT.

Sintaxis:

SELECT campos FROM tabla WHERE criterio GROUP BY campos del grupo

Los valores Null en los campos GROUP BY se agrupan y no se omiten. No obstante, los valores Null no se evalan en ninguna de las funciones SQL agregadas.

Ejemplo:

Desplegar el id de linea y la suma de stock de la tabla Productos agrupado por idLinea.

SELECT Id_Linea, Sum(Stock) FROM Productos GROUP BY Id_Linea.

Columnas calculadas.

Es posible realizar columnas calculadas utilizando los operadores aritmticos descritos anteriormente

Ejemplo:

SELECT Sum(PrecioUnidad * Cantidad) AS Total FROM DetallePedido;

SubConsultas

Una subconsulta es una instruccin SELECT anidada dentro de una instruccin SELECT, SELECT...INTO, INSERT...INTO, DELETE, o UPDATE o dentro de otra subconsulta.

Una subconsulta puede realizarse mediante comparacin o Instruccin sql.

Instruccin sql Es una instruccin SELECT, que sigue el mismo formato y reglas que cualquier otra instruccin SELECT. Debe ir entre parntesis. Se puede utilizar una subconsulta en lugar de una expresin en la lista de campos de una instruccin SELECT o en una clusula WHERE o HAVING.

El predicado IN se emplea para recuperar nicamente aquellos registros de la consulta principal para los que algunos registros de la subconsulta contienen un valor igual.

Ejemplo:

Despliega todos los productos vendidos con un descuento igual o mayor al 25 por ciento.:

Select * from productos where idproducto in (select idproducto from detallepedido where descuento >= 0.25);

Inversamente se puede utilizar NOT IN para recuperar nicamente aquellos registros de la consulta principal para los que no hay ningn registro de la subconsulta que contenga un valor igual.

El predicado EXISTS (con la palabra reservada NOT opcional) se utiliza en comparaciones de verdad/falso para determinar si la subconsulta devuelve algn registro.

Ejemplo:

Suponga que desea conocer el nombre de las partes suministradas por el proveedor No. 1

Select parte from Partes where no_pto = (Select no_pto from Partes_suministradas where S#=s1).

En esta sentencia es necesario realizar una sentencia anidada, debido a que el no_del proveedor est en la tabla partes suministradas, pero los datos de la parte, esta en la tabla Partes, por lo que el resultado de la consulta interna ser el valor de la clasula Where.Join

La sentencia join en SQL permite combinar registros de dos o ms tablas en una base de datos relacional. En el Lenguaje de Consultas Estructurado (SQL), hay tres tipos de JOIN: interno, externo, y cruzado.

En casos especiales una tabla puede unirse a s misma, produciendo una auto-combinacin, SELF-JOIN. Matemticamente, JOIN es composicin relacional, la operacin fundamental en el lgebra relacional.

Todas las explicaciones que estn a continuacin utilizan las siguientes dos tablas para ilustrar el efecto de diferentes clases de uniones JOIN.

Tablas de ejemplo

Tabla Empleado

ApellidoIDDepartamento

Andrade31

Jordn33

Steinberg33

Rbinson34

Zolano34

Gaspar36

Tabla Departamento

NombreDepartamentoIDDepartamento

Ventas31

Ingeniera33

Produccin34

Mercadeo35

La tabla Empleado contiene los apellidos de los empleados junto al nmero del departamento al que pertenecen, mientras que la tabla Departamento contiene el nombre de los departamentos de la empresa.

Existen empleados que tienen asignado un nmero de departamento que no se encuentra en la tabla Departamento (Gaspar). Igualmente, existen departamentos a los cuales no pertenece ningn empleado (Mercadeo). Esto servir para presentar algunos ejemplos ms adelante.

Combinacin interna (INNER JOIN)

Con esta operacin se calcula el producto cruzado de todos los registros; as cada registro en la tabla A es combinado con cada registro de la tabla B; pero slo permanecen aquellos registros en la tabla combinada que satisfacen las condiciones que se especfiquen. Este es el tipo de JOIN ms utilizado por lo que es considerado el tipo de combinacin predeterminado.

SQL:2003 especifica dos formas diferentes para expresar estas combinaciones. La primera, conocida como explcita usa la palabra JOIN, mientras que la segunda es implcita y usa ',' para separar las tablas a combinar en la sentencia FROM de la declaracin SELECT. Entonces siempre se genera el producto cruzado del cual se seleccionan las combinaciones que cumplan lo que indica la sentencia WHERE.

Es necesario tener especial cuidado cuando se combinan columnas con valores nulos NULL ya que el valor nulo no se combina con otro valor o con otro nulo, excepto cuando se le agregan predicados tales como IS NULL o IS NOT NULL.

Como ejemplo, la siguiente consulta toma todos los registros de la tabla Empleado y encuentra todas las combinaciones en la tabla Departamento. La sentencia JOIN compara los valores en la columna IDDepartamento en ambas tablas. Cuando no existe esta correspondencia entre algunas combinaciones, stas no se muestran; es decir que si el nmero de departamento de un empleado no coincide con los nmeros de departamento de la tabla Departamento, no se mostrar el empleado con su respectivo departamento en la tabla resultante.

Las dos consultas siguientes son similares, y se realizan de manera explcita (A) e implcita (B).

A. Ejemplo de la sentencia INNER JOIN explcita:

SELECT *

FROM empleado

INNER JOIN departamento

ON empleado.IDDepartamento = departamento.IDDepartamento

B. Ejemplo de la sentencia INNER JOIN implcita:

SELECT *

FROM empleado, departamento

WHERE empleado.IDDepartamento = departamento.IDDepartamento

Resultados:

Empleado.ApellidoEmpleado.IDdepartamentodepartamento.NombreDepartamentodepartamento.IDDepartamento

Zolano34Produccin34

Jordn33Ingeniera33

Rbinson34Produccin34

Steinberg33Ingeniera33

Andrade31Ventas31

El empleado Gaspar y el departamento de Mercadeo no son presentados en los resultados ya que ninguno de stos tiene registros correspondientes en la otra tabla. No existe un departamento con nmero 36 ni existe un empleado con nmero de departamento 35.

A la combinacin que utiliza comparaciones dentro del predicado JOIN se le llama theta-join.

C. Ejemplo de combinacin tipo theta:

SELECT *

FROM empleado

INNER JOIN departamento

ON empleado.IDDepartamento < departamento.IDDepartamentoLas operaciones INNER JOIN pueden ser clasificadas como de equivalencia, naturales, y cruzadas.

De equivalencia (equi-join)Es una especie de theta-join que usa comparaciones de igualdad en el predicado JOIN. Cuando se usan operadores, tales como < o > no se pueden clasificar en este rango.

D. Ejemplo de combinacin de equivalencia:

SELECT *

FROM empleado INNER JOIN departamento

ON empleado.IDDepartamento = departamento.IDDepartamento

La tabla resultante presenta dos columnas llamadas IDDepartamento, una proveniente de la tabla Empleado y otra de la tabla Departamento.

Cruzada (Cross join)Presenta el producto cartesiano de todos los registros de las dos tablas.

El cdigo SQL para realizar este producto cartesiano enuncia las tablas que sern combinadas, pero no incluye algn predicado que filtre el resultado.

F. Ejemplo de combinacin cruzada explcita:

SELECT *

FROM empleado CROSS JOIN departamento

G. Ejemplo de combinacin cruzada implcita:

SELECT *

FROM empleado, departamento;

Empleado.ApellidoEmpleado.IDDepartamentoDepartamento.NombreDepartamentoDepartamento.IDDepartamento

Andrade31Ventas31

Jordn33Ventas31

Steinberg33Ventas31

Zolano34Ventas31

Rbinson34Ventas31

Gaspar36Ventas31

Andrade31Ingeniera33

Jordn33Ingeniera33

Steinberg33Ingeniera33

Solano34Ingeniera33

Rbinson34Ingeniera33

Gaspar36Ingeniera33

Andrade31Produccin34

Jordn33Produccin34

Steinberg33Produccin34

Solano34Produccin34

Rbinson34Produccin34

Gaspar36Produccin34

Andrade31Mercadeo35

Jordn33Mercadeo35

Steinberg33Mercadeo35

Solano34Mercadeo35

Rbinson34Mercadeo35

Gaspar36Mercadeo35

Esta clase de combinaciones son usadas pocas veces, generalmente se les agregan condiciones de filtrado con la sentencia WHERE para encontrar resultados especficos.

Combinacin externa (OUTER JOIN)

Mediante esta operacin no se requiere que cada registro en las tablas a unir tenga un registro equivalente en la otra tabla. El registro es mantenido en la tabla combinada si no existe otro registro que le corresponda.

Este tipo de operacin se subdivide dependiendo de la tabla a la cual se le admitirn los registros que no tienen correspondencia, ya sean de tabla izquierda, de tabla derecha, o combinacin completa.

De tabla izquierda (LEFT OUTER JOIN o LEFT JOIN)

El resultado de esta operacin siempre contiene todos los registros de la tabla de la izquierda (la primera tabla que se menciona en la consulta), aun cuando no exista un registro correspondiente en la tabla de la derecha, para uno de la izquierda.

La sentencia LEFT OUTER JOIN retorna la pareja de todos los valores de la tabla izquierda con los valores de la tabla de la derecha correspondientes, o retorna un valor nulo NULL en caso de no correspondencia.

A diferencia del resultado presentado en los ejemplos A y B (de combinacin interna) donde no se mostraba el empleado cuyo departamento no exista; en el siguiente ejemplo se presentarn los empleados con su respectivo departamento, e inclusive se presentar el empleado, cuyo departamento no existe.

H. Ejemplo de tabla izquierda para la combinacin externa:

SELECT *

FROM empleado

LEFT OUTER JOIN departamento

ON empleado.IDDepartamento = departamento.IDDepartamento

Empleado.ApellidoEmpleado.IDDepartamentoDepartamento.NombreDepartamentoDepartamento.IDDepartamento

Jordn33Ingeniera33

Andrade31Ventas31

Rbinson34Produccin34

Zolano34Produccin34

Gaspar36NULLNULL

Steinberg33Ingeniera33

De tabla derecha (RIGHT OUTER JOIN o RIGHT JOIN)

Esta operacin es inversa a la anterior; el resultado de esta operacin siempre contiene todos los registros de la tabla de la derecha (la segunda tabla que se menciona en la consulta), aun cuando no exista un registro correspondiente en la tabla de la izquierda, para uno de la derecha.

La sentencia RIGHT OUTER JOIN retorna la pareja de todos los valores de la tabla derecha con los valores de la tabla de la izquierda correspondientes, o retorna un valor nulo NULL en caso de no correspondencia.

I. Ejemplo de tabla derecha para la combinacin externa:

FROM empleado

RIGHT OUTER JOIN departamento

ON empleado.IDDepartamento = departamento.IDDepartamento

Empleado.ApellidoEmpleado.IDDepartamentoDepartamento.NombreDepartamentoDepartamento.IDDepartamento

Zolano34Produccin34

Jordn33Ingeniera33

Rbinson34Produccin34

Steinberg33Ingeniera33

Andrade31Ventas31

NULLNULLMercadeo35

En este caso el rea de Mercadeo fue presentada en los resultados, aunque an no hay empleados registrados en dicha rea.

Combinacin completa (FULL OUTER JOIN)

Esta operacin presenta los resultados de tabla izquierda y tabla derecha aunque no tengan correspondencia en la otra tabla. La tabla combinada contendr, entonces, todos los registros de ambas tablas y presentar valores nulos NULLs para registros sin pareja.

J. Ejemplo de combinacin externa completa:

SELECT *

FROM empleado

FULL OUTER JOIN departamento

ON empleado.IDDepartamento = departamento.IDDepartamento

Empleado.ApellidoEmpleado.IDDepartamentoDepartamento.NombreDepartamentoDepartamento.IDDepartamento

Zolano34Produccin34

Jordn33Ingeniera33

Rbinson34Produccin34

Gaspar36NULLNULL

Steinberg33Ingeniera33

Andrade31Ventas31

NULLNULLMercadeo35

Como se puede notar, en este caso se encuentra el empleado Gaspar con valor nulo en su rea correspondiente, y se muestra adems el departamento de Mercadeo con valor nulo en los empleados de esa rea.

Algunos sistemas de bases de datos no soportan esta funcionalidad, pero esta puede ser emulada a travs de las combinaciones de tabla izquierda, tabla derecha y de la sentencia de unin unin.

K. El mismo ejemplo puede expresarse as:

SELECT *

FROM empleado

LEFT JOIN departamento

ON empleado.IDDepartamento = departamento.IDDepartamento

UNION

SELECT *

FROM empleado

RIGHT JOIN departamento

ON empleado.IDDepartamento = departamento.IDDepartamento

WHERE empleado.IDDepartamento IS NULL

Elabor Margarita Ramrez Ramrez

Pag. No 33