Curso de SQL Server. Índice del cursodocshare01.docshare.tips/files/23973/239736294.pdf · 2016....

178
1 Curso de SQL Server. Índice del curso Í n d i c e d e t a l l a d o Unidad 1. El entorno gráfico SSMS 1.1. Introducción 1.2. Instalar SQL Server 2005 1.3. Entrada al SQL Server Management Studio Introducción a las bases de datos Ediciones de SQL Server 2005 1.4. Estructura interna de una base de datos 1.5. Crear una base de datos en SSMS 1.6. Adjuntar una base de datos 1.7. Conectar y Desconectar la base de datos 1.8. Crear una nueva tabla 1.9. Tipos de datos 1.10. Valores nulos 1.11. Columna con contador 1.12. Clave primaria 1.13. Añadir o eliminar columnas 1.14. Modificar la definición de una tabla 1.15. Insertar datos en la tabla 1.16. Modificar datos 1.17. Eliminar filas 1.18. Relacionar tablas 1.19. Abrir una nueva consulta 1.20. Escribir y ejecutar código TRANSACT-SQL 1.21. La base de datos predeterminada 1.22. El editor de texto 1.23. Configurar un esquema de colores personalizado 1.24. Las Vistas 1.25. El panel de diagrama 1.26. El panel de criterios 1.27. El panel SQL Unidad 2. Introducción al SQL. Transact-SQL 2.1. Conceptos básicos de SQL 2.2. Introducción al TRANSACT- SQL 2.3. Características generales del lenguaje Transact-SQL 2.4. Reglas de formato de los identificadores 2.5. Tipos de datos 2.6. Las constantes Unidad 5. Consultas de resumen 5.1. Introducción 5.2. Las funciones de agregado 5.3. La función COUNT 5.4. La función COUNT_BIG 5.5. La función MAX 5.6. La función MIN 5.7. La función SUM 5.8. La función AVG 5.9. La función VAR 5.10. La función VARP 5.11. La función STDEV 5.12. La función STDEVP 5.13. La función GROUPING 5.14. Agrupamiento de filas (cláusula GROUP BY). 5.15. Selección sobre grupos de filas, la cláusula HAVING Unidad 6. Las subconsultas 6.1. Introducción 6.2. Subconsultas de resultado único 6.3. Subconsultas de lista de valores 6.4. El operador IN con subconsulta 6.5. La comparación modificada (ANY, ALL) 6.6. Subconsultas con cualquier número de columnas (EXISTS) Unidad 7. Actualización de datos 7.1. Introducción 7.2. Insertar creando una nueva tabla 7.3. Insertar en una tabla existente INSERT INTO 7.4. Insertar una fila de valores 7.5. Inserción de varias filas 7.6. Insertar una fila de valores por defecto 7.7. Modificar datos almacenados - UPDATE 7.8. Eliminar filas - DELETE 7.9. Borrado masivo - TRUNCATE Unidad 8. El DDL, Lenguaje de

Transcript of Curso de SQL Server. Índice del cursodocshare01.docshare.tips/files/23973/239736294.pdf · 2016....

  • 1

    Curso de SQL Server. Índice del curso

    Í n d i c e d e t a l l a d o

    Unidad 1. El entorno gráfico SSMS

    1.1. Introducción 1.2. Instalar SQL Server 2005 1.3. Entrada al SQL Server

    Management Studio Introducción a las bases de datos Ediciones de SQL Server 2005 1.4. Estructura interna de una base

    de datos 1.5. Crear una base de datos en

    SSMS 1.6. Adjuntar una base de datos 1.7. Conectar y Desconectar la base

    de datos 1.8. Crear una nueva tabla 1.9. Tipos de datos 1.10. Valores nulos 1.11. Columna con contador 1.12. Clave primaria 1.13. Añadir o eliminar columnas 1.14. Modificar la definición de una

    tabla 1.15. Insertar datos en la tabla 1.16. Modificar datos 1.17. Eliminar filas 1.18. Relacionar tablas 1.19. Abrir una nueva consulta 1.20. Escribir y ejecutar código

    TRANSACT-SQL 1.21. La base de datos

    predeterminada 1.22. El editor de texto 1.23. Configurar un esquema de

    colores personalizado 1.24. Las Vistas 1.25. El panel de diagrama 1.26. El panel de criterios 1.27. El panel SQL

    Unidad 2. Introducción al SQL. Transact-SQL

    2.1. Conceptos básicos de SQL 2.2. Introducción al TRANSACT-

    SQL 2.3. Características generales del

    lenguaje Transact-SQL 2.4. Reglas de formato de los

    identificadores 2.5. Tipos de datos 2.6. Las constantes

    Unidad 5. Consultas de resumen

    5.1. Introducción 5.2. Las funciones de agregado 5.3. La función COUNT 5.4. La función COUNT_BIG 5.5. La función MAX 5.6. La función MIN 5.7. La función SUM 5.8. La función AVG 5.9. La función VAR 5.10. La función VARP 5.11. La función STDEV 5.12. La función STDEVP 5.13. La función GROUPING 5.14. Agrupamiento de filas

    (cláusula GROUP BY). 5.15. Selección sobre grupos de

    filas, la cláusula HAVING

    Unidad 6. Las subconsultas

    6.1. Introducción 6.2. Subconsultas de resultado

    único 6.3. Subconsultas de lista de valores 6.4. El operador IN con subconsulta 6.5. La comparación modificada

    (ANY, ALL) 6.6. Subconsultas con cualquier

    número de columnas (EXISTS)

    Unidad 7. Actualización de datos

    7.1. Introducción 7.2. Insertar creando una nueva

    tabla 7.3. Insertar en una tabla

    existente INSERT INTO 7.4. Insertar una fila de valores 7.5. Inserción de varias filas 7.6. Insertar una fila de valores por

    defecto 7.7. Modificar datos almacenados -

    UPDATE 7.8. Eliminar filas - DELETE 7.9. Borrado masivo - TRUNCATE

    Unidad 8. El DDL, Lenguaje de

    http://www.aulaclic.es/sqlserver/t_1_1.htmhttp://www.aulaclic.es/sqlserver/t_1_1.htmhttp://www.aulaclic.es/sqlserver/t_1_1.htm#ap_01_01http://www.aulaclic.es/sqlserver/t_1_1.htm#ap_01_02http://www.aulaclic.es/sqlserver/t_1_1.htm#ap_01_03http://www.aulaclic.es/sqlserver/t_1_1.htm#ap_01_03http://www.aulaclic.es/sqlserver/b_1_1_1.htmhttp://www.aulaclic.es/sqlserver/a_1_1_1.htmhttp://www.aulaclic.es/sqlserver/t_1_2.htm#ap_01_04http://www.aulaclic.es/sqlserver/t_1_2.htm#ap_01_04http://www.aulaclic.es/sqlserver/t_1_2.htm#ap_01_05http://www.aulaclic.es/sqlserver/t_1_2.htm#ap_01_05http://www.aulaclic.es/sqlserver/t_1_5.htm#ap_01_06http://www.aulaclic.es/sqlserver/t_1_5.htm#ap_01_07http://www.aulaclic.es/sqlserver/t_1_5.htm#ap_01_07http://www.aulaclic.es/sqlserver/t_1_6.htm#ap_01_08http://www.aulaclic.es/sqlserver/t_1_6.htm#ap_01_09http://www.aulaclic.es/sqlserver/t_1_7.htm#ap_01_10http://www.aulaclic.es/sqlserver/t_1_7.htm#ap_01_11http://www.aulaclic.es/sqlserver/t_1_7.htm#ap_01_12http://www.aulaclic.es/sqlserver/t_1_8.htm#ap_01_13http://www.aulaclic.es/sqlserver/t_1_8.htm#ap_01_14http://www.aulaclic.es/sqlserver/t_1_8.htm#ap_01_14http://www.aulaclic.es/sqlserver/t_1_9.htm#ap_01_15http://www.aulaclic.es/sqlserver/t_1_9.htm#ap_01_16http://www.aulaclic.es/sqlserver/t_1_9.htm#ap_01_17http://www.aulaclic.es/sqlserver/t_1_9.htm#ap_01_18http://www.aulaclic.es/sqlserver/t_1_11.htm#ap_01_19http://www.aulaclic.es/sqlserver/t_1_11.htm#ap_01_20http://www.aulaclic.es/sqlserver/t_1_11.htm#ap_01_20http://www.aulaclic.es/sqlserver/t_1_12.htm#ap_01_21http://www.aulaclic.es/sqlserver/t_1_12.htm#ap_01_21http://www.aulaclic.es/sqlserver/t_1_13.htm#ap_01_22http://www.aulaclic.es/sqlserver/t_1_13.htm#ap_01_23http://www.aulaclic.es/sqlserver/t_1_13.htm#ap_01_23http://www.aulaclic.es/sqlserver/t_1_13.htm#ap_01_24http://www.aulaclic.es/sqlserver/t_1_14.htm#ap_01_25http://www.aulaclic.es/sqlserver/t_1_14.htm#ap_01_26http://www.aulaclic.es/sqlserver/t_1_15.htm#ap_01_27http://www.aulaclic.es/sqlserver/t_2_1.htmhttp://www.aulaclic.es/sqlserver/t_2_1.htmhttp://www.aulaclic.es/sqlserver/t_2_1.htm#ap_02_01http://www.aulaclic.es/sqlserver/t_2_1.htm#ap_02_02http://www.aulaclic.es/sqlserver/t_2_1.htm#ap_02_02http://www.aulaclic.es/sqlserver/t_2_2.htm#ap_02_03http://www.aulaclic.es/sqlserver/t_2_2.htm#ap_02_03http://www.aulaclic.es/sqlserver/t_2_3.htm#ap_02_04http://www.aulaclic.es/sqlserver/t_2_3.htm#ap_02_04http://www.aulaclic.es/sqlserver/t_2_3.htm#ap_02_05http://www.aulaclic.es/sqlserver/t_2_3.htm#ap_02_06http://www.aulaclic.es/sqlserver/t_5_1.htmhttp://www.aulaclic.es/sqlserver/t_5_1.htmhttp://www.aulaclic.es/sqlserver/t_5_1.htm#ap_05_01http://www.aulaclic.es/sqlserver/t_5_1.htm#ap_05_02http://www.aulaclic.es/sqlserver/t_5_2.htm#ap_05_03http://www.aulaclic.es/sqlserver/t_5_2.htm#ap_05_04http://www.aulaclic.es/sqlserver/t_5_2.htm#ap_05_05http://www.aulaclic.es/sqlserver/t_5_2.htm#ap_05_06http://www.aulaclic.es/sqlserver/t_5_3.htm#ap_05_07http://www.aulaclic.es/sqlserver/t_5_3.htm#ap_05_08http://www.aulaclic.es/sqlserver/t_5_3.htm#ap_05_09http://www.aulaclic.es/sqlserver/t_5_3.htm#ap_05_10http://www.aulaclic.es/sqlserver/t_5_3.htm#ap_05_11http://www.aulaclic.es/sqlserver/t_5_3.htm#ap_05_12http://www.aulaclic.es/sqlserver/t_5_3.htm#ap_05_13http://www.aulaclic.es/sqlserver/t_5_4.htm#ap_05_14http://www.aulaclic.es/sqlserver/t_5_4.htm#ap_05_14http://www.aulaclic.es/sqlserver/t_5_7.htm#ap_05_15http://www.aulaclic.es/sqlserver/t_5_7.htm#ap_05_15http://www.aulaclic.es/sqlserver/t_6_1.htmhttp://www.aulaclic.es/sqlserver/t_6_1.htm#ap_06_01http://www.aulaclic.es/sqlserver/t_6_2.htm#ap_06_02http://www.aulaclic.es/sqlserver/t_6_2.htm#ap_06_02http://www.aulaclic.es/sqlserver/t_6_2.htm#ap_06_03http://www.aulaclic.es/sqlserver/t_6_2.htm#ap_06_04http://www.aulaclic.es/sqlserver/t_6_4.htm#ap_06_05http://www.aulaclic.es/sqlserver/t_6_4.htm#ap_06_05http://www.aulaclic.es/sqlserver/t_6_5.htm#ap_06_06http://www.aulaclic.es/sqlserver/t_6_5.htm#ap_06_06http://www.aulaclic.es/sqlserver/t_7_1.htmhttp://www.aulaclic.es/sqlserver/t_7_1.htmhttp://www.aulaclic.es/sqlserver/t_7_1.htm#ap_07_01http://www.aulaclic.es/sqlserver/t_7_1.htm#ap_07_02http://www.aulaclic.es/sqlserver/t_7_1.htm#ap_07_02http://www.aulaclic.es/sqlserver/t_7_1.htm#ap_07_03http://www.aulaclic.es/sqlserver/t_7_1.htm#ap_07_03http://www.aulaclic.es/sqlserver/t_7_2.htm#ap_07_04http://www.aulaclic.es/sqlserver/t_7_3.htm#ap_07_05http://www.aulaclic.es/sqlserver/t_7_3.htm#ap_07_06http://www.aulaclic.es/sqlserver/t_7_3.htm#ap_07_06http://www.aulaclic.es/sqlserver/t_7_4.htm#ap_07_07http://www.aulaclic.es/sqlserver/t_7_4.htm#ap_07_07http://www.aulaclic.es/sqlserver/t_7_5.htm#ap_07_08http://www.aulaclic.es/sqlserver/t_7_6.htm#ap_07_09http://www.aulaclic.es/sqlserver/t_8_1.htm

  • 2

    Tipos de datos Definir constantes según el tipo de

    dato 2.7. Las expresiones 2.8. Funciones 2.9. Las variables 2.10. Otros elementos del lenguaje

    Unidad 3. Consultas simples

    3.1. Introducción 3.2. Origen de datos FROM 3.3. La lista de selección 3.4. Columnas del origen de datos 3.5. Alias de columna 3.6. Funciones Funciones en Transact-SQL 3.7. Columnas calculadas 3.8. Utilización del asterisco * 3.9. Las palabras clave $IDENTITY

    y $ROWGUID 3.10. Ordenación de las filas del

    resultado ORDER BY 3.11. Eliminar filas duplicadas

    DISTINCT/ALL 3.12. La cláusula TOP 3.13. Selección de filas WHERE 3.14. Predicados Los predicados CONTAINS y

    FREETEXT 3.15. Condiciones de búsqueda

    compuestas

    Unidad 4. Consultas multitabla

    4.1. Introducción 4.2. La unión de tablas UNION 4.3. La diferencia EXCEPT 4.4. La intersección INTERSECT 4.5. La composición de tablas 4.6. El producto cartesiano CROSS

    JOIN 4.7. La composición interna INNER

    JOIN 4.8. La Composición externa LEFT,

    RIGHT y FULL OUTER JOIN 4.9. Combinar varias operaciones

    Definición de Datos

    8.1. Introducción 8.2. Definir una base de datos

    CREATE DATABASE Intercalaciones COLLATE 8.3. Eliminar una base de datos

    DROP DATABASE 8.4. Modificar las propiedades de

    una BD ALTER DATABASE 8.5. Crear una tabla CREATE

    TABLE Tipos de datos: precisión, escala,

    longitud y prioridad 8.6. Eliminar una tabla DROP

    TABLE 8.7. Modificar la definición de una

    tabla ALTER TABLE 8.8. Crear una vista CREATE VIEW 8.9. Eliminar una vista DROP VIEW 8.10. Definición de índice 8.11. Tipos de índices 8.12. Ventajas e inconvenientes de

    los índices 8.13. Definir un índice CREATE

    INDEX 8.14. Eliminar un índice DROP

    INDEX

    Unidad 9. Programación en TRANSACT SQL

    9.1. Introducción 9.2. Procedimientos almacenados

    STORE PROCEDURE 9.3. Eliminar procedimientos

    almacenados 9.4. Crear y ejecutar un

    procedimiento 9.5. Instrucciones de control de flujo 9.6. IF… ELSE 9.7. WHILE – BREAK- CONTINUE 9.8. WAITFOR 9.9. GOTO 9.10. TRY... CATCH 9.11. Desencadenadores o

    TRIGGERS 9.12. CREATE TRIGGER 9.13. DISABLE TRIGGER 9.14. ENABLE TRIGGER 9.15. DROP TRIGGER

    http://www.aulaclic.es/sqlserver/a_2_3_1.htmhttp://www.aulaclic.es/sqlserver/a_2_3_2.htmhttp://www.aulaclic.es/sqlserver/a_2_3_2.htmhttp://www.aulaclic.es/sqlserver/t_2_4.htm#ap_02_07http://www.aulaclic.es/sqlserver/t_2_5.htm#ap_02_08http://www.aulaclic.es/sqlserver/t_2_5.htm#ap_02_09http://www.aulaclic.es/sqlserver/t_2_5.htm#ap_02_10http://www.aulaclic.es/sqlserver/t_3_1.htmhttp://www.aulaclic.es/sqlserver/t_3_1.htm#ap_03_01http://www.aulaclic.es/sqlserver/t_3_1.htm#ap_03_02http://www.aulaclic.es/sqlserver/t_3_2.htm#ap_03_03http://www.aulaclic.es/sqlserver/t_3_2.htm#ap_03_04http://www.aulaclic.es/sqlserver/t_3_3.htm#ap_03_05http://www.aulaclic.es/sqlserver/t_3_3.htm#ap_03_06http://www.aulaclic.es/sqlserver/b_3_3_1.htmhttp://www.aulaclic.es/sqlserver/t_3_5.htm#ap_03_07http://www.aulaclic.es/sqlserver/t_3_7.htm#ap_03_08http://www.aulaclic.es/sqlserver/t_3_7.htm#ap_03_09http://www.aulaclic.es/sqlserver/t_3_7.htm#ap_03_09http://www.aulaclic.es/sqlserver/t_3_8.htm#ap_03_10http://www.aulaclic.es/sqlserver/t_3_8.htm#ap_03_10http://www.aulaclic.es/sqlserver/t_3_9.htm#ap_03_11http://www.aulaclic.es/sqlserver/t_3_9.htm#ap_03_11http://www.aulaclic.es/sqlserver/t_3_10.htm#ap_03_12http://www.aulaclic.es/sqlserver/t_3_11.htm#ap_03_13http://www.aulaclic.es/sqlserver/t_3_11.htm#ap_03_14http://www.aulaclic.es/sqlserver/a_3_13_1.htmhttp://www.aulaclic.es/sqlserver/a_3_13_1.htmhttp://www.aulaclic.es/sqlserver/t_3_14.htm#ap_03_15http://www.aulaclic.es/sqlserver/t_3_14.htm#ap_03_15http://www.aulaclic.es/sqlserver/t_4_1.htmhttp://www.aulaclic.es/sqlserver/t_4_1.htm#ap_04_01http://www.aulaclic.es/sqlserver/t_4_1.htm#ap_04_02http://www.aulaclic.es/sqlserver/t_4_2.htm#ap_04_03http://www.aulaclic.es/sqlserver/t_4_2.htm#ap_04_04http://www.aulaclic.es/sqlserver/t_4_3.htm#ap_04_05http://www.aulaclic.es/sqlserver/t_4_3.htm#ap_04_06http://www.aulaclic.es/sqlserver/t_4_3.htm#ap_04_06http://www.aulaclic.es/sqlserver/t_4_4.htm#ap_04_07http://www.aulaclic.es/sqlserver/t_4_4.htm#ap_04_07http://www.aulaclic.es/sqlserver/t_4_5.htm#ap_04_08http://www.aulaclic.es/sqlserver/t_4_5.htm#ap_04_08http://www.aulaclic.es/sqlserver/t_4_6.htm#ap_04_09http://www.aulaclic.es/sqlserver/t_8_1.htmhttp://www.aulaclic.es/sqlserver/t_8_1.htm#ap_08_01http://www.aulaclic.es/sqlserver/t_8_1.htm#ap_08_02http://www.aulaclic.es/sqlserver/t_8_1.htm#ap_08_02http://www.aulaclic.es/sqlserver/b_8_2_1.htmhttp://www.aulaclic.es/sqlserver/t_8_3.htm#ap_08_03http://www.aulaclic.es/sqlserver/t_8_3.htm#ap_08_03http://www.aulaclic.es/sqlserver/t_8_3.htm#ap_08_04http://www.aulaclic.es/sqlserver/t_8_3.htm#ap_08_04http://www.aulaclic.es/sqlserver/t_8_6.htm#ap_08_05http://www.aulaclic.es/sqlserver/t_8_6.htm#ap_08_05http://www.aulaclic.es/sqlserver/a_8_6_1.htmhttp://www.aulaclic.es/sqlserver/a_8_6_1.htmhttp://www.aulaclic.es/sqlserver/t_8_12.htm#ap_08_06http://www.aulaclic.es/sqlserver/t_8_12.htm#ap_08_06http://www.aulaclic.es/sqlserver/t_8_12.htm#ap_08_07http://www.aulaclic.es/sqlserver/t_8_12.htm#ap_08_07http://www.aulaclic.es/sqlserver/t_8_13.htm#ap_08_08http://www.aulaclic.es/sqlserver/t_8_14.htm#ap_08_09http://www.aulaclic.es/sqlserver/t_8_15.htm#ap_08_10http://www.aulaclic.es/sqlserver/t_8_15.htm#ap_08_11http://www.aulaclic.es/sqlserver/t_8_15.htm#ap_08_12http://www.aulaclic.es/sqlserver/t_8_15.htm#ap_08_12http://www.aulaclic.es/sqlserver/t_8_16.htm#ap_08_13http://www.aulaclic.es/sqlserver/t_8_16.htm#ap_08_13http://www.aulaclic.es/sqlserver/t_8_16.htm#ap_08_14http://www.aulaclic.es/sqlserver/t_8_16.htm#ap_08_14http://www.aulaclic.es/sqlserver/t_9_1.htmhttp://www.aulaclic.es/sqlserver/t_9_1.htmhttp://www.aulaclic.es/sqlserver/t_9_1.htm#ap_09_01http://www.aulaclic.es/sqlserver/t_9_1.htm#ap_09_02http://www.aulaclic.es/sqlserver/t_9_1.htm#ap_09_03http://www.aulaclic.es/sqlserver/t_9_1.htm#ap_09_03http://www.aulaclic.es/sqlserver/t_9_2.htm#ap_09_04http://www.aulaclic.es/sqlserver/t_9_2.htm#ap_09_04http://www.aulaclic.es/sqlserver/t_9_5.htm#ap_09_05http://www.aulaclic.es/sqlserver/t_9_5.htm#ap_09_06http://www.aulaclic.es/sqlserver/t_9_5.htm#ap_09_07http://www.aulaclic.es/sqlserver/t_9_6.htm#ap_09_08http://www.aulaclic.es/sqlserver/t_9_6.htm#ap_09_09http://www.aulaclic.es/sqlserver/t_9_6.htm#ap_09_10http://www.aulaclic.es/sqlserver/t_9_8.htm#ap_09_11http://www.aulaclic.es/sqlserver/t_9_8.htm#ap_09_11http://www.aulaclic.es/sqlserver/t_9_8.htm#ap_09_12http://www.aulaclic.es/sqlserver/t_9_9.htm#ap_09_13http://www.aulaclic.es/sqlserver/t_9_10.htm#ap_09_14http://www.aulaclic.es/sqlserver/t_9_10.htm#ap_09_15

  • 3

    Unidad 1. El entorno gráfico SSMS (I)

    1.1. Introducción

    SQL Server 2005 es un sistema gestor de bases de datos relacionales de Microsoft Corporation orientado a sistemas medianos y grandes aunque también puede rodar en ordenadores personales. SQL Server Management Studio (SSMS) es la herramienta de SQL Server que permite definir y gestionar todas las bases de datos almacenadas en el servidor SQL Server 2005.

    En este tema veremos cómo utilizar el SQL Server Management Studio para manejar las bases de datos del servidor y organizaremos el texto en los siguientes puntos:

    Instalar SQL Server 2005.

    Entrada al SQL Server Management Studio

    Las bases de datos: Estructura interna, crear, adjuntar, conectar y desconectar.

    Las tablas: crear tablas, definirlas, modificar su contenido, etc.

    Relacionar tablas

    Las Consultas

    Las Vistas

    Si no sabes lo que es una base de datos relacional o no tienes conocimientos previos acerca de las bases de datos, puedes leer una introducción a las bases de datos en el

    siguiente básico

    1.2. Instalar SQL Server 2005

    Existen diferentes versiones (ediciones) del producto, por lo que es un producto muy versátil, que puede cumplir con las exigencias de cualquier empresa, puede ser utilizado para gestionar bases de datos en un PC en modo local a gestionar todo el sistema de información de grandes empresas pasando por sistemas que requieran menos potencia y por sistemas móviles.

    Actualmente se utiliza más en entornos Cliente/servidor con equipos medianos y grandes.

    Para realizar este curso te recomendamos instalar la versión gratuita: Express. Puedes descargarla desde la página web de Microsoft, desde el enlace para iniciar descarga. Si quieres ver las diferentes ediciones y sus características principales visita el siguiente

    avanzado

    Si la instalación se realiza a partir del archivo descargado de Internet, la descarga se empaqueta como un único ejecutable mediante una tecnología de instalación de Microsoft llamada SFXCab. Al hacer doble clic en el .exe se inicia automáticamente el proceso de instalación.

    Tan sólo deberemos seguir el asistente. Los puntos más importantes a tener en cuenta son:

    Habilitar el SQL Server Management Studio en la instalación (si no lo está por defecto) cuando nos pregunte qué componentes deseamos instalar.

    http://www.aulaclic.es/sqlserver/b_1_1_1.htmjavascript:mostrar('secuencias/p01_instalacion2005.htm');http://www.aulaclic.es/sqlserver/a_1_1_1.htmhttp://www.aulaclic.es/sqlserver/b_1_1_1.htmjavascript:mostrar('secuencias/p01_instalacion2005.htm');http://www.aulaclic.es/sqlserver/a_1_1_1.htmhttp://www.aulaclic.es/sqlserver/b_1_1_1.htmjavascript:mostrar('secuencias/p01_instalacion2005.htm');http://www.aulaclic.es/sqlserver/a_1_1_1.htm

  • 4

    Indicar que se trata de una Instancia predeterminada.

    Lo ideal es que en este punto instales el programa, para ir probando lo que vayas aprendiendo de aquí en adelante. Puedes realizar el siguiente Ejercicio Instalación de SQL Server 2005. El videotutorial práctico de instalación también te ayudará.

    1.3. Entrada al SQL Server Management Studio

    Aunque trabajemos en modo local, la entrada a la herramienta es la misma. Para

    empezar entramos a través del acceso directo o a través de Inicio, Programas, Microsoft SQL Server 2005, SQL Server Management Studio.

    Lo primero que deberemos hacer es establecer la conexión con el servidor:

    Seleccionamos el nombre del servidor y pulsamos el botón Conectar. Se abrirá la ventana inicial del SQL Server Management Studio (en adelante SSMS):

    http://www.aulaclic.es/sqlserver/epp_1_1_1.htmhttp://www.aulaclic.es/sqlserver/epp_1_1_1.htmjavascript:mostrar('secuencias/p01_bbdd.htm');javascript:mostrar('secuencias/p01_bbdd.htm');javascript:mostrar('secuencias/p01_bbdd.htm');javascript:mostrar('secuencias/p01_bbdd.htm');javascript:mostrar('secuencias/p01_bbdd.htm');

  • 5

    En la parte izquierda tenemos abierto el panel Explorador de Objetos en el que aparece debajo del nombre del servidor con el que estamos conectados una serie de carpetas y objetos que forman parte del servidor.

    En el panel de la derecha se muestra la zona de trabajo, que varía según lo que tengamos seleccionado en el Explorador de objetos, en este caso vemos el contenido de la carpeta que representa el servidor ord01.

    En la parte superior tenemos el menú de opciones y la barra de herramientas Estándar.

    Con las siguientes opciones:

    1. Nueva consulta 6. Consulta de SQL Server

    Mobile 11. Resumen

    2. Consulta de motor de Base

    de datos 7. Abrir archivo

    12. Explorador de

    Objetos

    3. Consulta MDX de Analysis

    Services 8. Guardar

    13. Explorador de

    Plantillas

    4. Consulta DMX de Analysis

    Services 9. Guardar todo

    14. Ventana de

    Propiedades

    5. Consulta MXLA de Analysis

    Services 10. Servidores registrados

    En caso de que utilices la versión Express, es posible que no dispongas de algunos de éstos botones.

    Unidad 1. El entorno gráfico SSMS (II)

    1.4. Estructura interna de una base de datos

    Antes de empezar tenemos que tener claro cómo se organiza la información en una base de datos SQL Server 2005.

    Las bases de datos de SQL Server 2005 utilizan tres tipos de archivos:

    Archivos de datos principales

    En una base de datos SQLServer los datos se pueden repartir en varios archivos para mejorar el rendimiento de la base de datos. El archivo de datos principal es el punto de partida de la base de datos y apunta a los otros archivos de datos de la base de datos. Cada base de datos tiene obligatoriamente un archivo de datos principal. La extensión recomendada para los nombres de archivos de datos principales es .mdf.

  • 6

    Archivos de datos secundarios

    Los archivos de datos secundarios son todos los archivos de datos menos el archivo de datos principal. Puede que algunas bases de datos no tengan archivos de datos secundarios, mientras que otras pueden tener varios archivos de datos secundarios. La extensión de nombre de archivo recomendada para los archivos de datos secundarios es .ndf.

    Además los archivos de datos se pueden agrupar en grupos de archivos. Para cada base de datos pueden especificarse hasta 32.767 archivos y 32.767 grupos de archivos.

    Archivos de registro

    Los archivos de registro (archivos de log) almacenan toda la información de registro que se utiliza para recuperar la base de datos, el también denominado registro de transacciones. Como mínimo, tiene que haber un archivo de registro por cada base de datos, aunque puede haber varios. La extensión recomendada para los nombres de archivos de registro es .ldf.

    SQL Server 2005 no exige las extensiones de nombre de archivo .mdf, .ndf y .ldf, pero estas extensiones ayudan a identificar las distintas clases de archivos y su uso.

    Cada base de datos tiene al menos 2 archivos (un archivo de datos principal y un archivo de registro) y opcionalmente un grupo de archivos.

    Los archivos de datos y de registro de SQL Server se pueden colocar en sistemas de archivos FAT o NTFS. Se recomienda utilizar NTFS por los aspectos de seguridad que ofrece. No se pueden colocar grupos de archivos de datos de lectura y escritura, y archivos de registro, en un sistema de archivos NTFS comprimido. Sólo las bases de datos de sólo lectura y los grupos de archivos secundarios de sólo lectura se pueden colocar en un sistema de archivos NTFS comprimido.

    1.5. Crear una base de datos en SSMS

    En el Explorador de objetos, si desplegamos la carpeta Bases de datos nos aparecen Bases de datos del sistema y las bases de datos de usuario después de la carpeta Instantáneas...

    Después de la instalación, en la carpeta Bases de datos del sistema se habrá creado una especial denominada master se utiliza como base de datos de usuario por defecto. Las demás bases de datos forman también parte del diccionario de datos y las utiliza el sistema para llevar a cabo su gestión.

  • 7

    Las bases de datos de los usuarios se deben crear preferentemente fuera de la carpeta Bases de datos del sistema.

    Unidad 1. El entorno gráfico SSMS (III)

    Para crear una nueva base de datos de usuario nos posicionamos sobre la carpeta Bases de datos y con el botón derecho del ratón desplegamos el menú contextual del que elegimos la opción Nueva base de datos…

    Se abre a continuación el cuadro de diálogo donde definiremos la base de datos que queremos crear:

  • 8

    Lo mínimo a introducir será el campo Nombre de la base de datos, éste es el nombre de la base de datos lógica, la base de datos a la que nos referiremos dentro del SSMS, a nivel conceptual (en la imagen Mibase).

    Esta base de datos está asociada a dos archivos físicos, en la parte inferior aparecen esos archivos. Para facilitarnos la tarea, al teclear el nombre de la bd lógica, se rellenan automáticamente los nombres de los archivos físicos, el de datos con el mismo nombre y el del archivo de registro con el mismo nombre seguido de _log. Estos nombres son los nombres que se asumen por defecto pero los podemos cambiar, posicionando el cursor en el nombre y cambiándolo.

    Para cada archivo físico podemos definir una serie de parámetros como el tipo de archivo (si es de datos o de transacciones Registro) y su ocupación inicial (Tamaño inicial).

    Si no indicamos ninguna ubicación podemos ver que los guarda en la carpeta del SQL Server/MSSQL.n/MSSQL/DATA. n representa un número que puede variar de una instalación a otra.

  • 9

    Estos son los archivos mínimos en los que se almacenará la base de datos, pero como ya vimos anteriormente se puede almacenar en más archivos, los tenemos que definir todos en esta ventana a continuación de los dos obligatorios.

    Para añadir más archivos físicos disponemos del botón Agregar.

    Al pulsar el botón Agregar se crea una nueva fila en la tabla de archivos físicos donde deberemos escribir el nombre del archivo, su tipo (desplegando la lista podemos elegir entre de datos o de registro) y demás parámetros.

    Al agregar un nuevo archivo se activa el botón Quitar, siempre que estemos posicionados encima de un archivo secundario para poder así eliminarlo si lo queremos.

  • 10

    No podemos eliminar ni el de datos primario, ni el de registro inicial.

    Unidad 1. El entorno gráfico SSMS (IV)

    Si nos fijamos en la zona de la izquierda, vemos que nos encontramos en la pestaña General, podemos cambiar otros parámetros de la base de datos pulsando en Grupos de archivos o en Opciones:

    Al final pulsamos en Aceptar y se creará la base de datos.

  • 11

    Aparecerá dentro de la carpeta Bases de datos. Si no se ve pulsa en el icono

    Actualizar .

    Desde el Explorador de Windows podemos ver que en la carpeta indicada se han creado los archivos físicos con los nombres que le hemos indicado.

    Unidad 1. El entorno gráfico SSMS (V)

    1.6. Adjuntar una base de datos

    En ocasiones no necesitaremos crear la base de datos desde cero, porque ésta ya estará creada. Éste es el caso de los ejercicios del curso. Para realizarlos, deberás adjuntar una base de datos ya existente a tu servidor. Para ello, lo que tenemos que hacer es pegar los archivos en la ubicación que queramos, y luego indicar al SQL Server que vamos a utilizar esta base de datos, de la siguiente manera: En el Explorador de objetos, sobre la carpeta Bases de datos desplegar el menú contextual y elegir Adjuntar...

    En la siguiente ventana elegimos la base de datos:

  • 12

    Pulsando en Agregar indicamos el archivo de datos primario en su ubicación y automáticamente se adjuntará la base de datos lógica asociada a este archivo.

    Finalmente pulsamos en Aceptar y aparece la base de datos en nuestro servidor.

  • 13

    La opción Adjuntar sólo se utiliza la primera vez, cuando todavía no tenemos la base de datos en el disco.

    Realiza el siguiente Ejercicio Adjuntar base de datos. En él adjuntarás las bases de datos que vas a utilizar en los ejercicios que se plantearán más adelante.

    1.7. Conectar y Desconectar la base de datos

    Una vez hemos creado la base de datos o la hemos adjuntado a nuestro servidor, nos daremos cuenta de que no podremos manipular los archivos de la base desde fuera del gestor SSMS, por ejemplo, desde el Explorador de Windows. Es decir, no podremos copiar, cortar, mover o eliminar los archivos fuente mdf, ndf y ldf. Si lo intentamos se mostrará un aviso de que la base de datos está en uso.

    Esto es así porque SQL Server sigue en marcha, a pesar de que se cierre el gestor. Ten en cuenta que el servidor de base de datos normalmente se crea para que sirva información a diferentes programas, por eso sería absurdo que dejara de funcionar cuando cerramos el programa gestor, que sólo se utiliza para realizar modificaciones sobre la base.

    Para poder realizar acciones sobre la base de datos, ésta debe estar desconectada. Para ello, desde el SSMS, desplegamos el menú contextual de la base de datos que nos interese manipular y seleccionaremos la opción Poner fuera de conexión:

    Aparecerá un símbolo a la izquierda de la base de datos indicándonos que la base de datos está desconectada, a partir de este momento Windows nos dejará manipular los archivos.

    Para volver a conectar la base de datos y seguir trabajando con ella, accederemos al mismo menú contextual pero elegiremos la opción Poner en conexión:

    http://www.aulaclic.es/sqlserver/epp_1_5_1.htm

  • 14

    El caso más inmediato en el que puedes necesitar conectar y desconectar la base de datos es copiar a un pendrive los archivos de las bases que utilizarás en los ejercicios para poder trabajar en diferentes ordenadores con ellos. Para aprender cómo hacerlo, visita el siguiente Ejercicio Trasladar una base de datos a otro equipo.

    En caso de que tu versión de SQL Server no tenga las opciones Poner en conexión y Poner fuera de conexión, deberás utilizar la opción Separar... y luego volver a adjuntarla.

    Unidad 1. El entorno gráfico SSMS (VI)

    1.8. Crear una nueva tabla

    Para crear una nueva tabla primero nos tenemos que posicionar en la base de datos donde queremos que se almacene la tabla, desplegar el menú contextual y seleccionar la opción Nueva tabla.

    En la ventana que se abre debemos definir las columnas de la tabla:

    http://www.aulaclic.es/sqlserver/epp_1_5_2.htmjavascript:mostrar('secuencias/p01_tablas.htm');javascript:mostrar('secuencias/p01_tablas.htm');javascript:mostrar('secuencias/p01_tablas.htm');javascript:mostrar('secuencias/p01_tablas.htm');javascript:mostrar('secuencias/p01_tablas.htm');

  • 15

    A cada columna se le asigna un nombre, un tipo de datos, y opcionalmente una serie de propiedades, en este tema veremos las básicas y las demás las veremos con más detalle cuando veamos la instrucción SQL CREATE TABLE.

    De momento no tenemos definida ninguna columna, al teclear un nombre se crea una primera entrada en esta tabla con la definición de la primera columna. En la columna Tipo de datos elegimos qué tipo de valores se podrán almacenar en la columna.

    1.9. Tipos de datos

    Podemos elegir entre todos los tipos que aparecen arriba.

    Algunos tipos no necesitan más, como por ejemplo el tipo entero (int), y otros se pueden completar con una longitud, como los tipos alfanuméricos:

    En este ejemplo hemos definido una columna (Codigo) de tipo Entero corto (Smallint), y una columna (Nombre) que almacenará hasta 20 caracteres alfanuméricos (nchar(20)), en este caso la longitud la indicamos en la pestaña Propiedades de columna en la propiedad Longitud.

  • 16

    Las propiedades de la columna pueden variar dependiendo del tipo de datos de la columna seleccionada, por ejemplo los campos enteros no tienen la propiedad longitud, ya que el propio tipo define la longitud del campo, en cambio los campos de tipo numeric o decimal no tiene la propiedad longitud pero sí las propiedades escala y precisión, los valores que permiten definir el tamaño del campo.

    Unidad 1. El entorno gráfico SSMS (VII)

    1.10. Valores nulos

    También podemos indicar si la columna permitirá valores nulos o no, o bien cambiando la propiedad Permitir valores nulos que aparece debajo de la propiedad Longitud, o bien simplemente marcando o desmarcando la casilla de la columna Permitir valores nulos que se encuentra al lado de la columna Tipo de datos. Si la casilla está marcada, el usuario podrá no rellenar el campo cuando inserte una fila de datos en la tabla.

    1.11. Columna con contador

    En la mayoría de los sistemas gestores de bases de datos tenemos un tipo de datos de tipo contador, autonumérico, autoincremental, etc. Este tipo hace que el propio sistema es el encargado de rellenar el campo con un valor que va incrementando conforme se crean más filas de datos en la tabla.

    Las columnas de este tipo se utilizan normalmente para numerar las filas de la tabla, como no habrán dos filas con el mismo valor (el sistema se encarga de incrementar el valor cada vez que se crea una nueva fila), estos campos se suelen utilizar como claves primarias.

    En SQL Server 2005 no existe el tipo de datos Contador pero se consigue el mismo funcionamiento asignando a la columna un tipo de datos numérico y definiendo la columna como columna de identidad.

    En las propiedades de la columna marcamos Sí en la propiedad (Identidad) y a continuación podemos indicar en qué valor queremos que empiece el contador

  • 17

    (Inicialización de identidad) y en cuánto incrementará cada vez que se cree un nuevo registro (Incremento de identidad).

    Aunque este tipo de columnas se utiliza frecuentemente como clave primaria, SQL Server no le asigna automáticamente esta función, la tenemos que definir nosotros mismos, pero sí fuerza a que sea una columna sin valores nulos. No se puede definir más de una columna de identidad por tabla.

    1.12. Clave primaria

    Para definir una columna como clave primaria, posicionamos el puntero del ratón sobre la columna, desplegamos el menú contextual y seleccionamos la opción Establecer Clave principal:

    Aparecerá una llave a la izquierda del nombre, símbolo de las claves principales:

    Para definir una clave primaria compuesta por varias columnas, seleccionamos las columnas manteniendo pulsada la tecla Ctrl y luego seleccionamos la opción.

    Para quitar una clave principal, hacemos lo mismo pero en esta ocasión seleccionamos la opción Quitar clave principal.

    También podemos utilizar el icono de la barra de herramientas.

    Unidad 1. El entorno gráfico SSMS (VIII)

    1.13. Añadir o eliminar columnas

    Una vez definidas algunas columnas, si queremos añadir una nueva columna entre dos, nos posicionamos en la segunda y seleccionamos la opción Insertar columna del menú contextual.

  • 18

    La nueva columna se colocará delante:

    Del mismo modo si queremos eliminar la definición de una columna, nos posicionamos en la columna a eliminar y seleccionamos la opción Eliminar columna:

    O simplemente hacemos clic en la zona a la izquierda del nombre y pulsamos la tecla

    Supr.

    Finalmente guardamos la tabla, nos pedirá el nombre de la tabla:

    La nueva tabla aparecerá en la lista de tablas de la base de datos:

    1.14. Modificar la definición de una tabla

  • 19

    Para entrar a la ventana de definición de la tabla utilizamos la opción Modificar de su menú contextual (También es posible que se llame Diseño):

    Se abrirá la ventana que ya conocemos para definir las columnas de la tabla.

    Unidad 1. El entorno gráfico SSMS (IX)

    1.15. Insertar datos en la tabla

    Ahora que tenemos la tabla creada podemos rellenarla con datos. Para eso debemos abrir la tabla:

    Se abrirá una ventana parecida a esta:

    La primera columna sirve para indicarnos el estado de una fila, por ejemplo el * nos indica que es una nueva fila, esta fila realmente no está en la tabla, nos sirve de contenedor para los nuevos datos que queremos insertar.

    Para insertar una nueva fila de datos sólo tenemos que rellenar los campos que aparecen en esa fila (la del *), al cambiar de fila los datos se guardarán automáticamente en la tabla a no ser que alguno infrinja alguna regla de integridad, en ese caso SQL Server nos devuelve un mensaje de error para que corrijamos el dato erróneo, si no lo podemos corregir entonces sólo podemos deshacer los cambios.

    1.16. Modificar datos

    Para modificar un valor que ya está en una fila de la tabla sólo tenemos que posicionarnos en el campo y rectificar el valor. En cuanto modificamos un valor, la fila aparece con un lápiz escribiendo (ver imagen), este lápiz nos indica que la fila se ha modificado y tiene nuevos datos por guardar. Al salir de la fila ésta se guardará automáticamente a no ser que el nuevo valor infrinja alguna regla de integridad. Si queremos salir de la fila sin guardar los cambios, tenemos que cancelar la actualización

    pulsando la tecla ESC.

  • 20

    1.17. Eliminar filas

    Para eliminar una fila completa, la seleccionamos y pulsamos la tecla Supr o bien

    desplegamos su menú contextual y seleccionamos la opción Eliminar.

    En cualquiera de los dos casos nos aparece un mensaje de confirmación.

    1.18. Relacionar tablas

    Como ya hemos visto, en una base de datos relacional, las relaciones entre las tablas se implementan mediante la definición de claves ajenas, que son campos que contienen valores que señalan a un registro en otra tabla, en esta relación así creada, la tabla referenciada se considera principal y la que contiene la clave ajena es la subordinada.

    Desde el entorno gráfico del SSMS podemos definir claves ajenas entrando en el diseño de la tabla y desplegando el menú contextual del campo que va a ser clave ajena:

    Seleccionamos la opción Relaciones y se abre la ventana:

    javascript:mostrar('secuencias/p01_relaciones.htm');javascript:mostrar('secuencias/p01_relaciones.htm');javascript:mostrar('secuencias/p01_relaciones.htm');javascript:mostrar('secuencias/p01_relaciones.htm');

  • 21

    Al pulsar el botón que se encuentra en la fila Especificación de tablas y columnas se abre el diálogo donde definiremos la relación:

    Unidad 1. El entorno gráfico SSMS (X)

    En la parte derecha tenemos la tabla en la que estamos y el campo que va a actuar como clave ajena, sólo nos queda elegir en el desplegable de la izquierda la tabla a la que hace referencia la clave y al seleccionar una tabla, a la izquierda del campo clave ajena podremos elegir el campo de la otra tabla por el que se relacionarán las tablas. En nuestro caso será:

    De esta forma hemos definido una relación entre las tablas Facturas y Clientes. Para ver las relaciones existentes entre las diferentes tablas tenemos los diagramas.

  • 22

    Primero debemos definir el diagrama, para ello seleccionamos la opción correspondiente:

    Si no tenemos todavía ningún diagrama creado, nos aparece un mensaje:

    Elegimos Sí y se crea digamos el soporte donde se pintará el diagrama.

    A continuación nos aparece el nuevo diagrama ahora si elegimos crear un nuevo diagrama nos preguntará las tablas a incluir en el diagrama:

    Seleccionamos cada una y pulsamos Agregar, cuando hayamos agregado al diagrama todas las que queremos pulsamos en Cerrar y aparecerán en el diagrama las tablas con las relaciones que tengan definidas en ese momento:

  • 23

    La llave indica la tabla principal (padre) y el símbolo infinito señala la tabla que contiene la clave ajena.

    En el examinador de objetos en la carpeta Diagramas de base de datos aparecen todos los diagramas definidos hasta el momento:

    Hemos aprendido hasta ahora lo básico para poder crear una base de datos y rellenarla con tablas relacionadas entre sí y con datos, ahora veamos cómo recuperar esos datos.

    Unidad 1. El entorno gráfico SSMS (XI)

    1.19. Abrir una nueva consulta

    Vamos a ver ahora cómo crear consultas SQL y ejecutarlas desde el entorno del SSMS.

    Para ello debemos abrir la zona de trabajo de tipo Query, abriendo una nueva consulta,

    seleccionando previamente el servidor y pulsando el botón de la barra de botones o si queremos realizar la consulta sobre un servidor con el cual todavía no hemos establecido conexión, seleccionando de la barra de menús la opción Nuevo > Consulta de motor de base de datos:

  • 24

    .

    En este último caso nos aparecerá el cuadro de diálogo para establecer la conexión (el mismo que vimos al principio del tema).

    A continuación se abrirá una nueva pestaña donde podremos teclear las sentencias SQL:

    Además aparece una nueva barra de botones que nos permitirá ejecutar los comandos más útiles del modo query.

    1.20. Escribir y ejecutar código TRANSACT-SQL

    Sólo tenemos que teclear la sentencia a ejecutar, por ejemplo empezaremos por crear la base de datos.

    Utilizaremos la sentencia CREATE DATABASE mínima:

    CREATE DATABASE ventas;

    Al pulsar el botón Ejecutar se ejecuta la sentencia y aparece en la parte inferior el resultado de la ejecución, en la pestaña Mensajes:

    javascript:mostrar('secuencias/p01_consultas.htm');javascript:mostrar('secuencias/p01_consultas.htm');javascript:mostrar('secuencias/p01_consultas.htm');

  • 25

    Si ahora desplegamos la carpeta Bases de Datos del Explorador de Objetos, observaremos la base de datos que hemos creado:

    Si la ejecución de la sentencia produce un error, el sistema nos devolverá el mensaje de error escrito en rojo en la pestaña Mensajes.

    Podemos incluir en una misma consulta varias sentencias SQL, cuando pulsamos Ejecutar se ejecutarán todas una detrás de otra. Si tenemos varias consultas y sólo queremos ejecutar una, la seleccionaremos antes de ejecutarla.

    Unidad 1. El entorno gráfico SSMS (XII)

    1.21. La base de datos predeterminada

    Cuando ejecutamos consultas desde el editor, nos tenemos que fijar sobre qué base de datos se va a actuar.

  • 26

    Fijándonos en la pestaña de la consulta, en el nombre aparece el nombre del servidor seguido de un punto y el nombre de la base de datos sobre la que se va a actuar y luego un guión y el nombre de la consulta.

    En la imagen anterior tenemos ord01.master – SQLQuery1.sql, lo que nos indica que la consulta se llama SQLQuery1.sql, y que se va a ejecutar sobre la base de datos master que se encuentra en el servidor ord01.

    Cuando creamos una nueva consulta, ésta actuará sobre la base de datos activa en ese momento. Por defecto la base de datos activa es la predeterminada (master). Si queremos que la base de datos activa sea por ejemplo la base de datos ventas, hacemos clic sobre su nombre en el Explorador de objetos, y ésta pasará a ser la base de datos activa. Si ahora creamos una nueva consulta, ésta actuará sobre la base de datos ventas.

    Si queremos crear una consulta que siempre actúe sobre una determinada base de datos y no nos queremos preocupar de qué base de datos tenemos activa podemos añadir al principio de la consulta la instrucción USE nombreBaseDatos; esto hará que todas las instrucciones que aparezcan después, se ejecuten sobre la base de datos indicada. Por ejemplo:

    USE ventas;

    SELECT * FROM pedidos;

    Obtiene todos los datos de la tabla pedidos que se encuentra en la base de datos ventas. Si no utilizamos USE y almacenamos la consulta, al abrirla otra vez, cogerá como base de datos la predeterminada (no la activa) y se volverá a ejecutar sobre la base de datos master.

    Normalmente utilizaremos como base de datos la nuestra y no la base de datos master, por lo que nos será útil cambiar el nombre de la base de datos por defecto, esto lo podemos hacer cambiando la base de datos por defecto en el id de sesión.

    Para ello, cuando vamos a conectar con el servidor:

    Pulsamos en el botón Opciones >>

  • 27

    En la pestaña Propiedades de conexión, en el cuadro Conectar con base de datos: Seleccionamos para elegir la base de datos.

    La elegimos y aceptamos. A partir de ese momento la base de datos elegida será la que SQL Server coja por defecto en todas las sesiones de ese usuario.

    Unidad 1. El entorno gráfico SSMS (XIII)

    1.22. El editor de texto

  • 28

    Para facilitarnos la redacción y corrección de las sentencias, el editor de SQL presenta las palabras de distintos colores según su categoría y podemos utilizar el panel Explorador de Objetos para arrastrar desde él los objetos sobre la zona de trabajo y así asegurarnos de que los nombres de los objetos (por ejemplo nombre de tabla, de columna, etc.) sean los correctos.

    Como hemos dicho el texto que se escribe en este editor de código se colorea por categoría. Los colores son los mismos que se utilizan en todo el entorno SQL Server. En esta tabla aparecen los colores más comunes.

    Color Categoría

    Rojo Cadena de caracteres

    Verde oscuro Comentario

    Negro sobre fondo plateado Comando SQLCMD

    Fucsia Función del sistema

    Verde Tabla del sistema

    Azul Palabra clave

    Verde azulado Números de línea o parámetro de plantilla

    Rojo oscuro Procedimiento almacenado de SQL Server

    Gris oscuro Operadores

    1.23. Configurar un esquema de colores personalizado

    En el menú Herramientas > Opciones, desplegando la opción Entorno, Fuentes y colores, se puede ver la lista completa de colores y sus categorías, así como configurar un esquema de colores personalizado:

  • 29

    En la lista Mostrar valores para, seleccionamos el entorno que se verá afectado.

    El botón Usar predeterminados nos permite volver a la configuración predeterminada.

    Ahora sólo nos queda aprender a redactar sentencias SQL, cosa que se verá en otro momento, mientras tanto podemos utilizar el Generador de Consulta que incluye SSMS y que veremos a continuación en el apartado sobre vistas.

    1.24. Las Vistas

    Las consultas que hemos visto hasta ahora son trozos de código SQL que podemos guardar en un archivo de texto y abrir y ejecutar cuando queramos, pero si queremos que nuestra consulta de recuperación de datos se guarde en la propia base de datos y se comporte como una tabla (algo parecido a una consulta almacenada de Access), la tenemos que definir como una vista. Esta vista tiene la ventaja entre otras de poder ser utilizada como si fuese una tabla en otras consultas. Realmente al ejecutarla obtenemos una tabla lógica almacenada en memoria y lo que se guarda en la base de datos es su definición, la instrucción SQL que permite recuperar los datos.

  • 30

    Para definir una vista en el Explorador de Objetos desplegamos la base de datos donde la guardaremos y elegimos la opción Nueva vista del menú contextual de la carpeta Vistas, se pondrá en funcionamiento el generador de consultas pidiéndonos las tablas en las que se basará la vista. Pulsamos sobre la tabla a añadir al diseño de la vista y pulsamos el botón Agregar, podemos añadir así cuántas tablas queramos.

    Después de Cerrar, vemos a la derecha del Explorador de Objetos la pestaña con la definición de la vista que puede incluir varios paneles:

  • 31

    La aparición de estos paneles es configurable, en la barra de herramientas Diseñador de vistas los iconos remarcados en azul son los correspondientes a cada panel:

  • 32

    Unidad 1. El entorno gráfico SSMS (XIV)

    Nosotros, a lo largo del curso, crearemos las vistas desde el panel SQL que veremos más adelante.

    1.25. El panel de diagrama

    Es el primero que aparece, incluye una representación gráfica de las tablas con sus campos y de la forma en que se juntan en la vista. En este caso, como las tablas tienen relaciones definidas (claves ajenas), esta relación ha aparecido automáticamente al añadir la segunda tabla. Pero se puede cambiar el tipo de relación eligiendo la opción correspondiente en el menú contextual que aparece con el clic derecho sobre la relación:

    Desde el panel diagrama podemos añadir cómodamente campos de las tablas a la consulta marcando la casilla correspondiente. En la imagen anterior la única casilla seleccionada es la del * en la tabla Libros por lo que se visualizarán todas las columnas de la tabla Libros y ninguna de la tabla Préstamos.

    Conforme vamos marcando casillas de las tablas del panel diagrama, los cambios se ven reflejados en los demás paneles excepto en el panel de resultados que se actualiza ejecutando la consulta.

    1.26. El panel de criterios

    Es una rejilla en la que podemos definir las columnas del resultado de la consulta (las columnas de la vista).

    En cada fila de la rejilla se define una columna del resultado o una columna que se utiliza para obtener el resultado.

    En Columna tenemos el nombre de la columna de la se obtienen los datos o la expresión cuando se trata de una columna calculada.

    En Alias escribimos el nombre que tendrá la columna en la vista, también corresponde con el encabezado de la columna en la rejilla de resultado. Si se deja el campo en blanco, por defecto se asume el mismo nombre que hay en Columna.

    En Tabla tenemos el nombre de la tabla del origen de la consulta a la que pertenece la Columna, por ejemplo la primera columna del resultado se saca de la columna

  • 33

    Codigo de la tabla LIBROS y se llamará CodLibro. La cuarta columna de la vista cogerá sus datos de la columna Usuario de la tabla Prestamos y se llamará Usuario (Alias se ha dejado en blanco por lo que asume el nombre que hay en Columna.

    En la columna Resultados indicamos si queremos que la columna se visualice o no, las columnas con la casilla marcada se visualizan.

    Las columnas Criterio de ordenación y Tipo de orden permiten ordenar las filas del resultado según una o más columnas. Se ordena por las columnas que tienen algo en Tipo de orden y cuando se ordena por varias columnas Criterio de ordenación indica que primero se ordena por la columna que lleva el nº 1 y después por la columna que lleva el nº 2 y así sucesivamente. En el ejemplo las filas del resultado se ordenarán primero por código de libro y después por código de préstamo, todas las filas dentro del mismo libro se ordenarán por código de préstamo.

    Si queremos añadir unos criterios de selección tenemos las columnas Filtro y O…

    En cada celda indicamos una condición que debe cumplir la columna correspondiente y se puede combinar varias condiciones mediante O (OR) e Y (AND) según coloquemos las condiciones en la misma columna o en columnas diferentes. En el ejemplo anterior tenemos la condición compuesta: ((usuario=1) AND (Dias>5)) OR (Usuario=2).

    Podemos variar el orden de aparición de las columnas arrastrando la fila correspondiente de la rejilla hasta el lugar deseado.

    También podemos Elimnar filas de la rejilla para eliminar columnas del resultado, lo conseguimos seleccionando la fila haciendo clic sobre su extremo izquierda y cuando

    aparece toda la fila remarcada pulsamos Supr o desde el menú contextual de la fila.

    Podemos definir consultas más complejas como por ejemplo consultas de resumen, pulsando sobre el botón Agrupar por de la barra de herramientas, se añade a la rejilla una nueva columna Agrupar por con las siguientes opciones:

  • 34

    Unidad 1. El entorno gráfico SSMS (XV)

    1.27. El panel SQL

    En él vemos la instrucción SQL generada, también podemos redactar directamente la sentencia SQL en el panel y ver los cambios equivalentes en los distintos paneles. Para ver estos cambios debemos de ejecutar o Comprobar la sintaxis para que se actualicen los demás paneles.

    Por defecto el generador añade a la consulta una cláusula TOP (100) PERCENT que indica que se visualizarán el 100% de las filas. Esta cláusula no la hemos definido nosotros sino que la añade automáticamente el generador.

    Una vez tenemos la vista definida la guardamos y podremos hacer con ella casi todo lo que podemos hacer con una tabla. De hecho si nos fijamos en el Explorador de objetos, en la carpeta Vistas:

    Vemos que la estructura es muy similar a la estrutura de una tabla. Y que podemos modificar su definición y ejecutarla, igual que con las tablas:

    Modificar para modificar la definición de la vista

    Abrir vista para ejecutarla y ver los datos como si fuese una tabla real.

  • 35

    Unidad 2. Introducción al SQL. Transact-SQL (I)

    2.1. Conceptos básicos de SQL

    SQL (Structured Query Language), Lenguaje Estructurado de Consulta es el lenguaje utilizado para definir, controlar y acceder a los datos almacenados en una base de datos relacional.

    Como ejemplos de sistemas gestores de bases de datos que utilizan SQL podemos citar DB2, SQL Server, Oracle, MySql, Sybase, PostgreSQL o Access.

    El SQL es un lenguaje universal que se emplea en cualquier sistema gestor de bases de datos relacional. Tiene un estándar definido, a partir del cual cada sistema gestor ha desarrollado su versión propia.

    En SQL Server la versión de SQL que se utiliza se llama TRANSACT-SQL.

    EL SQL en principio es un lenguaje orientado únicamente a la definición y al acceso a los datos por lo que no se puede considerar como un lenguaje de programación como tal ya que no incluye funcionalidades como son estructuras condicionales, bucles, formateo de la salida, etc. (aunque veremos que esto está evolucionando).

    Se puede ejecutar directamente en modo interactivo, pero también se suele emplear embebido en programas escritos en lenguajes de programación convencionales. En estos programas se mezclan las instrucciones del propio lenguaje (denominado anfitrión) con llamadas a procedimientos de acceso a la base de datos que utilizan el SQL como lenguaje de acceso. Como por ejemplo en Visual Basic, Java, C#, PHP .NET, etc.

    Las instrucciones SQL se clasifican según su propósito en tres grupos:

    El DDL (Data Description Language) Lenguaje de Descripción de Datos.

    El DCL (Data Control Language) Lenguaje de Control de Datos.

    El DML (Data Manipulation Language) Lenguaje de Manipulación de Datos.

    El DDL, es la parte del SQL dedicada a la definición de la base de datos, consta de sentencias para definir la estructura de la base de datos, permiten crear la base de datos, crear, modificar o eliminar la estructura de las tablas, crear índices, definir reglas de validación de datos, relaciones entre las tablas, etc. Permite definir gran parte del nivel interno de la base de datos. Por este motivo estas sentencias serán utilizadas normalmente por el administrador de la base de datos.

    El DCL (Data Control Language) se compone de instrucciones que permiten:

    Ejercer un control sobre los datos tal como la asignación de privilegios de acceso a los datos (GRANT/REVOKE).

    La gestión de transacciones (COMMIT/ROLLBACK).

    Una transacción se puede definir como un conjunto de acciones que se tienen que realizar todas o ninguna para preservar la integridad de la base de datos. Por ejemplo supongamos que tenemos una base de datos para las reservas de avión. Cuando un usuario pide reservar una plaza en un determinado vuelo, el sistema tiene que comprobar que queden plazas libres, si quedan plazas reservará la que quiera el usuario generando un nuevo billete y marcando la plaza como ocupada. Aquí tenemos un proceso que consta de dos operaciones de actualización de la base de datos (crear una nueva fila en la tabla de billetes y actualizar la plaza reservada en el vuelo, poniéndola como ocupada) estas dos operaciones se tienen que ejecutar o todas o ninguna, si después de crear el billete no se actualiza la plaza porque se cae el sistema, por ejemplo, la base de

  • 36

    datos quedaría en un estado inconsistente ya que la plaza constaría como libre cuando realmente habría un billete emitido para esta plaza. En este caso el sistema tiene el mecanismo de transacciones para evitar este error. Las operaciones se incluyen las dos en una misma transacción y así el sistema sabe que las tiene que ejecutar las dos, si por lo que sea no se pueden ejecutar las dos, se encarga de deshacer los cambios que se hubiesen producido para no ejecutar ninguna.

    Las instrucciones que gestionan las autorizaciones serán utilizadas normalmente por el administrador mientras que las otras, referentes a proceso de transacciones serán utilizadas también por los programadores.

    No todos los sistemas disponen de ellas.

    El DML se compone de las instrucciones para el manejo de los datos, para insertar nuevos datos, modificar datos existentes, para eliminar datos y la más utilizada, para recuperar datos de la base de datos. Veremos que una sola instrucción de recuperación de datos es tan potente que permite recuperar datos de varias tablas a la vez, realizar cálculos sobre estos datos y obtener resúmenes.

    El DML interactúa con el nivel externo de la base de datos por lo que sus instrucciones son muy parecidas, por no decir casi idénticas, de un sistema a otro, el usuario sólo indica lo que quiere recuperar no cómo se tiene que recuperar, no influye el cómo están almacenados los datos.

    Es el lenguaje que utilizan los programadores y los usuarios de la base de datos.

    A lo largo del curso se explicarán cada una de las formas de explotación de la base de datos. Dependiendo de tu perfil profesional (programador o administrador) o de tu interés personal te resultará más útil un bloque u otro.

    2.2. Introducción al TRANSACT-SQL

    Como hemos dicho, el sistema gestor de base de datos SQL-Server 2005 utiliza su propia versión del lenguaje SQL, el TRANSACT-SQL.

    TRANSACT-SQL es un lenguaje muy potente que nos permite definir casi cualquier tarea que queramos efectuar sobre la base de datos. En este tema veremos que TRANSACT-SQL va más allá de un lenguaje SQL cualquiera ya que incluye características propias de cualquier lenguaje de programación, características que nos permiten definir la lógica necesaria para el tratamiento de la información:

    Tipos de datos.

    Definición de variables.

    Estructuras de control de flujo.

    Gestión de excepciones.

    Funciones predefinidas.

    Sin embargo no permite:

    Crear interfaces de usuario.

    Crear aplicaciones ejecutables, sino elementos que en algún momento llegarán al servidor de datos y serán ejecutados.

    Debido a estas restricciones se emplea generalmente para crear procedimientos almacenados, triggers y funciones de usuario.

  • 37

    Puede ser utilizado como cualquier SQL como lenguaje embebido en aplicaciones desarrolladas en otros lenguajes de programación como Visual Basic, C, Java, etc. Y por supuesto los lenguajes incluidos en la plataforma .NET.

    También lo podremos ejecutar directamente de manera interactiva, por ejemplo desde el editor de consultas de SSMS (SQL Server Management Studio) el entorno de gestión que ya conocemos. Esta es la forma en que lo utilizaremos nosotros.

    Unidad 2. Introducción al SQL. Transact-SQL (II)

    2.3. Características generales del lenguaje Transact-SQL

    El lenguaje SQL se creó con la finalidad de ser un lenguaje muy potente y a la vez muy fácil de utilizar, se ha conseguido en gran medida ya que con una sola frase (instrucción) podemos recuperar datos complejos (por ejemplo datos que se encuentran en varias tablas, combinándolos, calculando resúmenes), y utilizando un lenguaje muy cercano al lenguaje hablado (¡suponiendo que hablamos inglés, claro!).

    Por ejemplo:

    SELECT codigo, nombre FROM Clientes WHERE localidad=’Valencia’;

    Esta instrucción nos permite SELECCIONAR el código y nombre DE los Clientes CUYA localidad sea Valencia.

    La sencillez también radica en que lo que indicamos es lo que queremos obtener, no el cómo lo tenemos que obtener, de eso se encargará el sistema automáticamente.

    Las sentencias SQL además siguen todas el mismo patrón:

    Empiezan por un verbo que indica la acción a realizar,

    completado por el objeto sobre el cual queremos realizar la acción,

    seguido de una serie de cláusulas (unas obligatorias, otras opcionales) que completan la frase, y proporcionan más detalles acerca de lo que se quiere hacer.

    Si sabemos algo de inglés nos será más fácil interpretar a la primera lo que quiere decir la instrucción, y de lo contrario, como el número de palabras que se emplean es muy reducido, enseguida nos las aprenderemos.

    Por ejemplo en el DDL (acciones sobre la definición de la base de datos), tenemos 3 verbos básicos:

    CREATE (Crear)

    DROP (Eliminar)

    ALTER (Modificar)

    Completados por el tipo de objeto sobre el que actúan y el objeto concreto:

    CREATE DATABASE mibase .......;

    Permite crear una base de datos llamada mibase, a continuación escribiremos las demás cláusulas que completarán la acción, en este caso dónde se almacenará la base de datos, cuánto ocupará, etc...

    CREATE TABLE mitabla (.....);

  • 38

    Permite crear una nueva tabla llamada mitabla, entre paréntesis completaremos la acción indicando la definición de las columnas de la tabla.

    CREATE INDEX miindex...;

    Lo mismo para crear un índice (¿a que lo habíais adivinado?).

    DROP DATABASE mibase;

    Permite borrar, eliminar la base de datos mibase.

    DROP TABLE mitabla;

    Elimina la tabla mitabla.

    ALTER TABLE mitabla.....;

    Permite modificar la definición de la tabla mitabla.

    En el DML (acciones sobre los datos almacenados) utilizaremos los verbos:

    INSERT (Crear, es decir, insertar una nueva fila de datos)

    DELETE (Eliminar filas de datos)

    UPDATE (Modificar filas de datos)

    SELECT (Seleccionar, obtener)

    Por ejemplo:

    INSERT INTO mitabla ..... Inserta nuevas filas en mitabla

    DELETE FROM mitabla Eliminar filas de mitabla

    UPDATE mitabla ....... Actualiza filas de mitabla

    Como ejemplo de cláusula dentro de una instrucción tenemos:

    SELECT codigo, nombre

    FROM Clientes

    WHERE localidad=’Valencia’;

    En esta sentencia nos aparecen dos cláusulas, la cláusula FROM que nos permite indicar de dónde hay que coger los datos y la cláusula WHERE que permite indicar una condición de selección.

    Otra característica de una sentencia SQL es que acaba con un punto y coma (;) originalmente éste era obligatorio y servía para indicar el fin de la instrucción, pero ahora se puede omitir, aunque se recomienda su uso.

    En una sentencia utilizaremos palabras reservadas (las fijas del lenguaje), y nombres de objetos y variables (identificadores).

    Las palabras reservadas no se pueden utilizar para otro propósito, por ejemplo una tabla no se puede llamar FROM, y los nombres (los identificadores) siguen las reglas detalladas en el punto siguiente.

  • 39

    Nombres cualificados. En ocasiones deberemos utilizar nombres cualificados, por ejemplo cuando se escribe un nombre de tabla, SQL presupone que se está refiriendo a una de las tablas de la base de datos activa, si queremos hacer referencia a una tabla de otra base de datos utilizamos su nombre cualificado nombrebasedatos.nombredeesquema.nombretabla, utilizamos el punto para separar el nombre del objeto y el nombre de su contenedor.

    O por ejemplo si en una consulta cuyo origen son dos tablas, queremos hacer referencia a un campo y ese nombre de campo es un nombre de campo en las dos tablas, pues utilizaremos su nombre cualificado nombretabla.nombrecampo.

    El valor NULL.

    Puesto que una base de datos es un modelo de una situación del mundo real, ciertos datos pueden inevitablemente faltar, ser desconocidos o no ser aplicables, esto se debe de indicar de alguna manera especial para no confundirlo con un valor conocido pero que sea cero por ejemplo, SQL tiene para tal efecto el valor NULL que indica precisamente la ausencia de valor.

    Por ejemplo: no es lo mismo que el alumno no tenga nota a que tenga la nota cero, esto afectaría también a todos los cálculos que se pueden realizar sobre la columna nota.

    Unidad 2. Introducción al SQL. Transact-SQL (III)

    2.4. Reglas de formato de los identificadores

    Los identificadores son los nombres de los objetos de la base de datos. Cualquier elemento de Microsoft SQL Server 2005 puede tener un identificador: servidores, bases de datos, tablas, vistas, columnas, índices, desencadenadores, procedimientos, restricciones, reglas, etc.

    Las reglas de formato de los identificadores normales dependen del nivel de compatibilidad de la base de datos, que se establecía con el parámetro sp_dbcmptlevel pero que ahora Microsoft aconseja no utilizar ya que desaparecerá en versiones posteriores en vez de eso se tiene que utilizar la cláusula SET COMPATIBILITY_LEVEL de la instrucción ALTER TABLE. Cuando el nivel de compatibilidad es 90, (el asignado por defecto) se aplican las reglas siguientes para los nombres de los identificadores:

    No puede ser una palabra reservada.

    El nombre debe tener entre 1 y 128 caracteres, excepto para algunos tipos de objetos en los que el número es más limitado.

    El nombre debe empezar por:

    o Una letra, como aparece definida por el estándar Unicode 3.2. La definición Unicode de letras incluye los caracteres latinos de la "a" a la "z" y de la "A" a la "Z".

    o El carácter de subrayado ( _ ), arroba ( @ ) o número ( # ).

    Ciertos símbolos al principio de un identificador tienen un significado especial en SQL Server. Un identificador que empieza con el signo de arroba indica un parámetro o una variable local. Un identificador que empieza con el signo de número indica una tabla o procedimiento temporal. Un identificador que empieza con un signo de número doble (##) indica un objeto temporal global.

    Algunas funciones de Transact-SQL tienen nombres que empiezan con un doble signo de arroba (@@). Para evitar confusiones con estas funciones, se recomienda no utilizar nombres que empiecen con @@.

  • 40

    No se permiten los caracteres especiales o los espacios incrustados.

    Si queremos utilizar un nombre que no siga estas reglas, normalmente para poder incluir espacios en blanco, lo tenemos que escribir encerrado entre corchetes [ ] (también se pueden utilizar las comillas pero recomendamos utilizar los corchetes).

    2.5. Tipos de datos

    En SQL Server 2005, cada columna, expresión, variable y parámetro está asociado a un tipo de datos. Un tipo de datos, realmente define el conjunto de valores válidos para los campos definidos de ese tipo. Indica si el campo puede contener: datos numéricos, de caracteres, moneda, fecha y hora, etc.

    SQL Server proporciona un conjunto de tipos de datos del sistema que define todos los tipos de datos que pueden utilizarse. También podemos definir nuestros propios tipos de datos en Transact-SQL o Microsoft .NET Framework.

    Los tipos de datos más utilizados son:

    Los numéricos: int, decimal, money

    Los de fecha y hora: datetime

    Y las cadenas de caracteres: varchar

    Si quieres conocer todos los tipos de datos disponibles en SQLServer 2005, visita el

    siguiente avanzado .

    2.6. Las constantes

    Una constante es un valor específico o un símbolo que representa un valor de dato específico. El formato de las constantes depende del tipo de datos del valor que representan. En este apartado veremos las más utilizadas.

    Las constantes numéricas se escriben mediante una cadena de números, con la consideración de que el separador decimal es un punto, no una coma, y que si se trata de un valor monetario deberemos incluir la moneda al inicio de la constante. Por ejemplo: 85.90 y €85.90, el primero sería un valor decimal y el segundo un valor money. De forma predeterminada, los valores serán positivos. Para indicar lo contrario escribimos el signo - al principio.

    Las constantes de fecha y hora van entre comillas simples y con un formato de fecha y hora adecuado. Por ejemplo: '03/10/90'.

    Y las constantes en cadenas de caracteres van entre comillas simples. Por ejemplo: 'Juan García López'.

    Para indicar valores negativos y positivos añadimos el prefijo + o - según sea el valor positivo o negativo. Sin prefijo se entiende que el valor es positivo.

    Si quieres ver cómo definir constantes para otros tipos de datos, visita el siguiente avanzado (arriba).

    Unidad 2. Introducción al SQL. Transact-SQL (IV)

    2.7. Las expresiones

    http://www.aulaclic.es/sqlserver/a_2_3_1.htm

  • 41

    Una expresión es una combinación de símbolos y operadores que el motor de base de datos de SQL Server evalúa para obtener un único valor. Una expresión simple puede ser una sola constante, variable, columna o función escalar. Los operadores se pueden usar para combinar dos o más expresiones simples y formar una expresión compleja. Dos expresiones pueden combinarse mediante un operador si ambas tienen tipos de datos admitidos por el operador y se cumple al menos una de estas condiciones:

    Las expresiones tienen el mismo tipo de datos.

    El tipo de datos de menor prioridad se puede convertir implícitamente al tipo de datos de mayor prioridad.

    La función CAST puede convertir explícitamente el tipo de datos con menor prioridad al tipo de datos con mayor prioridad o a un tipo de datos intermedio que pueda convertirse implícitamente al tipo de datos con la mayor prioridad.

    Tipos de operadores:

    - Operadores numéricos:

    suma +

    resta -

    multiplicación *

    división /

    módulo

    (resto de una división) %

    - Operadores bit a bit: realizan manipulaciones de bits entre dos expresiones de cualquiera de los tipos de datos de la categoría del tipo de datos entero.

    AND &

    OR |

    OR exclusivo ^

    - Operadores de comparación:

    Igual a =

    Mayor que >

    Menor que <

    Mayor o igual que >=

  • 42

    Menor o igual que

    - Operadores lógicos:

    Aquí sólo los nombraremos ya que en el tema de consultas simples los veremos en detalle.

    ALL IN

    AND LIKE

    ANY NOT

    BETWEEN OR

    EXISTS SOME

    - Operadores de cadenas:

    Concatenación +

    Resultados de la expresión

    - Si se combinan dos expresiones mediante operadores de comparación o lógicos, el tipo de datos resultante es booleano y el valor es uno de los siguientes: TRUE, FALSE o UNKNOWN.

    - Cuando dos expresiones se combinan mediante operadores aritméticos, bit a bit o de cadena, el operador determina el tipo de datos resultante.

    Las expresiones complejas formadas por varios símbolos y operadores se evalúan como un resultado formado por un solo valor. El tipo de datos, intercalación, precisión y valor de la expresión resultante se determina al combinar las expresiones componentes de dos en dos, hasta que se alcanza un resultado final. La prioridad de los operadores de la expresión define la secuencia en que se combinan las expresiones.

    Unidad 2. Introducción al SQL. Transact-SQL (V)

    2.8. Funciones

  • 43

    SQL Server 2005 proporciona numerosas funciones integradas y permite crear funciones definidas por el usuario.

    Existen diferentes tipos de funciones:

    Funciones de conjuntos de filas: devuelven un objeto que se puede utilizar, en instrucciones Transact-SQL, en lugar de una referencia a una tabla.

    Funciones de agregado (también llamadas funciones de columna): Operan sobre una colección de valores y devuelven un solo valor de resumen. Por ejemplo, la función de suma sobre la columna importe para conocer el importe total: SUM(importe)

    Funciones de categoría: Devuelven un valor de categoría para cada fila de un conjunto de filas, por ejemplo devuelve el número de la fila, el ranking de la fila en una determinada ordenación, etc.

    Funciones escalares: Operan sobre un valor y después devuelven otro valor. Son las funciones que estamos acostumbrados a utilizar. Las funciones escalares se clasifican según el tipo de datos de sus operandos

    Las variables

    En Transact-SQL podemos definir variables, que serán de un tipo de datos determinado, como tipos de datos podemos utilizar los propios de la base de datos SQL-SERVER, pero también podemos utilizar tipos propios del lenguaje que no pueden ser utilizados en DDL. El tipo Cursor y el tipo Table son dos de estos tipos.

    Las variables se definen utilizando la instrucción DECLARE con el siguiente formato:

    DECLARE @nbvariable tipo

    El nombre de la variable debe empezar por el símbolo @, este símbolo hace que SQL interprete el nombre como un nombre de variable y no un nombre de objeto de la base de datos.

    Por ejemplo: DECLARE @empleados INT

    Con esto hemos definido la variable @empleados de tipo entero.

    Para asignar un valor a una variable, la asignación se realiza con la palabra SELECT y el signo igual con el formato:

    SELECT @nbvariable = valor

    El valor puede ser cualquier valor constante, otro nombre de variable, una expresión válida o algo más potente, parte de una sentencia SELECT de SQL. Por ejemplo:

    SELECT @empleados = 0;

    SELECT @empleados = @otra * 100;

    SELECT @EMPLEADOS = COUNT(numemp) FROM empleados;

    El valor almacenado en la variable se puede visualizar mediante la orden PRINT. o SELECT

    PRINT @nbvariable o SELECT @nbvariable

  • 44

    El valor almacenado en la variable se visualizará en la pestaña de resultados. También se puede usar para escribir mensajes:

    PRINT 'Este es el mensaje'

    Otros elementos del lenguaje

    Comentarios. Como en cualquier otro lenguaje de programación, debemos utilizar comentarios destinados a facilitar la legibilidad del código. En SQL se insertan comentarios con los signos:

    /* */ Varias líneas /* Esto es un comentario

    en varias líneas */

    -- Una única línea -- Esto es un comentario en una única línea.

    USE. Cambia el contexto de la base de datos al de la base de datos especificada.

    USE nbBaseDeDatos

    Hace que la base de datos activa pase a ser la base de datos indicada en la instrucción, las consultas que se ejecuten a continuación se harán sobre tablas de esa base de datos si no se indica lo contrario. Es una instrucción útil para asegurarnos de que la consulta se ejecuta sobre la base de datos correcta.

    GO

    GO no es una instrucción Transact-SQL, sino un comando reconocido por las utilidades sqlcmd y osql, así como por el Editor de código de SQL Server Management Studio. Las utilidades de SQL Server interpretan GO como una señal de que deben enviar el lote actual de instrucciones Transact-SQL a una instancia de SQL Server. El lote actual de instrucciones está formado por todas las instrucciones específicadas desde el último comando GO o desde el comienzo de la sesión o script si se trata del primer comando GO. Por ejemplo si queremos crear una consulta para crear una base de datos y sus tablas, después del CREATE DATABASE…; tenemos que poner GO antes del primer CREATE TABLE para que el sistema efectúe la primera operación y la base de datos esté creada antes de ejecutar el primer CREATE TABLE.

    BEGIN...END

    Encierra un conjunto de instrucciones Transact-SQL de forma que estas instrucciones formen un bloque de instrucciones.

    Unidad 3. Consultas simples (I)

    3.1. Introducción

    Vamos a empezar por la instrucción que más se utiliza en SQL, la sentencia SELECT. La sentencia SELECT es, con diferencia, la más compleja y potente de las sentencias SQL, con ella podemos recuperar datos de una o más tablas, seleccionar ciertos registros e incluso obtener resúmenes de los datos almacenados en la base de datos. Es tan compleja que la estudiaremos a lo largo de varias unidades didácticas incorporando poco a poco nuevas funcionalidades.

  • 45

    El resultado de una SELECT es una tabla lógica que alberga las filas resultantes de la ejecución de la sentencia.

    La sintaxis completa es la siguiente:

    SELECT sentencia::=[WITH [,...n]]

    [ORDER BY {expression_columna|posicion_columna [ASC|DESC]

    }

    [ ,...n ]]

    [COMPUTE

    {{AVG|COUNT|MAX|MIN|SUM} (expression)}[ ,...n ] [BY

    expression[ ,...n ]]

    ]

    []

    [OPTION ([ ,...n ])]

    ::=

    { | ( < expresion_consulta > )

    }

    [ {UNION [ALL]|EXCEPT|INTERSECT}

    | ()

    [...n ]

    ]

    ::=

    SELECT [ALL|DISTINCT]

    [TOP expresion [PERCENT] [WITH TIES] ]

    [INTO nueva_tabla]

    [FROM { } [ ,...n ] ]

    [WHERE ]

    [GROUP BY [ ALL ] expresion_agrupacion [ ,...n ]

    [WITH { CUBE | ROLLUP } ]

    ]

    [HAVING < condicion_busqueda > ]

    Debido a la complejidad de la sentencia (en la sintaxis anterior no se han detallado algunos elementos), la iremos viendo poco a poco, empezaremos por ver consultas básicas para luego ir añadiendo más cláusulas.

    Empezaremos por ver las consultas más simples, basadas en una sola tabla y nos limitaremos a la siguiente sintaxis:

    SELECT [ALL|DISTINCT]

  • 46

    [TOP expresion [PERCENT] [WITH TIES]]

    FROM

    [WHERE ]

    [ORDER BY {expression_columna|posicion_columna [ASC|DESC]} [

    ,...n ]]

    3.2. Origen de datos FROM

    De la sintaxis anterior, el elemento indica de dónde se va a extraer la información y se indica en la cláusula FROM, es la única cláusula obligatoria. En este tema veremos un origen de datos basado en una sola tabla.

    La sintaxis será la siguiente:

    ::=

    nb_tabla | nb_vista [[ AS ] alias_tabla ]

    nb_tabla representa un nombre de tabla.

    nb_vista un nombre de vista.

    Tanto para las tablas como para las vistas, podemos hacer referencia a tablas que están en otras bases de datos (siempre que tengamos los permisos adecuados), en este caso tenemos que cualificar el nombre de la tabla, indicando delante el nombre de la base de datos (Lógica) y el nombre del esquema al que pertenece la tabla dentro de la base de datos.

    Por ejemplo: MiBase.dbo.MiTabla se refiere a la tabla MiTabla que se encuentra en

    el esquema dbo de la base de datos MiBase.

    Cuando no se definen esquemas, SQL-Server crea uno por defecto en cada base de datos denominado dbo.

    Opcionalmente podemos definir un nombre de alias.

    Un nombre de alias (alias_tabla) es un nombre alternativo que se le da a la tabla dentro de la consulta.

    Si se define un nombre de alias, dentro de la consulta, será el nombre a utilizar para referirnos a la tabla, el nombre original de la tabla ya no tendrá validez.

    Se utilizan los nombres de alias para simplificar los nombres de tablas a veces largos y también cuando queremos combinar una tabla consigo misma; ya volveremos sobre los alias de tabla cuando veamos consultas multitabla.

    La palabra AS no añade ninguna operatividad, está más por estética.

    Podemos escribir:

    SELECT ...

    FROM tabla1 Sacamos los datos de la tabla tabla1

  • 47

    SELECT ...

    FROM tabla1 t1 Sacamos los datos de la tabla tabla1 y le

    asignamos un alias de tabla: t1

    SELECT ...

    FROM tabla1 AS t1 Es equivalente a la sentencia anterior.

    Si la tabla o la vista están en otra base de datos del mismo equipo que está ejecutando la instancia de SQL Server, se utiliza el nombre cualificado con el formato nbBaseDatos.nbEsquema.nbTabla.

    Si la tabla o la vista están fuera del servidor local en un servidor vinculado, se utiliza un nombre de cuatro partes con el formato nbservidor.catalogo.nbEsquema.nbTabla. Volveremos más adelante sobre las conexiones remotas.

    Unidad 3. Consultas simples (II)

    3.3. La lista de selección

    En la lista de selección indicamos las columnas que se tienen que visualizar en el resultado de la consulta.

    ::=

    { *

    | {nombre_tabla|nombre_vista|alias_tabla}.*

    | { [{nombre_tabla|nombre_vista|alias_tabla}.]

    {nb_columna|$IDENTITY|$ROWGUID}

    |

    }[[AS] alias_columna]

    | alias_columna =

    } [ ,...n ]

    Separamos la definición de cada columna por una coma y las columnas del resultado aparecerán en el mismo orden que en la lista de selección.

    Para cada columna del resultado su tipo de datos, tamaño, precisión y escala son los mismos que los de la expresión que da origen a esa columna.

    Podemos definir las columnas del resultado de varias formas, mediante:

    Una expresión simple:

    o una referencia a una función.

    o una variable local

    o una constante

    o una columna del origen de datos,

  • 48

    Una subconsulta escalar, que es otra instrucción SELECT que devuelve un único valor y se evalúa para cada fila del origen de datos (esto no lo veremos de momento).

    Una expresión compleja generada al usar operadores en una o más expresiones simples.

    La palabra clave *.

    La asignación de variables con el formato @variable_local = expresión.

    La palabra clave $IDENTITY.

    La palabra clave $ROWGUID.

    3.4. Columnas del origen de datos

    Cuando queremos indicar en la lista de selección una columna del origen de datos, la especificamos mediante su nombre simple o nombre cualificado. El nombre cualificado consiste en el nombre de la columna precedido del nombre de la tabla donde se encuentra la columna.

    Si en el origen de datos hemos utilizado una vista o un nombre de alias, deberemos utilizar ese nombre. Es obligatorio utilizar el nombre cualificado cuando el nombre de la columna aparece en más de una tabla del origen de datos.

    Ejemplos de consulta simple.

    Listar nombres, oficinas, y fechas de contrato de todos los empleados:

    SELECT nombre, oficina, contrato

    FROM empleados;

    El resultado sería:

    nombre oficina contrato

    Antonio Viguer 12 1986-10-20

    Alvaro Jaumes 21 1986-12-10

    Juan Rovira 12 1987-03-01

    José González 12 1987-05-19

    Vicente Pantalla 13 1988-02-12

    Luis Antonio 11 1988-06-14

    Jorge Gutiérrez 22 1988-11-14

    Ana Bustamante 21 1989-10-12

    María Sunta 11 1999-10-12

  • 49

    Juan Victor NULL 1990-01-13

    Listar una tarifa de productos:

    SELECT idfab, idproducto, descripcion, productos.precio

    FROM productos;

    Hemos cualificado la columna precio aunque no es necesario en este caso.

    El resultado sería:

    Idfab idproducto descripcion precio

    aci 41001 arandela 0,58

    aci 41002 bisagra 0,80

    aci 41003 art t3 1,12

    aci 41004 art t4 1,23

    aci 4100x junta 0,26

    aci 4100y extractor 28,88

    aci 4100z mont 26,25

    bic 41003 manivela 6,52

    bic 41089 rodamiento 2,25

    Unidad 3. Consultas simples (III)

    3.5. Alias de columna

    Por defecto, en el encabezado de cada columna del resultado, aparece el nombre de la columna origen, pero esto se puede cambiar definiendo un alias de columna, el alias de columna es un nombre alternativo que se le da a esa columna.

    El alias de columna se indica mediante la cláusula AS. Se escribe el nuevo texto tal cual sin comillas siguiendo las reglas de los identificadores.

    Ejemplo:

    SELECT numclie,nombre AS nombrecliente

    FROM clientes;

  • 50

    El resultado será :

    Numclie nombrecliente

    2101 Luis García Antón

    2102 Alvaro Rodríguez

    2103 Jaime Llorens

    en vez de:

    Numclie nombre

    2101 Luis García Antón

    2102 Alvaro Rodríguez

    2103 Jaime Llorens

    La palabra AS es opcional.

    SELECT numclie,nombre nombrecliente

    FROM clientes;

    Sería equivalente a la consulta anterior

    Si queremos incluir espacios en blanco en el nombre lo debemos encerrar entre corchetes.

    SELECT numclie,nombre AS [nombre cliente]

    FROM clientes;

    Nota importante: Este nombre de alias se podrá utilizar en la lista de selección y en la cláusula ORDER BY pero no en la cláusula WHERE.

    3.6. Funciones

    Existen funciones que podemos utilizar en la lista de selección, e incluso en otras cláusulas que veremos más adelante, como el WHERE. Las principales funciones son las siguientes:

    Funciones de fecha:

    Función Descripción Ver

    +

    GETDATE Devuelve la fecha actual.

    http://www.aulaclic.es/sqlserver/b_3_3_1.htmhttp://www.aulaclic.es/sqlserver/b_3_3_1.htm

  • 51

    GETUTCDATE Devuelve la hora UTC.

    DATEPART Devuelve un entero que corresponde a la parte de la fecha solicitada.

    DAY Devuelve el día de la fecha indicada.

    MONTH Devuelve el mes de la fecha indicada.

    YEAR Devuelve el año de la fecha indicada.

    DATENAME Devuelve una cadena de caracteres que representa el valor de la unidad especificada

    de una fecha especificada.

    DATEADD Devuelve un valor datetime nuevo que resulta de sumar un intervalo de tiempo a una

    fecha especificada.>

    DATEDIFF Devuelve el nº de intervalos que hay entre dos fechas.

    @@DATEFIRST Devuelve el primer día de la semana establecido con SET DATEFIRST.

    SET

    DATEFIRST Establece el primer día de la semana en un número del 1 al 7.

    Unidad 3. Consultas simples (IV)

    Funciones de cadena:

    Función Descripción Ver

    +

    ASCII Devuelve el valor de código ASCII del carácter situado más a la izquierda de una expresión

    de caracteres.

    CHAR Devuelve el carácter ASCII del entero indicado.

    NCHAR Devuelve el carácter Unicode del entero indicado.

    UNICODE Devuelve el entero que se corresponde al carácter Unicode indicado.

    LEN Devuelve el total de caracteres de una cadena, excluidos los espacios en blanco finales.

    LTRIM Devuelve una cadena tras quitarle los espacios en blanco iniciales.

    RTRIM Devuelve una cadena tras quitarle los espacios en blanco finales.

    http://www.aulaclic.es/sqlserver/b_3_3_1.htmhttp://www.aulaclic.es/sqlserver/b_3_3_1.htmhttp://www.aulaclic.es/sqlserver/b_3_3_1.htmhttp://www.aulaclic.es/sqlserver/b_3_3_1.htmhttp://www.aulaclic.es/sqlserver/b_3_3_1.htmhttp://www.aulaclic.es/sqlserver/b_3_3_2.htmhttp://www.aulaclic.es/sqlserver/b_3_3_2.htmhttp://www.aulaclic.es/sqlserver/b_3_3_2.htmhttp://www.aulaclic.es/sqlserver/b_3_3_2.htmhttp://www.aulaclic.es/sqlserver/b_3_3_3.htmhttp://www.aulaclic.es/sqlserver/b_3_3_3.htmhttp://www.aulaclic.es/sqlserver/b_3_3_3.htmhttp://www.aulaclic.es/sqlserver/b_3_3_3.htmhttp://www.aulaclic.es/sqlserver/b_3_3_3.htmhttp://www.aulaclic.es/sqlserver/b_3_3_4.htmhttp://www.aulaclic.es/sqlserver/b_3_3_4.htmhttp://www.aulaclic.es/sqlserver/b_3_3_1.htmhttp://www.aulaclic.es/sqlserver/b_3_3_1.htmhttp://www.aulaclic.es/sqlserver/b_3_3_1.htmhttp://www.aulaclic.es/sqlserver/b_3_3_1.htmhttp://www.aulaclic.es/sqlserver/b_3_3_1.htmhttp://www.aulaclic.es/sqlserver/b_3_3_2.htmhttp://www.aulaclic.es/sqlserver/b_3_3_2.htmhttp://www.aulaclic.es/sqlserver/b_3_3_2.htmhttp://www.aulaclic.es/sqlserver/b_3_3_2.htmhttp://www.aulaclic.es/sqlserver/b_3_3_3.htmhttp://www.aulaclic.es/sqlserver/b_3_3_3.htmhttp://www.aulaclic.es/sqlserver/b_3_3_3.htmhttp://www.aulaclic.es/sqlserver/b_3_3_3.htmhttp://www.aulaclic.es/sqlserver/b_3_3_3.htmhttp://www.aulaclic.es/sqlserver/b_3_3_4.htmhttp://www.aulaclic.es/sqlserver/b_3_3_4.htmhttp://www.aulaclic.es/sqlserver/b_3_3_1.htmhttp://www.aulaclic.es/sqlserver/b_3_3_1.htmhttp://www.aulaclic.es/sqlserver/b_3_3_1.htmhttp://www.aulaclic.es/sqlserver/b_3_3_1.htmhttp://www.aulaclic.es/sqlserver/b_3_3_1.htmhttp://www.aulaclic.es/sqlserver/b_3_3_2.htmhttp://www.aulaclic.es/sqlserver/b_3_3_2.htmhttp://www.aulaclic.es/sqlserver/b_3_3_2.htmhttp://www.aulaclic.es/sqlserver/b_3_3_2.htmhttp://www.aulaclic.es/sqlserver/b_3_3_3.htmhttp://www.aulaclic.es/sqlserver/b_3_3_3.htmhttp://www.aulaclic.es/sqlserver/b_3_3_3.htmhttp://www.aulaclic.es/sqlserver/b_3_3_3.htmhttp://www.aulaclic.es/sqlserver/b_3_3_3.htmhttp://www.aulaclic.es/sqlserver/b_3_3_4.htmhttp://www.aulaclic.es/sqlserver/b_3_3_4.htmhttp://www.aulaclic.es/sqlserver/b_3_3_1.htmhttp://www.aulaclic.es/sqlserver/b_3_3_1.htmhttp://www.aulaclic.es/sqlserver/b_3_3_1.htmhttp://www.aulaclic.es/sqlserver/b_3_3_1.htmhttp://www.aulaclic.es/sqlserver/b_3_3_1.htmhttp://www.aulaclic