Manual de SQL Server 2008 Reporting Service

  • Upload
    thepoet

  • View
    89

  • Download
    5

Embed Size (px)

Citation preview

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    1/182

    UNIVERSID D N CION L DE C J M RCF CULT D DE INGENIER

    ESCUELA ACADMICO PROFESIONAL DEINGENIERA DE SISTEMAS

    Cajamarca, 2012

    Manual de SQL Server 2008CONCEPTOS Y EJERCICIOS EN SQL

    Estrada Aguilar, Karen Johana

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    2/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-3 -

    INTRODUCCIN............................................................................................................................. - 5 -

    CAPTULO I .................................................................................................................................... - 6 -

    CONCEPTOSBSICOSDESQL ......................................................................................................... -6-

    1.1. LENGUAJE ESTRUCTURADO DE CONSULTAS........................................................... - 6 -1.1.1. REQUERIMIENTOS Y CARACTERSTICAS........................................................................... - 6 -

    1.2. INICIANDO SQL SERVER 2008......................................................................................... - 7 -

    1.3. CREAR UNA NUEVA TABLA:........................................................................................... - 12 -

    1.4. HACER CONSULTAS......................................................................................................... - 16 -

    CAPITULO II ........................................................................................................................................ - 18 -

    COMANDOSBSICOSDESQL .........................................................................................................-18-

    2.1. INSTRUCCIONES DE SQL SERVER 2008.................................................................... - 18 -2.1.1. SELECT....................................................................................................................................... - 18 -2.1.2. FROM........................................................................................................................................... - 19 -

    A. MODIFICADORES.......................................................................................................................... - 20 - Distinct y All:............................................................................................................................. - 20 - TOP n:......................................................................................................................................... - 21 -

    B. FUNCIONES DE AGREGACIN................................................................................................. - 21 -C. USO DE ALIAS:.............................................................................................................................. - 23 -

    2.1.3. WHERE........................................................................................................................................ - 24 - OPERADORES LGICOS............................................................................................................ - 24 -

    OPERADORES DE COMPARACIN.......................................................................................... - 24 - CONCATENACIN DE CADENAS............................................................................................. - 26 - IN....................................................................................................................................................... - 27 - BETWEEN........................................................................................................................................ - 29 - NULL................................................................................................................................................. - 31 - LIKE.................................................................................................................................................. - 32 - YEAR MONTH DAY....................................................................................................................... - 33 -

    2.1.4. ORDER BY.................................................................................................................................. - 34 - TOP................................................................................................................................................... - 35 - WITH TIES....................................................................................................................................... - 36 -

    EJERCICIOS ....................................................................................................................................... - 37 -

    CAPTULO III ....................................................................................................................................... - 48 -COMBINACINDETABLASY AGRUPACINDEDATOS..............-48-

    3.1. JOIN....................................................................................................................................... - 48 -INNER JOIN:.................................................................................................................................................. - 48 -LEFT JOIN:..................................................................................................................................................... - 48 -RIGTH JOIN:.................................................................................................................................................. - 48 -UNION:............................................................................................................................................................ - 48 -

    3.2. GROUP BY........................................................................................................................... - 49 -

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    3/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-4 -

    3.3. HAVING................................................................................................................................. - 50 -

    EJERCICIOS ....................................................................................................................................... - 54 -

    CAPTULO IV ...................................................................................................................................... - 73 -

    MANIPULACINDETABLAS ..............................................................................................................-73-

    4.1. INSERT INTO....................................................................................................................... - 73 -

    4.2. UPDATE................................................................................................................................ - 75 -

    4.3. DELETE FROM.................................................................................................................... - 78 -

    4.4. SUBCONSULTAS................................................................................................................ - 79 -

    4.5. PROCEDIMIENTOS ALMACENADOS (STORE PROCEDURE)................................ - 80 -

    EJERCICIOS ....................................................................................................................................... - 85 -

    CAPTULO V ....................................................................................................................................... - 96 -

    OTRASSENTENCIAS ..........................................................................................................................-96-

    5.1. SUBSTRING FUNCION...................................................................................................... - 96 -

    5.2. TRIM FUNCION................................................................................................................... - 96 -5.3. SENTENCIA CAST.............................................................................................................. - 97 -

    EJEMPLOS .......................................................................................................................................... - 98 -

    CAPTULO VI .................................................................................................................................... - 100 -

    REPORTINGSERVICE ......................................................................................................................-100-6.1. INGRESANDO A SQL SERVER BUSINESS INTELLIGENCE DEVELOPMENTSTUDIO............................................................................................................................................ - 100 -

    6.2. CREAR UN NUEVO PROYECTO DE REPORTES..................................................... - 102 -

    6.3. DATA SOURCE (ORIGEN DE DATOS COMPARTIDO)............................................ - 104 -

    6.4. CREAR UN INFORME PARA HACER REPORTES.................................................... - 106 -

    6.5. DATA SET........................................................................................................................... - 107 -EJERCICIOS................................................................................................................................... - 114 -

    PRCTICA....................................................................................................................................... - 123 -

    AGRUPAR EN REPORTING SERVICE...................................................................................... - 138 -

    ENLACES DE INFORMES............................................................................................................ - 141 -

    IMPLEMENTACIN DE REPORTING SERVICE EN IIS......................................................... - 144 -

    INFORMES INTEGRADOS........................................................................................................... - 146 -

    EJERCICIOS:.................................................................................................................................. - 148 -

    PRACTICA CALIFICADA DE REPORTING SERVICES SQL SERVER 2008...................... - 154 -

    ADMINISTRACIN DE USUARIOS............................................................................................ - 163 -

    CREACIN DE VISTAS................................................................................................................ - 165 -

    CREACIN DE UN GRUPO DE INICIOS DE SESIN EN UN STORE PROCEDURE..... - 168 -

    CREACIN DE UN GRUPO DE USUARIOS EN UN STORE PROCEDURE...................... - 170 -

    FUNCIONES.................................................................................................................................... - 172 -

    RESTRICCIONES.......................................................................................................................... - 176 -

    PROPUESTOS:.............................................................................................................................. - 178 -

    TRIGRESS....................................................................................................................................... - 182 -

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    4/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-5 -

    El presente manual de SQL Server 2008 trata principalmente del manejo de datos atravs de las diferentes sentencias que tiene SQL. En este se considera a las tablas comocontenedores de datos organizados en filas y en columnas. Aqu es posible seleccionardatos que pertenezcan a diferentes tablas y tambin es permitido establecer reglas ocondiciones que tengan que cumplir dichos datos para poder ser considerados comoregistros resultantes.

    La primera encarnacin de SQL apareci en 1974, cuando un grupo de IBM desarroll elprimer prototipo de una base de datos relacional. Relational Software (luego se convirti

    en Oracle) quien lanz la primera base de datos relacional comercial.

    El mayor mrito de SQL est en su posibilidad de combinar las diferentes tablas de unabase de datos en un solo conjunto resultante y por ello ha sido considerado en la mayorade los programas administradores de Base de Datos tales como Oracle, Access o FoxPro.

    En este manual de SQL se enumera los comandos SQL normalmente utilizados, y sedivide en las siguientes secciones:

    Conceptos bsicos de SQL: Que tratar de definir a SQL, cmo iniciar elprograma, creacin de tablas, hacer consultas.

    Comandos Bsicos de SQL: Las instrucciones SQL bsicas paraalmacenamiento, recuperacin y manipulacin de datos en una base de datosrelacional.

    Manipulacin de Tabla:Cmo se utilizan las instrucciones SQL para administrarlas tablas dentro de una base de datos.

    Para cada comando; primero se definir, luego se presentar y explicar la sintaxis SQL,seguida por algn o algunos ejemplos.

    Finalmente despus de cada captulo se mostrar los ejercicios desarrollados en la clasede Base de Datos II.

    http://sql.1keydata.com/es/sql-select.phphttp://sql.1keydata.com/es/sql-select.phphttp://sql.1keydata.com/es/sql-create-table.phphttp://sql.1keydata.com/es/sql-create-table.phphttp://sql.1keydata.com/es/sql-create-table.phphttp://sql.1keydata.com/es/sql-select.php
  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    5/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-6 -

    CONCEPTOS BSICOS DE SQL

    1.1. LENGUAJE ESTRUCTURADO DE CONSULTAS

    El Lenguaje de Consulta Estructurado (SQLStructured Query Language) es unlenguaje de base de datos normalizado, que se basa en el modelo relacional. Sqlest compuesto por comandos, clausulas, operadores y funciones de agregado.Estos elementos se combinan en las instrucciones para crear, actualizar ymanipular las bases de datos.

    1.1.1. REQUERIMIENTOS Y CARACTERSTICAS

    SQL Server tiene reservadas determinadas palabras clave para su usoexclusivo. Por ejemplo, si se usan las palabras clave DUMP o BACKUPen una sesin de osql o del Analizador de consultas de SQL, se estarindicando a SQL Server que debe realizar una copia de seguridad total oparcial de la base de datos, o una copia de seguridad del registro.

    Debe evitar usar una palabra clave reservada como nombre de unobjeto. Si el nombre de un objeto coincide con una palabra clave, cada

    vez que se haga referencia al objeto debe aparecer entre identificadoresdelimitadores, como dobles comillas ( ) o corchetes ([ ]).

    Para hacer un comentario en una lnea se puede poner dos guionesantes de ste (--). Ejm.:-- SQL es un lenguaje de programacin

    Para crear bloques de varias lneas de comentarios, se coloca uncarcter de comentario (/*) al comienzo del texto del comentario, escribasus anotaciones y, despus, se concluye el comentario con un carcterde cierre de comentario (*/).Ejm.:

    /*Los comentarios son cadenas de texto que no se ejecutan,colocadas en las instrucciones para describir la accin que

    la instruccin est realizando*/

    SQL Server no distingue las maysculas de las minsculas

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    6/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-7 -

    1.2. INICIANDO SQL SERVER 2008

    Para iniciar el trabajo con SQL Server 2008y poder realizar ejercicios de consultascon SQL TRANSACT primero ingresaremos al motor de la base de datos para locual seguiremos los siguientes pasos:

    Buscamos el icono de SQL Server Management Studio en el escritorio yhacemos doble clic.

    Podemos escribir la siguiente direccin en el cuadro Ejecutar: C:\Program Files

    \Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe

    ypulsar ENTER.

    Es la ruta que adquiere el programa de SQL Server 2008 en la instalacinestndar.

    Si noencontramos ste icono en el escritorio y no podemos ejecutar lo anteriorhacemos lo siguiente:

    o Clic en el botn inicio.

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    7/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-8 -

    o Clic en todos los programas.

    o Clic en Microsoft SQL Server 2008.

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    8/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-9 -

    o Y finalmente hacemos clic en SQL Server Management Studio

    Esperamos que cargue

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    9/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-10 -

    Luego realizamos la conexin con el servidor.

    Como podemos ver; tenemos la opcin de elegir:

    El Tipo de Servidor Nombre del Servidor (ha sido definido El tipo de Autentificacinal que debemos conectarnos al momento de la instalacin)

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    10/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-11 -

    Despus de elegir estos parmetros damos clic en conectar.

    Finalmente vemos que la conexin ha sido realizada.

    Los objetos lo podemos ver en las carpetas como Base de Datos, cuando loextendemos, entre otros; como tambin veremos las Bases de Datos existentesque han sido creadas al momento de la instalacin una de ellas con la quetrabajaremos es la Base de Datos Notrhwind.

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    11/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-12 -

    1.3. CREAR UNA NUEVA TABLA:

    Las tablas sirven para representar los datos o registros de una Base deDatos.Cada tabla est compuesta por varias filas y columnas, cadacolumna tieneun nombre nico.

    Ejemplo:Crearemos la tabla Alumnos.El proceso que hay que seguir es el siguiente:

    Expandimos la carpeta Base de Datos.

    Ubicamos la Base de Datos donde vamos a crear nuestra tabla (en este casoutilizaremos la Base de Datos Notrhwind) expandimos.

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    12/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-13 -

    Hacemos anticlic (clic derecho) en la palabra Tablas y escogemos la opcinNueva Tabla.

    Despus, iremos dando el nombre a cada campo que formarn las columnas dela tabla (Cdigo,Paterno, Materno, Nombre, Sexo, Direccin).

    A cada una de las columnas le asignaremos un Tipo de datospredefinido (pordefecto es nchar(10) ) o bien un dominio definido por el usuario. Tambinpodremos definir si se aceptarn valores nulos o no.

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    13/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-14 -

    En la parte baja al momento de escoger Tipo de datosestn las Propiedadesde columnao campo.

    Podemos elegir la Clave principal (PK) haciendo anticlic en el nombre delcampo y eligiendo la opcin Establecer clave principal.

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    14/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-15 -

    Decidimos qu nombre queremos poner a la tabla (Alumnos). Hacemos clic enguardar Tabla.

    Aparece un cuadro donde pondremos el nombre Alumnos y hacemos clic enAceptar.

    Cerramos y en la Base de Datos Northwind, en Tablas hacemos anticlic yelegimos actualizar; veremos ya la tabla creada en dicha lista.

    Cuando se crea una tabla, hay que especificar el nombre de la tabla, los nombres

    de las columnas y sus tipos de datos. Se puede utilizar el mismo nombre decolumna en tablas diferentes de la misma base de datos.

    Para llenar una tabla ya veremos ms adelante los comandos que se debenutilizar.

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    15/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-16 -

    1.4. HACER CONSULTAS

    Una consulta es una instruccin de solicitud para recuperarinformacin.Lasconsultas pueden involucrar informacin de msde una tabla. El resultado de unaconsulta es otra tabla con los datos requeridos en ella.Esta consulta encuentra todos los campos del empleado: (utilizando la Northwind)

    SELECT *

    FROM Employees

    La consulta especifica que las filas de (from) la tabla Employees se deberecuperar, y que se debe mostrar todos sus campos (*).

    Para crear esta consulta hacemos:

    Clic derecho sobre la base de datos Northwind y seleccionamos la opcinNueva Consulta.

    Luego escribimos la consulta:

    Como podemos ver SQL nos muestra un listado de tablas que existe dentro de labase de datos que estamos trabajando.

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    16/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-17 -

    Cuando ya est escrita la consulta damos clic en el botn ejecutar opresionamos la tecla de funcin F5.

    En la parte baja podemos ver el resultado de la consulta realizada.

    Finalmente para guardar la consulta damos clic en el botn guardar, le

    colocamos un nombre y damos un clic en guardar.

    Cuando tenemos varios cdigos de diferentes consultas en una sola ventana esnecesario seleccionar a la consulta que se desea ver y dar clic en ejecutar opresionar F5, pues si no hacemos esto se ejecutan todas las consultas que estndentro de una misma ventana.

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    17/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-18 -

    COMANDOS BSICOS DE SQL

    2.1. INSTRUCCIONES DE SQL SERVER 2008

    SQL est compuesto por comandos, clausulas, operadores y funciones deagregado. Estos elementos se combinan en las instrucciones o consultas paracrear, actualizar y manipular las bases de datosLas instrucciones de SQL Server 2008 permiten:

    Realizar el manejo de los datos. Es decir, consultar y actualizar los datosde las tablas, as como eliminar y agregar registros.

    Administrar la estructura de los campos de datos. En otras palabras crear,modificar y eliminar las tablas de datos.

    Tipos de Comandos:

    La escritura y ejecucin de instrucciones de Transact-SQL es una de las formas enque se puede realizar una consulta en SQL Server. Las sentencias SQL se

    dividen, principalmente en las siguientes categoras: DDL (Instrucciones del Lenguaje de definicin de datos) que permiten crear

    y definir nuevas bases de datos, campos e ndices.

    DCL (Instrucciones del Lenguaje de control de datos)que se utilizan paradeterminar quin puede ver o modificar los datos.

    DML (Instrucciones del Lenguaje de tratamiento de datos) que permitengenerar consultas para ordenar, filtrar y extraer datos de la base de datos.Mediante estas instrucciones puede cambiar o recuperar informacin.

    Este manual se centra, principalmente, en el uso de instrucciones DMLpara consultar datos de SQL Server.

    2.1.1. SELECTLa sentencia SELECT permite seleccionar registros de una o mstablas.Se usa para listar los campos deseados del resultado de unaconsulta. Es la sentencia bsica de SQL.

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    18/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-19 -

    2.1.2. FROM

    Esta instruccin se utiliza para obtener informacin de la base de datos,nos permite sacar reportes y es el principal comando. La clusula FROM

    especifica la tabla de la que se obtienen las filas y columnas. En la clusulaFROM podemos utilizar tablas derivadas, combinaciones y alias.

    Ambas sentencias SELECT y FROM se utilizan juntas y su sintaxis mssimple es la siguiente:

    La cual, traducida al espaol, significa SELECCIONAR ciertos campos

    DESDE cierta tabla. Por esta razn es que se denominan consultas deseleccin.

    Por ejemplo,si se quiere Obtener toda la informacin de los Productos;se podra escribir cualquiera de las siguientes instrucciones:

    Abreviando, pues se desea obtener todos los campos de la TablaProducts.

    SELECT *

    FROM Products

    El * despus de SELECT indicaque queremos ver todos los campos que aparecenen la tabla.

    Listandolos campos separados por comas:

    Select

    ProductID,ProductName,SupplierID,CategoryID,QuantityP

    erUnit,UnitPrice,UnitsInStock,UnitsOnOrder,ReorderLev

    el,Discontinued

    From Products

    Haciendo explcita, en la lista de campos, la referencia a la tabla:SELECT Products.*

    FROM Products

    Es conveniente en muchos casos utilizar necesariamente la referencia explcita ala tabla desde la cual se desea tomar las columnas en la lista de campos cuandose extraen datos de ms de una tabla.

    SINTAXIS

    SELECT nombre_ campoFROM nombre tabla

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    19/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-20 -

    Al ejecutar cualquiera de las instrucciones anteriores se muestra lasiguiente tabla resultante de la consulta:

    A. MODIFICADORES

    Distinct y All: Devuelve solamente filas nicas, elimina las filasduplicadas del conjunto de resultados, es preciso poner la palabraclave DISTINCT inmediatamente despus de SELECT. Tambinpodramos explicitar que lo queremos todo, incluso con repeticiones,poniendo ALL (opcin por defecto) en lugar de DISTINCT.Por ejemplo, si se quiere obtener todas las filas de la tabla

    customers, pero slo que se muestre el nombre de cada pas unavez. Se escribe la siguiente instruccin:SELECTDISTINCTcountry

    FROM dbo.Customers

    Al ejecutar lainstruccinse muestra la siguiente tabla resultante:

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    20/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-21 -

    TOP n:Devuelve solamente las n primeras filas de un conjunto deregistros resultantes.

    Por ejemplo, si se quiere obtener los nombres de los empleadosde las tres (3) primeras filas de la tabla employees. Se escribe lasiguiente instruccin:

    Selecttop (3)FirstName

    From dbo.Employees

    Al ejecutar lainstruccinse muestra la siguiente tabla resultante:

    B. FUNCIONES DE AGREGACIN: Las funciones que calculan

    promedios y sumas se llaman funciones de agregado. Cuando seejecuta una funcin de agregado, SQL Server resume los valores detoda una tabla o de grupos de columnas de una tabla, y produce unvalor por cada conjunto de filas para las columnas especificadas.

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    21/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-22 -

    La sintaxis para el uso de funciones de agregacin es:

    El SQL nos ofrece las siguientes funciones de agregacin paraefectuar varias operaciones sobre los datos de una base de datos:

    Por ejemplo, si se quiere obtener el total de empleados que hay de latabla employees. Se escribe la siguiente instruccin:SelectCOUNT(*)

    From EmployeesAl ejecutar lainstruccinse muestra la siguiente tabla resultante:

    Si se quiere obtener el total de rdenes realizadas que hay de la tablaOrders Details. Se escribe la siguiente instruccin:

    Funcin Descripcin

    COUNT Nos da el nmero total de filas seleccionadas deun determinado campo incluyendo los valores

    nulos

    COUNT(*) Nos da el nmero total de filas seleccionadas deun determinado campo no incluye los valores nulos

    SUM Suma los valores de una columna

    MIN Nos da el valor mnimo de una columna

    MAX Nos da el valor mximo de una columna

    AVG Calcula el valor medio de una columna

    STDEV Desviacin estadstica de todos los valores

    STDEVP Desviacin estadstica para la poblacin

    VAR Varianza estadstica de todos los valores

    VARP Varianza estadstica de todos los valores para lapoblacin

    SINTAXIS

    SELECT "tipo de funcin"("nombre_columna")

    FROM "nombre_tabla"

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    22/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-23 -

    Selectsum(Quantity)

    From [Order Details]

    Al ejecutar lainstruccinse muestra la siguiente tabla resultante:

    Si se quiere obtener el mayor precio de los productos de la tablaProducts. Se escribe la siguiente instruccin:

    Selectmax(UnitPrice)

    From Products

    Al ejecutar lainstruccinse muestra la siguiente tabla resultante:

    En general, las funciones de agregacin se aplican a una columna,excepto la funcin de agregacin COUNT, que normalmente se aplicaa todas las columnas de la tabla o tablas seleccionadas. Por lo tanto,COUNT (*) contar todas las filas de la tabla o las tablas que cumplanlas condiciones. Si se utilizase COUNT(columna), slo contara losvalores que no fuesen nulos.

    C. USO DE ALIAS: Hay dos tipos de alias que se utilizan con mayorfrecuencia. Alias de columna y alias de tabla.

    Los alias de columna existen para ayudar en la organizacin delresultado. En el ejemplo anterior, cualquiera sea el momento en quevemos el mayor precio de los productos, se enumeran comoMAX(UnitPrice).El segundo tipo de alias es el alias de tabla. Esto se alcanza al colocarun alias directamente luego del nombre de tabla en la clusula FROM.Esto es conveniente cuando desea obtener informacin de dos tablasseparadas. La ventaja de utiliza un alias de tablas cuando realizamosuniones es rpidamente aparente cuando hablamos de uniones.

    La sintaxis tanto para el alias de columna como de tabla es:

    SINTAXIS

    SELECT "alias_tabla"."nombre1_columna" "alias_columna"FROM "nombre_tabla" "alias_tabla"

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    23/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-24 -

    Brevemente, ambos tipos de alias se colocan directamente despusdel elemento por el cual generan el alias, separados por un espacio enblanco.Por ejemplo, si se quiere obtener el mnimo precio de los productosde la tabla Products, utilizando alias. Se escribe la siguienteinstruccin:

    Selectmin(p.UnitPrice)asprecio_Minimo

    From Productsasp

    Al ejecutar lainstruccinse muestra la siguiente tabla resultante:

    2.1.3. WHERE

    La sentencia WHERE sirve para filtrar registros lo que no lo hace elSELECT ni el FROM. ste permite establecer condiciones que debancumplir los registros para ser considerandos dentro del conjunto resultante.Despus de Clusula WHERE (donde) ir la(s) condicin(es) que debencumplir los registros. La sintaxis de SQL considerando esta sintaxis es:

    Para definir las condiciones en la clusula WHERE, podemos utilizaralguno de los operadores de los que dispone el SQL, que son lossiguientes:

    OPERADORES DE COMPARACIN= Igual

    < Menor

    > Mayor= Mayor o igual Diferente

    OPERADORES LGICOSNOT Para la negacin de

    condiciones

    AND Para la conjuncin decondiciones

    OR Para la disyuncin decondiciones

    SINTAXIS

    SELECT "nombre_campo"FROM "nombre_tabla"WHERE "Condicin_Filtro"

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    24/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-25 -

    Por ejemplo, Mostrar los productos de la categora 2La instruccin sera de la siguiente manera; utilizando el operador decomparacin igual (=):

    select*

    fromProducts

    whereCategoryID=2Resultado de la consulta:

    Al comparar valores de tipo INT estos se escriben normalmente, pero al compararcon valores de tipo texto, ste debe estar entre comillas simples ( )

    As como para saber la categora 5; cambiamos:select*

    fromProducts

    whereCategoryID=5

    oselect*

    from[Order Details]

    whereOrderID=10260

    Para unir dos condiciones unimos con cualquier operador Lgico:

    And/OrSINTAXIS

    SELECT "nombre_campo"FROM "nombre_tabla"WHERE "condicin " {[AND|OR] "condicin "}

    http://sql.1keydata.com/es/sql-and-or.phphttp://sql.1keydata.com/es/sql-and-or.php
  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    25/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-26 -

    Ejemplo:Mostrar los Productos de la Categora 4 y 6.select*

    fromProducts

    whereCategoryID=4 orCategoryID=6Resultado de la consulta:

    CONCATENACIN DE CADENAS

    El operador de concatenacin de cadenas (+) concatena valores decadena. El resto de las operaciones con cadenas se controla mediantelas funciones de cadena.

    Por ejemplo, queremos mostrar el nombre completo de los empleadosen una sola columna o campo:

    selectFirstName+(' ')+LastNameasnombre_completo

    fromdbo.Employees

    Se mostrar la siguiente tabla como resultado:

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    26/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-27 -

    IN

    Verifica que una determinada expresin se encuentre dentro de una listade valores la cual puede ser escrita elemento por elemento o puede serel resultado de otra consulta; las reglas que todas las condiciones debenestar unidas con el OR, deben ser del mismo campo y los operadoressean = .

    La sintaxis de esta instruccin es:

    Ejemplo:Selecciona todos los campos de la tabla Productscuyoscampos sea de las Categoras 4 o 6 o 8 o 2

    SELECT*

    FROMProducts

    WHERECategoryIDin(4,6,8,2)

    El resultado es el siguiente:

    SINTAXIS

    SELECT "nombre_campo"FROM "nombre_tabla"WHERE "nombre_campo" IN ('valor1', 'valor2', ...)

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    27/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-28 -

    Ejemplo: Obtener todos los productos de los proveedores con nmero3, 5, 8.

    SELECT*

    FROMProducts

    WHERESupplierIDin(3,5,8)

    Resultado de la consulta:

    Ejemplos:

    o Mostrar el nombre del producto, unidad, cdigo; cuyo precio es mayor que 100.

    SELECTProductID,ProductID,UnitPriceFROMProducts

    WHEREUnitPrice>100

    o Mostrar el nombre del producto, unidad, cdigo; adems los productos que

    estn entre 30 y 60.

    selectProductID,ProductName,UnitPrice

    fromProducts

    WhereUnitPrice>30 ANDUnitPrice

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    28/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-29 -

    BETWEEN

    Verifica que el resultado de una expresin se encuentre entre otros dos

    valores. Debe haber un rango que el campo sea el mismo y adems unoperador sea >= y el otro

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    29/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-30 -

    o Mostrar el nombre del producto, unidad de precio, cdigo, stock y lacategora, solo de aquellos que tienen un stock entre 0 y 10.

    selectProductID,ProductName,UnitPrice,UnitsInStock,Cate

    goryID

    fromProducts

    WhereUnitsInStockbetween0 AND10

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    30/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-31 -

    o Mostrar el nombre del producto y su cdigo, donde el nombre del productosea Chang.

    selectProductID,ProductName

    fromProducts

    WhereProductName='chang'

    NULL

    o Una columna tiene un valor NULL cuando no se ha especificadoningn valor para ella durante la entrada de datos y no tiene definidoun valor predeterminado. Un valor NULL no es lo mismo que cero

    (que es un valor numrico) o blanco (que es un valor de carcter).

    o Puede utilizar la condicin de bsqueda IS NOT NULL para obtenerlas filas con valores conocidos en las columnas especificadas.

    Por ejemplo, mostrar a los nombres de las compaas existentes de losproveedores.

    selectContactName

    fromdbo.Suppliers

    whereContactNameisnotnull

    Al ejecutar esta consulta da la siguiente tabla como resultado:

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    31/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-32 -

    LIKE

    LIKE es otra palabra clave que se utiliza en la clusula WHERE.Bsicamente, LIKEle permite hacer una bsqueda basada en un patrnen vez de especificar exactamente lo que se desea (como en IN) o

    determinar un rango (como en BETWEEN). La sintaxis es la siguiente:

    Ejemplos de uso de caracteres comodnLa tabla siguiente contiene ejemplos de uso de comodines con lacondicin de bsqueda LIKE.

    EjemploEn este ejemplo se obtienen las compaas de la tabla customers quecontengan la palabra "restaurant" en su nombre.

    SELECTcompanyname

    FROMcustomers

    WHEREcompanynameLIKE'%Restaurant%'Al ejecutar la instruccin se nos presenta la siguiente tabla resultante:

    Expresin Devuelve

    LIKE 'BR%' Todos los nombres que comiencen por las letras BR.

    LIKE '%een' Todos los nombres que terminen con las letras een.

    LIKE '%en%' Todos los nombres que contengan las letras en.

    LIKE '_en' Todos los nombres de tres letras que terminen con lasletras en.

    LIKE '[CK]%' Todos los nombres que comiencen por C o por K.

    LIKE '[S-V]ing' Todos los nombres de cuatro letras que terminen con

    las letras ing y comiencen por cualquier letracomprendida entre S y V.

    LIKE 'M[^c]%' Todos los nombres que comiencen por la letra M ycuya segunda letra no sea c.

    SINTAXIS

    SELECT "nombre_columna"FROM "nombre_tabla"WHERE "nombre columna" LIKE atrn

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    32/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-33 -

    EjemploEn este ejemplo se obtienen los nombres de los productos de la tablaproducts que contengan terminen en "s" en su nombre.

    selectProductID,ProductName

    fromProducts

    WhereProductNamelike'%s'

    Al ejecutar la instruccin se nos presenta la siguiente tabla resultante

    YEAR MONTH DAY

    Estas tres sentencias sirven para trabajar con fechas cmodamente, siqueremos saber los empleados que nacieron en el 1963 sera:

    SELECT*

    FROMEmployees

    WHEREYEAR(BirthDate)=1963

    Para mes sera Month y para da DAY. Recordar que "fecha" debe serun campo de tipo Date, y que el comparador es un entero (no ponerentre comillas)

    Resultado de la consulta:

    Tambin se puede utilizar la clusula DATEPART(YYYY,Campo) oDATEPART(MM,Campo) o DATEPART(DD,Campo)Para saber las ordenes realizadas en el ao de 1996 hacemos:

    SELECT*

    FROMdbo.Orders

    WHEREDatepart(yyyy,OrderDate)='1996'

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    33/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-34 -

    2.1.4. ORDER BY

    Es posible ordenar los registros devueltos por la sentencia SELECTaadiendo a la instruccin la clusula ORDER BY, por defecto saleordenado en forma ascendente. La sintaxis en este caso es el siguiente:

    o Mostrar el nombre del producto, unidad de precio, cdigo, stock y la

    categora, solo de aquellos que tienen un stock entre 0 y 10. Ordenado porel precio en forma descendente.

    selectProductID,ProductName,UnitPrice,UnitsInStock,Cat

    egoryID

    fromProducts

    WhereUnitsInStockbetween0 AND10

    OrderbyCategoryIDDESC

    SINTAXIS

    SELECT "nombre_campo"FROM "nombre_tabla"WHERE "condicin"ORDER BY "nombre_campo" [ASC, DESC]

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    34/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-35 -

    El campo por el que queremos ordenar debe estar en el SELECT. La palabra ASCo DESC se pone al final de las columnas de ordenamiento.

    TOP

    Devuelve un determinado nmero de registros. Esta sentencia se guapor la ordenacin.

    Donde n es la cantidad de registros que se requiereselect top3*

    from Products

    o Obtener los 15 primeros registros de detalle de la orden q tengan mayor

    cantidad vendida:

    Selecttop15 OrderId,ProductID,Quantity

    from[Order Details]

    orderbyQuantitydesc

    SINTAXIS

    Select top n * from tabla

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    35/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-36 -

    WITH TIES

    Devuelve las filas iguales si se utilizaSELECTTOP5 WITHTIESorderid,productid,quantity

    FROM[order details]

    ORDERBYquantityDESCResultado de la consulta:

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    36/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-37 -

    EJERCICIOSBase de Datos II (20011-1)

    Ing. De SistemasFI- UNC

    EJERCICIOS bsicos de SQL TRANSACT(Microsoft SQL SERVER 2008)

    Usando la Base de Datos Northwind, realizar las siguientes consultas:1. Seleccionar todos los campos de la tabla Clientes, ordenado por nombre del

    Contacto de la compaa, alfabticamente.

    select*fromdbo.Customersorderb ContactName

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    37/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-38 -

    2. Seleccionar todos los campos de la tabla rdenes, ordenados por fecha de la orden,Descendentemente.

    select*fromdbo.OrdersorderbyOrderDateDesc

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    38/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-39 -

    3. Seleccionar todos los campos de la tabla Detalle de la Orden, ordenada porCantidad Pedida, Ascendentemente.

    select*from[Order Details]orderbyQuantity

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    39/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-40 -

    4. Obtener todos los productos, cuyo nombre comiencen con la letra P y tienen unprecio unitario comprendido entre 10 y 120.

    5. Obtener todos los clientes de los Pases de: USA, Francia y UK.

    select*

    fromProductswhereProductNamelike'P%'ANDUnitPricebetween10 AND120

    select*fromdbo.CustomerswhereCountryin('usa','francia','uk')

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    40/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-41 -

    6. Obtener todos los productos descontinuados y sin stock, que pertenecen a lascategoras 1, 3, 4 y 7.

    7. Obtener todas las rdenes hechas por el empleado con cdigo: 2, 5 y 7 en el ao1996.

    select*

    fromdbo.Productswhere (CategoryID in (1,3,4,7)) AND (Discontinued='true'AND

    UnitsInStock='0'

    select*fromdbo.OrderswhereEmployeeIDin(2,5,7)ANDYEAR(OrderDate)='1996'

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    41/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-42 -

    8. Seleccionar todos los clientes que cuentan con FAX.

    9. Seleccionar todos los clientes que no cuentan con FAX, del Pas de USA.

    select*fromdbo.CustomerswhereFaxisnotnull

    select*fromdbo.CustomerswhereFaxisnullANDCountry='usa'

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    42/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-43 -

    10. Seleccionar todos los empleados que cuentan con un jefe.

    11. Seleccionar todos los campos del cliente, cuya compaa empiecen con la letra de Ahasta la D y pertenezcan al pas de USA, ordenarlos por la direccin.

    12. Seleccionar todos los campos del proveedor, cuya compaa no comience con lasletras de la B a la G, y pertenezcan al pas de UK, ordenarlos por nombre de lacompaa.

    select*fromdbo.Employees

    whereReportsToisnotnull

    select*fromdbo.CustomerswhereCompanyNamelike'[a-d]%'andCountry='usa'orderb Address

    select*fromdbo.Supplierswhere (CompanyName like 'a%' or CompanyName like '[f-z]%') and

    Country='uk'orderbyCompanyName

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    43/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-44 -

    13. Seleccionar los productos vigentes cuyos precios unitarios estn entre 35 y 250, sinstock en almacn, pertenecientes a las categoras 1, 3, 4, 7 y 8, que son distribuidospor los proveedores 2, 4, 6, 7 y 9.

    14. Seleccionar todos los campos de los productos descontinuados, que pertenezcan alos proveedores con cdigos: 1, 3, 7, 8 y 9, que tengan stock en almacn, y almismo tiempo que sus precios unitarios estn entre 39 y 190, ordenados por cdigode proveedor y precio unitario de manera ascendente.

    select*fromProductswhere Discontinued='false' AND UnitPrice between 35 AND 250 AND

    UnitsInStock='0' AND CategoryID in (1,3,4,7,8) AND SupplierID in(2,4,6,7,9)

    select*fromProductswhere Discontinued='true' AND SupplierID in (1,3,7,8,9) AND

    UnitsInStock!='0'ANDUnitPricebetween39 AND190orderbySupplierID,UnitPrice

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    44/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-45 -

    15. Seleccionar los 7 productos con precios ms caros, que cuenten con Stock enalmacn.

    16. Seleccionar los 9 productos, con menos stock en almacn, que pertenezcan a lacategora 3, 5 y 8.

    selecttop7 *fromdbo.ProductswhereUnitsInStock!=0orderbyUnitPricedesc

    selecttop9 *

    fromdbo.ProductswhereCategoryIDin(3,5,8)orderbyUnitsInStock

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    45/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-46 -

    17. Seleccionar las rdenes de compra, realizadas por el empleado con cdigo entre 2 yel 5, adems de los clientes con cdigos que comienzan con las letras de la A hastala G, del 31 de Julio de cualquier ao.

    18. Seleccionar las rdenes de compra, realizadas por el empleado con cdigo 3, decualquier ao pero slo de los ltimos 5 meses (Agosto - Diciembre).

    19.

    select*fromdbo.OrderswhereEmployeeIDbetween2 AND5 ANDCustomerIDlike'[a-g]%'AND

    DATEPART(MM,OrderDate)='07'ANDDATEPART(dd,OrderDate)='31'

    select*fromOrderswhereEmployeeID=3 andmonth(OrderDate)in(8,9,10,11,12)

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    46/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-47 -

    20. Seleccionar los detalles de las rdenes de compra, que tengan un monto decantidad pedida entre 10 y 250.

    select*

    from[Order Details]whereQuantitybetween10 AND250

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    47/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-48 -

    COMBINACIN DE TABLAS YAGRUPACIN DE DATOS

    3.1. JOIN

    Para realizar uniones en SQL se requieren mucho de los elementos que ya hemosvisto. SQL tambin proporciona varios mecanismos para reunir relaciones,incluyendo reuniones condicionales y reuniones naturales, as como varias formasde reunin externa. Estas operaciones adicionales se usan a menudo como

    subconsultas dentro de la clusula from. Seleccin de columnas especficas de varias tablas

    La palabra clave JOIN especifica qu tablas se van a combinar y cmo

    La palabra clave ON especifica la condicin de combinacin

    Consultas de dos o ms tablas para producir un conjunto de resultados

    Use claves principales y externas como condiciones de combinacin

    Para combinar tablas, utilice columnas comunes a las tablas especificadas

    INNER JOIN: Devuelve solo los registros de la combinacin de ambas tablas deen los hay coincidencia de acuerdo a la expresin vinculante.

    LEFT JOIN: Devuelve los registros de la combinacin de ambas tablas en loscuales hay coincidencia de acuerdo a la expresin vinculante e incluye adems atodos los registros de la primera tabla que no tengan pareja en la segunda.

    RIGTH JOIN: Devuelve los registros de la combinacin de ambas tablas en loscuales hay coincidencia de acuerdo a la expresin vinculante e incluye adems atodos los registros de la segunda tabla que no tengan pareja en la primera.

    UNION: Use el operador UNION para crear un conjunto de resultados nico apartir de varias consultas

    Cada consulta debe tener:

    Tipos de datos similares

    El mismo nmero de columnas

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    48/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-49 -

    El mismo orden de columnas en la lista de seleccin

    Por ejemplo:

    Queremos saber el total de rdenes realizadas por cada empleado escribimos la

    siguiente sentencia:selectCOUNT(*)astotal,e.LastName

    fromdbo.Ordersaso

    innerjoindbo.Employeesaseon

    o.EmployeeID=e.EmployeeID

    groupbyLastName

    Al ejecutar lo anterior tenemos:

    3.2. GROUP BYGenera valores de resumen para una sola columna, para esto se utiliza funcionesde agregado con la clusula GROUP BY. Utilice la clusula HAVING con laclusula GROUP BY para restringir los grupos de filas devueltas en el conjunto deresultados.

    El uso de la clusula GROUP BY no garantiza que se vaya a usar ningn criteriode ordenacin. Si desea que los resultados se ordenen, debe incluir la clusulaORDER BY.

    SINTAXIS

    SELECT "nombre_columna 1",SUM("nombre_columna 2")FROM "nombre_tabla"GROUP BY "nombre_columna 1"

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    49/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-50 -

    3.3. HAVING

    Esta sentencia se utiliza de similar manera que la sentencia WHEREpara filtrarinstrucciones en SQL que incluyen agrupaciones de registros se emplear esta

    clusula HAVING.Su sintaxis es:

    Utilice la clusula HAVING en columnas o expresiones para establecercondiciones en los grupos incluidos en un conjunto de resultados. La clusulaHAVING establece condiciones en la clusula GROUP BY de una forma muysimilar a como interacta la clusula WHERE con la instruccin SELECT.

    Cuando utilice la clusula HAVING, considere los hechos e instruccionessiguientes:

    Utilice la clusula HAVING slo con la clusula GROUP BY para restringirlos agrupamientos. El uso de la clusula HAVING sin la clusula GROUPBY no tiene sentido.

    En una clusula HAVING puede haber hasta 128 condiciones. Cuando

    utilice varias condiciones, tiene que combinarlas con operadores lgicos(AND, OR o NOT).

    Puede hacer referencia a cualquiera de las columnas que aparezcan en lalista de seleccin.

    No utilice la palabra clave ALL con la clusula HAVING, porque la clusulaHAVING pasa por alto la palabra clave ALL y slo devuelve los grupos quecumplen la clusula HAVING.

    Por ejemplo:Mostrar la cantidad de rdenes hechas por cada empleado pero que sean mayoresque 100.Se escribir la siguiente instruccin:

    Select COUNT(*) as total,e.FirstName,e.LastName

    from dbo.Orders as o

    inner join dbo.Employees as e on o.EmployeeID=e.EmployeeID

    groupby e.FirstName,e.LastName

    having COUNT(*)>100

    orderby FirstName,LastName

    SINTAXIS

    SELECT "nombre_columna 1",SUM("nombre_columna 2")FROM "nombre_tabla"GROUP BY "nombre_columna 1"HAVING (condicin de funcin aritmtica)

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    50/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-51 -

    Ejercicio 1selectCOUNT(*)astotal,e.EmployeeID,e.LastName

    fromdbo.Ordersaso

    innerjoindbo.Employeesaseono.EmployeeID=e.EmployeeID

    groupbye.EmployeeID,e.LastName

    Ejercicio 2selectCOUNT(*)astotal,e.FirstName,e.LastName

    fromdbo.Ordersaso

    innerjoindbo.Employeesaseono.EmployeeID=e.EmployeeID

    groupbye.FirstName,e.LastName

    havingCOUNT(*)>100orderbyFirstName,LastName

    Ejercicio 3selectsum(od.Quantity)astotal,c.CompanyName

    fromOrdersasoinnerjoin[Order Details]asodono.OrderID=od.OrderID

    innerjoinCustomersasconc.CustomerID=o.CustomerID

    groupbyc.CompanyName

    orderbyc.CompanyName

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    51/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-52 -

    Ejercicio 4selectsum(Quantity*UnitPrice*2.82)astotal,o.OrderID

    from[Order Details]asodinnerjoinOrdersasoono.OrderID=od.OrderID

    whereyear(o.OrderDate)=1996 andMONTH(o.OrderDate)=12

    groupbyo.OrderID

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    52/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-53 -

    Ejercicio 5selectcount(*)astotal,s.CompanyName

    fromdbo.Productsaspinnerjoindbo.Suppliersass

    onp.SupplierID=s.SupplierID

    whereUnitsInStock!='0'andDiscontinued='0'

    groupbys.CompanyName

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    53/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-54 -

    EJERCICIOS21. Mostrar el cdigo de categora, nombre de categora, cdigo del producto, nombre del

    producto y precio.

    selectdbo.Categories.CategoryID,dbo.Categories.CategoryName,dbo.Products.ProductID,dbo.Products.ProductName,dbo.Products.UnitPricefromdbo.Categoriesinnerjoindbo.Productson

    dbo.Categories.CategoryID=dbo.Products.CategoryID

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    54/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-55 -

    22. Mostrar el nmero de la orden fecha de la orden, cdigo del producto, cantidad del precio yflete de la orden.

    23. Mostrar: cdigo, nombre, ciudad y pas del proveedor. Cdigo, nombre, precio, stock del

    producto.

    selecto.OrderID,o.OrderDate,od.ProductID,od.Quantity,o.Freight

    from[Order Details]asodinnerjoin Ordersasoonod.OrderID=o.OrderID

    selects.SupplierID,s.CompanyName,s.City,s.Country,p.ProductID,

    p.ProductName,p.UnitPrice,p.UnitsInStockfromSuppliersassinnerjoinProductsaspons.SupplierID=p.SupplierID

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    55/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-56 -

    24. Cdigo y nombre de la categora, cdigo, nombre, precio y stock de los productos, cdigo,

    nombre de los proveedores.

    selectc.CategoryID,c.CategoryName,p.ProductID,p.ProductName,p.UnitPrice,p.UnitsInStock,s.SupplierID,s.CompanyNamefromdbo.Categoriesascinnerjoin dbo.Productsasponc.CategoryID=p.CategoryIDinnerjoindbo.Suppliersassonp.SupplierID=s.SupplierID

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    56/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-57 -

    25. Mostrar nmero de la orden, fecha, nombre del producto, nombre de la categora, nombre

    del producto.

    26. Mostrar nmero de la orden, fecha, nombre y direccin del cliente, nombre y apellido del

    empleado, nombre del producto comprado y nombre del proveedor.

    selectod.OrderID,o.OrderDate,p.ProductName,c.CategoryName,s.CompanyNamefromOrdersasoinnerjoin [Order Details]asodonod.OrderID=o.OrderIDinnerjoindbo.Productsasponod.ProductID=p.ProductIDinnerjoindbo.Categoriesasconc.CategoryID=p.CategoryIDinnerjoindbo.Suppliersassons.SupplierID=p.SupplierID

    selectod.OrderID,o.OrderDate,c.CompanyName,c.Address,e.LastName,e.LastName,p.ProductName,s.CompanyNamefrom[Order Details]asodinnerjoin Ordersasoonod.OrderID=o.OrderIDinnerjoinProductsasponod.ProductID=p.ProductIDinnerjoinCustomersasconc.CustomerID=o.CustomerIDinnerjoinEmployeesaseone.EmployeeID=o.EmployeeID

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    57/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-58 -

    27. Modificar el ejercicio 1: slo los productos de las categoras 2, 4, 5 y 7.

    selectc.CategoryID,c.CategoryName,p.ProductID,p.ProductName,p.UnitPricefromCategoriesascinnerjoindbo.Productsasponc.CategoryID=p.CategoryIDwherec.CategoryIDin(2,4,5,7)

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    58/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-59 -

    28. Modificar el ejercicio 2: slo las rdenes del mes de enero de 1997.

    selecto.OrderID,o.OrderDate,od.ProductID,od.Quantity,o.Freightfrom[Order Details]asodinnerjoin Ordersasoonod.OrderID=o.OrderIDwheremonth(o.OrderDate)='01'andyear(o.OrderDate)='1997'

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    59/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-60 -

    29. Modificar el ejercicio 3: slo los productos con stock 0.

    30. Modificar el ejercicio 4: slo con precios entre 50 y 100.

    31. Modificar el ejercicio 5: slo del primer trimestre del ao 1996.

    selects.SupplierID,s.CompanyName,s.City,s.Country,p.ProductID,p.ProductName,p.UnitPrice,p.UnitsInStockfromSuppliersassinnerjoinProductsaspons.SupplierID=p.SupplierIDwhere .UnitsInStock='0'

    selectc.CategoryID,c.CategoryName,p.ProductID,p.ProductName,p.UnitPrice,p.UnitsInStock,s.SupplierID,s.CompanyNamefromdbo.Categoriesascinnerjoin dbo.Productsasponc.CategoryID=p.CategoryIDinnerjoindbo.Suppliersassonp.SupplierID=s.SupplierIDwherep.UnitPricebetween50 AND100

    selectod.OrderID,o.OrderDate,p.ProductName,c.CategoryName,s.CompanyNamefromOrdersasoinnerjoin [Order Details]asodonod.OrderID=o.OrderIDinnerjoindbo.Productsasponod.ProductID=p.ProductIDinnerjoindbo.Categoriesasconc.CategoryID=p.CategoryIDinnerjoindbo.Suppliersassons.SupplierID=p.SupplierID

    where (month(o.OrderDate)='1'ormonth(o.OrderDate)='1'ormonth(o.OrderDate)='2'ormonth(o.OrderDate)='3')AND

    YEAR(o.OrderDate)='1996'

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    60/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-61 -

    BASE DE DATOS IIEJERCICIOS inner join, group by, having y where SQL

    TRANSACT (Microsoft SQL SERVER 2008)Usando la Base de Datos Northwind, realizar las siguientes consultas:

    32. Visualizar el mximo y mnimo precio de los productos por categora, mostrar el

    nombre de la categora.

    33. Visualizar el mximo y mnimo precio de los productos por proveedor, mostrar el

    nombre de la compaa proveedora.

    selectMIN(p.UnitPrice)asprec_min,MAX(p.UnitPrice)asprec_max,c.CategoryNamefromProductsaspinnerjoinCategoriesasconp.CategoryID=c.CategoryID

    groupbyc.CategoryName

    selectMIN(p.UnitPrice)asprec_min,MAX(p.UnitPrice)asprec_max,s.CompanyNamefromProductsaspinnerjoinSuppliersassonp.SupplierID=s.SupplierIDgroupbys.CompanyName

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    61/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-62 -

    34. Seleccionar las categoras que tengan ms de 5 productos. Mostrar el nombre de la

    categora y nmero de productos.

    selectc.CategoryName,count(p.QuantityPerUnit)astotalfromCategoriesascinnerjoindbo.Productsasponc.CategoryID=p.CategoryIDgroupbyCategoryNamehavingCOUNT(p.QuantityPerUnit)>5

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    62/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-63 -

    35. Calcular cuntos clientes existen en cada Pas.

    36. Calcular cuntos clientes existen en cada Ciudad.

    selectCountry,count(CompanyName)astotal_clientesfromCustomers

    groupbyCountry

    selectCity,count(CompanyName)astotal_clientesfromCustomersgroupbyCity

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    63/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-64 -

    37. Calcular cuntos proveedores existen en cada Ciudady Pas.

    38. Calcular el stock total de los productos por cada categora. Mostrar el nombre de lacategora y el stock por categora.

    selectCountry,count(SupplierID)as

    total_proveedores,City,count(SupplierID)astotal_proveedoresfromdbo.Suppliersrou b Countr cit

    selectc.CategoryName,sum(p.UnitsInStock)asstockfromCategoriesascinnerjoinProductsasponc.CategoryID=p.CategoryIDgroupbyc.CategoryName

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    64/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-65 -

    39. Calcular el stock total de los productos por categora. Mostrar el nombre el nombre

    de la categora y el stock por categora. Solamente las categoras 2,5, y 8.

    40. Obtener el Nombre del Cliente, Nombre del Proveedor, Nombre del Empleado y elnombre de los productos que estn en la orden 10250.

    41. Mostrar el nmero de rdenes realizadas de Cada uno de los Clientes por ao.

    selectc.CategoryName,sum(p.UnitsInStock)asstockfromCategoriesascinnerjoinProductsasponc.CategoryID=p.CategoryIDwherec.CategoryIDin(2,5,8)groupbyc.CategoryName

    selectc.CompanyName,s.CompanyName,e.LastName,p.ProductName,o.OrderIDfromCustomersascinnerjoinordersasoonc.CustomerID=o.CustomerIDinnerjoinEmployeesaseone.EmployeeID=o.EmployeeID

    innerjoin[Order Details]asodonod.OrderID=o.OrderIDinnerjoinProductsasponp.ProductID=od.ProductIDinnerjoinSuppliersassons.SupplierID=p.supplierIDwhereo.OrderID='10250'

    selectdistinctc.CompanyName,COUNT(*)astotal_ordenes,year(o.OrderDate)asaofromOrdersasoinnerjoinCustomersascono.CustomerID=c.CustomerIDgroupbyc.CompanyName,year(o.OrderDate)

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    65/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-66 -

    42. Mostrar el nmero de rdenes realizadas de Cada uno de los Empleados en cada

    ao.

    selectdistincte.FirstName,COUNT(*)as

    total_ordenes,year(o.OrderDate)asaofromOrdersasoinnerjoinEmployeesaseono.EmployeeID=e.EmployeeIDgroupbye.FirstName,year(o.OrderDate)

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    66/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-67 -

    43. Mostrar el nmero de rdenes realizadas de Cada uno de los Clientes por cada mes

    y ao.

    44. Contar el nmero de rdenes que se han realizado por aos y meses.

    selectdistinctc.CompanyName,COUNT(*)astotal_ordenes,year(o.OrderDate)asao,MONTH(o.OrderDate)asmesfromOrdersaso

    innerjoinCustomersascono.CustomerID=c.CustomerID

    groupbyc.CompanyName,year(o.OrderDate),month(o.OrderDate)

    selectdistinctYEAR(o.OrderDate)asao,MONTH(o.OrderDate)asmes,COUNT(*)astotal_ordenesfromdbo.OrdersasogroupbyYEAR(o.OrderDate),MONTH(o.OrderDate)

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    67/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-68 -

    45. Seleccionar el nombre de la compaa del cliente, el cdigo de la orden de compra,la fecha de la orden de compra, cdigo del producto, cantidad pedida del producto,

    nombre del producto, el nombre de la compaa Proveedora y la ciudad del

    proveedor.

    selectc.CompanyName,od.OrderID,o.OrderDate,p.ProductID,od.Quantity,p.ProductName,s.CompanyName,s.Cityfrom[Order Details]asodinnerjoindbo.Ordersasoonod.OrderID=o.OrderIDinnerjoindbo.Productsasponp.ProductID=od.ProductIDinnerjoindbo.Customersasconc.CustomerID=o.CustomerID

    innerjoindbo.Suppliersassons.SupplierID=p.SupplierID

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    68/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-69 -

    46. Seleccionar el nombre de la compaa del cliente, nombre del contacto, el cdigo de

    la orden de compra, la fecha de la orden de compra, cdigo del producto, cantidad

    pedida del producto, nombre del producto y el nombre de la compaa Proveedora,

    usar join. Solamente las compaas proveedoras que comienzan con la letra de la A

    hasta la letra G, adems la cantidad pedida del producto debe estar entre 18 y 190.

    selectc.CompanyName,c.ContactName,od.OrderID,o.OrderDate,p.ProductID,od.Quantity,p.ProductName,s.CompanyNamefrom[Order Details]asodinnerjoindbo.Ordersasoonod.OrderID=o.OrderIDinnerjoindbo.Productsasponp.ProductID=od.ProductIDinnerjoindbo.Customersasconc.CustomerID=o.CustomerIDinnerjoindbo.Suppliersassons.SupplierID=p.SupplierIDwheres.Com an Namelike'[a- ]%'andQuantit between18 and190

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    69/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-70 -

    47. Seleccionar cuantos proveedores tengo en cada pas, considerando solo a los

    nombres de los proveedores que comiencen con la letra E hasta la letra P, adems

    de mostrar slo los pases donde tenga ms de 2 proveedores.

    48. Obtener el nmero de productos, por categora. Mostrando el nombre de la

    categora, el nombre del producto, y el total de productos por categora, solamente

    de las categoras 3, 5 y 8. Ordenar por el nombre de la categora.

    select Country,COUNT(*)astotal_proveedoresfromdbo.SupplierswhereCompanyNamelike'[e-p]%'groupbyCountryhavingCOUNT(*)>2

    selectp.CategoryID,COUNT(*)astotal_productos,c.CategoryName,p.ProductNamefromdbo.Productsaspinnerjoindbo.Categoriesasconp.CategoryID=c.CategoryID

    groupbyp.CategoryID,c.CategoryName,p.ProductNamehavingp.CategoryIDin(3,5,8)orderbyc.CategoryName

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    70/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-71 -

    49. Mostrar el nmero de la orden, la fecha de la orden y el total en soles de cada

    orden.

    50. Mostrar el nombre de Producto y en cuntas rdenes de compra se encuentra.1

    selectOrderID,OrderDate,Freight=Freight*2.87

    fromdbo.Orders

    selectdistinctp.ProductName,COUNT(od.OrderID)astotal_OdCfromProductsaspinnerjoin[Order Details]asodonp.ProductID=od.ProductIDgroupbyp.ProductName

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    71/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-72 -

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    72/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-73 -

    MANIPULACIN DE TABLAS

    4.1. INSERT INTOEn los programas de mantenimiento de base de datos es frecuente requeririnstrucciones que hagan posible la insercin de registros en las tablas. Estasinstrucciones hacen uso de la clusula INSERT del lenguaje SQL. En su formams elemental, la instruccin tendr la siguiente sintaxis.

    Puede insertar datos mediante una transaccin si especifica un conjunto devalores o inserta los resultados de una instruccin SELECT. Puede crearuna tabla e insertar datos al mismo tiempo. No tiene que insertar valores entodos los campos de datos de una fila.

    La instruccin INSERT con la clusula VALUES permite agregar filas a una

    tabla. Al insertar filas, tenga en cuenta los siguientes hechos einstrucciones:

    Debe atenerse a las restricciones de destino o la transaccin INSERTfallar.

    Utilice listaColumnas para especificar las columnas en las que se va aalmacenar cada valor especificado. listaColumnas debe especificarse entreparntesis y delimitarse con comas. Si especifica valores para todas lascolumnas, listaColumnas es opcional.

    Para especificar los valores que desea insertar, utilice la clusula VALUES.Esta clusula se requiere para cada columna de la tabla o delistaColumnas. El orden y el tipo de los nuevos datos debe corresponder alorden y al tipo de las columnas de la tabla. Muchos tipos de datos tienen unformato de entrada asociado. Por ejemplo, los datos de carcter y lasfechas deben encerrarse entre comillas simples.

    SINTAXIS

    INSERT INTO "nombre_tabla" ("colonne 1", "colonne 2", ...)valorS ("valor 1", "valor 2", ...)

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    73/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-74 -

    o Identidad

    Insert into articulos(nombre,precio,stock)

    values('LaptopHP',1200,10)

    insertinto[alumnitos]values('A001','karen','estrada')

    select*

    fromalumnitos

    Insertinto [alumnitos]

    Values ('A002','juan','mendez')

    Select *

    From alumnitos

    insertinto[alumnitos]

    values('A003','ana','diaz')

    select*

    fromalumnitos

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    74/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-75 -

    4.2. UPDATEEl lenguaje SQL server permite escribir instrucciones que hagan posible que esasactualizaciones se realicen rpidamente, para ello debe emplear la sentenciaUPDATE. En su forma ms elemental Update tendr la siguiente sintaxis.

    La instruccin UPDATE permite cambiar filas individuales, grupos de filas o todaslas filas de una tabla. Al actualizar filas, tenga en cuenta los hechos e instruccionessiguientes: Especifique las filas que desea actualizar con la clusula WHERE. Especifique los nuevos valores con la clusula SET. Compruebe que los valores de entrada tienen los mismos tipos de datos

    que los definidos para las columnas. SQL Server no har actualizaciones que infrinjan alguna restriccin de

    integridad. En ese caso, no se producirn los cambios y la instruccin sedeshar.

    Slo es posible cambiar los datos de una tabla cada vez. Puede establecer una expresin en una o varias columnas o variables. Por

    ejemplo, una expresin puede ser un clculo (como price * 2) o la suma dedos columnas.

    EjemploEn el ejemplo siguiente se agrega el 10 por ciento a los precios actuales de todoslos productos de Northwind Traders.USE northwindUPDATE productsSET unitprice = (unitprice * 1.1)

    Ejemplo 1:updateProducts

    setUnitPrice=UnitPrice*0.5

    whereCategoryID='1'

    selectcount(*),MIN(UnitPrice)asmini,max(UnitPrice)asmaxi

    fromProducts

    whereCategoryID=1

    SINTAXIS

    UPDATE "nombre_tabla"SET "colonne 1" = [nuevo valor]WHERE {condition}

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    75/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-76 -

    Ejemplo 2:updateSuppliers

    setcountry='perusalem'

    wherecountry='uk'

    select*

    fromSuppliers

    Ejemplo 3:updatedbo.Categories

    setCategoryName='juguetes'

    whereCategoryID=5select*

    fromCategories

    Ejemplo 4:updateSuppliers

    setFax='0'

    whereFaxisnull

    select*

    fromSuppliers

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    76/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-77 -

    Ejemplo 5:updateEmployees

    setFirstName='Karen',LastName='Estrada'

    whereEmployeeID=6

    select*

    fromEmployees

    Ejemplo 6:updateCustomers

    setCustomerID=('UNCFNI')

    whereCustomerID=('ALFKI')

    select*

    fromCustomers

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    77/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-78 -

    4.3. DELETE FROMEsta sentencia permite eliminar registros de las tablas. La sintaxis ms simple deesta sentencia es la siguiente:

    La instruccin DELETE quita una o varias filas de una tabla o una vista medianteuna transaccin. Puede especificar las filas que elimina SQL Server si filtra la tablade destino o mediante una clusula JOIN o una subconsulta.La instruccin DELETE quita filas de las tablas. La instruccin DELETE permitequitar una o varias filas de una tabla.

    Al utilizar la instruccin DELETE, tenga en cuenta los hechos siguientes: SQL Server eliminar todas las filas de la tabla si no incluye una clusula

    WHERE en la instruccin DELETE. Cada fila eliminada se almacena en el registro de transacciones.

    Ejemplo 1:deletefromProducts

    whereDiscontinued=1

    SINTAXIS

    DELETE FROM "nombre_tabla"WHERE {condicin}

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    78/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-79 -

    Ejemplo 2:delete

    fromOrders

    whereOrderID=10255

    select*

    fromOrders

    whereOrderID=10255

    Ejemplo 3:delete

    from[Order Details]

    whereProductIDin(selectProductID

    fromProducts

    whereDiscontinued=1)

    4.4. SUBCONSULTASEs una consulta dentro de otra ms grande.

    o Consulta : Seleccionar los productos cuyos precios sean mayores al

    promedio de todos los productosselect*

    fromProducts

    whereUnitPrice>(selectAVG(UnitPrice)fromProducts)

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    79/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-80 -

    odelete

    from[Order Details]

    whereProductIDin(selectProductIDfromProducts

    whereDiscontinued=1)

    4.5. PROCEDIMIENTOS ALMACENADOS (STORE PROCEDURE)

    Un procedimiento almacenado es una coleccin con nombre de instrucciones deTransact-SQL que se almacena en el servidor. Los procedimientos almacenadosson un mtodo para encapsular tareas repetitivas. Admiten variables declaradaspor el usuario, ejecucin condicional y otras caractersticas de programacin muyeficaces.

    Para alterar o modificar un procedimiento utilizamos ALTER en reemplazo deCREATE

    EXEC Ejecuta una funcin definida por el usuario, un procedimiento de sistema, unprocedimiento almacenado definido por el usuario o un procedimiento almacenadoextendidoControla la ejecucin de una cadena de caracteres dentro de un lote deTransact-SQL

    SINTAXIS

    Create proc Nombre_Procedimiento--Declaracion de variables

    As--Cuerpo de la instruccin

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    80/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-81 -

    Create proc SPQ_PRODUCTS

    @CATE int

    as

    select *

    from Productswhere CategoryID=@CATE

    exec SPQ_PRODUCTS 2

    Ejemplo:ALTER proc SPQ_PRODUCTS

    as

    select *

    from Products

    where CategoryID=8

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    81/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-82 -

    Ejemplo:Create procedure hola

    @cod int

    as

    select *

    from Employeeswhere EmployeeID=@cod

    Exec hola 8

    Ejemplo:Alter procedure hola

    @cod int

    as

    select *from Customers

    where CustomerID=@cod

    Create proc todos_produc

    as

    select ProductID,ProductName,UnitPrice,UnitsInStock

    from dbo.Products

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    82/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-83 -

    Create proc nuevo_escrito

    @d char(8),

    @n varchar (20),

    @a varchar (25),

    @e varchar (50),

    @s char (1)

    as

    insert INto inscripcionesvalues (@d,@n,@a,@e,@s)

    exec nuevo_escrito

    '26458595','lili','calua','[email protected]','f'

    Ejemplo:Create proc precios

    @li money,

    @ls money

    as

    select *from Products

    where UnitPrice between @li and @ls

    Exec precios 15,20

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    83/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-84 -

    Las variables son elementos del lenguaje con valores asignados. En Transact-SQL se pueden utilizar variables locales.Una variable local es una variable definida por el usuario en una instruccinDECLARE; se le asigna un valor inicial en una instruccin SET o SELECT y,despus, se utiliza en la instruccin, programa por lotes o procedimiento en el quese declar. Una variable local se identifica mediante un smbolo arroba (@) queprecede a su nombre mientras que una variable global incluye dos smbolos arrobadelante de su nombre.

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    84/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-85 -

    EJERCICIOSEjemplo 1:createprocempleado_unidades

    @anioint

    as

    selectSUM(od.Quantity)astotal,e.LastName,e.FirstName,YEAR(o.OrderDate)asa

    o

    fromdbo.EmployeesaseinnerjoinOrdersasoone.EmployeeID=o.EmployeeID

    innerjoin[Order Details]asodonod.OrderID=o.OrderID

    whereYEAR(o.OrderDate)=@anio

    groupbye.LastName,e.FirstName,YEAR(o.OrderDate)

    empleado_unidades1996

    2. productos mas vendidos por ao

    alterprocmas_vendidos

    @tint,

    @anioint

    as

    selecttop

    (@t)p.ProductName,sum(od.Quantity*od.UnitPrice*2.81)asmonto_total

    fromProductsaspinnerjoin[Order

    Details]asodonp.ProductID=od.ProductIDinnerjoin

    Ordersasoono.OrderID=od.OrderID

    whereYEAR(o.OrderDate)=@anio

    groupbyp.ProductName

    orderbysum(od.Quantity*od.UnitPrice)desc

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    85/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-86 -

    mas_vendidos3,1997

    3. productos no vendidos por ao

    alterprocno_vendidos

    @anioint

    as

    selectp.ProductID,p.ProductName,YEAR(o.OrderDate)asanio

    fromProductsaspinnerjoin[Order

    Details]asodonp.ProductID=od.ProductIDinnerjoin

    Ordersasoono.OrderID=od.OrderID

    wherep.ProductIDnotin(selectProductIDfrom[Order

    Details])andyear(OrderDate)=@anio

    no_vendidos1996

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    86/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-87 -

    5. Mostrar los productos que tengan la palabra queso dentro de su nombre

    alterprocproductos

    @palnvarchar(40)

    as

    selectp.ProductName,e.FirstNamefromProductsaspinnerjoin[Order Details]asodonp.ProductID=od.ProductID

    innerjoinOrdersasoono.OrderID=od.OrderIDinnerjoinEmployeesaseone.Employee

    ID=o.EmployeeID

    wherep.ProductNamelike@pal

    productos'%queso%'

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    87/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-88 -

    6. buscar por frase la cantidad total por empleado

    alterprocproductos

    @palnvarchar(40)

    as

    selectp.ProductName,e.FirstName,e.LastName,SUM(od.Quantity)astotal_vendidos

    fromProductsaspinnerjoin[Order Details]asodonp.ProductID=od.ProductID

    innerjoinOrdersasoono.OrderID=od.OrderIDinnerjoinEmployeesaseone.Employee

    ID=o.EmployeeID

    wherep.ProductNamelike@pal

    groupbyp.ProductName,e.FirstName,e.LastName

    orderbySUM(od.Quantity)desc

    productos'%queso%'

    7. dias trnascurridos

    createprocdias_trans

    @numintas

    selectcount(OrderID)ascant_ords,datediff(day,ShippedDate,RequiredDate)asd

    ias_trans

    fromOrders

    wheredatediff(day,ShippedDate,RequiredDate)

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    88/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-89 -

    dias_trans10

    8. En un ao determinado

    alterprocdias_trans

    @numint,

    @anioint

    as

    selectcount(OrderID)ascant_ords,datediff(day,ShippedDate,RequiredDate)asd

    ias_trans

    fromOrders

    wheredatediff(day,ShippedDate,RequiredDate)

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    89/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-90 -

    dias_trans10,1997

    9. para el codigo de un alumno

    alterproc codigo

    @pat varchar(30),

    @mat varchar(30),

    @nombre varchar(30)

    as

    declare @nr as int,@cod as char(4)

    select @nr=max(substring(codigo,2,3))

    from alumnitos

    if @nrisnullset@nr=0;

    set @nr=@nr+1;if @nr

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    90/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-91 -

    Ms ejerciciosalterprocinsert_cliente

    @nomvarchar (20),

    @apevarchar (30),

    @dirvarchar (30),

    @emailvarchar (35)

    as

    declare@codchar(8)

    declare@nrint

    set@cod=left(@nom,2)+LEFT(@ape,2)

    select@nr=COUNT(*)+1

    fromdbo.clientes

    if@nr

    alterprocinsert_cliente

    @nomvarchar (20),

    @apevarchar (30),

    @dirvarchar (30),

    @emailvarchar (35)as

    declare@codchar(7)

    declare@nrint

    set@cod=left(@nom,2)+LEFT(@ape,2)

    select@nr=COUNT(*)+1

    fromdbo.clientes

    if@nr

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    91/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-92 -

    Para insertar Clientes en la tabla clientesalterprocinsert_cliente

    @nomvarchar (20),

    @apevarchar (30),

    @dirvarchar (30),@emailvarchar (35)

    as

    declare@codchar(7)

    declare@nrint

    set@cod=left(@nom,2)+LEFT(@ape,2)

    select@nr=COUNT(*)+1

    fromdbo.clientes

    whereSUBSTRING(codigo,1,4)=@cod

    if@nr

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    92/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-93 -

    values (@cod,@nom,@ape,@dir,@email)

    insert_cliente'juan','perez','dos de mayo','[email protected]'

    insert_cliente'ana','diaz','dos de mayo','[email protected]'

    select*fromdbo.clientes

    Insertar participantescreateprocinsertpat

    @nomvarchar(30),

    @apevarchar(30),

    @sexochar (1)

    as

    declare@codchar (7)

    declare@nrint

    select@nr=COUNT(*)

    fromdbo.participantes

    wheresexo=@sexo

    if@nr

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    93/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-94 -

    else

    set@cod=rtrim(@cod)+LTRIM(STR(@nr))

    insertintodbo.alumnos

    values (@cod,@nom,@ape,@fenac)

    ins_alumnos'juan','perez','03/04/1991'

    Insertar participantescreateprocinsertpat

    @nomvarchar(30),

    @apevarchar(30),

    @sexochar (1)

    as

    declare@codchar (7)

    declare@nrint

    select@nr=COUNT(*)

    fromdbo.participanteswheresexo=@sexo

    if@nr

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    94/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-95 -

    0004 para insertar Alumnos

    alterprocinsertar_alumnos

    @nvarchar (30),

    @avarchar (30)

    asdeclare@nrint

    declare@cchar(3)

    select@nr=count(*)+1

    fromalumn

    if@nr

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    95/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-96 -

    OTRAS SENTENCIAS

    5.1. SUBSTRING FUNCION

    La funcin de subcadena en SQL se utiliza para tomar una parte de los datosalmacenados. Esta funcin tiene diferentes nombres segn las diferentes bases dedatos:

    MySQL: SUBSTR(), SUBSTRING() Oracle: SUBSTR() SQL Server: SUBSTRING()

    Los usos ms frecuentes son los siguientes (utilizaremos SUBSTR() aqu):

    SUBSTR(str,pos): Selecciona todos los caracteres de comenzando conposicin . Note que esta sintaxis no es compatible en SQL Server.

    SUBSTR(str,pos,len): Comienza con el carcter en la cadena yselecciona los siguientes caracteres .

    5.2. TRIM FUNCION

    La funcin TRIM en SQL se utiliza para eliminar un prefijo o sufijo determinado deuna cadena. El patrn ms comn a eliminarse son los espacios en blanco. Estafuncin tiene diferentes nombres segn las diferentes bases de datos:

    MySQL: TRIM(), RTRIM(), LTRIM() Oracle: RTRIM(), LTRIM() SQL Server: RTRIM(), LTRIM()

    La sintaxis para estas funciones de reduccin es:

    TRIM([[LOCATION] [remstr] FROM ] str): [LOCATION] puede ser LDER,REMANENTE, o AMBAS. Esta funcin se deshace del patrn [remstr] tanto para elcomienzo de la cadena como para el final, o para ambos. Si no se especificaningn [remstr], los espacios en blanco se eliminarn.

    LTRIM(str): Elimina todos los espacios en blanco del comienzo de la cadena.

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    96/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-97 -

    RTRIM(str): Elimina todos los espacios en blanco del final de la cadena.

    Ejemplo 1 :

    SELECT TRIM(' Sample ');

    Resultado:

    'Sample'

    Ejemplo 2 :

    SELECT LTRIM(' Sample ');

    Resultado:

    'Sample '

    Ejemplo 3 :

    SELECT RTRIM(' Sample ');

    Resultado:' Sample'

    5.3. SENTENCIA CAST

    Se utiliza para convertir valores de un tipo a otro diferente, la forma de utilizarla esCAST("CAMPO" as TIPO), por ejemplo, si queremos recuperar un Integer enformato de texto, la consulta sql sera as:

    Select CAST(goles as varchar(30))from jugadoreswhere id = 100

    Este resultado nos devolveria los goleadores de menor a mayor, pero lo logico esque nos interese al reves, por lo que se sera:

    Select Jugador,golesfrom jugadoresorder by goles desc

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    97/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-98 -

    EJEMPLOSCLIENTES ALEATORIOS

    alterprocaleatorio

    as

    declare@azarint

    declare@numint

    set@num=(selectcount(EmployeeID)

    fromdbo.Employees)

    set@azar=cast(rand()*@num+1 asint)

    select*

    fromEmployees

    whereEmployeeID=@azar

    CUSTOMER AZAR

    createprocazar

    as

    selecttop1 CustomerID,CompanyName,NEWID()

    fromCustomers

    orderbyNEWID()

    o

    alterprocazar

    @numint

    as

    selecttop (@num)CustomerID,CompanyName,NEWID()

    fromCustomers

    orderbyNEWID()

    azar3

  • 5/23/2018 Manual de SQL Server 2008 Reporting Service

    98/182

    Manual de SQL Server 2008 2012

    Estrada Aguilar, Karen Johana | BASE DE DATOS II. .-99 -

    POR 5 (*5)

    SELECT randomNumber, COUNT(1) countOfRandomNumberFROM (

    SELECT ABS(CAST(NEWID() AS binary(6)) %1000) + 1 randomNumberFROM sysobjects) sample

    GROUP BY randomNumberORDER BY randomNumber