Manual de SQL Server 2005
Click here to load reader
-
Upload
perez-munguia-jenrry -
Category
Documents
-
view
326 -
download
2
Transcript of Manual de SQL Server 2005
![Page 1: Manual de SQL Server 2005](https://reader038.fdocuments.es/reader038/viewer/2022100420/54781ad6b4af9fa2108b4b35/html5/thumbnails/1.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022100420/54781ad6b4af9fa2108b4b35/html5/thumbnails/2.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022100420/54781ad6b4af9fa2108b4b35/html5/thumbnails/3.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022100420/54781ad6b4af9fa2108b4b35/html5/thumbnails/4.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022100420/54781ad6b4af9fa2108b4b35/html5/thumbnails/5.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022100420/54781ad6b4af9fa2108b4b35/html5/thumbnails/6.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022100420/54781ad6b4af9fa2108b4b35/html5/thumbnails/7.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022100420/54781ad6b4af9fa2108b4b35/html5/thumbnails/8.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022100420/54781ad6b4af9fa2108b4b35/html5/thumbnails/9.jpg)
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](https://reader038.fdocuments.es/reader038/viewer/2022100420/54781ad6b4af9fa2108b4b35/html5/thumbnails/10.jpg)
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