Microsoft SQL Server 2005 Express Edición

download Microsoft SQL Server 2005 Express Edición

of 122

Transcript of Microsoft SQL Server 2005 Express Edición

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    1/122

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    2/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.2

    Microsoft

    SQL Server 2005ExpressEdicin

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    3/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.3

    PresentacionMicrosoft SQL Server 2005 Express Edicin (SQL Server Express) es unaplataforma de base de datos que se basa en Microsoft SQL Server 2005. Estambin la sustitucin de Microsoft Desktop Engine (MSDE). Gracias a suintegracin con Microsoft Visual Studio 2005, SQL Server Express facilita eldesarrollo de aplicaciones controladas por datos con gran variedad de funciones,que mejoran la seguridad del almacenamiento y se implementan con rapidez.

    SQL Server Express se descarga gratuitamente y se puede redistribuir previoacuerdo entre las partes. Cada edicin puede servir como base de datos cliente ycomo base de datos bsica de servidor. Ambas ediciones de SQL Server Express

    constituyen una opcin idnea para fabricantes independientes de software (ISV),usuarios de servidor, programadores no profesionales, programadores Web,alojamientos de sitios Web y aficionados a crear aplicaciones cliente. Si necesitacaractersticas de base de datos ms avanzadas, puede actualizar SQL ServerExpress a versiones ms sofisticadas de SQL Server

    Microsoft SQL Server 2005 Express Edicin (SQL Server Express) se basa enMicrosoft SQL Server 2005 y admite la mayora de las caractersticas del DatabaseEngine (Motor de base de datos) de ese producto y de las versiones anteriores deMicrosoft SQL Server.

    Si crea y disea una base de datos en SQL Server Express, puede migrarla a SQL

    Server 2005. Sin embargo, no podr utilizar la base de datos de SQL ServerExpress con versiones anteriores de SQL Server, como SQL Server 2000.

    MCTS. Henry Chavez Viera

    Docente de sistemas UNI

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    4/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.4

    Las 10 Caractersticas ms importantes sobre SQLServer 2005 Express Edition

    Soporte integrado para el common language runtime (CLR). Los procesos yfunciones almacenados pueden ser escritos utilizando tu lenguaje deprogramacin favorito.

    Soporte XML nativo.

    Soporte de XCopy para mover Bases de Datos de un sitio a otro.

    Instalacin robusta y fiable utilizando tanto el interfaz grfico de usuario(graphical user interface - GUI) como el modo silencioso.

    Servicio y parcheado automatizado.

    Profunda integracin con Visual Studio para proporcionar acceso a ricoscontroles de datos como DataGridView, DataNavigator, y DataConnector.

    Soporte para Bases de Datos de hasta 4GB.

    Soporte para sistemas desconectados con SQL Server Service Broker andReplication.

    SQL Server Express Manager, una nueva y sencilla de usar herramientade gestin de bases de datos y anlisis de queries.

    Implantacin ms sencilla mediante Visual Studio ClickOnce.

    En la siguiente lista se destacan los componentes principales de SQL Server 2005que no son compatibles con SQL Server Express:

    Reporting Services Notification Services Integration Services Analysis Services Bsqueda de texto Servicios OLAP y minera de datos

    Requisitos de instalacionEn la tabla siguiente se muestran los requisitos previos de software y los requisitosmnimos de hardware y software para ejecutar Microsoft SQL Server 2005 ExpressEdition (SQL Server Express). Para determinar si su equipo cumple los requisitosdel sistema, en el men Inicio, haga clic con el botn secundario en Mi PC y, acontinuacin, haga clic en Propiedades. En la ficha General se muestra el tipo deCPU y la velocidad, as como la cantidad de memoria instalada (RAM).

    Requisitos previosde software

    Microsoft .NET Framework 2.0

    SP1 de Microsoft Internet Explorer 6.0 o posterior

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    5/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.5

    (requisito previo para .NET Framework)

    RAMMnimo: 192 MB

    Recomendado: 512 MB o ms

    Espacio en el discoduro

    600 MB de espacio libre

    Procesador

    Compatible con Pentium III o superior

    Mnimo: 500 MHz

    Recomendado: 1 GHz o ms

    Sistema operativo

    Windows Server 2003 SP1

    Windows Server 2003 Enterprise Edition SP1

    Windows Server 2003 Datacenter Edition SP1

    Windows Small Business Server 2003 StandardEdition SP1

    Windows Small Business Server 2003 PremiumEdition SP1

    Windows XP Professional SP2

    Windows XP Home Edition SP2

    Windows XP Tablet Edition SP2

    Windows XP Media Edition SP2

    Windows 2000 Professional Edition SP4

    Windows 2000 Server Edition SP4

    Windows 2000 Advanced Edition SP4

    Windows 2000 Datacenter Server Edition SP4

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    6/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.6

    S

    SESION 1

    Qu es el SQL Server?

    Herramientas del sistema del SQL Server 2005 EE.

    Roles y responsabilidades del implementado de base de datos.

    Bases de datos. Componentes lgicos: registro de datos y

    registro de transacciones. Componentes fsicos: archivos y

    grupos de archivos de bases de datos.

    Catlogos del sistema.

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    7/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.7

    Herramientas del sistema del SQL Server 2005EE

    Configuracin de SQL Server 2005.Una vez instalado la versin Express de SQL Server 2005 veamos que ha quedadoinstalado en nuestro pc, para ello acudimos al men de inicio, todos losprogramas y localizamos el paquete aadido por nuestra instalacin:

    Vemos que dentro del paquete Microsoft SQL Server 2005, accedemos a un mencon unas herramientas de configuracin, estas herramientas son:

    De estas herramientas, para nuestros intereses nos basta con conocer la primerade todas (SQL Server Configuration Manager). Desde ella podremos configurar elacceso y el modo de arranque de nuestro servidor de datos.

    Arrancamos la aplicacin y nos encontramos la siguiente pantalla:

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    8/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.8

    De todas las posibles herramientas de configuracin a las que podemosoptar nosotros tenemos que destacar la primera de todas, SQL Server 2005Services, desde la cual podremos configurar dos de los aspectos ms importantesde nuestro servidor.

    Por lo tanto hacemos doble click en el icono correspondiente y accedemos a los

    servidores de bases de datos instalados en nuestro pc. Teniendo que configurar elprimero de todos:

    Haciendo click con el botn derecho accedemos al men desde el cual vemos quetenemos habilitadas una serie de opciones.

    El primer bloque de opciones hace referencia al estado de nuestro servidor, laopcin propiedades para configuracin y la ltima una pequea ayuda que nosofrecen en la instalacin. De nuevo, podemos comparar el servicio de base dedatos de SQL Server 2005, con el servicio de pginas Web de IIS, como yaconoces, desde la configuracin de IIS tenemos la opcin de configurar una seriede propiedades, y establecer el estado del servidor de pginas web. De igualmanera desde SQL Server Configuration Manager, podemos realizar estas mismastareas sobre los servicios de base de datos.

    Opcin: Funcin:

    start

    Para activar nuestro servidor demodo manual. Si el servidor seencuentra en funcionamiento,

    lgicamente esta funcin

    aparecer deshabilitada, lo mismosuceder con el resto de opciones.

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    9/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.9

    stop Detiene el servidor.

    pause Detiene el servidormomentneamente.

    resumeUna vez detenido el servidormediante "pause", lo vuelve a

    poner en marcha.

    restart Detiene el servidor, einmediatamente vuelve a activarlo.

    propiedadesAccedemos a una ventana para

    llevar a cabo variasconfiguraciones.

    ayudaPequea ayuda sobre este

    servicio.

    Veamos ahora como configurar ciertos aspectos del servidor desde la ventana deconfiguracin que aparece pulsando sobre propiedades:

    La ventana aparece con la pestaa Iniciar sesion, activada, desde esta ventanaconfiguramos los permisos de acceso al servidor. Es muy importante configurar

    debidamente estos accesos.

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    10/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.10

    Primero podemos indicar el modo de la cuenta, o bien indicar que la cuentaser la activada en nuestro servidor. En nuestro caso lo configuraremos para queel administrador de nuestro pc sea el usuario predeterminado para tener permisosde administracin.

    Cuando instalamos nuestros servicios en el servidor de una empresa debemos

    operar de diferente mtodo, creando un usuario especfico para la administracinde la base de datos, es bastante lgico crear un usuario para esta tarea, ya quees posible que modifiquemos las caractersticas de usuarios para otras tareas ypara que estos cambios no afecten a SQL Server es mejor que tenga un nicousuario fijo para esta tarea.

    Y por ltimo tenemos a nuestra disposicin una serie de botones para actuarsobre el estado del servidor.

    Sigamos con la configuracin pinchando en la pestaa Service.

    Destacamos la propiedad Modo de inicio, desde ella podemos habilitar 3 modosdiferentes de activar nuestro servidor:

    Opcin: Funcin:

    Automatico

    Con esta opcin, el servidor arrancarconjuntamente con el sistema, es decir, cuandonuestro sistema operativo arranque, el servidor de

    base de datos se activar automticamente, estaes la opcin ms habitual y recomendad, ya que

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    11/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.11

    nuestro servidor estar permanentementeofreciendo sus servcios.

    Deshabilitado Deshabilitamos el arranque del servidor.

    ManualEl modo de gestionar el estado del servidor sermanual por parte del desarrollador mediante lasopciones que vimos anteriormente.

    No entraremos a explicar las opciones avanzadas ya que no entrara dentro de losobjetivos de este curso.

    En el siguiente video se explica detenidamente como dejar configurado nuestroservidor, presta atencin a todos los aspectos explicados.

    Herramienta de administracin y gestin de SQL Server 2005

    Con la instalacin y la configuracin que acabamos de ver ya podramos comenzara trabajar con las bases de datos. Para crear y gestionar nuestras tablas,procedimientos almacenados, etc nos veramos obligados a hacerlo desde VisualStudio.

    Pero, como ya sabes, el objetivo final del curso es el desarrollo de una aplicacinprofesional, para la cual nuestra base de datos estar integrada de una grancantidad de tablas y procedimientos almacenados. Por este motivo, nosayudaremos de una segunda herramienta que nos permita administrar nuestrabase de datos, realizar comprobaciones, y otro tipo de tareas.

    Esta segunda herramienta es Sql Server Management Studio Express , la cualno se instala con la herramientas de configuracin y debemos descargarla porseparado desde la pgina de Microsoft. Por si nunca la has descargado o instaladote dejo el enlace para descargarla, basta con descargar y seguir el asistente deinstalacin, es el mismo enlace que has encontrado en el anterior capitulo.

    Una vez instalada esta herramienta, vemos que ha sido aadida a nuestropaquete de software de SQL Server 2005:

    Con SQL Server Management Studio hemos instalado un conjunto deherramientas para realizar todas las tareas necesarias.

    Nota: Si has desarrollado bases de datos con SQL Server 2000, debes saber que con SQLServer Management Studio se instalan todas las herramientas en una sla, y no en paquetesseparados.

    Vamos a ir viendo paso a paso, como trabajar con esta herramienta. De modo queal finalizar este captulo, tengamos creada una base de datos y seas capaz ms

    adelante de crear tus propias bases de datos, con sus tablas bien estructuradas,

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    12/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.12

    etc... Por lo tanto combinaremos explicaciones sobre SQL ServerMangement Studio con otros aspectos importantes del diseo de base de datos.

    Comencemos con la herramienta, desde el men de inicio arrancamos laaplicacin y nos encontramos con una ventana de conexin.

    Desde esta ventana, te debe recordar a lo explicado en las herramientas deconfiguracin. Antes de comenzar a trabajar con el administrador, debemosindicar a que servidor y con que usuario queremos conectar y entrar aladministrador.

    Propiedad: Opciones: Funcin:

    Nombre delservidor:

    Elegimos el servidor con el queconectaremos.

    El nombre del servidor, queelijamos para conectar con eladministrador. Debes recordareste nombre, porque ser el quetengas que utilizar en lascadenas de conexin desde.NET.

    Autenticacion:

    Autenticacion Windows Autenticacion SQL

    Server

    Si elegimos la opcin "Autenticacion Windows"estaremos conectando conla misma cuenta de usuariocon la que iniciamosnuestro sistema.Trabajaremos con estaopcin a lo largo del curso.

    Si seleccionamos "Autenticacion SQLServer" deberemos indicar

    con que cuenta vamos aconectar e introducir la

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    13/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.13

    contrasea especfica paraconectar con SQL Server.Con la versin SQL Server2005 Express es msrecomendable trabjar con

    "Windows Authentication"ya que de otro modopodemos encontrarproblemas por la limitacinde la versin gratuita.

    Elegidas nuestras opciones adecuadas pulsaremos en conectar, en ese momentonos muestra una ventana con el proceso de conexin y si todo ha resultadocorrecto, arranca nuestra herramienta de administracin.

    Nota: En este curso utilizaremos esta herramienta para disear bases de datos, crear cuentasde usuario y ejecutar nuestras sentencias SQL, necesarias para la gestin de datos, medianteel administrador de consultas. Todo lo dems quedara para un curso especfico deadministracin y mantenimiento de bases de datos con SQL Server 2005. Por lo tanto no tepreocupes al observar que no se explican todas las caractersticas, ya que las tareas quevamos a aprender, son las necesarias para desarrollar nuestras aplicaciones.

    Bases de datos de SQL Server

    Componentes lgicos: registro de datos y registro detransacciones.

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    14/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.14

    SQL Server 2005 asigna una base de datos a un conjunto de archivos del sistemaoperativo. Los datos y la informacin del registro nunca se mezclan en el mismo archivo, ycada archivo slo es utilizado por una base de datos.

    Los grupos de archivos se denominan colecciones con nombre de archivos que se utilizancomo ayuda en tareas de colocacin de datos y administrativas, como las operaciones de copia

    de seguridad y restauracin.Las bases de datos de SQL Server 2005 utilizan tres tipos de archivos:

    Archivos de datos principalesEl archivo de datos principal es el punto de partida de la base de datos y apunta a losotros archivos de la base de datos. Cada base de datos tiene un archivo de datosprincipal. La extensin recomendada para los nombres de archivos de datosprincipales es .mdf.

    Archivos de datos secundariosLos archivos de datos secundarios son todos los archivos de datos menos el archivode datos principal. Puede que algunas bases de datos no tengan archivos de datossecundarios, mientras que otras pueden tener varios archivos de datos secundarios.La extensin de nombre de archivo recomendada para los archivos de datossecundarios es .ndf.

    Archivos de registroLos archivos de registro almacenan toda la informacin de registro que se utiliza pararecuperar la base de datos. Como mnimo, tiene que haber un archivo de registro porcada base de datos, aunque puede haber varios. La extensin de nombre de archivorecomendada para los archivos de registro es .ldf.

    En SQL Server 2005, las ubicaciones de todos los archivos de una base de datos se grabantanto en el archivo principal de la base de datos como en la base de datos master. SQL ServerDatabase Engine (Motor de base de datos de SQL Server) utiliza casi siempre la informacinde ubicacin del archivo de la base de datos master. Sin embargo, Database Engine (Motor de

    base de datos) utiliza la informacin de ubicacin del archivo principal para inicializar lasentradas de ubicacin de archivos de la base de datos master en las siguientes situaciones:

    Al adjuntar una base de datos mediante la instruccin CREATE DATABASE con laopcin FOR ATTACH

    Al actualizar de SQL Server versin 2000 o versin 7.0 a SQL Server 2005. Al restaurar la base de datos master.

    Los archivos de SQL Server 2005 tienen dos nombres:

    logical_file_name

    logical_file_name es el nombre que se utiliza para hacer referencia al archivo en todas lasinstrucciones Transact-SQL. El nombre de archivo lgico tiene que cumplir las reglas de losidentificadores de SQL Server y tiene que ser nico entre los nombres de archivos lgicos de labase de datos.

    os_file_name

    os_file_name es el nombre del archivo fsico que incluye la ruta de acceso al directorio. Debeseguir las reglas para nombres de archivos del sistema operativo.

    La siguiente ilustracin muestra ejemplos de los nombres de archivo lgico y fsico de una basede datos creada en una instancia predeterminada de SQL Server 2005:

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    15/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.15

    Los archivos de datos y de registro de SQL Server se pueden colocar en sistemas de archivosFAT o NTFS. Se recomienda utilizar el sistema de archivos NTFS por las caractersticas deseguridad 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 datosde slo lectura y los grupos de archivos secundarios de slo lectura se pueden colocar en unsistema de archivos NTFS comprimido. Para obtener ms informacin, vea Grupos de archivosde slo lectura y compresin.

    Cuando se ejecutan varias instancias de SQL Server en un nico equipo, cada instancia recibeun directorio predeterminado diferente para albergar los archivos de las bases de datoscreadas en la instancia.

    Pginas de archivo de datos

    Las pginas de un archivo de SQL Server 2005 estn numeradas secuencialmente,comenzando por 0 para la primera pgina del archivo. Cada archivo de una base de datos tieneun nmero de identificador nico. Para identificar de forma nica una pgina de una base de

    datos, se requiere el identificador del archivo y el nmero de la pgina. El siguiente ejemplomuestra los nmeros de pgina de una base de datos que tiene un archivo de datos principalde 4 MB y un archivo de datos secundario de 1 MB.

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    16/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.16

    La primera pgina de cada archivo es una pgina de encabezado de archivo que contieneinformacin acerca de los atributos del archivo. Algunas de las otras pginas del comienzo delarchivo tambin contienen informacin de sistema, como mapas de asignacin. Una de laspginas de sistema almacenadas en el archivo de datos principal y en el archivo de registro

    principal es una pgina de inicio de la base de datos que contiene informacin acerca de losatributos de la base de datos. Para obtener ms informacin acerca de las pginas y los tiposde pginas, vea Pginas y extensiones.

    Tamao de archivo

    Los archivos de SQL Server 2005 pueden crecer automticamente a partir del tamaooriginalmente especificado. Cuando se define un archivo, se puede especificar un incrementode crecimiento. Cada vez que se llena el archivo, el tamao aumenta en la cantidadespecificada. Si hay varios archivos en un grupo de archivos, no crecern automticamentehasta que todos los archivos estn llenos. A continuacin, el crecimiento tiene lugar por turnos.

    Cada archivo tambin puede tener un tamao mximo especificado. Si no se especifica un

    tamao mximo, el archivo puede crecer hasta utilizar todo el espacio disponible en el disco.Esta caracterstica es especialmente til cuando SQL Server se utiliza como una base de datosincrustada en una aplicacin para la que el usuario no dispone fcilmente de acceso a unadministrador del sistema. El usuario puede dejar que los archivos crezcan automticamentecuando sea necesario y evitar as las tareas administrativas de supervisar la cantidad deespacio libre en la base de datos y asignar ms espacio manualmente.

    Catlogos del sistema

    Las aplicaciones dinmicas que no estn codificadas de forma rgida para funcionar con unconjunto especfico de tablas y vistas deben disponer de un mecanismo para determinar laestructura y los atributos de los objetos de cualquier base de datos a la que se conectan. Lasaplicaciones pueden necesitar informacin como la siguiente:

    El nmero y nombre de las tablas y vistas de una base de datos. El nmero de columnas de una tabla o vista, junto con el nombre, el tipo de datos, la

    escala y la precisin de cada columna. Las restricciones definidas en una tabla. Los ndices y las claves definidos para una tabla.

    El catlogo del sistema de SQL Server 2005 proporciona esta informacin para las bases dedatos de SQL Server. El ncleo de los catlogos del sistema de SQL Server 2005 es unconjunto de vistas que muestran metadatos que describen los objetos de una instancia de SQLServer. Los metadatos son datos que describen los atributos de los objetos de un sistema

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    17/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.17

    S

    SESION 2

    Generacin de scripts en SQL Transact. Lenguaje SQL Transact DML para la manipulacin de los datos. Insercin de filas - sentencia INSERT. Actualizacin de filas - sentencia UPDATE.

    Eliminacin de filas - sentencia DELETE

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    18/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.18

    GENERACIN DE SCRIPTS EN SQL TRANSACT

    Transact-SQL es fundamental para trabajar con SQL Server. Todas las aplicaciones que secomunican con SQL Server lo hacen enviando instrucciones Transact-SQL al servidor,independientemente de la interfaz de usuario de la aplicacin

    En esta leccin se muestra cmo crear una base de datos, crear una tabla en la base de datosy, a continuacin, tener acceso a los datos de la tabla y cambiarlos. Puesto que esta leccin esuna introduccin al uso de Transact-SQL, no usa ni describe las mltiples opciones disponiblespara estas instrucciones.

    Las instrucciones de Transact-SQL se pueden escribir y enviar a Database Engine (Motor debase de datos) de las siguientes maneras:

    Mediante el uso de SQL Server Management Studio. En este tutorial se supone quese usa Management Studio, pero tambin puede usarse Management StudioExpress, disponible como descarga gratuita en el Centro de descargas de Microsoft.

    MICROSOFT SQL SERVER MANAGEMENT STUDIO

    EXPRESS

    Microsoft SQL Server Management Studio Express (SSMSE) es una herramienta grfica deadministracin gratuita y fcil de usar para SQL Server 2005 Express Edition y SQL Server 2005Express Edition with Advanced Services.

    ABRIR SQL SERVER MANAGEMENT STUDIO

    Para abrir SQL Server Management Studio1. En el men Inicio, seleccione Todos los programas, Microsoft SQL Server 2005 y,

    a continuacin, haga clic en SQL Server Management Studio.

    2. En el cuadro de dilogo Conectar al servidor, compruebe la configuracinpredeterminada y, a continuacin, haga clic en Conectar. Para conectarse, elcuadro Nombre del servidor debe contener el nombre del equipo en el que estinstalado SQL Server. Si Database Engine (Motor de base de datos) es unainstancia con nombre, el cuadro de nombre de servidor tambin debe contener elnombre de la instancia con el formato\

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    19/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.19

    2- Con el botn derecho (o el botn secundario), pulsa en Bases de datosy del men selecciona Nueva base de datos, tal como te muestro en la figura 2.

    Figura 2. Crear una nueva base de datos

    3- Eso har que te muestre una ventana como la de la figura 3.A la base de datos, le vas a dar el nombre PruebasGuille, as que escribe esenombre en la caja de textos correspondiente y despus pulsa en el botn Aceptar.

    Figura 3. Cuadro de dilogo de Nueva base de datos

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    20/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.20

    COMANDO CREATE DATABASE

    Sintaxis del comando Create Database:

    NAME = Nombre_del_archivo_lgico,FILENAME = Nombre_del_archivo_en_el_sistema (path completo)SIZE = TAMAO (inicial)MAXSIZE = (tamao_mximo | UNLIMITED)(Tamao mximo que puede tener la base de datos, UNLIMITED =tamaoilimitado)FILEGROWTH = Incremento del archivo (crecimiento en MB)

    1. Ahora crearemos la base de Datos Ventas

    /*Crear la base de datos con el comando Create database*/

    CREATE DATABASE VENTASON

    /*Generando el archivo de datos*/

    ( NAME = ventas_data,

    FILENAME = 'c:\program files\microsoft sqlserver\mssql\data\ventas_data.mdf',SIZE = 10,

    MAXSIZE = 50,FILEGROWTH = 5 )

    /*Generando el archivo de registro*/LOG ON

    ( NAME = Pruebas_log',

    FILENAME = 'c:\program files\microsoft sqlserver\mssql\data\ventas_log.ldf',

    SIZE = 5MB,MAXSIZE = 25MB,FILEGROWTH = 5MB )

    ------------------------------------------------------------------------------

    2. Seleccione todas las instrucciones y pulse F5

    ABRIR SU BASE DE DATOS

    1. Escribe el comando siguiente :

    USE VENTAS

    2. Seleccione el comando y pulse F5

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    21/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.21

    MODIFICAR UNA BASE DE DATOS CREADA

    COMANDO ALTER DATABASE

    Aade o elimina archivos o grupos de archivos de una base de datos. Se puedeusar tambin para modificar las propiedades de archivos y grupos de archivos

    CREATE DATABASE BDEMPRESA ON(NAME = Emp_dat1,FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\Emp_dat1.ndf',SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB

    )GO

    ALTER DATABASE BDEMPRESA

    ADD FILE(NAME = Emp_dat2,FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\Emp_dat2.ndf',SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB

    )GO

    AADIR UN GRUPO DE ARCHIVOS A LA BASE DEDATOS

    USE masterGO

    ALTER DATABASE VENTASADD FILEGROUP GP_VENTASGO

    ALTER DATABASE VENTASADD FILE( NAME = Ventas_dat3,

    FILENAME = 'c:\Program Files\Microsoft SQLServer\MSSQL\Data\Ventas_dat3.ndf',

    SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB),

    ( NAME =ventas_dat4,FILENAME = 'c:\Program Files\Microsoft SQL

    Server\MSSQL\Data\Ventas_dat4.ndf',SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB)

    TO FILEGROUP GP_VENTAS

    ALTER DATABASE BDEMPRESAMODIFY FILEGROUPGPVENTAS DEFAULT--------------------------------------------------------------------------------------------------------------------

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    22/122

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    23/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.23

    CREACIN DE TABLAS

    Para crear una tabla en su base de datos utilice el comando CREATE TABLE

    COMANDO CREATE TABLE

    CREATE TABLEEmpleados(Nombre VARCHAR (25), Apellidos VARCHAR (50))

    (Crea una nueva tabla llamada Empleados con dos campos, uno llamado Nombre detipo VarChar y longitud 25 y otro llamado apellidos con longitud 50).

    CREATE TABLEEmpleados (Nombre VARCHAR (10),Apellidos VARCHAR,FechaNacimiento DATETIME

    )CONSTRAINTndicegeneralUNIQUE (Nombre, Apellidos, FechaNacimiento)

    Resultado:

    Tabla Empleados

    Nombre Apellidos FechaNacimiento

    (Crea una nueva tabla llamada Empleados con un campo Nombre de tipo texto(Varchar) y longitud 10, otro con llamado Apellidos de tipo texto (Varchar) y longitudpredeterminada (50) y uno ms llamado FechaNacimiento de tipoFecha/Hora.(Datetime) Tambin crea un ndice nico - no permite valores repetidos -formado por los tres campos.)

    GENERAR UNA TABLA CON UN CAMPOAUTONUMERICO

    El valor IDENTITY define que el campo Idalumno es autonumerico y empieza en elvalor 100 y se incrementara de 1 en 1

    PRIMARY KEY que el campo IDALUMNO es Clave Primaria de la tabla NOT NULL El ingreso de este dato es obligatorio

    CREATE TABLE ALUMNOS(IDALUMNO INT NOT NULL IDENTITY(100,1) PRIMARY KEY,NOMBRE VARCHAR(40) NOT NULL,APELLIDOS VARCHAR(40) NOT NULL,SEXO BIT NOT NULL,FECHANACIMIENTO DATETIME NOT NULL)

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    24/122

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    25/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.25

    CREAR GENERAR UNA TABLA CON UN CAMPOAUTONUMERICO

    El valor IDENTITY define que el campo Idalumno es autonumerico y empieza en elvalor 100 y se incrementara de 1 en 1

    PRIMARY KEY que el campo IDALUMNO es Clave Primaria de la tabla NOT NULL El ingreso de este dato es obligatorio

    CREATE TABLE ALUMNOS(IDALUMNO INT NOT NULL IDENTITY(100,1) PRIMARY KEY,NOMBRE VARCHAR(40) NOT NULL,APELLIDOS VARCHAR(40) NOT NULL,SEXO BIT NOT NULL,FECHANACIMIENTO DATETIME NOT NULL)

    GENERAR UN CAMPO AUTOGENERADO

    Se puede generar un campo que sera el producto de una operacin entre otroscampos Por ejemplo PROMEDIO es el producto del calculo de la suma deN1+N2+N3

    CREATE TABLE NOTAS(IDREGISTRO INT NOT NULL IDENTITY(1,1) PRIMARY KEY,IDALUMNO INT NOT NULL,CURSO VARCHAR(40) NOT NULL,N1 DECIMAL NOT NULL,N2 DECIMAL NOT NULL,

    N3 DECIMAL NOT NULL,PROMEDIO AS N1+N2+N3,APROBADO BIT NOT NULL)

    GENERAR UN VALOR PREDETERMINADO PARA UNCAMPO

    CREATE TABLE CURSOS(IDCURSO INT NOT NULL IDENTITY(1,1) PRIMARY KEY,

    NOMBRECURSO VARCHAR(35) NOT NULL,COSTO MONEY DEFAULT(200))

    GENERAR UNA REGLA PARA UN CAMPO DE UNATABLA

    CREATE TABLE MATRICULAS(IDMATRICULA INT NOT NULL PRIMARY KEY ,

    FECHAMATRICULA DATETIME NOT NULL,PAGO MONEY CHECK (PAGO>100))

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    26/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.26

    UTILIZAR EL TIPO DE DATOSUNIQUEIDENTIFIER EN UNA COLUMNA

    Este ejemplo crea una tabla con una columna UNIQUEIDENTIFIER. Utiliza unarestriccin PRIMARY KEY para impedir que los usuarios inserten valores duplicados y

    utiliza la funcin NEWID() de la restriccin DEFAULT para proporcionar valores paralas nuevas filas.

    CREATE TABLE PROFESORES(IDPROFESOR UNIQUEIDENTIFIERCONSTRAINT Guid_DefaultDEFAULT NEWID(),NOMBRES VARCHAR(60),CONSTRAINT Guid_PK PRIMARY KEY (IDPROFESOR)

    CREAR UNA TABLA CON UNA CLAVE PRIMARIA

    COMPUESTA

    CREATE TABLE [DETALLES DE PEDIDOS](IDPEDIDO INT ,IDPRODUCTO INT ,CANTIDAD INT,PRECIOUNIDAD MONEYPRIMARY KEY(IDPEDIDO,IDPRODUCTO))

    CREAR UNA TABLA EN UN GRUPO DE ARCHIVOS

    Este ejemplo crea la tabla NOTAS en un grupo GP_EVALUACIONES de la base dedatos BDCOLEGIO CREADA ANTERIORMENTE

    CREATE TABLE NOTAS(IDREGISTRO INT NOT NULL IDENTITY(1,1) PRIMARY KEY,IDALUMNO INT NOT NULL,CURSO VARCHAR(40) NOT NULL,N1 DECIMAL NOT NULL,N2 DECIMAL NOT NULL,N3 DECIMAL NOT NULL,PROMEDIO AS N1+N2+N3,

    APROBADO BIT NOT NULL) ON GP_EVALUACIONESEste ejemplo crea una tabla MATRICULAS y lo aade al grupo existenteGP_MATRICULAS

    CREATE TABLE MATRICULAS(IDREGISTRO INT NOT NULL IDENTITY(1,1) PRIMARY KEY,IDALUMNO INT NOT NULL,CURSO VARCHAR(40) NOT NULL,FECHAMATRICULA DATETIME NOT NULL,PROMEDIO AS N1+N2+N3) ON GP_MATRICULAS

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    27/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.27

    COMO CREAR TABLAS ESTABLECIENDORELACION1. Vamos a desarrollar el siguiente ejemplo de relacion de tablas para ello usaremos

    el Analizador de Consultas.El objetivo sera relacionar las tablas

    CATEGORIAS,PROVEEDORES Y PRODUCTOS aplicando la ACTUALIZACIONY ELIMINACION en CASCADA.

    Esteejemploasume quelastablas

    CATEGORIAS Y PROVEEDORES ya existen

    ----------------------------------------------------------------------------------------------------------

    CREATE TABLE PRODUCTOS(IDPRODUCTO INT IDENTITY NOT NULL PRIMARYKEY,NOMBREPRODUCTO VARCHAR(50),IDPROVEEDOR INT REFERENCES PROVEEDORES(IDPROVEEDOR)ON UPDATE CASCADEON DELETE CASCADE,IDCATEGORIA INT REFERENCES CATEGORIAS(IDCATEGORA)ON UPDATE CASCADEON DELETE CASCADE,CANTIDADPORUNIDAD INT,PRECIOUNIDADMONEY,UNIDADESENEXISTENCIA INT,UNIDADESENPEDIDO INT,NIVELNUEVOPEDIDO TINYNT,SUSPENDIDO

    BIT)--------------------------------------------------------------------------------------------------------------------

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    28/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.28

    2. En este segundo ejemplo se crea una tabla PEDIDOS la cual se relacionacon las tablas CLIENTES y EMPLEADOS que ya existen

    CREATE TABLE PEDIDOS(IDPEDIDO INT IDENTITY NOT NULL PRIMARY KEY,FECHAPEDIDO,IDCLIENTE INT REFERENCES CLIENTES(IDCLIENTE)ON UPDATE CASCADEON DELETE CASCADE,IDEMPLEADO INT REFERENCES EMPLEADOS(IDEMPLEADO)ON UPDATE CASCADEON DELETE CASCADE,FECHAENVIO DATETIME,CARGO MONEY,UNIDADESENEXISTENCIA INT,UNIDADESENPEDIDO INT,NIVELNUEVOPEDIDO TINYNT,SUSPENDIDOBIT)

    PARA COMPROBAR LA ESTRUCTURA DE LA NUEVA TABLA UTILICE EL

    PROCEDIMIENTO ALMACENADO SP_HELP

    EJEMPLO :

    /*CURSOS es el nombrede la tabla*/

    SP_HELP CURSOS

    El Comando Drop TableElimina una tabla y todos sus datos, ndices, disparadores, restricciones y permisosespecificados para esa tabla. Cualquier vista o procedimiento almacenado quereferencia dicha tabla debe ser explcitamente borrado, la instruccin DROP TABLEno lo hace.

    DROP TABLE MATRICULAS/* Elimina La Tabla Matriculas */

    MODIFICAR TABLAS DE LA BASE DE DATOS

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    29/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.29

    Entendemos por modificar una tabla, cambiar su estructura, es decir, aadiratributos, borrarlos, o cambiar la definicin. La sentencia que permite modificar unatabla es la que muestra

    LA SENTENCIA ALTER TABLESu sintaxis es la descrita en el Cdigo fuente

    ALTER TABLE tabla ADD atrib tipo NULL

    Ejemplos

    Aadir una nueva columna a una tabla

    CREATE TABLE CONTACTOS ( TIPO AS VARCHAR(20),DIRECCIONVARCHAR(50))GOALTER TABLE CONTACTOS ADD NOMBRECONTACTO VARCHAR(20) NOTNULLGO

    Eliminar una columna de una tabla

    ALTER TABLE CONTACTOS DROP COLUMN DIRECCION

    Aadir una nueva columna con una restriccin

    ALTER TABLE CONTACTOS ADD EDAD TINYINT NULLCONSTRAINT ED_unique UNIQUE

    Aadir una restriccin no validada a una tabla

    ALTER TABLE CONTACTOS WITH NOCHECKADD CONSTRAINT Edad_check CHECK (EDAD > 1)GO

    Aadir varias columnas con restricciones

    ALTER TABLE CONTACTOS ADD

    /* Aadir una columna como clave primaria */IDCONTACTO INT IDENTITY CONSTRAINT Idcontacto_pk PRIMARY KEY,

    /* Aadir una columna con una restriccin de comprobacion */CIUDAD VARCHAR(16) NULL CONSTRAINT column_d_chkCHECK (column_d IS NULL OR

    column_d LIKE "[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]" ORcolumn_d LIKE "([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]"),

    /* Aadir una columna con valor por defecto */column_e DECIMAL(3,3) CONSTRAINT column_e_default DEFAULT .081GO

    Aadir una columna con valor por defecto y NULL

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    30/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.30

    ALTER TABLE VIDEOSADD FECHAESTRENO smalldatetime NULLCONSTRAINT FECHA_C1 DEFAULT getdate() WITH VALUES

    Deshabilitar y habilitar una restriccin

    CREATE TABLE empleado(id INT NOT NULL,nombre VARCHAR(10) NOT NULL,salario MONEY NOT NULL

    CONSTRAINT salario CHECK (salario < 100000))

    -- Inserciones validasINSERT INTO empleado VALUES (1,"Joe Brown",65000)INSERT INTO empleado VALUES (2,"Mary Smith",75000)

    -- Insercin que viola la restriccinINSERT INTO empleado VALUES (3,"Pat Jones",105000)

    -- Deshabilitar la restriccinALTER TABLE empleado NOCHECK CONSTRAINT salarioINSERT INTO empleado VALUES (3,"Pat Jones",105000)

    -- Habilitar la restriccinALTER TABLE empleado CHECK CONSTRAINT salarioINSERT INTO empleado VALUES (4,"Eric James",110000)

    CON UNA CLAVE PRIMARIA COMPUESTA

    CREATE TABLE [DETALLES DE PEDIDOS](IDPEDIDO INT ,IDPRODUCTO INT ,CANTIDAD INT,PRECIOUNIDAD MONEYPRIMARY KEY(IDPEDIDO,IDPRODUCTO))

    CREAR UNA TABLA EN UN GRUPO DE ARCHIVOS

    Este ejemplo crea la tabla NOTAS en un grupo GP_EVALUACIONES de la base dedatos BDCOLEGIO CREADA ANTERIORMENTE

    CREATE TABLE NOTAS(IDREGISTRO INT NOT NULL IDENTITY(1,1) PRIMARY KEY,IDALUMNO INT NOT NULL,CURSO VARCHAR(40) NOT NULL,N1 DECIMAL NOT NULL,N2 DECIMAL NOT NULL,N3 DECIMAL NOT NULL,

    PROMEDIO AS N1+N2+N3,APROBADO BIT NOT NULL) ON GP_EVALUACIONES

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    31/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.31

    Este ejemplo crea una tabla MATRICULAS y lo aade al grupo existenteGP_MATRICULAS

    CREATE TABLE MATRICULAS(IDREGISTRO INT NOT NULL IDENTITY(1,1) PRIMARY KEY,IDALUMNO INT NOT NULL,CURSO VARCHAR(40) NOT NULL,FECHAMATRICULA DATETIME NOT NULL,PROMEDIO AS N1+N2+N3) ON GP_MATRICULAS

    COMO CREAR TABLAS ESTABLECIENDO RELACION

    3. Vamos a desarrollar el siguiente ejemplo de relacion de tablas para ello usaremosel Analizador de Consultas.El objetivo sera relacionar las tablasCATEGORIAS,PROVEEDORES Y PRODUCTOS aplicando la ACTUALIZACION YELIMINACION en CASCADA.

    Este ejemplo asume que las tablas CATEGORIAS Y PROVEEDORES ya existen

    CREATE TABLE PRODUCTOS(IDPRODUCTO INT IDENTITY NOT NULL PRIMARYKEY,NOMBREPRODUCTO VARCHAR(50),

    IDPROVEEDOR INT REFERENCES PROVEEDORES(IDPROVEEDOR)ON UPDATE CASCADEON DELETE CASCADE,IDCATEGORIA INT REFERENCES CATEGORIAS(IDCATEGORA)ON UPDATE CASCADEON DELETE CASCADE,CANTIDADPORUNIDAD INT,PRECIOUNIDADMONEY,UNIDADESENEXISTENCIA INT,UNIDADESENPEDIDO INT,NIVELNUEVOPEDIDO TINYNT,SUSPENDIDOBIT)

    --------------------------------------------------------------------------------------------------------------------4. En este segundo ejemplo se crea una tabla PEDIDOS la cual se relaciona con las

    tablas CLIENTES y EMPLEADOS que ya existen

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    32/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.32

    CREATE TABLE PEDIDOS(IDPEDIDO INT IDENTITY NOT NULL PRIMARY KEY,FECHAPEDIDO,IDCLIENTE INT REFERENCES CLIENTES(IDCLIENTE)ON UPDATE CASCADEON DELETE CASCADE,IDEMPLEADO INT REFERENCES EMPLEADOS(IDEMPLEADO)ON UPDATE CASCADEON DELETE CASCADE,FECHAENVIO DATETIME,CARGO MONEY,UNIDADESENEXISTENCIA INT,UNIDADESENPEDIDO INT,NIVELNUEVOPEDIDO TINYNT,SUSPENDIDOBIT)

    PARA COMPROBAR LA ESTRUCTURA DE LA NUEVA TABLA UTILICE ELPROCEDIMIENTO ALMACENADO SP_HELP

    EJEMPLO :

    /*CURSOS es el nombrede la tabla*/

    SP_HELP CURSOS

    EL COMANDO DROP TABLE

    Elimina una tabla y todos sus datos, ndices, disparadores, restricciones y permisosespecificados para esa tabla. Cualquier vista o procedimiento almacenado que

    referencia dicha tabla debe ser explcitamente borrado, la instruccin DROP TABLEno lo hace.

    DROP TABLE MATRICULAS/* Elimina La Tabla Matriculas */

    MODIFICAR TABLAS DE LA BASE DE DATOSEntendemos por modificar una tabla, cambiar su estructura, es decir, aadir atributos,borrarlos, o cambiar la definicin. La sentencia que permite modificar una tabla es laque muestra

    LA SENTENCIA ALTER TABLE

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    33/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.33

    Su sintaxis es la descrita en el Cdigo fuente

    ALTER TABLE tabla ADD atrib tipo NULL

    Ejemplos

    Aadir una nueva columna a una tabla

    CREATE TABLE CONTACTOS ( TIPO AS VARCHAR(20),DIRECCIONVARCHAR(50))GOALTER TABLE CONTACTOS ADD NOMBRECONTACTO VARCHAR(20) NOTNULLGO

    ELIMINAR UNA COLUMNA DE UNA TABLA

    ALTER TABLE CONTACTOS DROP COLUMN DIRECCION

    Aadir una nueva columna con una restriccin

    ALTER TABLE CONTACTOS ADD EDAD TINYINT NULLCONSTRAINT ED_unique UNIQUE

    Aadir una restriccin no validada a una tabla

    ALTER TABLE CONTACTOS WITH NOCHECKADD CONSTRAINT Edad_check CHECK (EDAD > 1)

    GO

    AADIR VARIAS COLUMNAS CON RESTRICCIONES

    ALTER TABLE CONTACTOS ADD/* Aadir una columna como clave primaria */IDCONTACTO INT IDENTITY CONSTRAINT Idcontacto_pk PRIMARY KEY,

    /* Aadir una columna con una restriccin de comprobacion */CIUDAD VARCHAR(16) NULL CONSTRAINT column_d_chkCHECK (column_d IS NULL OR

    column_d LIKE "[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]" ORcolumn_d LIKE "([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]"),

    /* Aadir una columna con valor por defecto */column_e DECIMAL(3,3) CONSTRAINT column_e_default DEFAULT .081GO

    Aadir una columna con valor por defecto y NULL

    ALTER TABLE VIDEOSADD FECHAESTRENO smalldatetime NULLCONSTRAINT FECHA_C1 DEFAULT getdate() WITH VALUES

    Deshabilitar y habilitar una restriccin

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    34/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.34

    CREATE TABLE empleado(id INT NOT NULL,nombre VARCHAR(10) NOT NULL,salario MONEY NOT NULL

    CONSTRAINT salario CHECK (salario < 100000))

    -- Inserciones validasINSERT INTO empleado VALUES (1,"Joe Brown",65000)INSERT INTO empleado VALUES (2,"Mary Smith",75000)

    -- Insercin que viola la restriccinINSERT INTO empleado VALUES (3,"Pat Jones",105000)

    -- Deshabilitar la restriccinALTER TABLE empleado NOCHECK CONSTRAINT salario

    INSERT INTO empleado VALUES (3,"Pat Jones",105000)-- Habilitar la restriccinALTER TABLE empleado CHECK CONSTRAINT salarioINSERT INTO empleado VALUES (4,"Eric James",110000)

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    35/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.35

    CREACIN DE NDICES

    La creacin de ndices en SQL Server, as como en la mayora de los SGBDRexistentes, se debe realizar junto con la creacin de la estructura de las tablas. Deeste modo se evitan posibles colisiones que pueden surgir al crear ndices cuando la

    tabla ya tiene datos. Por ejemplo, si creamos un ndice nico por un campo, esto es nopuede admitir duplicados, y se encuentran valores no nicos, la generacin del ndicedara un error. Sin embargo, SQL Server permite la creacin de ndices, aunque labase de datos est cargada.

    ALTER TABLE TABLA ADD CONSTRAINT K1 PRIMARY KEY (COD1, COD2)

    Esta sentencia permite aadir una clave primaria en tabla, por los campos cod1 ycod2.

    Para crear un ndice en la tabla todos, denominado Cdigo, por el campo cod_cliente,se debe especificar el Cdigo fuente

    CREATE INDEX CODIGO ON TODOS (COD_CLIENTE)

    S adems queremos que el ndice no admita valores nulos, se debe ejecutar elCdigo fuente

    CREATE UNIQUE INDEX codigo ON todos (cod) WITH IGNORE_DUP_KEY

    La sentencia que se encarga de borrar un ndice, se muestra en el Cdigo fuente Estasentencia se encarga de borrar el ndice cdigo creado anteriormente.

    DROP INDEX codigoMas Ejemplos de indices con la siguiente tabla

    La tabla EMPLEADOS ya dispone de un indice que se generaautomaticamente cuando se crea la clave Primaria vamos aaadir dos indices mas.

    1. CREATE INDEX IDX_NOMB ON EMPLEADOS(NOMBRE)2. CREATE INDEX IDX_APE ON EMPLEADOS(APELLIDOS)

    Si desea hacer una seleccin de los registros de la tabla Empleados utilizando uno de

    sus indices creados en el ejemplo anterior haga lo siguiente:SELECT IDEMPLEADO,NOMBRE,APELLIDOS FROM EMPLEADOS(INDEX=2)

    SELECT IDEMPLEADO,NOMBRE,APELLIDOS FROM EMPLEADOS(INDEX=3)

    El numero 2 hace referencia al indice por el campo NOMBRE y el numero 3 por elcampo APELLIDOS .El numero 1 esta reservado para el IDPRODUCTO que es laclave primaria

    Para obtener informacion acerca de los indices que tiene su tabla ejecute elprocedimiento almacenado SP_HELPINDEX Ejemplo:

    SP_HELPINDEX empleados/*empleados es el nombre de la tabla

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    36/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.36

    EL LENGUAJE DE MANIPULACIN DE DATOS (DML)

    Ya se ha visto en un captulo anterior el lenguaje de definicin de datos(DDL), que es

    el que permite definir y modificar la estructura de un esquema. Veremos acontinuacin el otro lenguaje, el de manipulacin de datos, que nos permite, como supropio nombre indica, manejar los datos contenidos en el esquema.

    LA SENTENCIA INSERT

    La otra gran sentencia de manipulacin de datos es INSERT. Si SELECT nos permitarecuperar datos, INSERT nos va a permitir aadirlos al esquema, es decir, con estasentencia podemos aadir informacin a la base de datos. Recordemos que estamosen el modelo relacional, por lo que la informacin se aadir a una tabla en forma defilas. Si slo queremos insertar un valor para un atributo, el resto de los de la tabla

    deber contener el valor nulo (NULL). Sin embargo, habr ciertas ocasiones en queesto no ser posible, cuando el atributo est definido como NO NULO, en cuyo casodeberemos especificar un valor para ste. La sintaxis de esta sentencia es:

    INSERT INTO tabla (atributos)VALUES (valores)

    Donde tablaespecifica la tabla en la cual se aadir la fila, atributoses una lista deatributos separados por comas que determinan los atributos para los cuales se darnvalores, y valores especficos los valores que se darn para estos atributos, separados

    por comas.Por ejemplo, si queremos aadir un nuevo cliente a nuestra base de datos, deberemosejecutar el Cdigo.INSERT INTO clientes (idcliente,nombre,apellidos)VALUES ('409-99-9876', 'Pepe', 'Perez')

    Destacar que si el valor a introducir es alfanumrico, deber ir encerrado entrecomillas, mientras que si es numrico no. Pues bien, si ejecutamos la anteriorsentencia, obtenemos el siguiente error:

    Server: Msg 515, Level 16, State 2, Line 1Cannot insert the value NULL into column 'idcontacto', table'pubs.dbo.authors'; column does not allow nulls. INSERT fails.The statement has been terminated.

    La razn es que no hemos dado valor al atributo idcontacto, que ha sido definido comono nulo. Por lo tanto, rectificamos el Cdigo fuente, para dar un valor al Cdigo fuente56.

    INSERT INTO authors (idcliente,nombre, apellidos,idcontacto)VALUES ('409-99-9876', 'Pepe', 'Perez', 1)

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    37/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.37

    LA SENTENCIA UPDATE

    El objetivo de la sentencia UPDATE es actualizar los valores de una o varias filas de

    una tabla, sin necesidad de borrarla e insertarla de nuevo. La sintaxis es la siguiente:

    UPDATE tablaSET atributo1 = valor1 , atributo2 = valor2, ...

    WHERE condicin donde tabla especifica la tabla donde se encuentran las filas quequeremos actualizar, condicin especifica la condicin que se debe cumplir paraactualizar las filas, y lo que viene a continuacin de

    SET especifica la asignacin de los nuevos valores a los atributos. Por lo tanto seactualizarn todas las filas que cumplan la condicin especificada. Si queremoscambiar el nombre al cliente que hemos insertado en el anterior apartado, deberemos

    escribir el Cdigo fuente :

    Elevar los precios de los productos en 10% pero solo aquellos que pertenezcan a laCategoria 2 (Bebidas)

    UPDATE PRODUCTOSSET PRECIOUNIDAD = PRECIOUNIDAD+(PRECIOUNIDAD*010)WHERE IDCATEGORIA=2

    Lo que hacemos con la anterior sentencia es incrementar en 10% el preciounidad delos productos pero solo aquellos de la idcategoria =2(condicin where) cuyo codigopertenece a la Categoria bebidas, Si ejecutamos la anterior sentencia, obtenemos elresultado:

    (32 row(s) affected)

    Lo que quiere decir que la fila ha sido actualizada con xito. Podemos comprobarloejecutando el Cdigo fuente

    SELECT *FROM ProductosWHERE idcategoria = 2

    LA SENTENCIA DELETE

    El objeto de la sentencia DELETE es el de borrar filas de una tabla. Para poder borrarfilas en una tabla se deben cumplir las condiciones de seguridad determinadas por eladministrador y deben de cumplirse tambin las reglas de integridad referencial. Lasintaxis es la siguiente:

    DELETE FROM tablaWHERE condicin

    Donde tabla especifica la tabla sobre la cual queremos borrar las filas, y condicinespecifica la condicin que se debe cumplir para que se borren las filas. Si omitimos la

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    38/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.38

    condicin, se borrarn todas las filas de la tabla, es decir, la sentencia queaparece en el Cdigo fuente borra todas las filas de la tabla Pedidos

    DELETE FROM PEDIDOS

    Por ejemplo, si queremos borrar una fila que hemos creado en la tabla Pedidos,deberemos ejecutar el Cdigo fuente obteniendo el siguiente resultado:

    (1 row(s) affected)

    DELETE FROM PEDIDOSWHERE IDPEDIDO = 11077

    lo que viene a decir que la fila se ha borrado. Para comprobarlo, ejecutamos lasentencia que muestra el Cdigo fuente. cuyo resultado es: (0 row(s) affected), lo quequiere decir que la fila no se encuentra en la tabla, es decir, ha sido borrada.

    SELECT * FROM PEDIDOS WHERE IDPEDIDO = 11077

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    39/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.39

    S

    SESION 3

    Comprensin de la recuperacin de datos. La sentencia SELECT. Filtro de columnas y filas por medio de la sentencia

    SELECT. Operadores de comparacin (relacionales y LIKE), operador de rango

    (BETWEEN), operador de conjunto (IN). Ordenamiento del conjunto de resultados con ORDER BY. Uso de funciones Transact-SQL: funciones de conversin de tipo

    (CONVERT y CAST), funciones de fecha y hora. Uso de las funciones de agregacin. Agrupacin de datos: GROUP BY y HAVING.

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    40/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.40

    RECUPERACION DE DATOS

    BASE DE DATOS SUPERMERCADOS NEPTUNOPara seguir con los ejemplos del uso del Transact SQL utilizaremos la siguiente basede datos a la cual llamaremos SUPERMERCADOSNEPTUNO una base de datoscreada como ejemplo que es muy similar a la base de datos Northwind que viene conSQL SERVER pero que utiliza los campos en nombre en espaol para hacer que losejemplos que se desarrollen en este manual sean mas ilustrativos y didacticos acontinucion presentamos el diseo en el siguiente diagrama

    A continuacion presentamos los comandos TRANSACT-SQL para poder crearla.

    CREATE TABLE Empleados (IdEmpleado [int] NOT NULL

    IDENTITY PRIMARY KEY,Apellidos varchar(20),Nombre varchar(10)Cargo varchar(30),FechaNacimiento smalldatetime,FechaContratacion smalldatetime ,Direccion varchar(60),Ciudadvarchar(15),Pais varchar(15),Fono varchar(24),Foto image NULL

    CREATE TABLE Clientes(IdCliente varchar(5)INT NOT NULLPRIMARY KEY,

    NombreCompaa varchar(40),NombreContacto varchar(30),CargoContacto varchar(30),Direccin varchar(60),Ciudad varchar(15),Pas varchar(15),Telfono varchar(24),Fax varchar (24))

    CREATE TABLE Categoras (IdCategora int NOT NULLIDENTITY Primary key,NombreCategora varchar(15),Descripcintext)

    CREATE TABLE Proveedores(IdProveedor int NOT NULLIDENTITY PRIMARY KEY,NombreCompaavarchar(40),Direccin varchar(60),Ciudad varchar(15),Telfonovarchar(24)

    CREATE TABLE Productos(IdProducto int not null identity primarykey,NombreProducto varchar(35),idproveedor REFERENCES Proveedores(idProveedor)

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    41/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.41

    ONUPDATE CASCADEONDELETE CASCADE,idCategoria REFERENCES Categorias(idcategoria)ON UPDATE CASCADEON DELETE CASCADE

    CREATE TABLE Pedidos(idpedido int not null identity primarykey,idcliente varchar(6) REFERENCES Clientes(idcliente)ON UPDATE CASCADEON DELETE CASCADE,idempleado int REFERENCES Empleados(idempleado)ON UPDATE CASCADEON DELETE CASCADE,fechaPedido smallDatetime,FechaEnviosmallDatetime,FechaEntrega smallDatetime,cargo asvarchar(25),Destinatario varchar(35),DireccionDestinatario

    varchar(50),PaisDestinatario varchar(35))

    CREATE TABLE [Detalles de pedidos](IDPEDIDO INT NOT NULL REFERENCESPEDIDOS(IDPEDIDO)ON UPDATE CASCADEON DELETE CASCADE,

    IDPRODUCTO INT NOT NULL REFERENCESPRODUCTOS(IDPRODUCTO)ON UPDATE CASCADE

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    42/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.42

    ON DELETE CASCADE,PRECIOUNIDAD MONEY,CANTIDAD INT

    PRIMARY KEY(IDPEDIDO,IDPRODUCTO))

    EL COMADO SELECT

    La sentencia Select es una sentencia SQL, que pertenece al conjunto del Lenguaje deManipulacin de Datos, y que sirve para recuperar registros de una o varias tablas, deuna o varias bases de datos.

    Su sintaxis es la siguiente:

    SELECT FROM [WHERE ][GROUP BY ][HAVING ][ORDER BY ]

    Donde las maysculas representan palabras reservadas, y lo encerrado entrecorchetes es opcional, puede ser omitido. Una vez vista la anterior forma derepresentacin, vamos a detenernos en la sintaxis de la sentencia Select. Secompone de tres partes:

    SELECT : permite hacer una proyeccin de las tablas, es decir,seleccionar los campos que deseamos recuperar de la base de datos,separados por comas. Si se especifica el smbolo *, se obtendrn todos loscampos de la tabla.

    FROM : permite especificar la tabla de la cual se desean obtener losdatos. Si se especifica ms de una tabla, stas irn separadas por comas.

    WHERE : permite establecer una condicin de recuperacin de lasfilas de la/s tabla/s. Slo se obtendrn aquellas Registros que verifiquen dichacondicin, que ser opcional.

    En el caso de que se omita esta parte, se recuperarn todas las filas.

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    43/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.43

    GROUP BY : permite establecer una seleccin de campos cuandose utilizan funciones escalares o de conteo (ya se ver ms adelante lo quesignifica.

    HAVING : establece una condicin para los atributos obtenidoscomo resultado de la aplicacin de funciones escalares.

    ORDER BY : permite obtener el resultado de la consulta ordenadopor los atributos especificados.

    En el caso de que se especifiquen varias tablas, en la clusula FROM, serconveniente denotar los campos de la clusula SELECT precedidos por el nombre dela tabla donde se encuentra y un punto, para que, en el caso de que dicho campoexista en ms de una tabla, se sepa en cada momento a cual de ellos nos estamosrefiriendo, evitando en este caso el problema de ambigedad.

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    44/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.44

    EJEMPLOS DE SENTENCIAS SQL CON SELECT

    1. Mostrar todos los registros de la tabla Productos

    SELECT * FROM PRODUCTOS

    2. Mostrar nombre,apellidos y cargo de todos los empleados

    SELECT NOMBRE,APELLIDOS,CARGO FROM EMPLEADOS

    3. Mostrar los nombreproducto,preciounidad,stock de los productos que tengan

    un precio mayor a 20

    SELECT NOMBREPRODUCTO,PRECIOUNIDAD,STOCK FROMPRODUCTOS WHERE PRECIOUNIDAD>20

    4. Mostrar nombreproducto,preciounidad,idcategoria de los productos que tenganun precio entre 25 y 35 soles

    SELECT NOMBREPRODUCTO,PRECIOUNIDAD,IDCATEGORIA FROMPRODUCTOSWHERE PRECIOUNIDAD BETWEEN 25 AND 35

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    45/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.45

    5. Mostrar los pedidos entregados entre el 18/6/95 y el 25/12/97

    SELECT IDPEDIDO,IDCLIENTE,FECHAPEDIDO,FECHAENTREGA,CARGOFROM PEDIDOS WHERE FECHAPEDIDO BETWEEN 18/06/95 AND25/12/97

    6. Mostrar a los clientes que no tengan numero de fax

    SELECT NOMBRECOMPAA,DIRECCIN,CIUDAD,PAIS,FAX FROMCLIENTES WHERE FAX IS NULL

    7. Mostrar a los clientes que si tengan numero de fax

    SELECT NOMBRECOMPAA,DIRECCIN,CIUDAD,PAIS,FAX FROMCLIENTES WHERE FAX IS NOT NULL

    8. Mostrar los productos cuyo nombre empiezen con las letras Que

    SELECT IDPRODUCTO,NOMBREPRODUCTO,PRECIOUNIDAD FROMPRODUCTOS WHERE NOMBREPRODUCTO LIKE Que%

    9. Mostrar los productos que empiezen con las letras A,B,C,D

    SELECT IDPRODUCTO,NOMBREPRODUCTO,PRECIOUNIDAD FROMPRODUCTOS WHERE NOMBREPRODUCTO LIKE [A-D]%

    10. Mostrar los clientes cuyo nombre termine en en la letra S

    SELECT IDCLIENTE,NOMBRECOMPAIA,DIRECCIN FROM CLIENTES

    WHERE NOMBRECOMPAIA LIKE %S

    11. Mostrar un listado de productos ordenado por precio en forma Ascendente

    SELECT IDPRODUCTO,NOMBREPRODUCTO,PRECIOUNIDAD FROMPRODUCTOS ORDER BY NOMBREPRODUCTO

    12. Mostrar un listado de productos ordenado por precio en forma Descendente

    SELECT IDPRODUCTO,NOMBREPRODUCTO,PRECIOUNIDAD FROMPRODUCTOS ORDER BY NOMBREPRODUCTO DESC

    13. Mostrar los 3 productos mas Caros

    SELECT TOP 3IDPRODUCTO,NOMBREPRODUCTO,PRECIOUNIDAD,STOCK FROMPRODUCTOS ORDER BY PRECIOUNIDAD DESC

    14. Mostrar los 3 productos mas Baratos

    SELECT TOP 3IDPRODUCTO,NOMBREPRODUCTO,PRECIOUNIDAD,STOCK FROMPRODUCTOS ORDER BY PRECIOUNIDAD DESC

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    46/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.46

    15. Mostrar los productos que tengan un precio menor o igual a 50 y sustock se encuentre entre 60 y 80

    SELECT NOMBREPRODUCTO,PRECIOUNIDAD,STOCK FROMPRODUCTOS WHERE (PRECIOUNIDAD =60 ANDSTOCK11/5/95)

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    47/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.47

    S

    SESION 4

    Combinaciones: INNER JOIN, OUTER JOIN, CROSS JOIN, autojoin. Creacin de tablas a partir de consultas. Reunin de consultas con UNION. Uso de EXISTS y NOT EXISTS. Uso de los store procedures para programar procesos en el servidor.

    Manejo de las funciones ms importantes del SQL Transact. Introduccin a los Trigger.

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    48/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.48

    CONSULTAS MULTITABLAEn este tema vamos a estudiar las consultas multitabla llamadas as porque estnbasadas en ms de una tabla.

    El SQL de Microsoft Jet 4.x soporta dos grupos de consultas multitabla:

    la unin de tablas

    la composicin de tablas

    LA UNIN DE TABLASEsta operacin se utiliza cuando tenemos dos tablas con las mismas columnas yqueremos obtener una nueva tabla con las filas de la primera y las filas de lasegunda. En este caso la tabla resultante tiene las mismas columnas que la primeratabla (que son las mismas que las de la segunda tabla).

    Por ejemplo tenemos una tabla de libros nuevos y una tabla de libros antiguos y

    queremos una lista con todos los libros que tenemos. En este caso las dos tablastienen las mismas columnas, lo nico que vara son las filas, adems queremosobtener una lista de libros (las columnas de una de las tablas) con las filas que estntanto en libros nuevos como las que estn en libros antiguos, en este casoutilizaremos este tipo de operacin.

    Cuando hablamos de tablas pueden ser tablas reales almacenadas en la base dedatos o tablas lgicas (resultados de una consulta), esto nos permite utilizar laoperacin con ms frecuencia ya que pocas veces tenemos en una base de datostablas idnticas en cuanto a columnas. El resultado es siempre una tabla lgica.

    Por ejemplo queremos en un slo listado los productos cuyas existencias seaniguales a cero y tambin los productos que aparecen en pedidos del ao 90. En este

    caso tenemos unos productos en la tabla de productos y los otros en la tabla depedidos, las tablas no tienen las mismas columnas no se puede hacer una union deellas pero lo que interesa realmente es el identificador del producto(idfab,idproducto), luego por una parte sacamos los cdigos de los productos conexistencias cero (con una consulta), por otra parte los cdigos de los productos queaparecen en pedidos del ao 90 (con otra consulta), y luego unimos estas dos tablaslgicas.

    El operador que permite realizar esta operacin es el operador UNION.

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    49/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.49

    LA COMPOSICIN DE TABLAS

    La composicin de tablas consiste en concatenar filas de una tabla con filas de otra.En este caso obtenemos una tabla con las columnas de la primera tabla unidas a lascolumnas de la segunda tabla, y las filas de la tabla resultante son concatenaciones

    de filas de la primera tabla con filas de la segunda tablaEl ejemplo anterior quedara de la siguiente forma con la composicin:

    A diferencia de la unin la composicin permite obtener una fila con datos de las dostablas, esto es muy til cuando queremos visualizar filas cuyos datos se encuentranen dos tablas.

    Por ejemplo queremos listar los pedidos con el nombre del representante que hahecho el pedido, pues los datos del pedido los tenemos en la tabla de pedidos peroel nombre del representante est en la tabla de empleados y adems queremos queaparezcan en la misma lnea; en este caso necesitamos componer las dos tablas

    (Nota: en el ejemplo expuesto a continuacin, hemos seleccionado las filas que nosinteresan).

    Existen distintos tipos de composicin, aprenderemos a utilizarlos todos y a elegir eltipo ms apropiado a cada caso.

    Los tipos de composicin de tablas son:

    El INNER JOIN

    El LEFT / RIGHT JOIN

    SELECT *

    FROM PEDIDOS,CLIENTESWHERE PEDIDOS.IDCLIENTE=CLIENTES.IDCLIENTE

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    50/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.50

    Combinamos todos los pedidos con todos los clientes pero luegoseleccionamos los que cumplan que el cdigo de cliente de la tabla de pedidos seaigual al cdigo de cliente de la tabla de clientes, por lo tanto nos quedamos con lospedidos combinados con los datos del cliente correspondiente.

    Las columnas que aparecen en la clusula WHERE de nuestra consulta anterior se

    denominan columnas de emparejamiento ya que permiten emparejar las filas de lasdos tablas. Las columnas de emparejamiento no tienen por qu estar incluidas en lalista de seleccin.

    Normalmente emparejamos tablas que estn relacionadas entre s y una de lascolumnas de emparejamiento es clave principal, pues en este caso, cuando una delas columnas de emparejamiento tienen un ndice definido es ms eficiente utilizarotro tipo de composicin, el INNER JOIN.

    EL INNER JOIN

    El INNER JOIN es otro tipo de composicin de tablas, permite emparejar filas de

    distintas tablas de forma ms eficiente que con el producto cartesiano cuando una delas columnas de emparejamiento est indexada. Ya que en vez de hacer el productocartesiano completo y luego seleccionar la filas que cumplen la condicin deemparejamiento, para cada fila de una de las tablas busca directamente en la otratabla las filas que cumplen la condicin, con lo cual se emparejan slo las filas queluego aparecen en el resultado.

    La sintaxis es la siguiente:

    Ejem:

    SELECT *

    FROM PEDIDOS

    INNER JOIN CLIENTES ON PEDIDOS.IDCLIENTE = CLIENTES.IDCLIENTE

    tabla1 y tabla2son especificaciones de tabla (nombre de tabla con alias o no,nombre de consulta guardada), de las tablas cuyos registros se van a combinar.

    Pueden ser las dos la misma tabla, en este caso es obligatorio definir al menos unalias de tabla.

    col1, col2son las columnas de emparejamiento.

    Observar que dentro de la clusula ON los nombres de columna deben ser nombres

    cualificados (llevan delante el nombre de la tabla y un punto).Las columnas de emparejamiento deben contener la misma clase de datos, las dosde tipo texto, de tipo fecha etc... los campos numricos deben ser de tipos similares.Por ejemplo, se puede combinar campos AutoNumrico(IDENTIDAD) y INT puestoque son tipos similares, sin embargo, no se puede combinar campos de tipo INT yFLOAT. Adems las columnas no pueden ser de tipo TEXT ni IMAGE

    COMP representa cualquier operador de comparacin ( =, , =, o ) y seutiliza para establecer la condicin de emparejamiento.

    Se pueden definir varias condiciones de emparejamiento unidas por los operadoresAND y OR poniendo cada condicin entre parntesis. Ejemplo:

    SELECT *FROM PROVEEDORES INNER JOIN PRODUCTOS ON PRODUCTOS

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    51/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.51

    PROVEEDORES.IDPROVEEDOR AND PROVEEDORES.IDPROVEEDOR =PRODUCTOS.IDPROVEEDOR

    Se pueden combinar ms de dos tablas En este caso hay que sustituir en la sintaxisuna tabla por un INNER JOIN completo.

    Por ejemplo:SELECT *FROM (PEDIDOS INNER JOIN CLIENTES ON PEDIDOS.IDCLIENTE =CLIENTES.IDCLIENTE) INNER JOIN EMPLEADOS ON PEDIDOS.IDEMPLEADO =EMPLEADOS.IDEMPLEADO

    En vez de tabla1 hemos escrito un INNER JOIN completo, tambin podemos escribir:

    SELECT *FROM CLIENTES INNER JOIN (PEDIDOS INNER JOIN EMPLEADOS ONPEDIDOS.IDEMPLEADO = EMPLEADOS.IDEMPLEADO) ONPEDIDOS.IDCLIENTE = CLIENTES.IDCLIENTE

    En este caso hemos sustituido tabla2por un INNER JOIN completo.

    EL LEFT JOIN Y RIGHT JOINCrearemos otra base de datos llamada DBVENTAS la cual se utiiizara tambien conla base de datos SUPERMERCADOSNEPTUNO.las tablas de DBVENTAS seran lassiguientesPara los siguientes ejemplos usaremos las siguientes tablas de ejemplo

    OficinasEmpleados

    Clientes Productos

    Clientes

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    52/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.52

    El LEFT JOIN y RIGHTJOIN son otro tipo de composicin de tablas, tambindenominada composicin externa. Son una extensin del INNER JOIN.

    INNER JOIN) es una composicion interna ya que todos los valores de las filas delresultado son valores que estn en las tablas que se combinan.

    Con una composicin interna slo se obtienen las filas que tienen al menos una filade la otra tabla que cumpla la condicin, veamos un ejemplo:

    Queremos combinar los empleados con las oficinas para saber la ciudad de la oficinadonde trabaja cada empleado, si utilizamos un producto cartesiano tenemos:

    SELECT EMPLEADOS.*,CIUDADFROM EMPLEADOS, OFICINASWHERE EMPLEADOS.OFICINA = OFICINAS.OFICINA

    Observar que hemos cualificado el nombre de columna oficina ya que ese nombreaparece en las dos tablas de la FROM.

    Con esta sentencia los empleados que no tienen una oficina asignada (un valor nuloen el campo oficina de la tabla empleados) no aparecen en el resultado ya que lacondicin empleados.oficina = oficinas.oficina ser siempre nula para esosempleados.

    SI UTILIZAMOS EL INNER JOIN

    SELECT EMPLEADOS.*, CIUDADFROM EMPLEADOS INNER JOIN OFICINAS ON EMPLEADOS.OFICINA =OFICINAS.OFICINA

    Nos pasa lo mismo, el empleado 110 tiene un valor nulo en el campo oficina y noaparecer en el resultado.

    Pues en los casos en que queremos que tambin aparezcan las filas que no tienenuna fila coincidente en la otra tabla, utilizaremos el LEFT o RIGHT JOIN.

    La sintaxis del LEFT JOIN es la siguiente:

    La descripcin de la sintaxis es la misma que la del INNER JOIN (ver pginaanterior), lo nico que cambia es la palabra INNER por LEFT (izquierda en ingls).

    Esta operacin consiste en aadir al resultado del INNER JOIN las filas de la tablade la izquierda que no tienen correspondencia en la otra tabla, y rellenar en esas filaslos campos de la tabla de la derecha con valores nulos.

    Ejemplo:

    SELECT *FROM EMPLEADOS LEFT JOIN OFICINAS ON EMPLEADOS.OFICINA =OFICINAS.OFICINA

    Con el ejemplo anterior obtenemos una lista de los empleados con los datos de suoficina, y el empleado 110 que no tiene oficina aparece con sus datos normales y losdatos de su oficina a nulos.

    La sintaxis del RIGHT JOIN es la siguiente:

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    53/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.53

    La sintaxis es la misma que la del INNER JOIN (ver pgina anterior), lo nico quecambia es la palabra INNER por RIGHT (derecha en ingls).

    Esta operacin consiste en aadir al resultado del INNER JOIN las filas de la tablade la derecha que no tienen correspondencia en la otra tabla, y rellenar en esas filaslos campos de la tabla de la izquierda con valores nulos.

    Ejemplo:

    SELECT *FROM empleados RIGHT JOIN oficinas ON empleados.oficina = oficinas.oficina

    Con el ejemplo anterior obtenemos una lista de los empleados con los datos de suoficina, y adems aparece una fila por cada oficina que no est asignada a ningnempleado con los datos del empleado a nulos.

    Una operacin LEFT JOIN o RIGHT JOIN se puede anidar dentro de una operacinINNER JOIN, pero una operacin INNER JOIN no se puede anidar dentro de LEFTJOIN o RIGHT JOIN. Los anidamientos de JOIN de distinta naturaleza no funcionansiempre, a veces depende del orden en que colocamos las tablas, en estos casos lomejor es probar y si no permite el anudamiento, cambiar el orden de las tablas ( y portanto de los JOINs) dentro de la clusula FROM.

    Por ejemplo podemos tener:

    SELECT *FROM CLIENTES INNER JOIN (EMPLEADOS LEFT JOIN OFICINAS ONEMPLEADOS.OFICINA = OFICINAS.OFICINA) ON CLIENTES.REPCLIE =EMPLEADOS.NUMCLIE

    Combinamos empleados con oficinas para obtener los datos de la oficina de cadaempleado, y luego aadimos los clientes de cada representante, as obtenemos losclientes que tienen un representante asignado y los datos de la oficina delrepresentante asignado.

    Si hubiramos puesto INNER en vez de LEFT no saldran los clientes que tienen elempleado 110 (porque no tiene oficina y por tanto no aparece en el resultado delLEFT JOIN y por tanto no entrar en el clculo del INNER JOIN con clientes).

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    54/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.54

    EJEMPLOS DE CONSULTAS MULTITABLA

    CON SUPERMERCADOSNEPTUNO

    1. Mostrar Nombre del Producto,Precio Unidad del producto,Nombre de la

    Categoria,Nombre del Proveedor y stock de los productos

    CON WHERESELECTPRODUCTOS.NOMBREPRODUCTO,PRODUCTOS.PRECIOUNIDAD,CATEGORIAS.NOMBRECATEGORIA,PROVEEDORES.NOMBRECOMPAIA,STOCK FROM PRODUCTOS,CATEGORAS,PROVEEDORESWHERE PRODUCTOS.IDCATEGORIA=CATEGORIAS.IDCATEGORIA ANDPRODUCTOS.IDPROVEEDOR=PROVEEDORES.IDPROVEEDOR

    CON INNER JOIN

    SELECTPRODUCTOS.NOMBREPRODUCTO,PRODUCTOS.PRECIOUNIDAD,CATEGORIAS.NOMBRECATEGORIA,PROVEEDORES.NOMBRECOMPAIA,STOCK FROM PRODUCTOSINNER JOIN CATEGORIAS ONPRODUCTOS.IDCATEGORIA=CATEGORIAS.IDCATEGORIAINNER JOIN PROVEEDORES ONPRODUCTOS.IDPROVEEDOR=PROVEEDORES.IDPROVEEDOR

    2. Mostrar los pedidos con los siguientes datos idpedido,fechapedido,nombre delcliente,el nombre del empleado y el cargo de pedido

    SELECTPEDIDOS.IDPEDIDO,PEDIDOS.FECHAPEDIDO,CLIENTES.NOMBRECOMPAIA,EMPLEADOS.APELLIDOS+ +EMPLEADOS.NOMBRE,PEDIDOS.CARGO

    FROM PEDIDOSINNER JOIN CLIENTES ON PEDIDOS.IDCLIENTE=CLIENTES.IDCLIENTEINNER JOIN EMPLEADOS ONPEDIDOS.IDEMPLEADO=EMPLEADOS.IDEMPLEADO

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    55/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.55

    USO DE SELECT CON CAMPOS CALCULADOS

    En los capitulos anteriores aprendimos a usar FUNCIONES y utilizar comandos SETahora vamos a desarrollar ejemplos de consultas SELECT para obtener camposcalculados

    Ejemplo :En la tabla Empleados tenemos la fecha de nacimiento de los empleados yla Fecha de contratacion pero no tenemos un campo que nos muestre explicitamentela Edad ni el Tiempo de Servicio para ello desarrollaremos los siguiente

    SELECT NOMBRE,APELLIDOS,FECHANACIMIENTO,DATEDIFF(YEAR,FECHANACIMIENTO,GETDATE()) AS EDAD,FECHACONTRATACION,DATEDIFF(YEAR,FECHACONTRATACION,GETDATE()) AS [TIEMPO SERVICIO]FROM EMPLEADOS

    1. Mostrar los dias Transcurridos entre la fecha de Pedido y la Fecha de entrega detodos los Pedidos entregados al pais de Alemania

    SELECT IDPEDIDO,FECHAPEDIDO,FECHAENTREGA,DATEDIFF(DAY,FECHAPEDIDO,FECHAENTREGA) AS [DIASTRANSCURRIDOS],FROM PEDIDOSWHERE PAS=ALEMANIA

    2. Mostrar el incremento de los precios de los productos en un 10%

    SELECT IDPRODUCTO,NOMBREPRODUCTO,PRECIOUNIDAD,PRECIOUNIDAD*.010 AS INCREMENTO,PRECIOUNIDAD+(PRECIOUNIDAD)*.010 AS [PRECIO INCREMENTADO]FROM PRODUCTOS

    3. Mostrar el total de cada detalle de pedido

    SELECT[DETALLES DE PEDIDOS].CANTIDAD,PRODUCTOS.NOMBREPRODUCTO,[DETALLES DE PEDIDOS].PRECIOUNIDAD,[DETALLES DE PEDIDOS].CANTIDAD*[DETALLES DEPEDIDOS].PRECIOUNIDAD AS TOTALFROM [DETALLES DE PEDIDOS]INNER JOIN PRODUCTOSON [DETALLES DE PEDIDOS].IDPRODUCTO=PRODUCTOS.IDPRODUCTO

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    56/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.56

    FUNCIONES ESCALARES PARA SELECT

    Entendemos por funciones escalares, todas aquellas que permiten realizaroperaciones de conteo de filas, suma de atributos, obtencin de medias, etc. Dichasfunciones se especifican a continuacin de la palabra reservada SELECT. Lasfunciones que soporta la sentencia SELECT en el Transact SQL son las siguientes:

    FUNCION SUM

    Realiza una suma de toda una columna para todas las filas accedidas mediante unaconsulta SQL.

    SELECT SUM (CARGO) FROM PEDIDOS

    La anterior consulta obtiene la suma del precio para todas las filas de la tabla pedido,

    ya queno hemos especificado ninguna condicin en la clusula WHERE.

    Si ahora queremos obtener la suma total de todos los pedidos realizados por el clientecuyo cdigo es "ANTON", debemos realizar la misma consulta, pero especificando unacondicin para obtener nicamente las filas cuyo cod_cliente es "ANTON":

    SELECT SUM(CARGO) FROM PEDIDOS WHERE IDCLIENTE = "ANTON"

    FUNCION COUNT

    Cuenta todas las filas de las tablas accedidas mediante una consulta SQL.

    Por ejemplo, si tenemos una tabla cliente, con todos los clientes de una empresa deservicios, con los atributos idCliente, nombre, apellidos, direccin, y queremos sabertodos los clientes que tenemos, deberemos realizar un count, para obtener todas elnmero de filas de la tabla ejecutamos el Cdigo fuente

    SELECT COUNT(IDCLIENTE) FROM CLIENTES

    En el anterior ejemplo, al existir el mismo nmero de filas, sea cual sea el atributo queseleccionemos, podramos haber escogido cualquier otro. En general, se suele escribirel

    Cdigo fuente

    SELECT COUNT(*) FROM CLIENTES

    Si ahora queremos saber el nmero de clientes que viven en Madrid, deberemosrealizar un conteo de todas las filas con la condicin de que el atributo ciudad seaMadrid.

    SELECT COUNT(*) FROM CLIENTES WHERE CIUDAD = "MADRID"

    Y si queremos saber cuantos Productos tenemos, cuyo precio es mayor de 20,

    deberemos realizar lo mismo, pero especificando esta condicin en la clusulaWHERE. Al resultado de la bsqueda le llamaremos Caros.

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    57/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.57

    SELECT COUNT(*) AS CAROS FROM PRODUCTOS WHEREPRECIOUNIDAD > 20

    FUNCION AVG

    Realiza una media aritmtica de los atributos para todas las filas accedidas mediantela consulta SQL.

    Si por ejemplo tenemos una tabla de materiales, con los atributos cod_material,descripcin, precio y cantidad _ pedida, y queremos saber la cantidad media pedida detodos los materiales, deberemos realizar una media aritmtica, teniendo en cuentatodas las filas de la tabla:

    SELECT AVG(CANTIDAD _ PEDIDA) FROM MATERIAL

    La anterior sentencia, internamente, realiza primero una suma de todos los valores, y a

    continuacin la divide por el nmero total de filas accedidas, es decir, realiza la mediaaritmtica.Volviendo a nuestra cultural base de datos SUPERMERCADOSNEPTUNO, siqueremos saber la media del precio de los ttulos que tenemos disponibles,deberemos ejecutar el Cdigo fuente

    SELECT AVG(PRECIOUNIDAD) AS PROMEDIO FROM PRODUCTOS

    FUNCION MAX

    Obtiene el mximo valor del atributo especificado, de entre todas las filas

    seleccionadas mediante la sentencia SQL.

    Supngase, por ejemplo, que tenemos la tabla de materiales descrita anteriormente. Siqueremos saber el material mas caro, deberemos realizar un SELECT con la clusulaMax, que obtenga el mayor valor para el atributo precio de todas las filas.

    Para nuestro ejemplo, si queremos saber cual es el libro ms caro, ejecutaremos elCdigofuente

    SELECT MAX(PRECIOUNIDAD) AS CARO FROM PRODUCTOS

    FUNCION MIN

    Obtiene el mnimo valor del atributo especificado, de entre todas las filasseleccionadas mediante la sentencia SQL. Si queremos saber cual es elPRODUCTOS ms barato de nuestra base de datos, deberemos ejecutar el Cdigofuente

    SELECT MIN(PRECIOUNIDAD) AS BARATO FROM PRODUCTOS

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    58/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.58

    LA CLAUSULA COMPUTEEsta clausula aade una fila en el conjunto de datos que se esta recuperando,se utilizapara realizar calculos en campos numericos.COMPUTE actua siempre sobre uncampo o expresion del conjunto de resultados y esta expresion debe figurarexactamente igual en la clausula SELECT y siempre se debe ordenar el resultado por

    la misma o al menos agrupar el resultado.Esta expresion no puede utilizar ningunALIAS

    SELECT IDPEDIDO,CANTIDAD,NOMBREPRODUCTO,[DETALLES DEPEDIDOS].PRECIOUNIDAD,CANTIDAD*[DETALLES DEPEDIDOS].PRECIOUNIDAD AS TOTALFROM [DETALLES DE PEDIDOS]INNER JOIN PRODUCTOS ON [DETALLES DEPEDIDOS].IDPRODUCTO=PRODUCTOS.IDPRODUCTOORDER BY IDPEDIDOCOMPUTE SUM(CANTIDAD*[DETALLES DE PEDIDOS].PRECIOUNIDAD)BY IDPEDIDO

    SELECT IDPEDIDO,CANTIDAD,NOMBREPRODUCTO,[DETALLES DEPEDIDOS].PRECIOUNIDAD,CANTIDAD*[DETALLES DEPEDIDOS].PRECIOUNIDAD AS TOTAL FROM [DETALLES DE PEDIDOS]INNER JOIN PRODUCTOS ON [DETALLES DEPEDIDOS].IDPRODUCTO=PRODUCTOS.IDPRODUCTO

    WHERE IDPEDIDO=10250COMPUTE SUM(CANTIDAD*[DETALLES DE PEDIDOS].PRECIOUNIDAD)

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    59/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.59

    LA CLAUSULA GROUP BY

    Se pueden obtener subtotales con la clusula GROUP BY. Una consulta con unaclusula GROUP BY se denomina consulta agrupada ya que agrupa los datos de latabla origen y produce una nica fila resumen por cada grupo formado. Las columnas

    indicadas en el GROUP BY se llaman columnas de agrupacin.

    Ejemplos

    1. Mostrar el total de clientes que tiene la empresa en cada pais

    SELECT PAS,COUNT(IDCLIENTE) AS [TOTAL CLIENTES]FROM CLIENTESGROUP BY PASORDER BY COUNT(IDCLIENTE) DESC

    2. Mostrar el precio del producto mas caro de cada categoria

    SELECT NOMBRECATEGORA,MAX(PRECIOUNIDAD) AS [Mas Caros]

    FROM CATEGORASINNER JOIN PRODUCTOS ONCATEGORAS.IDCATEGORA=PRODUCTOS.IDCATEGORAGROUP BY NOMBRECATEGORA

    3. Mostrar el Monto total de cada Pedido

    SELECT IDPEDIDO,SUM(CANTIDAD*PRECIOUNIDAD) AS [TOTALPEDIDO]FROM [DETALLES DE PEDIDOS]GROUP BY IDPEDIDO

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    60/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.60

    4. Mostrar el total de compras por cliente en el ao 1995

    SELECT NOMBRECOMPAA,YEAR(FECHAPEDIDO) AS AO,SUM(CANTIDAD*PRECIOUNIDAD) AS [TOTAL COMPRAS]FROM CLIENTESINNER JOIN PEDIDOS ON CLIENTES.IDCLIENTE=PEDIDOS.IDCLIENTEINNER JOIN [DETALLES DE PEDIDOS] ONPEDIDOS.IDPEDIDO=[DETALLES DE PEDIDOS].IDPEDIDOWHERE YEAR(FECHAPEDIDO)=1995GROUP BY NOMBRECOMPAA,YEAR(FECHAPEDIDO)

    5. Mostrar los tres mejores empleados tomando en cuenta la cantidad de pedidosdespachados

    SELECT TOP 3 NOMBRE+' '+APELLIDOS AS EMPLEADO,COUNT(IDPEDIDO) AS [TOTAL DESPACHADOS]FROM EMPLEADOSINNER JOIN PEDIDOS ONEMPLEADOS.IDEMPLEADO=PEDIDOS.IDEMPLEADO

    GROUP BY NOMBRE+' '+APELLIDOSORDER BY COUNT(IDPEDIDO) DESC

    6. Mostrar el total de ventas del dia actual

    SELECT FECHAPEDIDO,SUM(CANTIDAD*CANTIDAD) AS TOTAL FROMPEDIDOSINNER JOIN [DETALLES DE PEDIDOS]ON PEDIDOS.IDPEDIDO=[DETALLES DE PEDIDOS].IDPEDIDOWHERE FECHAPEDIDO=CONVERT(CHAR(10),GETDATE(),103)GROUP BY FECHAPEDIDO

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    61/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.61

    7. Mostrar el total de ventas del MES actual del AO Actual

    SELECT MONTH(FECHAPEDIDO)AS MES,SUM(CANTIDAD*CANTIDAD) ASTOTAL FROM PEDIDOSINNER JOIN [DETALLES DE PEDIDOS]ON PEDIDOS.IDPEDIDO=[DETALLES DE PEDIDOS].IDPEDIDOWHERE MONTH(FECHAPEDIDO)=MONTH(GETDATE()) ANDYEAR(FECHAPEDIDO)=YEAR(GETDATE())GROUP BY MONTH(FECHAPEDIDO)

    8. Mostrar el total de ventas del AO Actual

    SELECT YEAR(FECHAPEDIDO) AS AO,SUM(CANTIDAD*CANTIDAD) ASTOTAL FROM PEDIDOSINNER JOIN [DETALLES DE PEDIDOS]ON PEDIDOS.IDPEDIDO=[DETALLES DE PEDIDOS].IDPEDIDO

    WHERE YEAR(FECHAPEDIDO)=YEAR(GETDATE())GROUP BY YEAR(FECHAPEDIDO)

    8. Mostrar los tres productos menos vendidos

    SELECT TOP 3 NOMBREPRODUCTO,SUM(CANTIDAD) AS [TOTALVENDIDOS]FROM [DETALLES DE PEDIDOS]INNER JOIN PRODUCTOS ON [DETALLES DEPEDIDOS].IDPRODUCTO=PRODUCTOS.IDPRODUCTOGROUP BY NOMBREPRODUCTOORDER BY SUM(CANTIDAD)

    9. Mostrar el total de ventas en cada pais

    SELECT PASDESTINATARIO,SUM(CANTIDAD*CANTIDAD) AS TOTALFROM PEDIDOSINNER JOIN [DETALLES DE PEDIDOS]

    ON PEDIDOS.IDPEDIDO=[DETALLES DE PEDIDOS].IDPEDIDOGROUP BY PASDESTINATARIOORDER BY SUM(CANTIDAD*CANTIDAD)DESC

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    62/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.62

    USO DE SUBCONSULTAS

    Una subconsulta es una sentencia SELECT que aparece dentro de otra sentenciaSELECT que llamaremos consulta principal.

    Se puede encontrar en la lista de seleccin, en la clusula WHERE o en la clusulaHAVING de la consulta principal.

    Una subconsulta tiene la misma sintaxis que una sentencia SELECT normalexceptuando que aparece encerrada entre parntesis, no puede contener la clusulaORDER BY, ni puede ser la UNION de varias sentencias SELECT, adems tienealgunas restricciones en cuanto a nmero de columnas segn el lugar dondeaparece en la consulta principal. Estas restricciones las iremos describiendo en cadacaso.

    Cuando se ejecuta una consulta que contiene una subconsulta, la subconsulta seejecuta por cada fila de la consulta principal. Se aconseja no utilizar camposcalculados en las subconsultas, ralentizan la consulta.

    Las consultas que utilizan subconsultas suelen ser ms fciles de interpretar por elusuario

    Ejemplo:usando SUPERMERCADOSNEPTUNO

    Mostrar los productos que tengan un precio mayor al precio promedio de todos losproductos

    SELECT IDPRODUCTO,NOMBREPRODUCTO,PRECIOUNIDADFROM PRODUCTOSWHERE PRECIOUNIDAD>(SELECT AVG(PRECIOUNIDAD) FROM PRODUCTOS)

    TEST DE COMPARACION ANYTenemos el test ANY (algn, algunoen ingls) y el test ALL (todosen ingls).

    La subconsulta debe devolver una nica columna sino se produce un error. Se evala la comparacin con cada valor devuelto por la subconsulta. Si alguna de las comparaciones individuales produce el resultado verdadero, el

    test ANY devuelve el resultado verdadero. Si la subconsulta no devuelve ningn valor, el test any devuelve falso.

    si el test de comparacin es falso para todos los valores de la columna, ANYdevuelve falso.

    Si el test de comparacin no es verdadero para ningn valor de la columna, yes nulo para al menos alguno de los valores, ANY devuelve Nulo.

  • 7/21/2019 Microsoft SQL Server 2005 Express Edicin

    63/122

    UNIVERSIDAD NACIONAL DE INGENIERIA

    Profesor Henry Chavez Viera SQL Server 2005 Express Pag.63

    Ejemplo:usando BDVENTAS

    SELECT OFICINA, CIUDADFROM OFICINASWHERE OBJETIVO > ANY (SELECT SUM(CUOTA) FROM EMPLEADOSGROUP BY OFICINA)En este caso la subconsulta devuelve una nica columna con las sumas delas cuotas de los empleados de cada oficina. Y luego se Lista las oficinascuyo objetivo sea superior a alguna de las sumas obtenidas.

    EL TEST DE COMPARACION ALL.

    La subconsulta debe devolver una nica columna sino se produce un error. Se evala la comparacin con cada valor devuelto por la subconsulta. Si todas las comparaciones individuales, producen un resultado verdadero, el

    test devuelve el valor verdadero. Si la subconsulta no devuelve ningn valor el test ALL devuelve el valor

    verdadero. (Ojo con esto!) Si el test de comparacin es falso para algn valor de la columna, el resultado

    es falso. Si el test de comparacin no es falso para ningn valor de la columna, pero es

    nulo para alguno de esos valores, el test ALL devuelve valor nulo.

    Ejemplo con BDVENTAS:

    SELECT OFICINA, CIUDADFROM OFICINAS