You are on page 1of 10

MANUAL DE SQL SERVER 2005

Autor: Mae. Jorge A. Giarelli


Universidad Tecnológica de Honduras
Julio 2008
“Cambiemos a Honduras con Educación y Trabajo Duro”

Contenido
Conceptos / Conceptualización.......................................................................................................1
Base de Datos................................................................................................................................ 2
Estructura Física de una Base de Datos ...................................................................................... 2
Estructura Lógica de una Base de Datos .....................................................................................3
Consideraciones Especiales para todos los Objetos ....................................................................3
Creando Objetos ........................................................................................................................3
Como Manipular Datos de una Base de Datos ............................................................................3
Ejemplo – Base de Datos “Eventos” ........................................................................................... 4
Creación de Vistas .......................................................................................................................... 7
Procedimientos Almacenados ........................................................................................................ 7
Disparadores / Triggers ................................................................................................................. 8
Ejemplo de Disparador / Trigger ................................................................................................ 9

Conceptos / Conceptualización

1. Base de Datos (Database): Para SQL Server es simplemente una colección de objetos
administrados lógicamente como una unidad.

1. Tabla (Table): Es una colección de información relevante para el usuario. Las tablas están
compuestas por una colección de campos.

2. Campo (Field): Espacio de memoria que posee un nombre y un tipo, que es utilizado para
referirse a un dato especifico en una tabla.

3. Registro: Conjunto de campos que contienen información.


Manual de SQL Server 2005 – Autor: Jorge A. Giarelli – Julio 2008

4. Índice (Index): Son estructuras asociadas con una tabla o vista y brindan la posibilidad de
acelerar la recuperación de datos. (Lista de Valores ordenados y controlados por la base
de datos)

5. Llave Principal (Primary Key): Es el identificador único de un registro de una tabla que no
puede repetirse.

6. Llave Extranjera (Foreing Key): Es el identificador en una tabla que apunta o hace
referencia a una llave primaria de otra tabla.

7. Diagrama Entidad Relación (DER): Forma grafica de las restricciones e integridad de una
base de datos a nivel de tablas.

8. Consultas (Query / Views): Es la representación lógica de los campos de una o más


tablas

9. Procedimientos Almacenados ( Stored Procedure): Son pequeños programas que


realizan acciones específicas de acuerdo a las necesidades del DBA. Este programa está
escrito en Transact-SQL (T-SQL).

10. Función (Function): Son pequeños programas que se utilizan generalmente para devolver
valores específicos a una vista u otros objetos de la base datos. Este programa está escrito
en Transact-SQL (T-SQL).

11. Disparador (Trigger): Son pequeños programas que se utilizan para controlar las
acciones que un usuario puede realizar en una determinada tabla de la base de datos

12. Normalización: Proceso sistema para transformar información en estructuras lógicas


minimizando la redundancia de datos y asegurando la integridad de los mismos.

Base de Datos

Estructura Física de una Base de Datos


Una base de datos está compuesta físicamente de varios archivos en disco, dos como mínimo:

1. Archivo Principal: Este archivo generalmente tiene el mismo nombre de la base de datos
más la frase _DATA y con extensión MDF
2. Archivo de Registro de Transacciones (Log): Este archivo generalmente tiene el mismo
nombre de la base de datos más la frase _LOG y con extensión LDF

- 2 -
Manual de SQL Server 2005 – Autor: Jorge A. Giarelli – Julio 2008

Estructura Lógica de una Base de Datos


Una base de datos está compuesta lógicamente por lo siguientes tipos de objetos o
componentes:

1. Tablas
2. Índices
3. Vistas
4. Procedimientos Almacenados
5. Otros Elementos Lógicos

** Para definición de cada elemento ver sección de conceptos

Consideraciones Especiales para todos los Objetos


1. El nombre que se le dará al objeto/ Componente debe ser Único o sea que no se debe
repetir en la misma base de datos.
2. El nombre del objeto no debe llevar espacios ni caracteres especiales.
3. Se procura no usar abreviaturas en los nombres para evitar confusiones u olvidos.

Creando Objetos
Los objetos pueden ser creados por medio de un ambiente gráfico o utilizando sentencias SQL
para cada tipo de ellos. A continuación ejemplos de la creación de objetos por medio de sentencia
o SCRIPTs.

Acción Requerida Crear el Objeto Eliminar el Objeto


Crear una base de datos CREATE DATABASE DROP DATABASE
Crear una tabla CREATE TABLE DROP TABLE
Crear Vista CREATE VIEW DROP VIEW
Crear Procedimiento Almacenado CREATE PROCEDURE DROP PROCEDURE
Crear Función CREATE FUNCTION DROP FUNCTION

Como Manipular Datos de una Base de Datos


Todas las bases de datos mundialmente conocidas están estandarizas para soportar un lenguaje
mundial llamado SQL /Structured Query Lenguage) con ligeras variaciones una de otra, pero las
sentencias estándares básicas son iguales en casi todas las base de datos.

Acción Requerida Crear el Objeto


Consultar Datos SELECT
Agregar Datos / Insertar Datos INSERT
Modificar Datos UPDATE
Eliminar / Borrar Datos DELETE

- 3 -
Manual de SQL Server 2005 – Autor: Jorge A. Giarelli – Julio 2008

Ejemplo – Base de Datos “Eventos”


 Paso No. 1: Crear la Base de Datos

CREATE DATABASE CONTROL_EVENTOS

 Paso No. 2: Poner en uso la base de datos creada

USE CONTROL_EVENTOS

 Paso No. 3: Crear tabla “Eventos”

CREATE TABLE EVENTOS


( CODIGO_EVENTO INT,
DESCRIPCION_EVENTO VARCHAR(50),
LUGAR_EVENTO VARCHAR(50),
FECHA_EVENTO DATETIME
)

 Paso No. 4: Introducir un nuevo evento en la tabla de “Eventos”

INSERT INTO EVENTOS( CODIGO_EVENTO,


DESCRIPCION_EVENTO,
LUGAR_EVENTO,
FECHA_EVENTO)
VALUES (1,
'CONFERENCIA ORACLE',
'COSTARICA',
'08-01-2008'
)

 Paso No. 5: Consultar el Evento introducido

SELECT CODIGO_EVENTO,
DESCRIPCION_EVENTO,
LUGAR_EVENTO,
FECHA_EVENTO
FROM EVENTOS

 Paso No. 6: Introducir un nuevo evento en la tabla de “Eventos”

INSERT INTO EVENTOS( CODIGO_EVENTO,


DESCRIPCION_EVENTO,
LUGAR_EVENTO,
FECHA_EVENTO)
VALUES (2,
'CONFERENCIA HP',
'COSTARICA',
'08-02-2008'
)

- 4 -
Manual de SQL Server 2005 – Autor: Jorge A. Giarelli – Julio 2008

 Paso No. 7: Consultar el Evento introducido

SELECT CODIGO_EVENTO,
DESCRIPCION_EVENTO,
LUGAR_EVENTO,
FECHA_EVENTO
FROM EVENTOS

 Paso No. 8: Introducir un nuevo evento en la tabla de “Eventos”

INSERT INTO EVENTOS( CODIGO_EVENTO,


DESCRIPCION_EVENTO,
LUGAR_EVENTO,
FECHA_EVENTO)
VALUES (3,
'GRADUACION JUNIO 2008',
'HONDURAS - UTH',
'06-26-2009'
)
 Paso No. 9: Consultar el Evento introducido

SELECT CODIGO_EVENTO,
DESCRIPCION_EVENTO,
LUGAR_EVENTO,
FECHA_EVENTO
FROM EVENTOS

 Paso No. 10: Crear Información estadística de los eventos


a. Se desea saber cuántos eventos se han realizado y están en la base de datos

SELECT COUNT(*) AS TOTAL_EVENTOS


FROM EVENTOS

b. Se desea saber cuántos eventos se han realizado por Lugar

SELECT LUGAR_EVENTO,
COUNT(*) AS TOTAL_EVENTOS
FROM EVENTOS
GROUP BY LUGAR_EVENTO

c. Se desea saber cuántos eventos se han realizado por año

SELECT YEAR(FECHA_EVENTO) AS AÑO,


COUNT(*) AS TOTAL_EVENTOS
FROM EVENTOS
GROUP BY YEAR(FECHA_EVENTO)

d. Se desea saber cuántos eventos se han realizado por mes

SELECT YEAR(FECHA_EVENTO) AS AÑO,


MONTH(FECHA_EVENTO) AS MES,
COUNT(*) AS TOTAL_EVENTOS
FROM EVENTOS
GROUP BY YEAR(FECHA_EVENTO),
- 5 -
Manual de SQL Server 2005 – Autor: Jorge A. Giarelli – Julio 2008

MONTH(FECHA_EVENTO)

 Paso No. 11: Otras consultas


a. Se desea saber cuáles son los eventos pendientes de hoy en adelante

SELECT *
FROM EVENTOS
WHERE FECHA_EVENTO > GETDATE()

b. Se desea saber cuántos días faltan para tener los eventos de hoy en adelante.

SELECT *, DATEDIFF("DD",GETDATE(), FECHA_EVENTO) AS


DIFERENCIA
FROM EVENTOS
WHERE FECHA_EVENTO > GETDATE()

 Paso No. 12: Actualizaciones y Eliminaciones


a. Se desean posponer los eventos del año 2008 10 días después de su fecha original

SELECT CODIGO_EVENTO,
DESCRIPCION_EVENTO,
DATEADD("dd", 10, FECHA_EVENTO) AS NUEVA_FECHA
FROM EVENTOS
WHERE YEAR(FECHA_EVENTO) = 2008

UPDATE EVENTOS
SET FECHA_EVENTO = DATEADD("dd", 10, FECHA_EVENTO)
WHERE YEAR(FECHA_EVENTO) = 2008

b. Se desea actualizar el Lugar del Evento con Código Número 3 y colocarle “HOTEL
MARRIOT”

UPDATE EVENTOS
SET LUGAR_EVENTO = 'HOTEL MARRIOT'
WHERE CODIGO_EVENTO = 3

c. Se desea eliminar el Evento con Código Número 2.

DELETE
FROM EVENTOS
WHERE CODIGO_EVENTO = 2

d. Se desea eliminar todos los eventos de la tabla.

DELETE
FROM EVENTOS

- 6 -
Manual de SQL Server 2005 – Autor: Jorge A. Giarelli – Julio 2008

Creación de Vistas
Una vista es la representación lógica de los campos de una o más tablas, las cuales deben estar
relacionadas entre sí por uno o más campos específicos.

1. Se desea crear una vista (objeto lógico) que muestre solamente el Nombre del Evento y la
Fecha del mismo.
a. Paso No. 1: Preparar una consulta con el comando SELECT para obtener la
información solicitada.

SELECT CODIGO_EVENTO,
DESCRIPCION_EVENTO
FROM EVENTOS

b. Paso No. 2: Crear la vista basándose en el comando del inciso a

CREATE VIEW VISTA_EVENTOS


AS
SELECT CODIGO_EVENTO,
DESCRIPCION_EVENTO
FROM EVENTOS

c. Paso No. 3: Utilizar la vista como que fuese una tabla.

SELECT * FROM EVENTOS

Procedimientos Almacenados
Un procedimiento almacenado es un pequeño programa que realiza acciones específicas de
acuerdo a las necesidades del DBA. Este programa está escrito en Transact-SQL (T-SQL).

Ejemplo Procedimiento Almacenado:

CREATE PROCEDURE CREAR_INFORMACION_EVENTOS


AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

USE CONTROL_EVENTOS
--------------------------------
-- INSERTAR UN NUEVO REGISTRO --
--------------------------------
INSERT INTO EVENTOS( CODIGO_EVENTO,
DESCRIPCION_EVENTO,
LUGAR_EVENTO,
FECHA_EVENTO)
VALUES (1,
'CONFERENCIA ORACLE',
'COSTARICA',

- 7 -
Manual de SQL Server 2005 – Autor: Jorge A. Giarelli – Julio 2008

'08-01-2008'
)

--------------------------------
-- INSERTAR UN NUEVO REGISTRO --
--------------------------------
INSERT INTO EVENTOS( CODIGO_EVENTO,
DESCRIPCION_EVENTO,
LUGAR_EVENTO,
FECHA_EVENTO)
VALUES (2,
'CONFERENCIA HP',
'COSTARICA',
'08-02-2008'
)

--------------------------------
-- INSERTAR UN NUEVO REGISTRO --
--------------------------------
INSERT INTO EVENTOS( CODIGO_EVENTO,
DESCRIPCION_EVENTO,
LUGAR_EVENTO,
FECHA_EVENTO)
VALUES (3,
'GRADUACION JULIO 2009',
'UTH',
'06-26-2008'
)

END

Disparadores / Triggers
Un disparador o triggers se utiliza para controlar las acciones que un usuario puede realizar en
determinada tabla de la base de datos, por ejemplo: si una persona desea introducir un nuevo
evento en la tabla de eventos, podríamos crear un disparador para que se actualice el número de
eventos que se encuentra en otra tabla.

Las acciones que pueden controlarse son las siguientes:

 INSERT – Cuando un usuario inserta /agrega registros a una tabla.


 UPDATE – cuando el usuario actualiza los datos de una tabla.
 DELETE – Cuando el usuario elimina registros de una tabla.

- 8 -
Manual de SQL Server 2005 – Autor: Jorge A. Giarelli – Julio 2008

Ejemplo de Disparador / Trigger

1. Crearemos una nueva tabla para almacenar información resumida de los eventos
realizados

USE CONTROL_EVENTOS

DROP TABLE RESUMEN_EVENTOS

CREATE TABLE RESUMEN_EVENTOS


(
CANTIDAD_EVENTOS INT
)

2. Crearemos un Disparador / Trigger para que cuando se inserte un nuevo evento se


actualice la tabla RESUMEN_EVENTOS

CREATE TRIGGER DESPUES_AGREGAR_REGISTROS


ON EVENTOS
AFTER INSERT
AS
BEGIN
------------------------------
-- DECLARACION DE VARIABLES --
------------------------------
DECLARE @REGISTROS_INSERTADOS INT,
@REGISTROS_RESUMEN INT

-- SET NOCOUNT ON added to prevent extra result sets from


-- interfering with SELECT statements.
SET NOCOUNT ON;

----------------------------------------------------
-- ENCONTRAR CUANTOS REGISTROS HAN SIDO INSERTADOS -
----------------------------------------------------
SELECT @REGISTROS_INSERTADOS = COUNT(*)
FROM INSERTED

--------------------------------------------------------
-- VERIFICAR SI HAY REGISTROS EN LA TABLA DE RESUMENES -
--------------------------------------------------------
SELECT @REGISTROS_RESUMEN = COUNT(*)
FROM RESUMEN_EVENTOS

IF(@REGISTROS_RESUMEN > 0)
BEGIN
-- ENCONTRO DATOS O SEA QUE DEBEMOS ACTUALIZARLO
UPDATE RESUMEN_EVENTOS
SET CANTIDAD_EVENTOS = CANTIDAD_EVENTOS +
@REGISTROS_INSERTADOS

- 9 -
Manual de SQL Server 2005 – Autor: Jorge A. Giarelli – Julio 2008

END
ELSE
BEGIN
-- NO ENCONTRO DATOS O SEA QUE DEBEMOS INSERTARLO
INSERT INTO RESUMEN_EVENTOS (CANTIDAD_EVENTOS)
VALUES(@REGISTROS_INSERTADOS)

END

END

3. Verificar que la tabla de RESUMEN_EVENTOS contenga datos.

SELECT * FROM RESUMEN_EVENTOS

- 10 -

You might also like