Manual de SQL Server 2005

10

Click here to load reader

Transcript of Manual de SQL Server 2005

Page 1: Manual de SQL Server 2005

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.

Page 2: Manual de SQL Server 2005

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

- 2 -

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

Page 3: Manual de SQL Server 2005

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

- 3 -

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

Page 4: Manual de SQL Server 2005

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

- 4 -

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'

)

Page 5: Manual de SQL Server 2005

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

- 5 -

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),

Page 6: Manual de SQL Server 2005

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

- 6 -

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

Page 7: Manual de SQL Server 2005

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

- 7 -

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',

Page 8: Manual de SQL Server 2005

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

- 8 -

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

Page 9: Manual de SQL Server 2005

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

- 9 -

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

Page 10: Manual de SQL Server 2005

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

- 10 -

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