Está en la página 1de 33

Manejador de Base de Datos.

Sql Sever
Microsoft Sql Server es un manejador de base de datos de alto desempeo. 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.

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). La 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. La 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. La 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.

model

msdb tempdb

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.

Elabor Margarita Ramrez Ramrez

Pag. No 1

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.

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.

Elabor Margarita Ramrez Ramrez

Pag. No 2

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.

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 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.

Sentencias de Lenguaje de definicin de datos. Comandos DDL Comando CREATE object_name DROP object_name ALTER object_name

Descripcin Utilizado para crear nuevas tablas, ndices y objetos. Empleado para eliminar tablas, ndices, objetos. Utilizado para modificar las tablas agregando campos o cambiando la estructura de los atributos.

Elabor Margarita Ramrez Ramrez

Pag. No 3

Comandos DML Comando Descripcin Utilizado para consultar registros de la base de datos que satisfagan un criterio SELECT determinado INSERT Utilizado para insertar datos en la base de datos. UPDATE Utilizado para modificar los valores de los campos y registros especificados DELETE Utilizado para eliminar registros de una tabla de una base de datos Permite asignar o cambiar permisos a los objetos de la B.D. GRANT DENY REVOKE Sentencias de Lenguaje de manipulacin de datos. Use estatutos DML para cambiar datos o recuperar informacin. SELECT INSERT UPDATE DELETE Comentarios Para agregar comentarios en SQL es posible agregar comentarios en una lnea ( -- ) Ejemplo:
SELECT productname,(unitsinstock-unitsonorder) supplierID FROM products GO Calcula el inventario,

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. Sintaxis


Create Database Nombre de Base de datos

Ejemplo Create Database Ejemplo.

ejemplo

Elabor Margarita Ramrez Ramrez

Pag. No 4

/*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 LastName char(30) FirstName char(30) Address char(30) city char(20) state char(20) zip char(10) primary key (CustomerNumber) )

Not Not Not Not Not Not Not

null, null, null, null, null, null, null

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 <Nombre de la Base de Datos> Create table <Nombre de la Tabla> Create rule <Nombre de la Regla> Create view <Nombre de la Vista> Create stored procedures <Nombre del Procedimiento> Create function <Nombre de la funcin> Create trigger <Nombre del trigger o disparador> 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:

Elabor Margarita Ramrez Ramrez

Pag. No 5

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.

Elabor Margarita Ramrez Ramrez

Pag. No 6

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 Diego UPDATE Customer SET state ='Jalisco' WHERE LastName='Collado' and FirstName='Angel';

Elabor Margarita Ramrez Ramrez

Pag. No 7

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 entidad

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.

Elabor Margarita Ramrez Ramrez

Pag. No 8

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_Dato Ejemplo: exec sp_droptype city Donde 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

Elabor Margarita Ramrez Ramrez

Pag. No 9

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 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 Arquitectura

Una 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_bindefault
exec 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,

Elabor Margarita Ramrez Ramrez

Pag. No 10

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 cumple 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:

Elabor Margarita Ramrez Ramrez

Pag. No 11

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_codigocarrera

UNIQUE

Elabor Margarita Ramrez Ramrez

Pag. No 12

La 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.
Elabor Margarita Ramrez Ramrez Pag. No 13

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 RG_sueldo, 'empleados.sueldo';

Desligar una regla. Exec sp_unbindrule tabla.atributo 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;

Elabor Margarita Ramrez Ramrez

Pag. No 14

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. Exec sp_ helpconstraint 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". Exec sp_help Ejemplo: Regla para una columna de no_parte, en donde la columna debe iniciar con una p o t. Regla Create rule regla1 as @mivariable like p%or @mivariable like t% Enlazar la regla Exec sp_bindrule regla1 tabla.mivariable Eliminar regla drop rule regla1 Ejemplo Crea una tabla denominada EjemploRegla con los atributos caracter, valorentero, moneda. Crea una regla para cada atributo. Asocia las reglas a los atributos. Verifica el funcionamiento de las reglas.
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.caracter Exec sp_bindrule Reglaentero, Mitabla.valorentero Exec sp_bindrule Reglamoneda, Mitabla.moneda Go

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

Elabor Margarita Ramrez Ramrez

Pag. No 15

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 <lista_columnas> FROM <lista_tablas> WHERE <criterio_bsqueda> 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] <lista_seleccin> [ INTO nueva_tabla ] [ FROM <origen_tabla>] [ WHERE <condicion_busqueda>] * GROUP BY *ALL+ expresin_agrupar_por *,n+ + [ WITH { CUBE ROLLUP } ] ] [ HAVING <condicion_bsqueda> ] * ORDER BY ,nombre_columna * ASC DESC + - * ,n + [ COMPUTE { { AVG COUNT MAX MIN SUM } (expresin) } *,n+ *BY expression *,n+ + * FOR BROWSE + * OPTION (<sugerencia_consulta> *,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.

Elabor Margarita Ramrez Ramrez

Pag. No 16

Clusula FROM WHERE GROUP BY HAVING ORDER BY

Descripcin Utilizada para especficar la tabla de la cual se van a seleccionar los registros. Utilizada para especificar las condiciones que deben reunir los registros que se van a seleccionar. Utilizada para separar los registros seleccionados en grupos especficos. Utilizada para expresar la condicin que debe satisfacer cada grupo. Utilizada 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 <= 1000;

Desplegar apellido y nombre de la tabla Empleados en donde apellido = Martnez

Select apellido, nombre from empleados where apellido = Martnez

Desplegar apellido y nombre de la tabla Empleados en donde apellido inicie con la letra S y despus contenga una cadena de caracteres.
nombre from empleados where apellido like 'S*';

Select apellido y

Desplegar apellido y nombre de la tabla Empleados en donde salario este entre 200 y 300.

Select apellido, salario from empleados where salario between 200 and 300;

Operadores Lgicos Operador Uso AND Es el "y" lgico. Evala dos condiciones y devuelve un valor de verdad slo si ambas
Elabor Margarita Ramrez Ramrez

Pag. No 17

OR NOT

son ciertas. Es el "o" lgico. Evala dos condiciones y devuelve un valor de verdad si alguna de las dos es cierta. Negacin lgica. Devuelve el valor contrario de la expresin.

Operadores de Comparacin Operador < > <> <= >= = BETWEEN LIKE In Uso Menor que Mayor que Distinto de Menor Igual que Mayor Igual que Igual que Utilizado para especificar un intervalo de valores. Utilizado en la comparacin de un modelo Utilizado para especificar registros de

una

base

de

datos.

Ordenar registros Es posible especficar el orden en que se desean recuperar los registros de las tablas mediante la clasula ORDER BY Lista de Campos. En donde Lista de campos representa los campos a ordenar. Ejemplo:
SELECT CdigoPostal, Nombre, Telfono FROM Clientes ORDER BY Nombre;

Esta consulta devuelve los campos CdigoPostal, Nombre, Telfono de la tabla Clientes ordenados por el campo Nombre. Se pueden ordenar los registros por ms de un campo, como por ejemplo:
SELECT CdigoPostal, CdigoPostal, Nombre; Nombre, Telfono FROM Clientes ORDER BY

Incluso se puede especficar el orden de los registros: ascendente mediante la clasula (ASC -se toma este valor por defecto) descendente (DESC)
SELECT CdigoPostal, Nombre, CdigoPostal DESC, Nombre ASC; Telfono FROM Clientes ORDER BY

Consultas con Predicado El predicado se incluye entre la clasula y el primer nombre del campo a recuperar, los posibles predicados son:

Elabor Margarita Ramrez Ramrez

Pag. No 18

Predicado ALL TOP DISTINCT DISTINCTROW

Descripcin Devuelve todos los campos de la tabla Devuelve un determinado nmero de registros de la tabla Omite los registros cuyos campos seleccionados coincidan totalmente Omite los registros duplicados basndose en la totalidad del registro y no slo en los campos seleccionados.

ALL: Si no se incluye ninguno de los predicados se asume ALL. El Motor de base de datos selecciona todos los registros que cumplen las condiciones de la instruccin SQL. Ejemplo:
Select all from empleados; Select * from empleados;

TOP: Devuelve un cierto nmero de registros que entran entre al principio o al final de un rango especificado por una clusula ORDER BY. Supongamos que queremos recuperar los nombres de los 25 primeros estudiantes del curso 2012:
Select order by top no_est 25 desc; Nombre from Estudiante where curso=2012

DISTINCT: Omite los registros que contienen datos duplicados en los campos seleccionados.
Select distinct apellido from empleados;

El predicado DISTINCT devuelve aquellos registros cuyos campos indicados en la clusula SELECT poseen un contenido diferente. 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. Funcin AVG COUNT SUM MAX MIN Descripcin Calcula el promedio de los valores de un campo determinado Devuelve el nmero de registros de la seleccin Devuelve la suma de todos los valores de un campo determinado Devuelve el valor mayor de un campo especificado Devuelve 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.

Elabor Margarita Ramrez Ramrez

Pag. No 19

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: <expresin1> operador <expresin2> 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<50)

Select * from empleados where (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 condicin Not es opcional) where campo [Not] Between valor1 And valor2 (la

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;

Operador Like

Elabor Margarita Ramrez Ramrez

Pag. No 20

Se utiliza para comparar una expresin de cadena con un modelo en una sentencia SQL. Su sintaxis es: 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 * York'); from pedidos where ciudad In (Tijuana, 'Madrid', 'Londres', 'New

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

Elabor Margarita Ramrez Ramrez

Pag. No 21

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.

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, SELFJOIN. 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 Apellido IDDepartamento Andrade 31 Jordn 33 Steinberg 33 Rbinson 34 Zolano 34 Gaspar 36 Tabla Departamento NombreDepartamento IDDepartamento Ventas 31 Ingeniera 33 Produccin 34 Mercadeo 35

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. 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.

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

Elabor Margarita Ramrez Ramrez

Pag. No 22

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.Apellido Zolano Jordn Rbinson Steinberg Andrade Empleado.IDdep artamento 34 33 34 33 31 departamento.NombreDep artamento Produccin Ingeniera Produccin Ingeniera Ventas departamento.IDDepartame nto 34 33 34 33 31

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.IDDepartamento

Las 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.

Elabor Margarita Ramrez Ramrez

Pag. No 23

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.Apellido Andrade Jordn Steinberg Zolano Rbinson Gaspar Andrade Jordn Steinberg Solano Rbinson Gaspar Andrade Jordn Steinberg Solano Rbinson Gaspar Andrade Jordn Steinberg Solano Rbinson Gaspar Empleado.IDDepart amento 31 33 33 34 34 36 31 33 33 34 34 36 31 33 33 34 34 36 31 33 33 34 34 36 Departamento.NombreDeparta mento Ventas Ventas Ventas Ventas Ventas Ventas Ingeniera Ingeniera Ingeniera Ingeniera Ingeniera Ingeniera Produccin Produccin Produccin Produccin Produccin Produccin Mercadeo Mercadeo Mercadeo Mercadeo Mercadeo Mercadeo Departamento.IDDeparta mento 31 31 31 31 31 31 33 33 33 33 33 33 34 34 34 34 34 34 35 35 35 35 35 35

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.

Elabor Margarita Ramrez Ramrez

Pag. No 24

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. H. Ejemplo de tabla izquierda para la combinacin externa:
SELECT * FROM empleado LEFT OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento
Empleado.Apellido Jordn Andrade Robinson Zolano Gaspar Steinberg Empleado.IDDepartamento 33 31 34 34 36 33 Departamento.NombreDepartamento Ingeniera Ventas Produccin Produccin NULL Ingeniera Departamento.IDDepartamento 33 31 34 34 NULL 33

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.IDDepartamento
34 33 34 33 31 NULL

Empleado.Apellido
Solano Jordn Robinson Steinberg Andrade NULL

Departamento.NombreD epartamento
Produccin Ingeniera Produccin Ingeniera Ventas Mercadeo

Departamento.IDDepartamento
34 33 34 33 31 35

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

Elabor Margarita Ramrez Ramrez

Pag. No 25

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.Apellido Zolano Jordn Rbinson Gaspar Steinberg Andrade NULL Empleado.IDDepartamento 34 33 34 36 33 31 NULL Departamento.NombreDepartamento Produccin Ingeniera Produccin NULL Ingeniera Ventas Mercadeo Departamento.IDDepart amento 34 33 34 NULL 33 31 35

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

Vistas

Elabor Margarita Ramrez Ramrez

Pag. No 26

Una vista se define en SQL usando la orden CREATE VIEW. Para definir una vista debemos dar a la vista un nombre y declarar la consulta que calcula la vista. Una vez que establecemos una vista, podemos ejecutar una sentencia SELECT que referencie a esa vista. El sistema asociar la vista SQL con una tabla base y extraer y visualizar, entonces, los datos de la tabla base. Esto significa que una vista no contiene datos duplicados de una tabla base. No tiene absolutamente ningn dato, puesto que no es una tabla real, todo el proceso se realiza con los datos almacenados en la tabla base. Es decir, se percibe como una tabla virtual. Las rdenes que se utilizan para la manipulacin de vistas son: CREATE VIEW: Crea una tabla virtual DROP VIEW: Elimina una vista creada anteriormente

Estructura de la sentencia CREATE VIEW. CREATE VIEW nombre de la vista AS (expresin de consulta); Consideramos una tabla llamada CURSO, que contiene los siguientes campos:
Nombre del campo NumC NombreC DescC Crditos Costo Depto. Descripcin Nmero del curso, nico para identificar cada curso Nombre del curso. Descripcin del curso Crditos Costo del curso Departamento acadmico que ofrece el curso

Que contiene los siguientes datos:


NumC A01 S01 C01 B01 E01 S02 C02 B02 E02 S03 A01 C03 104 S05 I01 NombreC Liderazgo Introduccin a la inteligencia artificial Construccin de torres Situacin actual y perspectivas de la alimentacin y la nutricin Historia presente y futura de la energa solar Tecnologa OLAP Tecnologa del concreto y de la Estructura Metabolismo de lpidos en el camarn Los sistemas elctricos de potencia Estructura de datos Diseo bioclimtico Matemticas discretas Circuitos digitales Arquitectura de computadoras Base de Datos Relacionales DescC Para pblico general Para ISC y LI Para IC y Arquitectura Para IB Para IE e II Para ISC y LI Para IC Para IB Para IE Para ISC y LI Para Arquitectura General Para ISC Para ISC Para ISC y LI Crditos 10 10 8 8 10 8 10 10 10 8 10 8 10 10 10 Costo 100.00 90.00 0.00 80.00 100.00 100.00 100.00 0.00 100.00 0.00 0.00 0.00 0.00 50.00 150.00 Depto. Admn. Sistemas Ciencia Bioqumica Electromecnica Sistemas Ciencias Bioqumica Electromecnica Sistemas Arquitectura Ciencias Sistemas Sistemas Informtica

Ejemplos:

Elabor Margarita Ramrez Ramrez

Pag. No 27

Crear una vista (tabla virtual), denominada CursosS, que contenga las filas correspondientes a cursos ofrecidos por el departamento Sistemas. La vista deber contener todas las columnas de la tabla CURSO, con la excepcin de la columna Depto., la secuencia, de izquierda a derecha de las columnas, deber ser: NombreC, NumC, Creditos, Costo y DescC.
CREATE VIEW CursosS AS SELECT NombreC, NumC, Creditos, Costo, DescC FROM CURSO WHERE DescC=Sistemas:

Crear una vista denominada CursosCaros, correspondientes a las filas de la tabla CURSO, en donde la tarifa exceda de $150, las columnas de la vista debern tener los nombres ClaveCurso, NombreCurso y CostoCaro.
CREATE VIEW CursosCaros (ClaveCurso, NombreCurso, CostoCaro) AS SELECT NumC, NombreC, Costo FROM Curso WHERE Costo > 150:

Visualizar las vistas Creamos una tabla virtual que contiene los datos de las consultas que deseamos, ahora nos falta visualizar estos datos, para ello utilizamos la sentencia SELECT y realizamos la consulta:
SELECT* FROM CursosCaros;

De esta consulta podemos observar que mostramos todos los campos que la vista contiene, aunque podemos visualizar slo alguno de ellos, tambin observamos que sustituimos el nombre de la vista por el de la tabla junto a la sentencia FROM, esto es porque una vista es una tabla virtual, pero guarda los datos como cualquier tabla normal. Eliminar una vista Como si fuera una tabla normal, las vistas tambin pueden borrarse, para ello utilizamos la sentencia DROP VIEW. Estructura de la sentencia DROP VIEW DROP VIEW nombre de la vista a borrar; Ejemplo: borrar la vista CursosCaros creada anteriormente

Procedimientos almacenados

Elabor Margarita Ramrez Ramrez

Pag. No 28

Un procedimiento almacenado (stored procedure) es un programa (o procedimiento) el cual es almacenado fsicamente en una base de datos. Su implementacin vara de un gestor de bases de datos a otro. La ventaja de un procedimiento almacenado es que es ejecutado directamente en el motor de bases de datos, posee acceso directo a los datos que necesita manipular y slo envia sus resultados de regreso al usuario. Los procedimientos pueden ser ventajosos: cuando una base de datos es manipulada desde muchos programas externos. Al incluir la logstica de la aplicacin en la base de datos utilizando procedimientos almacenados, la necesidad de embeber la misma lgica en todos los programas que acceden a los datos es reducida. Esto puede simplificar la creacin y, particularmente, el mantenimiento de los programas involucrados. Ejemplo usando la base pubs Use pubs --Procedimiento almacenado que regresa en 2 variables el nmero de filas que tienen las tablas autores y ttulos
use pubs Create procedure Numfilas @NumFilasAutores varchar(15) output, @NumFilasTitulos varchar(10) output as begin Select @NumFilasAutores = (au_id) from authors Select @NumFilasTitulos = (title_id) from titles end select au_id from authors select title_id from titles declare @s varchar(15), @a varchar(10) exec Numfilas @NumFilasAutores = @s output, @NumFilasTitulos =@a output select @s as NoAutores, @a as NoTitulos

/* Procedimiento almacenado que despliega los libros, sus tipos y el nombre de los autores de la base de datos pubs*/
use pubs Create procedure ProcLibros_Autores as begin select title, titles. type from titles select au_fname + ' ' + au_lname as Nombre from authors end execute ProcLibros_Autores

/* Procedimiento almacenado que muestre el resumen de monto de ventas de cada una de las librerias*/
Create procedure ProcVentas as

Elabor Margarita Ramrez Ramrez

Pag. No 29

begin select stores.stor_id, sales.ord_num from sales join stores on stores.stor_id = sales.stor_id end execute ProcVentas

/* Procedimiento almacenado que despliegue todas las ventas del ao 94*/


Create procedure ProcVentas94 as begin select * from sales where year (ord_date) = 1994 end execute ProcVentas94

/*Procedimiento

CREATE PROCEDURE dbo.MathTutor @m1 smallint, @m2 smallint, @result int OUTPUT AS SET @result = @m1 * @m2 GO DECLARE @answer smallint EXECUTE MathTutor 5,6, @answer OUTPUT SELECT 'The result is: ', @answer

Ejemplo Ventas Creacin de B.D. para almacenar los registros de ventas, crear procedimientos para dar de alta registros en una tabla Libros, vendedor, ventas.
Create database Ejemplo Use Ejemplo /*Libro, vendedor, factura, ventas*/ create table Libros ( idLibro int, titulo char (25), autor char (25), Precio Money, Primary key (idLibro)

Elabor Margarita Ramrez Ramrez

Pag. No 30

) Create table Vendedor ( VendedorId int not null, Nombre char (25), Sueldo Money, Primary key (VendedorId) ) Create table Factura ( FacturaId int not null, VendedorId int not null, Fecha datetime, Primary key (FacturaId), Foreign key (VendedorId) references Vendedor (VendedorId) ) Create table Venta ( Folio char (25), IdLibro char (25), Primary key (Folio,IdLibro) ) Create procedure ALTALIBRO @id int, @titulo varchar (50), @autor varchar (50), @precio money as begin insert into Libros (idLibro, Titulo, Autor, Precio) values (@id, @titulo, @autor, @precio) end create procedure ALTAVENDEDOR @id int, @nombre varchar (50), @sueldo Money as begin insert into vendedor (vendedorid, nombre, sueldo) values (@id, @nombre, @sueldo) end drop procedure realizaventa exec ALTALIBRO 00001, 'Flores en el atico','Andrew',150 exec ALTALIBRO 00002, 'Ptalos al viento','Andrew',200 exec ALTALIBRO 00003, 'El alquimista','Paulo Coehlo',250 exec ALTAVENDEDOR 00001, 'No Gmez', 5000 exec ALTAVENDEDOR 00002, 'Ana Prez', 4000 exec ALTAVENDEDOR 00003, 'Edgar Morn',4500

Elabor Margarita Ramrez Ramrez

Pag. No 31

SELECT * FROM LIBROS SELECT * FROM VENDEDOR DROP PROCEDURE realizaventa create procedure realizaventa @folio int, @vendedorId int, @IdLibro int as begin insert into factura (FacturaId, fecha, VendedorId) values (@folio, getdate (), @vendedorId) insert into Venta (Folio, IdLibro) values (@Folio, @IdLibro) end exec realizaventa 001, 0001, 0001 SELECT * FROM FACTURA SELECT * FROM VENTA

Triggers Un trigger (o desencadenador) es una clase especial de procedimiento almacenado que se ejecuta automticamente cuando se produce un evento en el servidor de bases de datos. SQL Server proporciona los siguientes tipos de triggers: Trigger DML. Se ejecuta cuando un usuario intenta modificar datos mediante un evento de lenguaje de manipulacin de datos (DML). Los eventos DML son instrucciones INSERT, UPDATE o DELETE de una tabla o vista. Trigger DDL. Se ejecutan en respuesta a una variedad de eventos de lenguaje de definicin de datos (DDL). Estos eventos corresponden principalmente a instrucciones CREATE, ALTER y DROP de Transact-SQL, y a determinados procedimientos almacenados del sistema que ejecutan operaciones de tipo DDL.

Ejemplo Se crea un trigger para las acciones de insertar y borrar registros en las tablas Ventas y Venta_Articulo /*Triggers*/
Create Trigger InsertarVentas on Venta For Insert As BEGIN Print (Registro de venta dado de alta) END Create Trigger BorradoVentas on Venta For Delete AS BEGIN

Elabor Margarita Ramrez Ramrez

Pag. No 32

Print (Registro de venta eliminado) END

Como resultado en las operaciones de la transaccin aparecen estos mensajes cuando se manipulan los registros de las tablas, por el ejemplo al ejecutar las siguientes instrucciones
Delete Ventas Delete Libros

Se tiene como resultado lo siguiente:


Registro de venta eliminado (1 row(s) affected) Registro de Libro eliminado (2 row(s) affected)

Elabor Margarita Ramrez Ramrez

Pag. No 33

También podría gustarte