curso completo de sql server

Upload: henry

Post on 20-Feb-2018

355 views

Category:

Documents


8 download

TRANSCRIPT

  • 7/24/2019 Curso Completo de SQL Server

    1/226

    Unidad 1. El entorno grfico SSMS

    1.1. Introduccin

    SQL Server 2005 es un sistema gestor de bases de datos relacionales de Microsoft Corporation orientado

    sistemas medianos y grandes aunque tambin puede rodar en ordenadores personales. SQL Server Management Stud

    (SSMS) es la herramienta de SQL Server que permite definir y gestionar todas las bases de datos almacenadas en

    servidor SQL Server 2005.

    En este tema veremos cmo utilizar el SQL Server Management Studio para manejar las bases de datos del servidor

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

    leer una introduccin a las bases de datos en el siguiente bsico

    Unidad 1. Bsico: Introduccin a las bases de datos (I)

    Objetivos de un SGBD

    Un sistema gestor de bases de datos por definicin debe cumplir los siguientes objetivos:

    Independencia de los datos.

    Recordando uno de los problemas que plantean los ficheros convencionales. La independencia de los datos consiste en

    hacer que los programas no sean tan dependientes de la estructura de los datos.

    Se han definido dos tipos de independencia:

    1. La independencia fsica: consiste en poder modificar la definicin interna de los datos (el esquema interno) sin que

    ello suponga una modificacin de los programas existentes.

    Por ejemplo, se puede cambiar la ubicacin de la base de datos, o se puede aadir un ndice sobre una tabla para

    que las consultas se ejecuten ms rpidamente, sin que eso suponga una variacin en los esquemas externos y

    conceptual, por lo que los programas (que utilizan el esquema externo) no se vern afectados.

    2. La independencia lgica: consiste en poder cambiar el esquema conceptual sin que ello suponga una modificacin

    de los programas existentes.

  • 7/24/2019 Curso Completo de SQL Server

    2/226

    Por ejemplo podemos aadir un nuevo dato en la tabla de clientes como la direccin de email sin que los esquemas

    externos se vean afectados.

    Seguridad e integridad.

    La seguridadconsiste en que los usuarios no puedan acceder a datos sin autorizacin.

    Si juntamos toda la informacin de la empresa en un mismo sitio, el SGBD debe tener mecanismos para que cualquier

    usuario pueda tener acceso a nicamente la informacin que necesita para las tareas que tiene encomendadas.

    Esta seguridad se consigue por medio de los esquemas externos, ya que el usuario slo tiene acceso a su esquema extern

    que le proporciona los datos que el administrador ha considerado incluir en ese esquema. Para el usuario no habr ms

    datos que estos.

    Adems los SGBD tienen mecanismos para definir autorizaciones que pueden ser de distinto tipo: autorizacin de lectura, d

    insercin, de actualizacin, autorizaciones especiales para poder variar el esquema conceptual etc.

    La integridadse refiere a que la informacin almacenada en la base de datos est libre de errores. Esto no siempre es

    posible ya que existen distintos tipos de errores que tienen diferentes soluciones:

    * Fallos de hardware. Estos errores no los puede evitar el SGBD pero se pueden subsanar facilitando copias de seguridad

    procesos de recuperacin.

    * Fallos del programador. Puede que aparezcan datos errneos en la base de datos como consecuencia de errores en el

    programa que genera estos datos. Para evitar al mximo este tipo de errores el sistema debe ser fcil de programar, cuanto

    ms controles realice el sistema de forma automtica, menos controles habr que incluir a nivel de programacin por lo que

    limitaremos la probabilidad de fallo y los programas deben ser probados con juegos de ensayos bien definidos.

    * Fallos del usuario final. El usuario que introduce datos en la base de datos tambin puede cometer errores, el sistema deb

    permitir controlar al mximo la informacin que se introduce para limitar el nmero de estos errores, para ello los SGBD

    incluyen clusulas de validacin de los datos, validaciones de diferentes tipos que veremos con ms detalle ms adelante.

    * Fallos derivados de la concurrencia. Ya que toda la informacin est centralizada y los distintos usuarios acceden a ella d

    forma simultnea, pueden ocurrir problemas cuando dos usuarios quieren acceder al mismo dato a la vez. Por ello el SGBD

    debe tener establecidos mecanismos para evitar este tipo de problema, bloquear registros, abortar automticamente

    transacciones etc.

    Redundancia mnima

    La redundancia consiste en que exista algn dato repetido en varios lugares.

    Por ejemplo si tenemos la direccin del cliente en la factura, en la cuenta contable, en los datos generales del cliente; esto

    como ya vimos anteriormente nos producir varios problemas:

    la informacin repetida ocupa espacio innecesario.

    la variacin de un domicilio supone el variar ese domicilio en todos los lugares donde est almacenado.

    o mayor tiempo de proceso

    o posibilidad de inconsistencia

  • 7/24/2019 Curso Completo de SQL Server

    3/226

    Por todo ello hay que evitar al mximo esa redundancia, esto se consigue utilizando herramientas de diseo y obteniendo u

    diseo ptimo de la base de datos.

    Facilidad de recuperacin de la informacin

    Otro objetivo muy importante de un SGBD es el proporcionar al usuario (o programador) unas herramientas potentes de

    manejo de datos para que pueda de manera sencilla y rpida, obtener toda la informacin que desea sin que, por ello se

    tenga que hacer un programa complejo.

    Veremos que el SQL, lenguaje empleado para recuperar informacin de la base de datos, es un lenguaje muy potente ycercano al lenguaje hablado, y adems los SGBD incluyen entornos grficos sencillos de utilizar.

    El administrador de la base de datos

    El administrador es el encargado de gestionar y controlar todo el sistema con la ayuda que le proporciona el SGBD. Tiene

    una gran responsabilidad ya que de l depende que el sistema funcione correctamente y como tiene el mximo nivel de

    privilegios, sus errores pueden ser desastrosos.

    Entre sus responsabilidades se incluye:

    Instalar el SGBD en el sistema informtico (a veces).

    Realizar el diseo de la base de datos.

    Crear las bases de datos que se vayan a gestionar.

    Crear y mantener los esquemas de las bases de datos.

    Crear y mantener las cuentas de los usuarios de las bases de datos.

    Colaborar con el administrador del sistema en las tareas de ubicacin, dimensionado y control de los archivos y

    espacios de disco ocupados por el SGBD.

    Establecer estndares de uso, polticas de acceso y protocolos de trabajo diario para los usuarios de las bases dedatos.

    Efectuar tareas de explotacin como:

    o Vigilar el trabajo diario colaborando en la resolucin de las dudas de los usuarios.

    o Controlar los tiempos de acceso, tasas de uso, cargas en los servidores, anomalas, etc.

    o Llegado el caso, reorganizar las bases de datos.

    o Disear y efectuar el planning de copias de seguridad peridicas.

    o Restaurar la base de datos despus de un incidente.

    o Estudiar las auditoras mediante el ajuste de parmetros y con ayuda de las herramientas de monitorizaci

    del sistema y de las estadsticas.

    El diccionario de datos

    Dentro del SGBD, hay una parte que son datos sobre los datos, es una base de datos en la que se almacena toda la

    informacin necesaria para que el sistema funcione. Esta base de datos es el diccionario de datos y contiene:

  • 7/24/2019 Curso Completo de SQL Server

    4/226

    La estructura lgica y fsica de la base de datos.

    Las definiciones de todos los objetos de la base de datos: tablas, vistas, ndices, disparadores (triggers) funciones,

    procedimientos almacenados, etc.

    El espacio asignado y utilizado por los objetos.

    Los valores por defecto de las columnas de las tablas.

    Los privilegios otorgados a los usuarios. Informacin que permita obtener estadsticas y evaluaciones del rendimiento del sistema.

    Tipos de bases de datos

    Podemos realizar distintas clasificaciones de las bases de datos:

    Segn su ubicacin

    Segn la organizacin lgica de la informacin.

    Tipos de bases de datos segn su ubicacin

    1. Bases de datos locales.

    En modo local tenemos la base de datos y el usuario ubicados en el mismo ordenador. Un ejemplo de base de datos que

    funciona en modo local es Microsoft Access, MS Access es una base de datos fcil de manejar por usuarios poco expertos

    que funciona bien en modo local y mientras no tenga que albergar grandes cantidades de informacin.

    Ventajas Desventajas

    EconomaEs la ms barata.

    Monousuario

    En un instante determinado slo la puede utilizar una

    persona.

    Simplicidad

    No se necesita llevar controles de accesos concurrentes, de

    transmisin de datos, etc.

    Capacidad

    Suele tener una capacidad de almacenamiento limitado.

    2. Bases de datos centralizadas

    En los sistemas centralizados tenemos la base de datos completa en un mismo servidor, y todos los usuarios acceden a esservidor. Que la base de datos est en un mismo servidor no implica que est en un solo archivo o en el mismo disco, pued

    estar repartida.

  • 7/24/2019 Curso Completo de SQL Server

    5/226

    En modo Cliente/Servidor, la base de datos se encuentra en un ordenador (el Servidor) y los usuarios acceden

    simultneamente a esa base de datos a travs de la red (sea una red local o Internet) desde sus ordenadores a travs de u

    programa Cliente.

    A nivel de empresas es el sistema que ms se utiliza en la actualidad.

    Ventajas Desventajas

    Multiusuario

    Permite que varios usuarios accedan a la vez a la misma

    informacin.

    Complejidad

    Tiene que incluir y gestionar un sistema de usuario y

    subesquemas.

    No redundancia

    Al estar todos los datos en el mismo servidor, la informacin

    no se duplica y es ms facil evitar fallos debidos a

    redundancias.

    Seguridad

    Se tienen que realizar controles para garantizar la seguridad

    de los datos, tanto a nivel interno como a nivel de

    comunicaciones.

  • 7/24/2019 Curso Completo de SQL Server

    6/226

    3. Bases de datos distribuidas

    Tenemos la informacin repartida en distintas localizaciones unidas todas ellas mediante red y un sistema gestor de bases

    de datos distribuidas.

    Las distintas localizaciones suelen ser distintas geogrficamente.

    Ventajas Desventajas

    Rendimiento

    Una clara ventaja es que es posible ubicar los datos en

    lugares donde se necesitan con ms frecuencia, aunque

    tambin se permita a usuarios no locales acceder a los datossegn sus necesidades. Esto hace que la informacin se

    recupere de forma ms rpida y gil en las ubicaciones

    locales. Adems los sistemas trabajan en paralelo, lo cual

    permite balancear la carga en los servidores.

    Complejidad en el diseo de datos

    Adems de las dificultades que generalmente se encuentran

    al disear una base de datos, el diseo de una base de dato

    distribuida debe considerar la fragmentacin, replicacin yubicacin de los fragmentos en sitios especficos, se tiene

    que trabajar tomando en cuenta su naturaleza distribuida, po

    lo cual no podemos pensar en hacer joins que afecten a

    tablas de varios sistemas, etc.

    Disponibilidad

    En caso de que falle la base de datos de alguna localidad, el

    sistema no se colapsa, puede seguir funcionando excluyendo

    los datos de la localidad que haya fallado.

    Complejidad tcnica

    Se debe asegurar que la base de datos sea transparente, se

    debe lidiar con varios sistemas diferentes que pueden

    presentar dificultades nicas.

    Autonoma local

    Un departamento puede controlar los datos que le

    pertenecen.

    Economa en el mantenimiento

    La complejidad y la infraestructura necesaria implica que se

    necesitar mayor mano de obra.

    Economa en la implantacin Seguridad

  • 7/24/2019 Curso Completo de SQL Server

    7/226

    Es ms barato crear una red de muchas mquinas pequeas,

    que tener una sola mquina muy poderosa.

    Se debe trabajar en la seguridad de la infraestructura as

    como cada uno de los sistemas.

    Modularidad

    Se pueden modificar, agregar o quitar sistemas de la base de

    datos distribuida sin afectar a los dems sistemas (mdulos).

    Integridad

    Se vuelve difcil mantener la integridad, aplicar las reglas de

    integridad a travs de la red puede ser muy caro en trminos

    de transmisin de datos.

    Falta de experiencia

    Las bases de datos distribuidas son un campo relativamente

    nuevo y poco comn por lo cual no existe mucho personal

    con experiencia o conocimientos adecuados.

    Carencia de estndares

    An no existen herramientas o metodologas que ayuden a

    los usuarios a convertir un DBMS centralizado en un DBMS

    distribuido.

    Tipos de bases de datos segn la organizacin lgica de los datos

    En un principio existan tres tipos de bases de datos segn su estructura interna (la manera de organizar la informacin):

    Bases de datos jerrquicas

    Bases de datos en red

    Bases de datos relacionales.

    Ms recientes son las bases de datos orientadas a objetos y las bases de datos multidimensionales.

    1. Las bases de datos jerrquicas

    En una base de datos jerrquica se organizan los datos utilizando estructuras arborescentes (en rbol).

    Un RBOL es una estructura jerrquica en la que los elementos se suelen denominar NODOS y existen dependencias entr

    los nodos.

    La dependencia es de 1:M del tipo padre/hijo. Un hijo no puede tener ms de un padre, pero un padre varios hijos.

    Un ejemplo de base de datos jerrquica es el sistema IMS.

  • 7/24/2019 Curso Completo de SQL Server

    8/226

    2. Las bases de datos en red

    Tambin en desuso, en una base de datos en red se utiliza la estructura de grafo/red, como en el caso anterior los distintos

    objetos estn relacionados entre s mediante relaciones del tipo 1:M pero en este caso un objeto puede estar relacionado

    como hijo con varios elementos que sern sus padres. Un este caso las relaciones que se crean se denominan SET y el

    equivalente al padre se denomina PROPIETARIO (OWNER) y el equivalente al hijo se denomina MIEMBRO (MEMBER).

    Un ejemplo de sistema en red es el CODASYL. Tambin existen modelos para realizar el diseo de datos orientado a base

    de datos en red.

    En red podramos representar lo mismo que la estructura anterior y adems lo siguiente:

    Los sistemas jerrquico y en red constituyen la primera generacin de los SGBD. Pero estos sistemas presentan algunos

    inconvenientes:

    Es necesario escribir complejos programas de aplicacin para responder a cualquier tipo de consulta de datos, por

    simple que sta sea.

    La independencia de datos es mnima.

    No incluyen controles de integridad.

    Por lo que pronto fueron sustituidos por los sistemas relacionales.

    3. Las bases de datos relacionales

    Esta es la estructura que se ha impuesto para aplicaciones de gestin, consiste en organizar los datos en forma de tablas,

    las relaciones entre los objetos se consiguen incluyendo en la tabla del hijo, la clave del objeto padre. Como son las que

    utilizaremos durante todo el mdulo hemos reservado un apartado especial para ellas.

    4. Las bases de datos orientadas a objetos

    Es un modelo ms reciente, trata de almacenar en la base de datos los objetos completos (estado y comportamiento). La

    informacin que contienen se organiza en atributos y el comportamiento en operaciones.

    5. Las bases de datos mutidimensionales

    En una base de datos multidimensional los datos se almacenan en tablas de mltiples dimensiones en vez de tablas

    bidimensionales como las del modelo relacional. Se utilizan para grandes volmenes de informacin.

    La base de datos relacional

    Elementos de una base de datos relacional

    Los datos se organizan en relacionescompuestas por tuplasde atributos. Si convertimos esta definicin a tablas

    tenemos que los datos se organizan en tablascompuestas por filas(registros) y columnas(campos).

    A cada tabla se le asigna un nombre nico.

  • 7/24/2019 Curso Completo de SQL Server

    9/226

    Una tabla tiene 0 o ms filas, y cada fila contiene la informacin de un determinado sujeto de la relacin.

    Las filas en un principio estn desordenadas.

    La lista de los atributos dispuestos en un orden especfico de izquierda a derecha y que forman la definicin de una

    tabla se denomina esquema de la tabla, mientras que los valores concretos de los datos que estn almacenados e

    la tabla se llaman ocurrencias.

    Por ejemplo, tenemos estas dos tablas:

    El esquema de la tabla Piezasest compuesto por las columnas (Codigo, Denominacin, Precio, Fabricante,

    Codigo_segn_fab).

    Codigoes el cdigo de la pieza, Denominacionel nombre de la pieza, Fabricanteel cdigo del fabricante que nos suministr

    la pieza y Cdigo_segn_fab el cdigo que utiliza ese fabricante para identificar la pieza en su sistema de gestin.

    Una ocurrencia de fila de la tabla Piezassera:1, Taburete 3 patas, 25, Fab1, T123-34.

    Todos los valores de una columna determinada tienen el mismo tipo de datos, y stos estn extrados de un

    conjunto de valores legales llamado dominio de la columna. Muchas veces el dominio se corresponder con un tip

    de datos estndar del sistema.

    Por ejemplo en la tabla Piezasla columna Codigoest definida sobre el dominio de los enteros.

    A parte de los valores del dominio, la columna puede contener un valor especial, el valor nulo. El valor nulo (NULL

    es importante porque representa la ausencia de valor en el campo y no es lo mismo que el valor cero 0 o la caden

    vaca o espacios en blanco. De hecho es un valor tan especial que no funciona como los dems valores, por ejemp

    no podemos comparar (con el operador de comparacin =) un campo con el valor nulo, tenemos que utilizar un

    operador especial (IS NULL). Incluso se han tenido que redefinir los operadores lgicos para tener en cuenta el val

    nulo.

    Ej. En la tabla Fabricantesel campo direccinde la primera fila contiene el valor nulo (null) esto significa que estefabricante no tiene direccin (al menos conocida).

    En una tabla cada columna tiene un nico nombre y ste no se puede utilizar para nombrar otra columna de la

    misma tabla pero s de otra tabla.

    Por ejemplo en la tabla Piezasno se pueden definir dos columnas llamadas Codigo, por eso el segundo cdigo lo

    hemos llamado Codigo_segun_fab. Pero en la tabla Fabricantesla columna IdFabse poda haber llamado Codigo

    sin problema.

  • 7/24/2019 Curso Completo de SQL Server

    10/226

    En una tabla no se admiten dos filas con los valores coincidentes en todos sus campos. Esta restriccin no se suel

    cumplir.

    Esta regla nos dice que por ejemplo en la tabla Fabricantesno pueden haber dos filas con los valores Fab1,

    Muebles la Madera, null.

    Realmente sera informacin redundante, por eso la existencia de esta regla, no obstante en algunos casos muy

    concretos s es necesario poder almacenar dos ocurrencias de fila idnticas, por esta razn muchos SGBD no

    cumplen esta regla.

    Toda tabla debe tener una clave principal(clave primaria).

    Una clave primaria es cualquier una columna (o combinacin de columnas) que permite identificar de forma unvoc

    cada una de las filas de la tabla. Para que pueda cumplir su cometido, la clave primaria no puede contener

    valores nulos ni valores duplicados(no podr haber dos filas con el mismo valor en este campo). Hay SGBD qu

    incluyen el concepto de clave primaria pero no la hacen obligatoria, por lo que en estos sistemas se pueden definir

    tablas sin clave primaria.

    En una tabla pueden existir ms de una columna que permita identificar las filas de la tabla, si queremos utilizar tale

    columnas como identificadores las definiremos como claves secundarias(alternativas). Una clave secundaria tien

    las mismas restricciones que una clave primaria, pero como no podemos definir dos claves primarias, definimos laque se vaya a utilizar ms frecuentemente como clave primaria y la otra (u otras) como secundarias.

    Por ejemplo en la tabla Piezasla clave primaria es el campo Codigoya que no hay ni puede haber dos piezas con

    mismo cdigo. Este campo realmente sirve para identificar las filas de la tabla, sabiendo un valor de cdigo (por

    ejemplo el 2) sabremos que nos referimos a la fila de la mesa ovalada.

    En esta misma tabla tenemos una posible clave alternativa, la formada por los campos Fabricantey

    Codigo_segun_fab ya que en la tabla Piezases imposible tener dos filas con la misma combinacin de valores en

    estos campos (el cdigo_segun_fabes el cdigo que utiliza el fabricante para identificar sus piezas).

    Otro concepto muy importante, fundamental en las bases de datos relacionales, es la clave ajena(externao

    fornea).

    Una clave ajena es un campo (o combinacin de campos) que contiene la referencia a una fila de otra tabla, tambi

    puede referirse a la misma tabla. En otras palabras, es un campo que seala a un registro de otra tabla, contiene u

    valor que identifica un registro de la otra tabla. Son los campos que se utilizan para relacionar las tablas entre s.

    Una tabla puede tener 0, una o varias claves ajenas(externas, forneas).

    Una clave ajena puede contener valores duplicados y valores nulos.

    Siguiendo el ejemplo anterior, en la tabla Piezastenemos la clave ajena Fabricanteya que en este campo nos

    guardamos un valor que seala a una fila de la tabla Fabricantes, en este campo tenemos el cdigo del fabricante

    que nos suministra la pieza y este cdigo nos lleva al fabricante correspondiente en la tabla Fabricantes.

    Por ejemplo la pieza 3 es servida por el fabricante Fab2, valor que seala al fabricante Maderas Asociados.

    El SGBD deber velar por la integridad de los datos, para ello incluye varias reglas de integridad que se

    comprobarn de forma automtica sin necesidad de la intervencin externa de los usuarios o de los programas de

    aplicacin.

    Existen distintos tipos de reglas de integridad:

  • 7/24/2019 Curso Completo de SQL Server

    11/226

    o La integridad de entidades (integridad de claves): Toda tabla debe tener una clave primaria que permit

    identificar unvocamente los registros que contiene, por lo tanto no puede contener el valor nulo ni valores

    duplicados.

    En el ejemplo anterior si intentamos insertar una nueva pieza con el cdigo 2, el sistema no nos dejar

    porque ya hay una pieza con este mismo cdigo en la tabla.

    o La integridad referencial: En una clave ajena no puede haber un valor no nulo que no exista en la tabla d

    referencia. Para que no existan errores de integridad referencial en la base de datos, el sistema comprueb

    automticamente que los valores introducidos en las claves ajenas existan en el campo de referencia en la

    otra tabla, si no existe, no nos dejar insertar el registro.

    Volviendo al ejemplo anterior, si intentamos insertar una pieza con un cdigo de fabricante que no existe en

    la tabla de fabricantes, el sistema no nos dejar.

    A nivel de control sobre los datos, el SGBD debe de proporcionar herramientas para poder definir restricciones de

    dominio que se comprobarn de forma automtica (se comprueba que el valor introducido en una columna

    pertenece al dominio de la columna, al tipo de datos), y reglas de negocio, que son reglas especficas sobre los

    datos, en este tipo de reglas entran las reglas de validacin y reglas definidas a nivel superior que veremos ms

    adelante.Una regla de validacin sera por ejemplo que el precio no pueda ser inferior a 10 euros, y una regla de negocio, qu

    no pueda haber ms de 20 fabricantes.

    Un SGBD relacional sigue la arquitectura de tres niveles en la que tenemos en el nivel externo las vistas, en nivel

    conceptual el esquema conceptual con la definicin de todas las tablas, columnas que las componen y relaciones

    entre ellas, en el nivel interno tenemos la definicin fsica de la base de datos.

    Finalmente tenemos para poder manejar la informacin almacenada en la base de datos un lenguaje que cumple la

    reglas de Codd, el lenguaje SQL que veremos en prximos temas.

    1.2. Instalar SQL Server 2005

    Existen diferentes versiones (ediciones) del producto, por lo que es un producto muy verstil, que puede cumplir con la

    exigencias de cualquier empresa, puede ser utilizado para gestionar bases de datos en un PC en modo local a gestion

    todo el sistema de informacin de grandes empresas pasando por sistemas que requieran menos potencia y por sistema

    mviles.

    Actualmente se utiliza ms en entornos Cliente/servidor con equipos medianos y grandes.

    Para realizar este curso te recomendamos instalar la versin gratuita: Express. Puedes descargarla desde la pgina web d

    Microsoft, desde el enlace para iniciar descarga. Si quieres ver las diferentes ediciones y sus caractersticas principales visel siguiente avanzado

    Si la instalacin se realiza a partir del archivo descargado de Internet, la descarga se empaqueta como un nico ejecutab

    mediante una tecnologa de instalacin de Microsoft llamada SFXCab. Al hacer doble clic en el .exe se inic

    automticamente el proceso de instalacin.

    Tan slo deberemos seguir el asistente. Los puntos ms importantes a tener en cuenta son:

  • 7/24/2019 Curso Completo de SQL Server

    12/226

    Habilitar el SQL Server Management Studio en la instalacin (si no lo est por defecto) cuando nos pregunte q

    componentes deseamos instalar.

    Indicar que se trata de una Instancia predeterminada.

    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 travs del acce

    directo o a travs de Inicio, Programas, Microsoft SQL Server 2005, SQL Server Management Studio.

    Lo primero que deberemos hacer es establecer la conexin con el servidor:

    Seleccionamos el nombre del servidor y pulsamos el botn Conectar. Se abrir la ventana inicial del SQL Serv

    Management Studio (en adelante SSMS):

  • 7/24/2019 Curso Completo de SQL Server

    13/226

    En la parte izquierda tenemos abierto el panel Explorador de Objetos en el que aparece debajo del nombre del servidor co

    el que estamos conectados una serie de carpetas y objetos que forman parte del servido

    En el panel de la derecha se muestra la zona de trabajo, que vara segn lo que tengamos seleccionado en el Explorador d

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

    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 versin Express, es posible que no dispongas de algunos de stos botones.

    1.4. Estructura interna de una base de datos

    Antes de empezar tenemos que tener claro cmo se organiza la informacin 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 extensin recomendad

    para los nombres de archivos de datos principales es .mdf.

    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 extensin de nombre de archivo recomendada para los archivos de datos secundarios es

    .ndf.

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

  • 7/24/2019 Curso Completo de SQL Server

    14/226

    Archivos de registro

    Los archivos de registro (archivos de log) almacenan toda la informacin de registro que se utiliza para recuperar la

    base de datos, el tambin denominado registro de transacciones. Como mnimo, tiene que haber un archivo de

    registro por cada base de datos, aunque puede haber varios. La extensin 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

    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 u

    grupo de archivos.

    Los archivos de datos y de registro de SQL Server se pueden colocar en sistemas de archivos FAT o NTFS. Se recomiend

    utilizar NTFS por los aspectos de seguridad que ofrece. No se pueden colocar grupos de archivos de datos de lectura

    escritura, y archivos de registro, en un sistema de archivos NTFS comprimido. Slo las bases de datos de slo lectura y l

    grupos de archivos secundarios de slo 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 la

    bases de datos de usuario despus de la carpeta Instantneas...

    Despus de la instalacin, 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 dems bases de datos forman tambin parte del diccionario de datos y las utiliza el sistema para llevar a cabo su

    gestin.

  • 7/24/2019 Curso Completo de SQL Server

    15/226

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

    Para crear una nueva base de datos de usuario nos posicionamos sobre la carpeta Bases de datos y con el botn derech

    del ratn desplegamos el men contextual del que elegimos la opcin Nueva base de datos

    Se abre a continuacin el cuadro de dilogo donde definiremos la base de datos que queremos crear:

  • 7/24/2019 Curso Completo de SQL Server

    16/226

    Lo mnimo a introducir ser el campo Nombre de la base de datos, ste es el nombre de la base de datos lgica, la base d

    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 fsicos, en la parte inferior aparecen esos archivos. Para facilitarnos

    tarea, al teclear el nombre de la bd lgica, se rellenan automticamente los nombres de los archivos fsicos, el de datos co

    el mismo nombre y el del archivo de registro con el mismo nombre seguido de _log. Estos nombres son los nombres que s

    asumen por defecto pero los podemos cambiar, posicionando el cursor en el nombre y cambindolo.

    Para cada archivo fsico podemos definir una serie de parmetros como el tipo de archivo (si es de datos o de transaccioneRegistro) y su ocupacin inicial (Tamao inicial).

    Si no indicamos ninguna ubicacin podemos ver que los guarda en la carpeta del SQL Server/MSSQL.n/MSSQL/DATA

    n representa un nmero que puede variar de una instalacin a otra.

    Estos son los archivos mnimos en los que se almacenar la base de datos, pero como ya vimos anteriormente se pued

    almacenar en ms archivos, los tenemos que definir todos en esta ventana a continuacin de los dos obligatorios.

    Para aadir ms archivos fsicos disponemos del botn Agregar.

    Al pulsar el botn Agregar se crea una nueva fila en la tabla de archivos fsicos donde deberemos escribir el nombre d

    archivo, su tipo (desplegando la lista podemos elegir entre de datos o de registro) y dems parmetros.

  • 7/24/2019 Curso Completo de SQL Server

    17/226

    Al agregar un nuevo archivo se activa el botn Quitar, siempre que estemos posicionados encima de un archivo secunda

    para poder as eliminarlo si lo queremos.

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

    Si nos fijamos en la zona de la izquierda, vemos que nos encontramos en la pestaa General, podemos cambiar otro

    parmetros de la base de datos pulsando en Grupos de archivos o en Opciones:

  • 7/24/2019 Curso Completo de SQL Server

    18/226

  • 7/24/2019 Curso Completo de SQL Server

    19/226

    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 lo

    ejercicios del curso. Para realizarlos, debers adjuntar una base de datos ya existente a tu servidor. Para ello, lo qu

    tenemos que hacer es pegar los archivos en la ubicacin que queramos, y luego indicar al SQL Server que vamos a utiliz

    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:

  • 7/24/2019 Curso Completo de SQL Server

    20/226

    Pulsando en Agregar indicamos el archivo de datos primario en su ubicacin y automticamente se adjuntar la base d

    datos lgica asociada a este archivo.

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

    La opcin Adjuntar slo se utiliza la primera vez, cuando todava no tenemos la base de datos en el disco.

    Unidad 1. Ejercicio paso a paso: Adjuntar base de datos

    Objetivo

    Importar bases de datos al servidor de SQL Server que has instalado.

    Ejercicio paso a paso

    1. En la carpeta Ejercicios del curso, busca U3_Consultas_simples.zip y GestionA.zip y extrae su contenido en una carpeta

    que llamars Bases de datos.

    2. Abre el SQL Server Management Studio Express.

  • 7/24/2019 Curso Completo de SQL Server

    21/226

    3. Haz clic con el botn secundario del ratn sobre la carpeta Bases de datos que se encuentra en el Explorador de objetos

    del SSMS.

    4. En el men contextual, elige Adjuntar...

    5. Pulsa el botn Agregar y busca el directorio Bases de datos que contiene las dos bases que has descargado.

    6. Selecciona la primera base (Gestion.mdf) y pulsa Aceptar.

    7. Pulsa el botn Agregar de nuevo y esta vez selecciona GestionA.mdf. Cambia su nombre lgico (el campo Adjuntar com

    a Gestion. As es como nos referiremos a ella.

    8. Si todo va bien, te indicar que se han adjuntado correctamente y las vers en el Explorador de objetos (GestionA y

    GestionSimples). Si no las ves, pulsa el botn Actualizar .

    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 podremo

    manipular los archivos de la base desde fuera del gestor SSMS, por ejemplo, desde el Explorador de Windows. Es decir, n

    podremos copiar, cortar, mover o eliminar los archivos fuente mdf, ndf y ldf. Si lo intentamos se mostrar un aviso de que

    base de datos est en uso.

    sto es as porque SQL Server sigue en marcha, a pesar de que se cierre el gestor. Ten en cuenta que el servidor de bas

    de datos normalmente se crea para que sirva informacin a diferentes programas, por eso sera absurdo que dejara d

    funcionar cuando cerramos el programa gestor, que slo 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 SSM

    desplegamos el men contextual de la base de datos que nos interese manipular y seleccionaremos la opcin Poner fue

    de conexin:

    Aparecer un smbolo a la izquierda de la base de datos indicndonos que la base de datos est desconectada, a par

    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 peelegiremos la opcin Poner en conexin:

  • 7/24/2019 Curso Completo de SQL Server

    22/226

    El caso ms inmediato en el que puedes necesitar conectar y desconectar la base de datos es copiar a un pendrive loarchivos de las bases que utilizars en los ejercicios para poder trabajar en diferentes ordenadores con ellos. Para aprende

    cmo hacerlo, visita el siguienteEjercicio Trasladar una base de datos a otro equipo.

    Unidad 1. Ejercicio paso a paso: Trasladar una base de datos a otro equipo

    Objetivo

    Copiar una base de datos que est en uso en un servidor, y adjuntarla o actualizarla en otro.

    Ejercicio paso a paso

    Vamos a suponer que tenemos una base de datos en el servidor de clase y queremos llevarnos la base de datos a

    nuestra casa para seguir trabajando con ella.

    1. Sabemos que la base de datos est en los archivos fsicos que definimos cuando definimos la base de datos, estos

    archivos se localizan en una determina ruta. Esta informacin se encuentra en las propiedades de la base de datos, para

    acceder a la ventana de propiedades de la base de datos (parecida la que se abri cuando creamos la base de datos)

    utilizamos como siempre el men contextual que nos llevar a la ventana Propiedades de la base de datos:

    2. Una vez sabemos la ruta, utilizamos el Explorador de Windows para abrir a la carpeta donde se encuentran los archivos.

    3. Volvemos al SSMS y desconectamos la base de datos, como ya hemos visto: Desde el men contextual y eligiendo

    Tareas > Poner fuera de conexin.

    http://www.aulaclic.es/sqlserver/epp_1_5_2.htmhttp://www.aulaclic.es/sqlserver/epp_1_5_2.htmhttp://www.aulaclic.es/sqlserver/epp_1_5_2.htmhttp://www.aulaclic.es/sqlserver/epp_1_5_2.htm
  • 7/24/2019 Curso Completo de SQL Server

    23/226

    4. Ahora que ya est desconectada, copiamos los archivos desde el Explorador de Windows, por ejemplo, a nuestro

    pendrive.

    Ya tenemos una copia de la base de datos de clase. Ahora vamos a ver cmo incluirla en el otro ordenador, es decir, en

    casa.

    - En caso de que la base de datos no exista, debers adjuntarla como ya hemos visto: Desde el men contextual de bases

    de datos y eligiendo la Adjuntar...

    - En caso de que la base de datos ya exista y lo que quieras sea actualizarla, debers:

    1. Desconectar la base existente desde SSMS.

    2. Sobreescribir los archivos fsicos por los nuevos que llevas en el pendrive, desde el Explorador de Windows.

    3. Volver a conectar la base de datos desde SSMS.

    En caso de que tu versin de SQL Server no tenga las opciones Poner en conexin y Poner fuera de conexin, deber

    utilizar la opcin Separar... y luego volver a adjuntarla.

    Para crear una nueva tabla primero nos tenemos que posicionar en la base de datos donde queremos que se almacene

    tabla, desplegar el men contextual y seleccionar la opcin Nueva tabla.

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

    A cada columna se le asigna un nombre, un tipo de datos, y opcionalmente una serie de propiedades, en este tema verem

    las bsicas y las dems las veremos con ms detalle cuando veamos la instruccin SQL CREATE TABL

    De momento no tenemos definida ninguna columna, al teclear un nombre se crea una primera entrada en esta tabla con

    definicin de la primera columna. En la columna Tipo de datos elegimos qu tipo de valores se podrn almacenar en

    columna.

  • 7/24/2019 Curso Completo de SQL Server

    24/226

    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 opcin Nueva tabla.

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

    A cada columna se le asigna un nombre, un tipo de datos, y opcionalmente una serie de propiedades, en este tema veremo

    las bsicas y las dems las veremos con ms detalle cuando veamos la instruccin SQL CREATE TABLE.

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

    columna.

    1.9. Tipos de datos

    Podemos elegir entre todos los tipos que aparecen arriba.

    Algunos tipos no necesitan ms, como por ejemplo el tipo entero (int), y otros se pueden completar con una longitud, como

    los tipos alfanumricos:

  • 7/24/2019 Curso Completo de SQL Server

    25/226

    En este ejemplo hemos definido una columna (Codigo) de tipo Entero corto (Smallint), y una columna (Nombre) que

    almacenar hasta 20 caracteres alfanumricos (nchar(20)), en este caso la longitud la indicamos en la pestaa Propiedade

    de columna en la propiedad Longitud.

    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 d

    tipo numeric o decimal no tiene la propiedad longitud pero s las propiedades escala y precisin, los valores que permiten

    definir el tamao del campo.

    1.10. Valores nulos

    Tambin podemos indicar si la columna permitir valores nulos o no, o bien cambiando la propiedad Permitir valores nulo

    que aparece debajo de la propiedad Longitud, o bien simplemente marcando o desmarcando la casilla de la column

    Permitir valores nulos que se encuentra al lado de la columna Tipo de datos. Si la casilla est marcada, el usuario podr

    rellenar el campo cuando inserte una fila de datos en la tabla.

    1.11. Columna con contador

  • 7/24/2019 Curso Completo de SQL Server

    26/226

    En la mayora de los sistemas gestores de bases de datos tenemos un tipo de datos de tipo contador, autonumric

    autoincremental, etc. Este tipo hace que el propio sistema es el encargado de rellenar el campo con un valor que vincrementando conforme se crean ms filas de datos en la tabla.

    Las columnas de este tipo se utilizan normalmente para numerar las filas de la tabla, como no habrn dos filas con el mism

    valor (el sistema se encarga de incrementar el valor cada vez que se crea una nueva fila), estos campos se suelen utiliz

    como claves primarias.

    En SQL Server 2005 no existe el tipo de datos Contador pero se consigue el mismo funcionamiento asignando a la column

    un tipo de datos numrico y definiendo la columna como columna de identidad.

    En las propiedades de la columna marcamos S en la propiedad (Identidad) y a continuacin podemos indicar en qu val

    queremos que empiece el contador (Inicializacin de identidad) y en cunto incrementar cada vez que se cree un nuev

    registro (Incremento de identidad).

    Aunque este tipo de columnas se utiliza frecuentemente como clave primaria, SQL Server no le asigna automticamen

    esta funcin, la tenemos que definir nosotros mismos, pero s fuerza a que sea una columna sin valores nulos. No se pued

    definir ms de una columna de identidad por tabla.

    1.12. Clave primaria

    Para definir una columna como clave primaria, posicionamos el puntero del ratn sobre la columna, desplegamos el men

    contextual y seleccionamos la opcin Establecer Clave principal:

  • 7/24/2019 Curso Completo de SQL Server

    27/226

    Aparecer una llave a la izquierda del nombre, smbolo de las claves principales:

    Para definir una clave primaria compuesta por varias columnas, seleccionamos las columnas manteniendo pulsada la tec

    Ctrl y luego seleccionamos la opcin.

    Para quitar una clave principal, hacemos lo mismo pero en esta ocasin seleccionamos la opcin Quitar clave principal.

    Tambin podemos utilizar el icono de la barra de herramientas.

    1.13. Aadir o eliminar columnas

    Una vez definidas algunas columnas, si queremos aadir una nueva columna entre dos, nos posicionamos en la segunda

    seleccionamos la opcin Insertar columna del men contextual.

    La nueva columna se colocar delante:

    Del mismo modo si queremos eliminar la definicin de una columna, nos posicionamos en la columna a eliminar

    seleccionamos la opcin Eliminar columna:

  • 7/24/2019 Curso Completo de SQL Server

    28/226

    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 definicin de una tablaPara entrar a la ventana de definicin de la tabla utilizamos la opcin Modificar de su men contextual (Tambin es posib

    que se llame Diseo):

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

    1.15. Insertar datos en la tabla

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

  • 7/24/2019 Curso Completo de SQL Server

    29/226

    Se abrir una ventana parecida a esta:

    La primera columna sirve para indicarnos el estado de una fila, por ejemplo el * no

    indica que es una nueva fila, esta fila realmente no est en la tabla, nos sirve de contenedor para los nuevos datos qu

    queremos insertar.

    Para insertar una nueva fila de datos slo tenemos que rellenar los campos que aparecen en esa fila (la del *), al cambiar d

    fila los datos se guardarn automticamente en la tabla a no ser que alguno infrinja alguna regla de integridad, en ese caSQL Server nos devuelve un mensaje de error para que corrijamos el dato errneo, si no lo podemos corregir entonces s

    podemos deshacer los cambios.

    1.16. Modificar datos

    Para modificar un valor que ya est en una fila de la tabla slo tenemos que posicionarnos en el campo y rectificar el valo

    En cuanto modificamos un valor, la fila aparece con un lpiz escribiendo (ver imagen), este lpiz nos indica que la fila se h

    modificado y tiene nuevos datos por guardar. Al salir de la f ila sta se guardar automticamente a no ser que el nuevo val

    infrinja alguna regla de integridad. Si queremos salir de la fila sin guardar los cambios, tenemos que cancelar la actualizaci

    pulsando la tecla ESC.

    1.17. Eliminar filas

    Para eliminar una fila completa, la seleccionamos y pulsamos la tecla Supr o bien desplegamos su men contextual

    seleccionamos la opcin Eliminar.

    En cualquiera de los dos casos nos aparece un mensaje de confirmacin.

  • 7/24/2019 Curso Completo de SQL Server

    30/226

    1.18. Relacionar tablas

    Como ya hemos visto, en una base de datos relacional, las relaciones entre las tablas se implementan mediante la definici

    de claves ajenas, que son campos que contienen valores que sealan a un registro en otra tabla, en esta relacin a

    creada, la tabla referenciada se considera principal y la que contiene la clave ajena es la subordinada.

    Desde el entorno grfico del SSMS podemos definir claves ajenas entrando en el diseo de la tabla y desplegando el men

    contextual del campo que va a ser clave ajena:

    Seleccionamos la opcin Relaciones y se abre la ventana:

    Al pulsar el botn que se encuentra en la fila Especificacin de tablas y columnas se abre el dilogo donde definiremos

    relacin:

  • 7/24/2019 Curso Completo de SQL Server

    31/226

    En la parte derecha tenemos la tabla en la que estamos y el campo que va a actuar como clave ajena, slo nos queda eleg

    en el desplegable de la izquierda la tabla a la que hace referencia la clave y al seleccionar una tabla, a la izquierda d

    campo clave ajena podremos elegir el campo de la otra tabla por el que se relacionarn las tablas. En nuestro caso ser:

    De esta forma hemos definido una relacin entre las tablas Facturas y Clientes. Para ver las relaciones existentes entre ladiferentes tablas tenemos los diagramas.

    Primero debemos definir el diagrama, para ello seleccionamos la opcin correspondiente:

    Si no tenemos todava ningn diagrama creado, nos aparece un mensaje:

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

  • 7/24/2019 Curso Completo de SQL Server

    32/226

    A continuacin nos aparece el nuevo diagrama ahora si elegimos crear un nuevo diagrama nos preguntar las tablas

    incluir en el diagrama:

    Seleccionamos cada una y pulsamos Agregar, cuando hayamos agregado al diagrama todas las que queremos pulsamos e

    Cerrar y aparecern en el diagrama las tablas con las relaciones que tengan definidas en ese momento:

    La llave indica la tabla principal (padre) y el smbolo infinito seala 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

    momento:

    Hemos aprendido hasta ahora lo bsico para poder crear una base de datos y rellenarla con tablas relacionadas entre s

    con datos, ahora veamos cmo recuperar esos datos.

  • 7/24/2019 Curso Completo de SQL Server

    33/226

    1.19. Abrir una nueva consulta

    Vamos a ver ahora cmo 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

    servidor y pulsando el botn de la barra de botones o si queremos realizar la consulta sobre un servid

    con el cual todava no hemos establecido conexin, seleccionando de la barra de mens la opcin Nuevo > Consulta d

    motor de base de datos:

    .

    En este ltimo caso nos aparecer el cuadro de dilogo para establecer la conexin (el mismo que vimos al principio d

    tema).

    A continuacin se abrir una nueva pestaa donde podremos teclear las sentencias SQL:

    Adems aparece una nueva barra de botones que nos permitir ejecutar los comandos ms tiles del modo query.

    1.20. Escribir y ejecutar cdigo TRANSACT-SQL

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

    Utilizaremos la sentencia CREATE DATABASE mnima:

  • 7/24/2019 Curso Completo de SQL Server

    34/226

    CREATE DATABASE ventas;

    Al pulsar el botn Ejecutar se ejecuta la sentencia y aparece en la parte inferior el resultado de la ejecucin, en la pesta

    Mensajes:

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

    creado:

    Si la ejecucin de la sentencia produce un error, el sistema nos devolver el mensaje de error escrito en rojo en la pesta

    Mensajes.

    Podemos incluir en una misma consulta varias sentencias SQL, cuando pulsamos Ejecutar se ejecutarn todas una detr

    de otra. Si tenemos varias consultas y slo queremos ejecutar una, la seleccionaremos antes de ejecutarla.

  • 7/24/2019 Curso Completo de SQL Server

    35/226

    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 actua

    Fijndonos en la pestaa de la consulta, en el nombre aparece el nombre del servidor seguido de un punto y el nombre de

    base de datos sobre la que se va a actuar y luego un guin y el nombre de la consulta.

    En la imagen anterior tenemos ord01.masterSQLQuery1.sql, lo que nos indica que la consulta se llama SQLQuery1.sql

    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 d

    datos activa es la predeterminada (master). Si queremos que la base de datos activa sea por ejemplo la base de dato

    ventas, hacemos clic sobre su nombre en el Explorador de objetos, y sta pasar a ser la base de datos activa. Si aho

    creamos una nueva consulta, sta actuar sobre la base de datos ventas.

    Si queremos crear una consulta que siempre acte sobre una determinada base de datos y no nos queremos preocupar d

    qu base de datos tenemos activa podemos aadir al principio de la consulta la instruccin USE nombreBaseDatos; es

    har que todas las instrucciones que aparezcan despus, se ejecuten sobre la base de datos indicada.

    Por ejemplo:

    USE ventas;

    SELECT * FROM pedidos;

    Obtiene todos los datos de la tablapedidosque 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

    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

    nombre de la base de datos por defecto, esto lo podemos hacer cambiando la base de datos por defecto en el id de sesin

    Para ello, cuando vamos a conectar con el servidor:

    Pulsamos en el botn Opciones >>

  • 7/24/2019 Curso Completo de SQL Server

    36/226

    En la pestaa Propiedades de conexin, en el cuadro Conectar con base de datos: Seleccionamos

  • 7/24/2019 Curso Completo de SQL Server

    37/226

    trabajo y as asegurarnos de que los nombres de los objetos (por ejemplo nombre de tabla, de columna, etc.) sean lo

    correctos.

    Como hemos dicho el texto que se escribe en este editor de cdigo se colorea por categora. Los colores son los mismo

    que se utilizan en todo el entorno SQL Server. En esta tabla aparecen los colores ms comunes.

    Color Categora

    Rojo Cadena de caracteres

    Verde oscuro Comentario

    Negro sobre fondo plateado Comando SQLCMD

    Fucsia Funcin del sistema

    Verde Tabla del sistema

    Azul Palabra clave

    Verde azulado Nmeros de lnea o parmetro 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 opcin Entorno, Fuentes y colores, se puede ver la lista completa d

    colores y sus categoras, as como configurar un esquema de colores personalizado:

  • 7/24/2019 Curso Completo de SQL Server

    38/226

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

    El botn Usar predeterminados nos permite volver a la configuracin predeterminada.

    Ahora slo nos queda aprender a redactar sentencias SQL, cosa que se ver en otro momento, mientras tanto podem

    utilizar el Generador de Consulta que incluye SSMS y que veremos a continuacin en el apartado sobre vistas.

    1.24. Las Vistas

    Las consultas que hemos visto hasta ahora son trozos de cdigo SQL que podemos guardar en un archivo de texto y abrir

    ejecutar cuando queramos, pero si queremos que nuestra consulta de recuperacin de datos se guarde en la propia base d

    datos y se comporte como una tabla (algo parecido a una consulta almacenada de Access), la tenemos que definir com

    una vista. Esta vista tiene la ventaja entre otras de poder ser utilizada como si fuese una tabla en otras consultas. Realmen

    al ejecutarla obtenemos una tabla lgica almacenada en memoria y lo que se guarda en la base de datos es su definicin,

    instruccin SQL que permite recuperar los datos.

  • 7/24/2019 Curso Completo de SQL Server

    39/226

    Para definir una vista en el Explorador de Objetos desplegamos la base de datos donde la guardaremos y elegimos

    opcin Nueva vista del men contextual de la carpeta Vistas, se pondr en funcionamiento el generador de consulta

    pidindonos las tablas en las que se basar la vista. Pulsamos sobre la tabla a aadir al diseo de la vista y pulsamos e

    botn Agregar, podemos aadir as cuntas tablas queramos.

    Despus de Cerrar, vemos a la derecha del Explorador de Objetos la pestaa con la definicin de la vista que puede inclu

    varios paneles:

  • 7/24/2019 Curso Completo de SQL Server

    40/226

    4

    La aparicin de estos paneles es configurable, en la barra de herramientas Diseador de vistas los iconos remarcados e

    azul son los correspondientes a cada pan

  • 7/24/2019 Curso Completo de SQL Server

    41/226

    4

    1.25. El panel de diagrama

    Es el primero que aparece, incluye una representacin grfica de las tablas con sus campos y de la forma en que se junta

    en la vista. En este caso, como las tablas tienen relaciones definidas (claves ajenas), esta relacin ha aparecid

    automticamente al aadir la segunda tabla. Pero se puede cambiar el tipo de relacin eligiendo la opcin correspondien

    en el men contextual que aparece con el clic derecho sobre la relacin:

    Desde el panel diagrama podemos aadir cmodamente campos de las tablas a la consulta marcando la casi

    correspondiente. En la imagen anterior la nica casilla seleccionada es la del * en la tabla Librospor lo que se visualizar

    todas las columnas de la tabla Librosy ninguna de la tabla Prstamos.

    Conforme vamos marcando casillas de las tablas del panel diagrama, los cambios se ven reflejados en los dems panele

    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 Columnatenemos el nombre de la columna de la se obtienen los datos o la expresin cuando se trata de un

    columna calculada.

    En Alias escribimos el nombre que tendr la columna en la vista, tambin corresponde con el encabezado de

    columna en la rejilla de resultado. Si se deja el campo en blanco, por defecto se asume el mismo nombre que hay e

    Columna.

    En Tabla tenemos el nombre de la tabla del origen de la consulta a la que pertenece la Columna, por ejemplo

    primera columna del resultado se saca de la columna Codigode la tabla LIBROSy se llamar CodLibro. La cuar

    columna de la vista coger sus datos de la columna Usuariode la tabla Prestamosy se llamar Usuario(Aliasse

    dejado en blanco por lo que asume el nombre que hay en Columna.

  • 7/24/2019 Curso Completo de SQL Server

    42/226

    4

    En la columna Resultados indicamos si queremos que la columna se visualice o no, las columnas con la casi

    marcada se visualizan.

    Las columnas Criterio de ordenacin y Tipo de orden permiten ordenar las filas del resultado segn una o m

    columnas. Se ordena por las columnas que tienen algo en Tipo de ordeny cuando se ordena por varias column

    Criterio de ordenacinindica que primero se ordena por la columna que lleva el n 1 y despus por la columna q

    lleva el n 2 y as sucesivamente. En el ejemplo las filas del resultado se ordenarn primero por cdigo de libro

    despus por cdigo de prstamo, todas las f ilas dentro del mismo libro se ordenarn por cdigo de prstamo.

    Si queremos aadir unos criterios de seleccin tenemos las columnas Filtroy O

    En cada celda indicamos una condicin que debe cumplir la columna correspondiente y se puede combinar varia

    condiciones mediante O (OR) e Y (AND) segn coloquemos las condiciones en la misma columna o en columnas diferente

    En el ejemplo anterior tenemos la condicin compuesta: ((usuario=1) AND (Dias>5)) OR (Usuario=2).

    Podemos variar el orden de aparicin de las columnas arrastrando la fila correspondiente de la rejilla hasta el lugar deseado

    Tambin podemos Elimnar filas de la rejilla para eliminar columnas del resultado, lo conseguimos seleccionando la f

    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 ms complejas como por ejemplo consultas de resumen, pulsando sobre el botn Agrupar por d

    la barra de herramientas, se aade a la rejilla una nueva columna Agrupar por con las siguientes opciones:

    1.27. El panel SQL

  • 7/24/2019 Curso Completo de SQL Server

    43/226

    4

    En l vemos la instruccin SQL generada, tambin podemos redactar directamente la sentencia SQL en el panel y ver lo

    cambios equivalentes en los distintos paneles. Para ver estos cambios debemos de ejecutar o Comprobar la sintaxis pa

    que se actualicen los dems paneles.

    Por defecto el generador aade a la consulta una clusula TOP (100) PERCENT que indica que se visualizarn el 100% d

    las filas. Esta clusula no la hemos definido nosotros sino que la aade automticamente el generador.

    Una vez tenemos la vista definida la guardamos y podremos hacer con ella casi todo lo que podemos hacer con una tabl

    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 definicin y ejecutarla, igu

    que con las tablas:

    Modificar para modificar la definicin de la vista

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

  • 7/24/2019 Curso Completo de SQL Server

    44/226

    4

    Unidad 2. Introduccin al SQL. Transact-SQL (I)

    2.1. Conceptos bsicos de SQL

    SQL (Structured Query Language), Lenguaje Estructurado de Consulta es el lenguaje utilizado para definir, controlar

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

    Sybase, PostgreSQL o Access.

    El SQL es un lenguaje universal que se emplea en cualquier sistema gestor de bases de datos relacional. Tiene un estnd

    definido, a partir del cual cada sistema gestor ha desarrollado su versin propia.

    En SQL Server la versin de SQL que se utiliza se llama TRANSACT-SQL.

    EL SQL en principio es un lenguaje orientado nicamente a la definicin y al acceso a los datos por lo que no se pued

    considerar como un lenguaje de programacin como tal ya que no incluye funcionalidades como son estructur

    condicionales, bucles, formateo de la salida, etc. (aunque veremos que esto est evolucionando).

    Se puede ejecutar directamente en modo interactivo, pero tambin se suele emplear embebido en programas escritos e

    lenguajes de programacin convencionales. En estos programas se mezclan las instrucciones del propio lengua

    (denominado anfitrin) con llamadas a procedimientos de acceso a la base de datos que utilizan el SQL como lenguaje d

    acceso. Como por ejemplo en Visual Basic, Java, C#, PHP .NET, etc.

    Las instrucciones SQL se clasifican segn su propsito en tres grupos:

    El DDL (Data Description Language) Lenguaje de Descripcin de Datos.

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

    El DML (Data Manipulation Language) Lenguaje de Manipulacin de Datos.

    El DDL, es la parte del SQL dedicada a la definicin de la base de datos, consta de sentencias para definir la estructu

    de la base de datos, permiten crear la base de datos, crear, modificar o eliminar la estructura de las tablas, crear ndice

    definir reglas de validacin de datos, relaciones entre las tablas, etc. Permite definir gran parte del nivel interno de la base

    datos. Por este motivo estas sentencias sern 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 asignacin de privilegios de acceso a los datos (GRANT/REVOKE).

    La gestin de transacciones (COMMIT/ROLLBACK).

    Una transaccin se puede definir como un conjunto de acciones que se tienen que realizar todas o ninguna para preservar

    integridad de la base de datos.

    Por ejemplo supongamos que tenemos una base de datos para las reservas de avin. Cuando un usuario pide reservar un

    plaza en un determinado vuelo, el sistema tiene que comprobar que queden plazas libres, si quedan plazas reservar la qu

  • 7/24/2019 Curso Completo de SQL Server

    45/226

    4

    quiera el usuario generando un nuevo billete y marcando la plaza como ocupada. Aqu tenemos un proceso que consta d

    dos operaciones de actualizacin de la base de datos (crear una nueva fila en la tabla de billetes y actualizar la plaz

    reservada en el vuelo, ponindola como ocupada) estas dos operaciones se tienen que ejecutar o todas o ninguna,

    despus de crear el billete no se actualiza la plaza porque se cae el sistema, por ejemplo, la base de datos quedara en u

    estado inconsistente ya que la plaza constara como libre cuando realmente habra un billete emitido para esta plaza. E

    este caso el sistema tiene el mecanismo de transacciones para evitar este error. Las operaciones se incluyen las dos en un

    misma transaccin y as el sistema sabe que las tiene que ejecutar las dos, si por lo que sea no se pueden ejecutar las do

    se encarga de deshacer los cambios que se hubiesen producido para no ejecutar ninguna.

    Las instrucciones que gestionan las autorizaciones sern utilizadas normalmente por el administrador mientras que las otra

    referentes a proceso de transacciones sern utilizadas tambin 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 dato

    existentes, para eliminar datos y la ms utilizada, para recuperar datos de la base de datos. Veremos que una so

    instruccin de recuperacin de datos es tan potente que permite recuperar datos de varias tablas a la vez, realizar clculo

    sobre estos datos y obtener resmenes.

    El DML interacta con el nivel externo de la base de datos por lo que sus instrucciones son muy parecidas, por no decir ca

    idnticas, de un sistema a otro, el usuario slo indica lo que quiere recuperar no cmo se tiene que recuperar, no influye

    cmo estn almacenados los datos.

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

    A lo largo del curso se explicarn cada una de las formas de explotacin de la base de datos. Dependiendo de tu pe

    profesional (programador o administrador) o de tu inters personal te resultar ms til un bloque u otro.

    2.2. Introduccin al TRANSACT-SQL

    Como hemos dicho, el sistema gestor de base de datos SQL-Server 2005 utiliza su propia versin del lenguaje SQL,

    TRANSACT-SQL.

    TRANSACT-SQL es un lenguaje muy potente que nos permite definir casi cualquier tarea que queramos efectuar sobre

    base de datos. En este tema veremos que TRANSACT-SQL va ms all de un lenguaje SQL cualquiera ya que inclu

    caractersticas propias de cualquier lenguaje de programacin, caractersticas que nos permiten definir la lgica necesar

    para el tratamiento de la informacin:

    Tipos de datos.

    Definicin de variables.

    Estructuras de control de flujo.

    Gestin de excepciones.

    Funciones predefinidas.

  • 7/24/2019 Curso Completo de SQL Server

    46/226

    4

    Sin embargo no permite:

    Crear interfaces de usuario.

    Crear aplicaciones ejecutables, sino elementos que en algn momento llegarn al servidor de datos y ser

    ejecutados.

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

    usuario.

    Puede ser utilizado como cualquier SQL como lenguaje embebido en aplicaciones desarrolladas en otros lenguajes d

    programacin como Visual Basic, C, Java, etc. Y por supuesto los lenguajes incluidos en la plataforma .NET.

    Tambin lo podremos ejecutar directamente de manera interactiva, por ejemplo desde el editor de consultas de SSMS (SQ

    Server Management Studio) el entorno de gestin que ya conocemos. Esta es la forma en que lo utilizaremos nosotros.

    2.3. Caractersticas generales del lenguaje Transact-SQL

    El lenguaje SQL se cre con la finalidad de ser un lenguaje muy potente y a la vez muy fcil de utilizar, se ha conseguido e

    gran medida ya que con una sola frase (instruccin) podemos recuperar datos complejos (por ejemplo datos que s

    encuentran en varias tablas, combinndolos, calculando resmenes), y utilizando un lenguaje muy cercano al lenguahablado (suponiendo que hablamos ingls, claro!).

    Por ejemplo:

    SELECT codigo, nombre FROM Clientes WHERE localidad=Valencia;

    Esta instruccin nos permite SELECCIONAR el cdigo y nombre DE los Clientes CUYA localidad sea Valencia.

    La sencillez tambin radica en que lo que indicamos es lo que queremos obtener, no el cmo lo tenemos que obtener, d

    eso se encargar el sistema automticamente.

    Las sentencias SQL adems siguen todas el mismo patrn:

    Empiezan por un verbo que indica la accin a realizar,

    completado por el objeto sobre el cual queremos realizar la accin,

    seguido de una serie de clusulas (unas obligatorias, otras opcionales) que completan la frase, y proporcionan m

    detalles acerca de lo que se quiere hacer.

    Si sabemos algo de ingls nos ser ms fcil interpretar a la primera lo que quiere decir la instruccin, y de lo contrari

    como el nmero de palabras que se emplean es muy reducido, enseguida nos las aprenderemos.

    Por ejemplo en el DDL (acciones sobre la definicin de la base de datos), tenemos 3 verbos bsicos:

    CREATE (Crear)

    DROP (Eliminar)

    ALTER (Modificar)

  • 7/24/2019 Curso Completo de SQL Server

    47/226

    4

    Completados por el tipo de objeto sobre el que actan y el objeto concreto:

    CREATE DATABASE mibase .......;

    Permite crear una base de datos llamada mibase, a continuacin escribiremos las dems clusulas que completarn

    accin, en este caso dnde se almacenar la base de datos, cunto ocupar, etc...

    CREATE TABLE mitabla (.....);

    Permite crear una nueva tabla llamada mitabla, entre parntesis completaremos la accin indicando la definicin de la

    columnas de la tabla.

    CREATE INDEX miindex...;

    Lo mismo para crear un ndice (a que lo habais 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 definicin 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 clusula dentro de una instruccin tenemos:

    SELECT codigo, nombre

    FROM Clientes

    WHERE localidad=Valencia;

    En esta sentencia nos aparecen dos clusulas, la clusula FROM que nos permite indicar de dnde hay que coger los dato

    y la clusula WHERE que permite indicar una condicin de seleccin.

    Otra caracterstica de una sentencia SQL es que acaba con un punto y coma (;) originalmente ste era obligatorio y serv

    para indicar el fin de la instruccin, pero ahora se puede omitir, aunque se recomienda su uso.

  • 7/24/2019 Curso Completo de SQL Server

    48/226

    4

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

    (identificadores).

    Las palabras reservadas no se pueden utilizar para otro propsito, por ejemplo una tabla no se puede llamar FROM, y lo

    nombres (los identificadores) siguen las reglas detalladas en el punto siguiente.

    Nombres cualificados. En ocasiones deberemos utilizar nombres cualificados, por ejemplo cuando se escribe un nomb

    de tabla, SQL presupone que se est refiriendo a una de las tablas de la base de datos activa, si queremos hacer referenc

    a una tabla de otra base de datos utilizamos su nombre cualificado nombrebasedatos.nombredeesquema.nombretabl

    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 d

    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 situacin del mundo real, ciertos datos pueden inevitablemente falta

    ser desconocidos o no ser aplicables, esto se debe de indicar de alguna manera especial para no confundirlo con un val

    conocido pero que sea cero por ejemplo, SQL tiene para tal efecto el valor NULL que indica precisamente la ausencia d

    valor.

    Por ejemplo: no es lo mismo que el alumno no tenga nota a que tenga la nota cero, esto afectara tambin a todos lo

    clculos que se pueden realizar sobre la columna nota.

    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 200

    puede tener un identificador: servidores, bases de datos, tablas, vistas, columnas, ndices, desencadenadore

    procedimientos, restricciones, reglas, etc.

    Las reglas de formato de los identificadores normales dependen del nivel de compatibilidad de la base de datos, que s

    estableca con el parmetro sp_dbcmptlevel pero que ahora Microsoft aconseja no utilizar ya que desaparecer en version

    posteriores en vez de eso se tiene que utilizar la clusula SET COMPATIBILITY_LEVEL de la instruccin ALTER TABL

    Cuando el nivel de compatibilidad es 90, (el asignado por defecto) se aplican las reglas siguientes para los nombres de lo

    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 nmero es m

    limitado.

    El nombre debe empezar por:

    o Una letra, como aparece definida por el estndar Unicode 3.2. La definicin Unicode de letras incluye l

    caracteres latinos de la "a" a la "z" y de la "A" a la "Z".

    o El carcter de subrayado ( _ ), arroba ( @ ) o nmero ( # ).

    Ciertos smbolos al principio de un identificador tienen un significado especial en SQL Server. Un identificador q

    empieza con el signo de arroba indica un parmetro o una variable local. Un identificador que empieza con el sign

  • 7/24/2019 Curso Completo de SQL Server

    49/226

    4

    de nmero indica una tabla o procedimiento temporal. Un identificador que empieza con un signo de nmero dob

    (##) indica un objeto temporal global.

    Algunas funciones de Transact-SQL tienen nombres que empiezan con un doble signo de arroba (@@). Para evit

    confusiones con estas funciones, se recomienda no utilizar nombres que empiecen con @@.

    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 tenemo

    que escribir encerrado entre corchetes [ ] (tambin se pueden utilizar las comillas pero recomendamos utilizar los corchetes

    2.5. Tipos de datos

    En SQL Server 2005, cada columna, expresin, variable y parmetro est asociado a un tipo de dato

    Un tipo de datos, realmente define el conjunto de valores vlidos para los campos definidos de ese tipo. Indica si el camp

    puede contener: datos numricos, 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 utilizars

    Tambin podemos definir nuestros propios tipos de datos en Transact-SQL o Microsoft .NET Framework.

    Los tipos de datos ms utilizados son:

    Los numricos: 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 especfico o un smbolo que representa un valor de dato especfico. El formato de las constante

    depende del tipo de datos del valor que representan. En este apartado veremos las ms utilizadas.

    Las constantes numricas se escriben mediante una cadena de nmeros, con la consideracin de que el separad

    decimal es un punto, no una coma, y que si se trata de un valor monetario deberemos incluir la moneda al inicio d

    la constante. Por ejemplo: 85.90 y 85.90, el primero sera un valor decimal y el segundo un valor money. De form

    predeterminada, los valores sern 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 ejemp

    '03/10/90'.

    Y las constantes en cadenas de caracteres van entre comillas simples. Por ejemplo: 'Juan Garca Lpez'.

    Para indicar valores negativos y positivos aadimos el prefijo + o - segn sea el valor positivo o negativo. Sin prefijo s

    entiende que el valor es positivo.

    Si quieres ver cmo definir constantes para otros tipos de datos, visita el siguiente avanzado .

  • 7/24/2019 Curso Completo de SQL Server

    50/226

    2.7. Las expresiones

    Una expresin es una combinacin de smbolos y operadores que el motor de base de datos de SQL Server evala pa

    obtener un nico valor. Una expresin simple puede ser una sola constante, variable, columna o funcin escalar. Lo

    operadores se pueden usar para combinar dos o ms expresiones simples y formar una expresin complej

    Dos expresiones pueden combinarse mediante un operador si ambas tienen tipos de datos admitidos por el operador y s

    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 implcitamente al tipo de datos de mayor prioridad.

    La funcin CAST puede convertir explcitamente el tipo de datos con menor prioridad al tipo de datos con may

    prioridad o a un tipo de datos intermedio que pueda convertirse implcitamente al tipo de datos con la may

    prioridad.

    Tipos de operadores:

    - Operadores numricos:

    suma +

    resta -

    multiplicacin *

    divisin /

    mdulo

    (resto de una divisin)%

    - Operadores bit a bit: realizan manipulaciones de bits entre dos expresiones de cualquiera de los tipos de datos de

    categora del tipo de datos entero.

    AND &

    OR |

    OR exclusivo ^

  • 7/24/2019 Curso Completo de SQL Server

    51/226

    - Operadores de comparacin:

    Igual a =

    Mayor que >

    Menor que =

    Menor o igual que

    - Operadores lgicos:

    Aqu slo 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:

    Concatenacin +

    Resultados de la expresin

    - Si se combinan dos expresiones mediante operadores de comparacin o lgicos, el tipo de datos resultante es booleano

    el valor es uno de los siguientes: TRUE, FALSE o UNKNOWN.

  • 7/24/2019 Curso Completo de SQL Server

    52/226

    - Cuando dos expresiones se combinan mediante operadores aritmticos, bit a bit o de cadena, el operador determina el ti

    de datos resultante.

    Las expresiones complejas formadas por varios smbolos y operadores se evalan como un resultado formado por un so

    valor. El tipo de datos, intercalacin, precisin y valor de la expresin resultante se determina al combinar las expresione

    componentes de dos en dos, hasta que se alcanza un resultado final. La prioridad de los operadores de la expresin defin

    la secuencia en que se combinan las expresiones.

    2.8. FuncionesSQL 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 lug

    de una referencia a una tabla.

    Funciones de agregado (tambin llamadas funciones de columna): Operan sobre una coleccin de valores

    devuelven un solo valor de resumen. Por ejemplo, la funcin de suma sobre la columna importe para conocer

    importe total: SUM(importe)

    Funciones de categora: Devuelven un valor de categora para cada fila de un conjunto de filas, por ejemp

    devuelve el nmero de la fila, el ranking de la fila en una determinada ordenacin, etc.

    Funciones escalares: Operan sobre un valor y despus devuelven otro valor. Son las funciones que estam

    acostumbrados a utilizar. Las funciones escalares se clasifican segn el tipo de datos de sus operandos

    Las variables

    En Transact-SQL podemos definir variables, que sern de un tipo de datos determinado, como tipos de datos podem

    utilizar los propios de la base de datos SQL-SERVER, pero tambin podemos utilizar tipos propios del lenguaje que

    pueden ser utilizados en DDL. El tipo Cursor y el tipo Table son dos de estos tipos.

    Las variables se definen utilizando la instruccin DECLARE con el siguiente formato:

    DECLARE @nbvariable tipo

    El nombre de la variable debe empezar por el smbolo @, este smbolo hace que SQL interprete el nombre como un nomb

    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 asignacin 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 expresin vlida o algo ms potente, parte de un

    sentencia SELECT de SQL.

  • 7/24/2019 Curso Completo de SQL Server

    53/226

    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

    El valor almacenado en la variable se visualizar en la pestaa de resultados. Tambin se puede usar para escrib

    mensajes:

    PRINT 'Este es el mensaje'

    Otros elementos del lenguaje

    Comentarios. Como en cualquier otro lenguaje de programacin, debemos utilizar comentarios destinados a facilitar

    legibilidad del cdigo. En SQL se insertan comentarios con los signos:

    /* */ Varias lneas/* Esto es un comentario

    en varias lneas */

    -- Una nica lnea -- Esto es un comentario en una nica lnea.

    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 instruccin, las consultas que se ejecuten

    continuacin se harn sobre tablas de esa base de datos si no se indica lo contrario. Es una instruccin til paasegurarnos de que la consulta se ejecuta sobre la base de datos correcta.

    GO

    GO no es una instruccin Transact-SQL, sino un comando reconocido por las utilidades sqlcmd y osql, as como por

    Editor de cdigo de SQL Server Management Studio.

    Las utilidades de SQL Server interpretan GO como una seal de que deben enviar el lote actual de instrucciones Transa

    SQL a una instancia de SQL Server. El lote actual de instrucciones est formado por todas las instrucciones especficada

    desde el ltimo comando GO o desde el comienzo de la sesin o script si se trata del primer comando G

    Por ejemplo si queremos crear una consulta para crear una base de datos y sus tablas, despus del CREATDATABASE; tenemos que poner GO antes del primer CREATE TABLE para que el sistema efecte la primera operacin

    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.

  • 7/24/2019 Curso Completo de SQL Server

    54/226

    Unidad 3. Consultas simples (I)

    3.1. Introduccin

    Vamos a empezar por la instruccin que ms se utiliza en SQL, la sentencia SELECT. La sentencia SELECT es, co

    diferencia, la ms compleja y potente de las sentencias SQL, con ella podemos recuperar datos de una o ms tabla

    seleccionar ciertos registros e incluso obtener resmenes de los datos almacenados en la base de datos. Es tan comple

    que la estudiaremos a lo largo de varias unidades didcticas incorporando poco a poco nuevas funcionalidades.

    El resultado de una SELECT es una tabla lgica que alberga las filas resultantes de la ejecucin 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])] ::=

    { | ( ) }

    [ {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 > ]

  • 7/24/2019 Curso Completo de SQL Server

    55/226

    Debido a la complejidad de la sentencia (en la sintaxis anterior no se han detallado algunos elementos), la iremos viend

    poco a poco, empezaremos por ver consultas bsicas para luego ir aadiendo ms clusulas.

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

    SELECT [ALL|DISTINCT]

    [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 dnde se va a extraer la informacin y se indica en la clusula FROM

    es la nica clusula 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]