manual para usar sql server.docx

149
Manual para usar SQL Server Unidad I Entorno grafico SSMS 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

Upload: nidia-chavarria-rodriguez

Post on 30-Sep-2015

239 views

Category:

Documents


3 download

TRANSCRIPT

Manual para usar SQL Server Unidad IEntorno grafico SSMSIntroduccinSQL Server 2005 es un sistema gestor de bases de datos relacionales de Microsoft Corporation orientado a sistemas medianos y grandes aunque tambin 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 cmo 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 VistasSi no sabes lo que es una base de datos relacional o no tienes conocimientos previos acerca de las bases de datos, puedes leer una introduccin a las bases de datos en el siguiente bsico.

1.2. Instalar SQL Server 2005Existen diferentes versiones (ediciones) del producto, por lo que es un producto muy verstil, 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 informacin de grandes empresas pasando por sistemas que requieran menos potencia y por sistemas 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 de Microsoft, desde el enlace parainiciar descarga. Si quieres ver las diferentes ediciones y sus caractersticas principales visita el siguiente avanzado.Si la instalacin se realiza a partir del archivo descargado de Internet, la descarga se empaqueta como un nico ejecutable mediante una tecnologa de instalacin de Microsoft llamada SFXCab. Al hacer doble clic en el .exe se inicia automticamente el proceso de instalacin.Tan slo deberemos seguir el asistente. Los puntos ms importantes a tener en cuenta son: Habilitar el SQL Server Management Studio en la instalacin (si no lo est por defecto) cuando nos pregunte qu componentes deseamos instalar. Indicar que se trata de unaInstancia 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 siguienteEjercicio Instalacin de SQL Server 2005. El videotutorial prctico de instalacin tambin te ayudar.

1.3. Entrada al SQL Server Management StudioAunque trabajemos en modo local, la entrada a la herramienta es la misma. Para empezar entramos a travs del acceso directoo 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 botnConectar. Se abrir la ventana inicial del SQL Server Management Studio (en adelante SSMS):

En la parte izquierda tenemos abierto el panelExplorador de Objetosen 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 vara segn lo que tengamos seleccionado en elExplorador de objetos, en este caso vemos el contenido de la carpeta que representa el servidorord01.

En la parte superior tenemos el men de opciones y la barra de herramientasEstndar. Con las siguientes opciones:1. Nueva consulta6. Consulta de SQL Server Mobile11. Resumen

2. Consulta de motor de Base de datos7. Abrir archivo12. Explorador de Objetos

3. Consulta MDX de Analysis Services8. Guardar13. Explorador de Plantillas

4. Consulta DMX de Analysis Services9. Guardar todo14. Ventana de Propiedades

5. Consulta MXLA de Analysis Services10. 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 datosAntes 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 principalesEn 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 recomendada para los nombres de archivos de datos principales es.mdf. Archivos de datos secundariosLos 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. 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 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. Slo las bases de datos de slo lectura y los 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 SSMSEn elExplorador de objetos, si desplegamos la carpetaBases de datosnos aparecenBases de datos del sistemay las bases de datos de usuario despus de la carpetaInstantneas...

Despus de la instalacin, en la carpetaBases de datosdel sistema se habr creado una especial denominadamasterse 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.

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

El entorno grfico SSMS (III)Para crear una nueva base de datos de usuario nos posicionamos sobre la carpetaBases de datosy con el botn derecho del ratn desplegamos el men contextual del que elegimos la opcinNueva base de datos

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

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 de datos a la que nos referiremos dentro del SSMS, a nivel conceptual (en la imagenMibase).Esta base de datos est asociada a dos archivos fsicos, en la parte inferior aparecen esos archivos. Para facilitarnos la tarea, al teclear el nombre de la bd lgica, se rellenan automticamente los nombres de los archivos fsicos, 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 cambindolo.Para cada archivo fsico podemos definir una serie de parmetros como el tipo de archivo (si es de datos o de transacciones Registro) 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 puede 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 botnAgregar.Al pulsar el botnAgregarse crea una nueva fila en la tabla de archivos fsicos donde deberemos escribir el nombre del archivo, su tipo (desplegando la lista podemos elegir entre de datos o de registro) y dems parmetros.

Al agregar un nuevo archivo se activa el botnQuitar, siempre que estemos posicionados encima de un archivosecundario para poder as eliminarlo si lo queremos.No podemos eliminar ni el de datos primario, ni el de registro inicial.Pg. 1.3

Unidad 1. Bsico: Introduccin a las bases de datos (I)Objetivos de un SGBDUn 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 independenciafsica: 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 independencialgica: consiste en poder cambiar el esquema conceptual sin que ello suponga una modificacin de los programas existentes.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.Laseguridadconsiste 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 externo 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, de insercin, de actualizacin, autorizaciones especiales para poder variar el esquema conceptual etc.Laintegridadse 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 y 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, cuantos 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 debe 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 de 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 mnimaLa 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. mayor tiempo de proceso posibilidad de inconsistenciaPor todo ello hay que evitar al mximo esa redundancia, esto se consigue utilizando herramientas de diseo y obteniendo un diseo ptimo de la base de datos.Facilidad de recuperacin de la informacinOtro 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 y cercano al lenguaje hablado, y adems los SGBD incluyen entornos grficos sencillos de utilizar.Introduccin a las bases de datos (II)El administrador de la base de datosEl 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 de datos. Efectuar tareas de explotacin como: Vigilar el trabajo diario colaborando en la resolucin de las dudas de los usuarios. Controlar los tiempos de acceso, tasas de uso, cargas en los servidores, anomalas, etc. Llegado el caso, reorganizar las bases de datos. Disear y efectuar el planning de copias de seguridad peridicas. Restaurar la base de datos despus de un incidente. Estudiar las auditoras mediante el ajuste de parmetros y con ayuda de las herramientas de monitorizacin del sistema y de las estadsticas.El diccionario de datosDentro 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: 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.

Introduccin a las bases de datos (III)Tipos de bases de datosPodemos 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 ubicacin1. Bases de datoslocales.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.VentajasDesventajas

EconomaEs la ms barata.MonousuarioEn un instante determinado slo la puede utilizar una persona.

SimplicidadNo se necesita llevar controles de accesos concurrentes, de transmisin de datos, etc.CapacidadSuele tener una capacidad de almacenamiento limitado.

2. Bases de datoscentralizadasEn los sistemas centralizados tenemos la base de datos completa en un mismo servidor, y todos los usuarios acceden a ese servidor. Que la base de datos est en un mismo servidor no implica que est en un solo archivo o en el mismo disco, puede estar repartida.

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 un programa Cliente.A nivel de empresas es el sistema que ms se utiliza en la actualidad.VentajasDesventajas

MultiusuarioPermite que varios usuarios accedan a la vez a la misma informacin.ComplejidadTiene que incluir y gestionar un sistema de usuario y subesquemas.

No redundanciaAl estar todos los datos en el mismo servidor, la informacin no se duplica y es ms facil evitar fallos debidos a redundancias.SeguridadSe tienen que realizar controles para garantizar la seguridad de los datos, tanto a nivel interno como a nivel de comunicaciones.

3. Bases de datosdistribuidasTenemos 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.

VentajasDesventajas

RendimientoUna 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 datos segn 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 datosAdems de las dificultades que generalmente se encuentran al disear una base de datos, el diseo de una base de datos distribuida debe considerar la fragmentacin, replicacin y ubicacin de los fragmentos en sitios especficos, se tiene que trabajar tomando en cuenta su naturaleza distribuida, por lo cual no podemos pensar en hacer joins que afecten a tablas de varios sistemas, etc.

DisponibilidadEn 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 tcnicaSe debe asegurar que la base de datos sea transparente, se debe lidiar con varios sistemas diferentes que pueden presentar dificultades nicas.

Autonoma localUn departamento puede controlar los datos que le pertenecen.Economa en el mantenimientoLa complejidad y la infraestructura necesaria implica que se necesitar mayor mano de obra.

Economa en la implantacinEs ms barato crear una red de muchas mquinas pequeas, que tener una sola mquina muy poderosa.SeguridadSe debe trabajar en la seguridad de la infraestructura as como cada uno de los sistemas.

ModularidadSe pueden modificar, agregar o quitar sistemas de la base de datos distribuida sin afectar a los dems sistemas (mdulos).IntegridadSe 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 experienciaLas 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 estndaresAn no existen herramientas o metodologas que ayuden a los usuarios a convertir un DBMS centralizado en un DBMS distribuido.

Introduccin a las bases de datos (IV)Tipos de bases de datos segn la organizacin lgica de los datosEn 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 jerrquicasEn 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 entre 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.2.Las bases de datos en redTambin 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 bases 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 relacionalesEsta 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 objetosEs un modelo ms reciente, trata de almacenar en la base de datos los objetos completos (estado y comportamiento). La informacin que contienen se organiza enatributosy el comportamiento enoperaciones.5.Las bases de datos mutidimensionalesEn 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.

Introduccin a las bases de datos (V)La base de datos relacionalElementos de una base de datos relacional Los datos se organizan enrelacionescompuestas portuplasdeatributos. Si convertimos esta definicin a tablas tenemos que los datos se organizan entablascompuestas porfilas(registros) ycolumnas(campos). A cada tabla se le asigna unnombre nico. Una tabla tiene 0 o msfilas, 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 denominaesquema de la tabla, mientras que los valores concretos de los datos que estn almacenados en la tabla se llamanocurrencias.Por ejemplo, tenemos estas dos tablas:El esquema de la tablaPiezasest 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 suministra la pieza yCdigo_segn_fab el cdigo que utiliza ese fabricante para identificar la pieza en su sistema de gestin.Una ocurrencia de fila de la tablaPiezassera:1, Taburete 3 patas, 25, Fab1, T123-34. Todos los valores de una columna determinada tienen elmismo tipo de datos, y stos estn extrados de un conjunto de valores legales llamadodominiode la columna. Muchas veces el dominio se corresponder con un tipo de datos estndar del sistema.Por ejemplo en la tablaPiezasla columnaCodigoest definida sobre el dominio de los enteros. A parte de los valores del dominio, la columna puede contener un valor especial, elvalor 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 cadena vaca o espacios en blanco. De hecho es un valor tan especial que no funciona como los dems valores, por ejemplo 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 valor nulo.Ej. En la tablaFabricantesel campodireccinde la primera fila contiene el valor nulo (null) esto significa que este fabricante 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 tablaPiezasno se pueden definir dos columnas llamadasCodigo, por eso el segundo cdigo lo hemos llamadoCodigo_segun_fab. Pero en la tablaFabricantesla columnaIdFabse poda haber llamadoCodigosin problema. En una tabla no se admiten dos filas con los valores coincidentes en todos sus campos. Esta restriccin no se suele cumplir.Esta regla nos dice que por ejemplo en la tablaFabricantesno pueden haber dos filas con los valoresFab1, 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 unaclave principal(clave primaria).Una clave primaria es cualquier una columna (o combinacin de columnas) que permite identificar de forma unvoca 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 que 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 tales columnas como identificadores las definiremos como clavessecundarias(alternativas). Una clave secundaria tiene las mismas restricciones que una clave primaria, pero como no podemos definir dos claves primarias, definimos la que se vaya a utilizar ms frecuentemente como clave primaria y la otra (u otras) como secundarias.Por ejemplo en la tablaPiezasla clave primaria es el campoCodigoya que no hay ni puede haber dos piezas con el 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 camposFabricanteyCodigo_segun_fabya que en la tablaPiezases imposible tener dos filas con la misma combinacin de valores en estos campos (elcdigo_segun_fabes el cdigo que utiliza el fabricante para identificar sus piezas). Otro concepto muy importante, fundamental en las bases de datos relacionales, es laclave ajena(externaofornea).Una clave ajena es un campo (o combinacin de campos) que contiene la referencia a una fila de otra tabla, tambin puede referirse a la misma tabla. En otras palabras, es un campo que seala a un registro de otra tabla, contiene un 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 variasclaves ajenas(externas,forneas). Unaclave ajena puede contener valores duplicados y valores nulos.Siguiendo el ejemplo anterior, en la tablaPiezastenemos la clave ajenaFabricanteya que en este campo nos guardamos un valor que seala a una fila de la tablaFabricantes, en este campo tenemos el cdigo del fabricante que nos suministra la pieza y este cdigo nos lleva al fabricante correspondiente en la tablaFabricantes.Por ejemplo la pieza3es servida por el fabricanteFab2, valor que seala al fabricanteMaderas 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: La integridad de entidades (integridad de claves): Toda tabla debe tener una clave primaria que permite 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. La integridad referencial: En una clave ajena no puede haber un valor no nulo que no exista en la tabla de referencia. Para que no existan errores de integridad referencial en la base de datos, el sistema comprueba 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, que no pueda haber ms de 20 fabricantes. Un SGBD relacional sigue la arquitectura de tres niveles en la que tenemos en el nivel externo lasvistas, 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 las reglas de Codd, el lenguaje SQL que veremos en prximos temas.

Ediciones de SQL Server 2005Las ediciones disponibles SQL Server 2005 son las siguientes:SQL Server 2005Express Edition. Gratuita. Con lmite de memoria (lo que limitar tambin en nmero de usuarios) y tamao de las BD.SQL Server 2005Workgroup Edition. Para pequeas empresas. Sin lmite de usuarios y tamao de las BD. No incluye caractersticas avanzadas.SQL Server 2005Standard Edition. Para empresas medianas. Sin lmite de usuarios y tamao de las BD. Incluye herramientas avanzadas de administracin y anlisis de datos.SQL Server 2005Enterprise Edition. Es el nivel ms alto, para grandes empresas. Aade al nivel anterior: Mayor potencia. Servicios especficos para grandes empresas. Puede aprovechar configuraciones multiprocesador, grandes cantidades de RAM, almacenes de datos del orden de TeraBytes (1000 GB).SQL Server 2005Developer Edition. Para entornos de desarrollo. Mismas posibilidades que la Enterprise. Licencia que limita su uso en entornos de explotacin.SQL Server 2005Mobile Edition. Para dispositivos pequeos. Base de datos compacta Diseada para admitir una lista amplia de dispositivos inteligentes y Tablet PC.SQL Server 2005Compact Edition. Gratuita. Formato compacto. Para aplicaciones de mviles y escritorio.

1.4. Estructura interna de una base de datosAntes 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 principalesEn 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 recomendada para los nombres de archivos de datos principales es.mdf. Archivos de datos secundariosLos 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. Archivos de registroLos 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 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. Slo las bases de datos de slo lectura y los 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 SSMSEn elExplorador de objetos, si desplegamos la carpetaBases de datosnos aparecenBases de datos del sistemay las bases de datos de usuario despus de la carpetaInstantneas...

Despus de la instalacin, en la carpetaBases de datosdel sistema se habr creado una especial denominadamasterse 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.

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

El entorno grfico SSMS (III)Para crear una nueva base de datos de usuario nos posicionamos sobre la carpetaBases de datosy con el botn derecho del ratn desplegamos el men contextual del que elegimos la opcinNueva base de datos

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

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 de datos a la que nos referiremos dentro del SSMS, a nivel conceptual (en la imagenMibase).Esta base de datos est asociada a dos archivos fsicos, en la parte inferior aparecen esos archivos. Para facilitarnos la tarea, al teclear el nombre de la bd lgica, se rellenan automticamente los nombres de los archivos fsicos, 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 cambindolo.Para cada archivo fsico podemos definir una serie de parmetros como el tipo de archivo (si es de datos o de transacciones Registro) 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 puede 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 botnAgregar.Al pulsar el botnAgregarse crea una nueva fila en la tabla de archivos fsicos donde deberemos escribir el nombre del archivo, su tipo (desplegando la lista podemos elegir entre de datos o de registro) y dems parmetros.

Al agregar un nuevo archivo se activa el botnQuitar, siempre que estemos posicionados encima de un archivosecundario para poder as eliminarlo si lo queremos.No podemos eliminar ni el de datos primario, ni el de registro inicial.

El entorno grfico SSMS (IV)Si nos fijamos en la zona de la izquierda, vemos que nos encontramos en la pestaaGeneral, podemos cambiar otros parmetros de la base de datos pulsando enGrupos de archivoso enOpciones:

Al final pulsamos enAceptary se crear la base de datos.

Aparecer dentro de la carpetaBases 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 fsicos con los nombres que le hemos indicado.

El entorno grfico SSMS (V)1.6. Adjuntar una base de datosEn 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, debersadjuntar una base de datos ya existentea tu servidor. Para ello, lo que tenemos que hacer es pegar los archivos en la ubicacin que queramos, y luego indicar al SQL Server que vamos a utilizar esta base de datos, de la siguiente manera:En elExplorador de objetos, sobre la carpetaBases de datosdesplegar el men contextual y elegirAdjuntar...

En la siguiente ventana elegimos la base de datos:

Pulsando enAgregarindicamos el archivo de datos primario en su ubicacin y automticamente se adjuntar la base de datos lgica asociada a este archivo.

Finalmente pulsamos enAceptary aparece la base de datos en nuestro servidor.

La opcinAdjuntarslo se utiliza la primera vez, cuando todava no tenemos la base de datos en el disco.Realiza el siguienteEjercicio Adjuntar base de datos. En l adjuntars las bases de datos que vas a utilizar en los ejercicios que se plantearn ms adelante.1.7. Conectar y Desconectar la base de datosUna 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.sto 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 informacin a diferentes programas, por eso sera absurdo que dejara de 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 estardesconectada. Para ello, desde el SSMS, desplegamos el men contextual de la base de datos que nos interese manipular y seleccionaremos la opcinPoner fuera de conexin:

Aparecer un smbolo a la izquierda de la base de datosindicndonos 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 opcinPoner en conexin:

El caso ms inmediato en el que puedes necesitar conectar y desconectar la base de datos es copiar a un pendrive los archivos de las bases que utilizars en los ejercicios para poder trabajar en diferentes ordenadores con ellos. Para aprender cmo hacerlo, visita el siguienteEjercicio Trasladar una base de datos a otro equipo.En caso de que tu versin de SQL Server no tenga las opcionesPoner en conexinyPoner fuera de conexin, debers utilizar la opcinSeparar...y luego volver a adjuntarla.

El entorno grfico 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 opcinNueva 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 veremos 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 la definicin de la primera columna. En la columnaTipo de datoselegimos qu tipo de valores se podrn almacenar en la columna.1.9. Tipos de datosPodemos 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:

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 pestaaPropiedadesde 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 propiedadlongitud, 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 precisin, los valores que permiten definir el tamao del campo.1.10. Valores nulosTambin podemos indicar si la columna permitir valores nulos o no, o bien cambiando la propiedadPermitir valores nulosque aparece debajo de la propiedadLongitud, o bien simplemente marcando o desmarcando la casilla de la columnaPermitir valores nulosque se encuentra al lado de la columnaTipo 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 contadorEn la mayora de los sistemas gestores de bases de datos tenemos un tipo de datos de tipo contador, autonumrico, 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 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 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 datosContadorpero se consigue el mismo funcionamiento asignando a la columna un tipo de datos numrico y definiendo la columna como columna de identidad.En las propiedades de la columna marcamosSen la propiedad (Identidad) y a continuacin podemos indicar en qu valor queremos que empiece el contador (Inicializacin de identidad) y en cunto 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 automticamente esta funcin, la tenemos que definir nosotros mismos, pero s fuerza a que sea una columna sin valores nulos. No se puede definir ms de una columna de identidad por tabla.1.12. Clave primariaPara definir una columna como clave primaria, posicionamos el puntero del ratn sobre la columna, desplegamos el men contextual y seleccionamos la opcinEstablecer Clave principal:

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 teclaCtrly luego seleccionamos la opcin.Para quitar una clave principal, hacemos lo mismo pero en esta ocasin seleccionamos la opcinQuitar clave principal.

Tambin podemos utilizar el icono de la barra de herramientas.

1.13. Aadir o eliminar columnasUna vez definidas algunas columnas, si queremos aadir una nueva columna entre dos, nos posicionamos en la segunda y seleccionamos la opcinInsertar columnadel 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 y seleccionamos la opcinEliminar columna:

O simplemente hacemos clic en la zona a la izquierda del nombre y pulsamos la teclaSupr.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 opcinModificarde su men contextual (Tambin es posible que se llameDiseo):

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

1.15. Insertar datos en la tablaAhora 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 slo tenemos que rellenar los campos que aparecen en esa fila (la del *), al cambiar de fila los datos se guardarn automticamente 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 errneo, si no lo podemos corregir entonces slo podemos deshacer los cambios.1.16. Modificar datosPara modificar un valor que ya est en una fila de la tabla slo tenemos que posicionarnos en el campo y rectificar el valor. En cuanto modificamos un valor, la fila aparece con un lpiz escribiendo (ver imagen), este lpiz nos indica que la fila se ha modificado y tiene nuevos datos por guardar. Al salir de la fila sta se guardar automticamente 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 actualizacin pulsando la teclaESC.1.17. Eliminar filasPara eliminar una fila completa, la seleccionamos y pulsamos la teclaSupro bien desplegamos su men contextual y seleccionamos la opcinEliminar.En cualquiera de los dos casos nos aparece un mensaje de confirmacin.

1.18. Relacionar tablas

Como ya hemos visto, en una base de datos relacional, las relaciones entre las tablas se implementan mediante la definicin de claves ajenas, que son campos que contienen valores que sealan a un registro en otra tabla, en esta relacin as 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 opcinRelacionesy se abre la ventana:

Al pulsar el botn que se encuentra en la filaEspecificacin de tablas y columnasse abre el dilogo donde definiremos la relacin:

El entorno grfico SSMS (X)En la parte derecha tenemos la tabla en la que estamos y el campo que va a actuar como clave ajena, slo 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 relacionarn las tablas. En nuestro caso ser:

De esta forma hemos definido una relacin entre las tablasFacturasyClientes. Para ver las relaciones existentes entre las diferentes 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:

ElegimosSy se crea digamos el soporte donde se pintar el diagrama.A continuacin 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 pulsamosAgregar, cuando hayamos agregado al diagrama todas las que queremos pulsamos enCerrary 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 carpetaDiagramas de base de datosaparecen todos los diagramas definidos hasta el momento:

Hemos aprendido hasta ahora lo bsico para poder crear una base de datos y rellenarla con tablas relacionadas entre s y con datos, ahora veamos cmo recuperar esos datos.

El entorno grfico SSMS (XI)1.19. Abrir una nueva consultaVamos 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 el servidor y pulsando el botnde la barra de botones o si queremos realizar la consulta sobre un servidor con el cual todava no hemos establecido conexin, seleccionando de la barra de mens la opcinNuevo>Consulta de 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 del 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:CREATE DATABASE ventas;Al pulsar el botnEjecutarse ejecuta la sentencia y aparece en la parte inferior el resultado de la ejecucin, en la pestaaMensajes:

Si ahora desplegamos la carpetaBases de DatosdelExplorador de Objetos, observaremos la base de datos que hemos creado:

Si la ejecucin de la sentencia produce un error, el sistema nos devolver el mensaje de error escrito en rojo en la pestaaMensajes.Podemos incluir en una misma consulta varias sentencias SQL, cuando pulsamosEjecutarse ejecutarn todas una detrs de otra. Si tenemos varias consultas y slo queremos ejecutar una, la seleccionaremos antes de ejecutarla.

Unidad 1. El entorno grfico SSMS (XII)1.21. La base de datos predeterminadaCuando ejecutamos consultas desde el editor, nos tenemos que fijar sobre qu base de datos se va a actuar.

Fijndonos en la pestaa 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 guin y el nombre de la consulta.

En la imagen anterior tenemosord01.master SQLQuery1.sql, lo que nos indica que la consulta se llamaSQLQuery1.sql, y que se va a ejecutar sobre la base de datosmasterque se encuentra en el servidorord01.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 elExplorador 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 acte sobre una determinada base de datos y no nos queremos preocupar de qu base de datos tenemos activa podemos aadir al principio de la consulta la instruccinUSE nombreBaseDatos;esto 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 datosventas.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 datosmaster, 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 sesin.Para ello, cuando vamos a conectar con el servidor:

Pulsamos en el botnOpciones >>

En la pestaaPropiedades de conexin, en el cuadroConectar con base de datos: Seleccionamospara 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 grfico SSMS (XIII)1.22. El editor de textoPara facilitarnos la redaccin y correccin de las sentencias, el editor de SQL presenta las palabras de distintos colores segn su categora y podemos utilizar el panelExplorador de Objetospara 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 cdigo se colorea por categora. Los colores son los mismos que se utilizan en todo el entorno SQL Server. En esta tabla aparecen los colores ms comunes.ColorCategora

RojoCadena de caracteres

Verde oscuroComentario

Negro sobre fondo plateadoComando SQLCMD

FucsiaFuncin del sistema

VerdeTabla del sistema

AzulPalabra clave

Verde azuladoNmeros de lnea o parmetro de plantilla

Rojo oscuroProcedimiento almacenado de SQL Server

Gris oscuroOperadores

1.23. Configurar un esquema de colores personalizadoEn el menHerramientas>Opciones, desplegando la opcinEntorno,Fuentes y colores, se puede ver la lista completa de colores y sus categoras, as como configurar un esquema de colores personalizado:

En la listaMostrar valores para, seleccionamos el entorno que se ver afectado.El botnUsar predeterminadosnos permite volver a la configuracin predeterminada.Ahora slo nos queda aprender a redactar sentencias SQL, cosa que se ver en otro momento, mientras tanto podemos utilizar elGenerador de Consultaque incluye SSMS y que veremos a continuacin en el apartado sobre vistas.1.24. Las VistasLas consultas que hemos visto hasta ahora son trozos de cdigo SQL que podemos guardar en un archivo de texto y abrir y ejecutar cuando queramos, pero si queremos que nuestra consulta de recuperacin 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 lgica almacenada en memoria y lo que se guarda en la base de datos es su definicin, la instruccin SQL que permite recuperar los datos.

Para definir una vista en elExplorador de Objetosdesplegamos la base de datos donde la guardaremos y elegimos la opcinNueva vistadel men contextual de la carpetaVistas, se pondr en funcionamiento el generador de consultas pidindonos las tablas en las que se basar la vista. Pulsamos sobre la tabla a aadir al diseo de la vista y pulsamos el botnAgregar, podemos aadir as cuntas tablas queramos.Despus deCerrar, vemos a la derecha delExplorador de Objetosla pestaa con la definicin de la vista que puede incluir varios paneles:

La aparicin de estos paneles es configurable, en la barra de herramientasDiseador de vistaslos iconos remarcados en azul son los correspondientes a cada panel:

Unidad 1. El entorno grfico SSMS (XIV)Nosotros, a lo largo del curso, crearemos las vistas desde el panel SQL que veremos ms adelante.1.25. El panel de diagramaEs el primero que aparece, incluye una representacin grfica 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 relacin ha aparecido automticamente al aadir la segunda tabla. Pero se puede cambiar el tipo de relacin eligiendo la opcin correspondiente 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 casilla correspondiente. En la imagen anterior la nica casilla seleccionada es la del * en la tablaLibrospor lo que se visualizarn todas las columnas de la tablaLibrosy ninguna de la tablaPrstamos.Conforme vamos marcando casillas de las tablas del panel diagrama, los cambios se ven reflejados en los dems paneles excepto en el panel de resultados que se actualiza ejecutando la consulta.1.26. El panel de criteriosEs 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. EnColumnatenemos el nombre de la columna de la se obtienen los datos o la expresin cuando se trata de una columna calculada. EnAliasescribimos el nombre que tendr la columna en la vista, tambin 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 enColumna. EnTablatenemos el nombre de la tabla del origen de la consulta a la que pertenece laColumna, por ejemplo la primera columna del resultado se saca de la columnaCodigode la tablaLIBROSy se llamarCodLibro. La cuarta columna de la vista coger sus datos de la columnaUsuariode la tablaPrestamosy se llamarUsuario(Aliasse ha dejado en blanco por lo que asume el nombre que hay enColumna. En la columnaResultadosindicamos si queremos que la columna se visualice o no, las columnas con la casilla marcada se visualizan. Las columnasCriterio de ordenacinyTipo de ordenpermiten ordenar las filas del resultado segn una o ms columnas. Se ordena por las columnas que tienen algo enTipo de ordeny cuando se ordena por varias columnasCriterio de ordenacinindica que primero se ordena por la columna que lleva el n 1 y despus por la columna que lleva el n 2 y as sucesivamente. En el ejemplo las filas del resultado se ordenarn primero por cdigo de libro y despus por cdigo de prstamo, todas las filas dentro del mismo libro se ordenarn por cdigo de prstamo.Si queremos aadir unos criterios de seleccin tenemos las columnasFiltroyOEn cada celda indicamos una condicin que debe cumplir la columna correspondiente y se puede combinar varias condiciones mediante O (OR) e Y (AND) segn coloquemos las condiciones en la misma columna o en columnas diferentes. 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 podemosElimnar filasde 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 pulsamosSupro desde el men contextual de la fila.Podemos definir consultas ms complejas como por ejemplo consultas de resumen, pulsando sobre el botnAgrupar porde la barra de herramientas, se aade a la rejilla una nueva columnaAgrupar porcon las siguientes opciones:

Unidad 1. El entorno grfico SSMS (XV)1.27. El panel SQLEn l vemos la instruccin SQL generada, tambin 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 oComprobar la sintaxispara 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% de 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 tabla. De hecho si nos fijamos en elExplorador de objetos, en la carpetaVistas:Vemos que la estructura es muy similar a la estrutura de una tabla. Y que podemos modificar su definicin y ejecutarla, igual que con las tablas: Modificarpara modificar la definicin de la vista Abrir vistapara ejecutarla y ver los datos como si fuese una tabla real.Ejercicio propuesto de la Unidad 1Prueba evaluativa de la Unidad 1

Unidad 2. Introduccin al SQL. Transact-SQL (I)2.1. Conceptos bsicos de SQLSQL (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 estndar 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 puede considerar como un lenguaje de programacin 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 tambin se suele emplear embebido en programas escritos en lenguajes de programacin convencionales. En estos programas se mezclan las instrucciones del propio lenguaje (denominado anfitrin) 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 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.ElDDL, es la parte del SQL dedicada a la definicin de la base de datos, consta de sentencias para definir laestructurade la base de datos, permiten crear la base de datos, crear, modificar o eliminar la estructura de las tablas, crear ndices, definir reglas de validacin de datos, relaciones entre las tablas, etc. Permite definir gran parte del nivel interno de la base de datos. Por este motivo estas sentencias sern utilizadas normalmente por eladministrador de la base de datos.ElDCL(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 la 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 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 actualizacin de la base de datos (crear una nueva fila en la tabla de billetes y actualizar la plaza reservada en el vuelo, ponindola como ocupada) estas dos operaciones se tienen que ejecutar o todas o ninguna, si despus de crear el billete no se actualiza la plaza porque se cae el sistema, por ejemplo, la base de datos quedara en un estado inconsistente ya que la plaza constara como libre cuando realmente habra 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 transaccin 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 sern utilizadas normalmente por eladministradormientras que las otras, referentes a proceso de transacciones sern utilizadas tambin por losprogramadores.No todos los sistemas disponen de ellas.ElDMLse compone de las instrucciones para el manejo de los datos, para insertar nuevos datos, modificar datos existentes, para eliminar datos y la ms utilizada, para recuperar datos de la base de datos. Veremos que una sola instruccin de recuperacin de datos es tan potente que permite recuperar datos de varias tablas a la vez, realizar clculos 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 casi idnticas, de un sistema a otro, el usuario slo indica lo que quiere recuperar no cmo se tiene que recuperar, no influye el cmo estn almacenados los datos.Es el lenguaje que utilizan losprogramadoresy losusuariosde 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 perfil profesional (programador o administrador) o de tu inters personal te resultar ms til un bloque u otro.2.2. Introduccin al TRANSACT-SQLComo hemos dicho, el sistema gestor de base de datosSQL-Server 2005utiliza su propia versin 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 ms all de un lenguaje SQL cualquiera ya que incluye caractersticas propias de cualquier lenguaje de programacin, caractersticas que nos permiten definir la lgica necesaria para el tratamiento de la informacin: Tipos de datos. Definicin de variables. Estructuras de control de flujo. Gestin de excepciones. Funciones predefinidas.Sin embargo no permite: Crear interfaces de usuario. Crear aplicaciones ejecutables, sino elementos que en algn momento llegarn al servidor de datos y sern ejecutados.Debido a estas restricciones se emplea generalmente para crear procedimientos almacenados, triggers y funciones de usuario.Puede ser utilizado como cualquier SQL como lenguaje embebido en aplicaciones desarrolladas en otros lenguajes de 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 (SQL Server Management Studio) el entorno de gestin que ya conocemos. Esta es la forma en que lo utilizaremos nosotros.

Unidad 2. Introduccin al SQL. Transact-SQL (II)2.3. Caractersticas generales del lenguaje Transact-SQLEl lenguaje SQL se cre con la finalidad de ser un lenguaje muy potente y a la vez muy fcil de utilizar, se ha conseguido en gran medida ya que con una sola frase (instruccin) podemos recuperar datos complejos (por ejemplo datos que se encuentran en varias tablas, combinndolos, calculando resmenes), y utilizando un lenguaje muy cercano al lenguaje hablado (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, de 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 ms 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 contrario, como el nmero de palabras que se emplean es muy reducido, enseguida nos las aprenderemos.Por ejemplo en elDDL(accionessobre la definicin de la base de datos), tenemos 3 verbos bsicos:CREATE (Crear)DROP (Eliminar)ALTER (Modificar)Completados por el tipo de objeto sobre el que actan y el objeto concreto:CREATE DATABASE mibase .......;Permite crear una base de datos llamadamibase, a continuacin escribiremos las dems clusulas que completarn la accin, en este caso dnde se almacenar la base de datos, cunto ocupar, etc...CREATE TABLE mitabla (.....);Permite crear una nueva tabla llamadamitabla, entre parntesis completaremos la accin indicando la definicin de las 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 datosmibase.DROP TABLE mitabla;Elimina la tablamitabla.ALTER TABLE mitabla.....;Permite modificar la definicin de la tablamitabla.En elDML(accionessobre los datosalmacenados) 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 enmitablaDELETE FROM mitablaEliminar filas demitablaUPDATE mitabla .......Actualiza filas demitablaComo ejemplo de clusula dentro de una instruccin tenemos:SELECT codigo, nombreFROM ClientesWHERE localidad=Valencia;En esta sentencia nos aparecen dos clusulas, la clusula FROM que nos permite indicar de dnde hay que coger los datos y la clusula WHERE que permite indicar una condicin de seleccin.Otra caracterstica deuna sentencia SQL es que acaba con un punto y coma(;) originalmente ste era obligatorio y serva para indicar el fin de la instruccin, pero ahora se puede omitir, aunque se recomienda su uso.En una sentencia utilizaremospalabras reservadas(las fijas del lenguaje), y nombres de objetos y variables (identificadores).Las palabras reservadas no se pueden utilizar para otro propsito, por ejemplo una tabla no se puede llamar FROM, y los 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 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 cualificadonombrebasedatos.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 cualificadonombretabla.nombrecampo.El valorNULL.Puesto que una base de datos es un modelo de una situacin 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 afectara tambin a todos los clculos que se pueden realizar sobre la columna nota.

Unidad 2. Introduccin al SQL. Transact-SQL (III)2.4. Reglas de formato de los identificadoresLos 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 estableca con el parmetro sp_dbcmptlevel pero que ahora Microsoft aconseja no utilizar ya que desaparecer en versiones posteriores en vez de eso se tiene que utilizar la clusula SET COMPATIBILITY_LEVEL de la instruccin ALTER TABLE. Cuando el nivel de compatibilidad es90, (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 nmero es ms limitado. El nombre debe empezar por: Una letra, como aparece definida por el estndar Unicode 3.2. La definicin Unicode de letras incluye los caracteres latinos de la"a"a la "z"y de la "A" a la "Z". El carcter de subrayado (_), arroba (@) o nmero (#). Ciertos smbolos al principio de un identificador tienen un significado especial en SQL Server. Un identificador que empieza con el signo de arroba indica un parmetro o una variable local. Un identificador que empieza con el signo de nmero indica una tabla o procedimiento temporal. Un identificador que empieza con un signo de nmero 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 @@. 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 [ ] (tambin se pueden utilizar las comillas pero recomendamos utilizar los corchetes).

2.5. Tipos de datosEn SQL Server 2005, cada columna, expresin, variable y parmetro est asociado a un tipo de datos.Un tipo de datos, realmente define el conjunto de valores vlidos para los campos definidos de ese tipo. Indica si el campo 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 utilizarse. 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:varcharSi quieres conocer todos los tipos de datos disponibles en SQLServer 2005, visita el siguiente avanzado.2.6. Las constantesUna constante es un valor especfico o un smbolo que representa un valor de dato especfico. El formato de las constantes depende del tipo de datos del valor que representan. En este apartado veremos las ms utilizadas. Lasconstantes numricasse escriben mediante una cadena de nmeros, con la consideracin 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.90y85.90, el primero sera un valordecimaly el segundo un valormoney. De forma predeterminada, los valores sern positivos. Para indicar lo contrario escribimos el signo-al principio. Lasconstantes de fecha y horavan entre comillas simples y con un formato de fecha y hora adecuado. Por ejemplo:'03/10/90'. Y lasconstantes en cadenas de caracteresvan 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 se entiende que el valor es positivo.Si quieres ver cmo definir constantes para otros tipos de datos, visita el siguiente avanzado.

Unidad 2. Introduccin al SQL. Transact-SQL (IV)2.7. Las expresionesUna expresin es una combinacin de smbolos y operadores que el motor de base de datos de SQL Server evala para obtener un nico valor. Una expresin simple puede ser una sola constante, variable, columna o funcin escalar. Los operadores se pueden usar para combinar dos o ms expresiones simples y formar una expresin compleja.Dos expresionespueden combinarsemediante 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 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 mayor prioridad o a un tipo de datos intermedio que pueda convertirse implcitamente al tipo de datos con la mayor 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 la categora del tipo de datos entero.AND&

OR|

OR exclusivo^

- Operadores de comparacin:Igual a=

Mayor que>

Menor que=

Menor o igual que Bases de datos del sistema.b) Bases de datos.c) Objetos del servidor.d) Administracin.

3. Como mnimo, una base de datos en SQL Server debe conener los archivos fsicos:a) mdf y ldf, es decir, el principal y el de registro.b) mdf, ndf y ldf: Principal, secundario y de registro.c) mdf y ndf: Principal y secundario.d) mdf: Principal.

4. Para copiar los archivos fsicos de una base de datos...a) Deberemos acceder a la carpeta donde est guardada, mediante el explorador de windows, y copiarlos.b) Deberemos desconectarla antes de intentar copiarla, si no el sistema no nos dejar hacerlo porque est en uso.c) Deberemos utilizar la herramienta de copias de seguridad, porque no se puede acceder a ella desde fuera del gestor SSMS.d) Todas son falsas.

5. Para incluir una base de datos en nuestro servidor...a) Es necesario crearlo desde el mismo servidor.b) Es necesario, por seguridad, crear la base de datos en un servidor diferente al que lo ejecutar.c) Podemos crear una nueva o adjuntar una ya existente.d) Deberemos hacerlo mediante instrucciones SQL, ya que el entorno grfico no lo permite.

6. Al definir las columnas de una tabla, qu informacin deberemos especificar?a) El rango de valores que soporta.b) El nombre, tipo y si admite nulos, para cada columna.c) La longitud de la cadena.d) Las variables.

7. Si definimos una columna de identidad (IDENTITY)...a) SQL Server automticamente la define como clave principal.b) sta admitir nulos.c) sta deber ser de tiponchar.d) El sistema generar su valor, que ser un nmero incrementado.

8. Para modificar los datos de una tabla:a) Desde el Explorador de objetos, desplegamos su men contextual y elegimos la opcinModificar.b) Desde el Explorador de objetos, desplegamos su men contextual y elegimos la opcinAbrir tabla.c) A y B son ciertas.d) A y B son falsas.

9. Para relacionar dos tablas, por ejemploempleadosyoficinas.a) Deberemos llamar del mismo modo al campo que las relacionar y el gestor se encarga automticamente de crear la relacin.b) Deberemos seleccionar el campo de la tabla padreempleadosypulsar el botndefinir hijospara aadir el campo de oficinas.c) Deberemos, necesariamente, escribir instrucciones SQL que se encarguen de establecer las relaciones.d) Deberemos desplegar el men contextual del campo que las relaciona y elegirRelaciones.

10. Si pulsamos el botnNueva consulta...a) Se abrir una pestaa nueva en forma de editor, donde podremos escribir consultas SQL.b) Podremos utilizar la zona de edicin para escribir varias consultas, una detrs de otra.c) Dispondremos de un editor que colorear las palabras en funcin de su categora.d) Todas son ciertas.

Unidad 3. Consultas simples (I)3.1. IntroduccinVamos a empezar por la instruccin que ms se utiliza en SQL, la sentencia SELECT. La sentencia SELECT es, con diferencia, la ms compleja y potente de las sentencias SQL, con ella podemos recuperar datos de una o ms tablas, seleccionar ciertos registros e incluso obtener resmenes de los datos almacenados en la base de datos. Es tan compleja 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 ])]

::=

{ | ( < 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 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 FROMDe la sintaxis anterior, el elementoindica 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 ] nb_tablarepresenta unnombre de tabla.nb_vistaunnombre de vista.Tanto para las tablas como para las vistas, podemos hacer referencia a tablas que estn 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 (Lgica) y el nombre del esquema al que pertenece la tabla dentro de la base de datos.Por ejemplo:MiBase.dbo.MiTablase refiere a la tablaMiTablaque se encuentra en el esquemadbode la base de datosMiBase.Cuando no se definen esquemas, SQL-Server crea uno por defecto en cada base de datos denominadodbo.Opcionalmente podemos definir unnombre 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 tambin cuando queremos combinar una tabla consigo misma; ya volveremos sobre los alias de tabla cuando veamos consultas multitabla.La palabra AS no aade ninguna operatividad, est ms por esttica.Podemos escribir:

SELECT ...

FROM tabla1 Sacamos los datos de la tabla tabla1

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 estn en otra base de datos del mismo equipo que est ejecutando la instancia de SQL Server, se utiliza el nombre cualificado con el formatonbBaseDatos.nbEsquema.nbTabla.Si la tabla o la vista estn fuera del servidor local en un servidor vinculado, se utiliza un nombre de cuatro partes con el formatonbservidor.catalogo.nbEsquema.nbTabla. Volveremos ms adelante sobre las conexiones remotas.

Unidad 3. Consultas simples (II)3.3. La lista de seleccinEn la lista de seleccinindicamos 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 definicin de cada columna por una coma y las columnas del resultado aparecern en el mismo orden que en la lista de seleccin.Para cada columna del resultado su tipo de datos, tamao, precisin y escala son los mismos que los de la expresin que da origen a esa columna.Podemos definir las columnas del resultado de varias formas, mediante: Una expresin simple: una referencia a una funcin. una variable local una constante una columna del origen de datos, Una subconsulta escalar, que es otra instruccin SELECT que devuelve un nico valor y se evala para cada fila del origen de datos (esto no lo veremos de momento). Una expresin compleja generada al usar operadores en una o ms expresiones simples. La palabra clave *. La asignacin de variables con el formato@variable_local= expresin. La palabra clave $IDENTITY. La palabra clave $ROWGUID.3.4. Columnas del origen de datosCuando queremos indicar en la lista de seleccin 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 ms 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 sera:nombreoficinacontrato

Antonio Viguer121986-10-20

Alvaro Jaumes211986-12-10

Juan Rovira121987-03-01

Jos Gonzlez121987-05-19

Vicente Pantalla131988-02-12

Luis Antonio111988-06-14

Jorge Gutirrez221988-11-14

Ana Bustamante211989-10-12

Mara Sunta111999-10-12

Juan VictorNULL1990-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 sera:Idfabidproductodescripcionprecio

aci41001arandela0,58

aci41002bisagra0,80

aci41003art t31,12

aci41004art t41,23

aci4100xjunta0,26

aci4100yextractor28,88

aci4100zmont26,25

bic41003manivela6,52

bic41089rodamiento2,25

Unidad 3. Consultas simples (III)3.5. Alias de columnaPor 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 clusula AS. Se escribe el nuevo texto tal cual sin comillas siguiendo las reglas de los identificadores.Ejemplo:SELECT numclie,nombre AS nombrecliente

FROM clientes;El resultado ser :Numclienombrecliente

2101Luis Garca Antn

2102Alvaro Rodrguez

2103Jaime Llorens

en vez de:Numclienombre

2101Luis Garca Antn

2102Alvaro Rodrguez

2103Jaime Llorens

La palabra AS es opcional.SELECT numclie,nombre nombrecliente

FROM clientes;Sera equivalente a la consulta anteriorSi 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 seleccin y en la clusula ORDER BY pero no en la clusula WHERE.3.6. FuncionesExisten funciones que podemos utilizar en la lista de seleccin, e incluso en otras clusulas que veremos ms adelante, como el WHERE. Las principales funciones son las siguientes:Funciones de fecha:FuncinDescripcinVer+

GETDATEDevuelve la fecha actual.

GETUTCDATEDevuelve la hora UTC.

DATEPARTDevuelve un entero que corresponde a la parte de la fecha solicitada.

DAYDevuelve el da de la fecha indicada.

MONTHDevuelve el mes de la fecha indicada.

YEARDevuelve el ao de la fecha indicada.

DATENAMEDevuelve una cadena de caracteres que representa el valor de la unidad especificada de una fecha especificada.

DATEADDDevuelve un valor datetime nuevo que resulta de sumar un intervalo de tiempo a una fecha especificada.>

DATEDIFFDevuelve el n de intervalos que hay entre dos fechas.

@@DATEFIRSTDevuelve el primer da de la semana establecido con SET DATEFIRST.

SET DATEFIRSTEstablece el primer da de la semana en un nmero del 1 al 7.

Unidad 3. Consultas simples (IV)Funciones de cadena:FuncinDescripcinVer+