informaciÓn sql

Upload: flavio-pumallica-ccompi

Post on 04-Apr-2018

249 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/31/2019 INFORMACIN sql

    1/43Pumallica CC ompi Flavio, .1

    INFORMACIN N 3

    Hacer copia de seguridad de una base de datos existente

    Lo primero que haremos es hacer una copia de seguridad, que es la parte que en principio tiene menos problemas.

    En el Explorador de objetos (el panel que suele estar a la izquierda y en el que se muestran las bases de datos que tienes en el servidor que hayasabierto), expande la rama de Bases de datos y selecciona la base de datos de la que quieres hacer la copia de seguridad, pulsa con el botnderecho (o mejor dicho, secundario, por si eres zurdo) y del men emergente, selecciona Tareas y del submen mostrado, Copia de seguridad...tal como puedes ver en la figura 1.

    Figura 1. Hacer copia de seguridad de una base de SQL Server

    Esto te mostrar un cuadro de dilogo como el mostrado en la figura 2. Si quieres hacer la copia de seguridad en el directorio que SQLServer Express usa por defecto, simplemente puedes pulsar en el botn Aceptar para hacer la copia, pero si quieres elegir la ruta en laque se har la copia, tendrs que pulsar en el botn Agregar... con idea de que puedas elegir donde quieres guardarlo.

    Figura 2. Cuadro de dilogo para hacer la copia de seguridad

    Al pulsar en el botn Agregar, te mostrar un nuevo cuadro de dilogo (ver figura 3), desde el que podrs elegir dnde se guardar la copia deseguridad.

    Por ejemplo, en mi caso, quiero que se guarde en el disco E y en la carpeta bases, as que selecciono ese directorio (en la figura 2 se muestrareducido, pero es mucho ms alto), pero no solo vale con seleccionar el directorio, ya que hay que escribir el nombre del fichero de copia deseguridad, en mi caso, como la base de datos que estoy copiando se llama conImagenes2, el nombre que le he dado es conImagenes2.bak,aunque no es obligatorio usar ninguna extensin, pero como es un "backup", pues...

  • 7/31/2019 INFORMACIN sql

    2/43Pumallica CC ompi Flavio, .2

    Figura 3. Indicar dnde guardar la copia

    Una vez escrito el nombre de la copia de seguridad, tendremos el valor que inicialmente nos mostr el Management Studio adems del que

    nosotros hemos elegido, (ver la figura 4), como no necesitamos dos copias de seguridad, puedes borrar la indicada en el disco C (el de Archivosde programa). Para borrarla, la tendrs que seleccionar y pulsar en el botn Quitar.

    Si dejas los dos nombres, se har una copia en cada una de las ubicaciones que hayas indicado.

    Figura 4. Cuadro de dilogo de copia de seguridad con copia en dos sitios

    Si sabemos que ya existe una copia de seguridad anterior con el mismo nombre, deberamos sobrescribir la copia de seguridad, ya que pordefecto lo que se har es "anexarla" con lo cual el tamao del fichero ser ms grande, y puede que no sea lo que queramos hacer.

    En estos casos, debes pulsar en Opciones y marcar la opcin Sobrescribir todos los conjuntos de copia de seguridad existentes , tal como

    puedes ver en la figura 5.

  • 7/31/2019 INFORMACIN sql

    3/43Pumallica CC ompi Flavio, .3

    Figura 5. Sobrescribir los datos existentes en la copia de seguridad

    Ahora solo tienes que pulsar en el botn Aceptar y si todo fue bien, te mostrar una viso de que la copia de seguridad se ha realizadocorrectamente (figura 6), en caso de que no haya sido as... pues te mostrar un error, as que... tendrs que revisar los pasos anteriores o que eldisco tenga espacio, que tengas permisos suficientes para hacer la copia, etc.

    Figura 6. Si se hizo bien la copia, nos muestra este aviso

    Restaurar una base de datos

    Ahora vamos a restaurar una base de datos a partir de una copia de seguridad.

    En el Explorador de objetos, pulsa con el botn secundario sobre el elemento Bases de datos y del men desplegable, selecciona Restaurar basede datos... tal como te muestro en la figura 7.

    Figura 7. Restaurar una base de datos

  • 7/31/2019 INFORMACIN sql

    4/43Pumallica CC ompi Flavio, .4

    Si lo que vas a restaurar es una nueva base de datos, tendrs que escribir el nombre correspondiente en la caja de textos que hay junto a A unabase de datos, en mi caso, la base de datos que voy a restaurar se llama elGuilleAniversario (ver la figura 8).

    Figura 8. Cuadro de dilogo para restaurar una base de datos

    Antes de poder hacer la restauracin de la base de datos, tendrs que decirle dnde est la copia de seguridad. Para ello tendrs que marcar laopcin Desde dispositivo y pulsar en el botn para seleccionar el fichero de copia de seguridad de la base mediante un cuadro de dilogo comoel mostrado en la figura 3.

    Aunque antes te habr mostrado un cuadro de dilogo como el mostrado en la figura 9, en el que tendrs que pulsar en el botn Agregar paraque se muestre el cuadro de dilogo de seleccin de la copia de seguridad.

    Figura 9. Paso previo para indicar la ubicacin de la copia de seguridad

    Tambin tendrs que marcar la opcin Restaurar del cuadro de dilogo mostrado en la figura 8, (si no lo haces te dar un error).Finalmente pulsa en el botn Aceptar y se realizar la restauracin de la base de datos... o casi...

    El casi es porque pueden ocurrir dos cosas (o ms), una de ellas es que la base de datos ya exista, es decir, ests restaurando una base de datosque ya est en la lista de bases de datos de la instancia (o servidor) de SQL Server. En ese caso, tendrs que indicarle que sobrescriba la base de

  • 7/31/2019 INFORMACIN sql

    5/43Pumallica CC ompi Flavio, .5

    datos existente. Para indicarlo, en el cuadro de dilogo (figura 8), tendrs que pulsar en Opciones y seleccionar la opcin Sobrescribir la basede datos existente (ver la figura 11).

    Otro problema que puede ocurrir es que la ubicacin en la que estaba la base de datos que se quiere restaurar estuviera en otro directoriodiferente, y por supuesto que no exista en tu equipo.

    En ese caso, te mostrar un mensaje de error como el de la figura 10.

    Figura 10. Error al restaurar en una ubicacin diferente a la original

    Si este es el caso, pulsa en Opciones, y en la lista central vers que puedes indicar dnde debe restaurarse la base de datos (ver la figura 11).

    Para indicar el directorio, puedes usar el botn o bien escribir directamente la ubicacin.

    Si pulsas en el botn para seleccionar el directorio de destino, el cuadro de dilogo de seleccin (como el de la figura 3) no te mostrarseleccionado ningn directorio, algo lgico, ya que esa ubicacin no existe.

    El destino puede ser cualquier carpeta, aunque lo recomendable es que sea la de datos de SQL Server, que en el caso de mi equipo que tiene laversin en espaol de Windows XP, es el directorio C:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\Data, aunque esedirectorio puede ser diferente, pero normalmente estar en la carpeta de instalacin de SQL Server.

    Adems de la ubicacin del fichero _Data, tendrs que indicar el del fichero _Log.

    Figura 11. Opciones extras para restaurar una base de datos

    Una vez que has indicado la ubicacin correcta, al pulsar en Aceptar, restaurar la base de datos y te avisar de que todo se hizo de formacorrecta con un aviso como el mostrado en la figura 12.

    Figura 12. Aviso de que se restaur correctamente la base de datos

  • 7/31/2019 INFORMACIN sql

    6/43Pumallica CC ompi Flavio, .6

    SEPARAR BASE DE DATOS

    Modo cdigo:

    EXEC master.dbo.sp_detach_db @dbname = alquiler,@keepfulltextindexfile = N'true'

    Conectar y Desconectar la base de datos

    Una vez hemos creado la base de datos o la hemos adjuntado a nuestro servidor, nos daremos cuenta de que no podremos manipular los archivosde la base desde fuera del gestor SSMS, por ejemplo, desde el Explorador de Windows. Es decir, no podremos copiar, cortar, mover o eliminar

    los archivos fuente mdf, ndf y ldf. Si lo intentamos se mostrar un aviso de que la base de datos est en uso.

    sto es as porque SQL Server sigue en marcha, a pesar de que se cierre el gestor. Ten en cuenta que el servidor de base de datos normalmente secrea para que sirva informacin a diferentes programas, por eso sera absurdo que dejara de funcionar cuando cerramos el programa gestor, queslo se utiliza para realizar modificaciones sobre la base.

    Para poder realizar acciones sobre la base de datos, sta debe estar desconectada. Para ello, desde el SSMS, desplegamos el men contextual dela base de datos que nos interese manipular y seleccionaremos la opcin Poner fuera de conexin:

    Aparecer un smbolo a la izquierda de la base de datos indicndonos que la base de datos est desconectada, a partir de este momentoWindows nos dejar manipular los archivos.

    ADJUNTAR BASE DE DATOS

    En ocasiones no necesitaremos crear la base de datos desde cero, porque sta ya estar creada. ste es el caso de los ejercicios del curso. Para

    realizarlos, debers adjuntar una base de datos ya existente a tu servidor. Para ello, lo que tenemos que hacer es pegar los archivos en laubicacin que queramos, y luego indicar al SQL Server que vamos a utilizar esta base de datos, de la siguiente manera:En el Explorador de objetos, sobre la carpetaBases de datos desplegar el men contextual y elegir Adjuntar...

  • 7/31/2019 INFORMACIN sql

    7/43Pumallica CC ompi Flavio, .7

    En la siguiente ventana elegimos la base de datos:

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

    este archivo.

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

  • 7/31/2019 INFORMACIN sql

    8/43Pumallica CC ompi Flavio, .8

    LABORATORI N3

    BASES DE DATOS MS SQL SERVER

    SQL(StructureQueryLanguage): Es un lenguaje de manejo de datos creados por IBM, como una herramienta para facilitar el acceso delos usuarios a los datos almacenados en las computadoras centrales.

    Este lenguaje fue adoptado por otros fabricantes, por lo que fue necesario crear un estndar , crendose el estndar SQL ANSI.

    En la actualidad existen muchos productos basados en este estndar ejemplo PL/SQL de Oracle, SQL Server de Microsoft, System 11 de Sybase,etc. En el caso de Microsoft, emplea el lenguaje que ellos lo llaman Transact SQL.

    QUE ES UNA BASE DE DATOS

    Una base de datos es una coleccin de datos(con significado) agrupados y ordenados bajo similares caractersticas.SQL Server utiliza un tipo de base de datos denominada Base de Datos Relacional.(Una base de Datos relacional es una Matriz Relacional).

    OBJETOS DE UNA BASE DE DATOS SQL SERVER

    Una base de datos relacional est compuesta por diferentes tipos de datos; el SQL Server entra algunos de esos objetos que manejan estn lossiguientes:

    TABLAS: Estos objetos contienen a los datos de la base de datos. Estos datos estn agrupados en filas y en columnas.(Cada filarepresenta un registro nico y cada columna es un campo dentro de un registro) . COLUMNAS: Son las partes de la tabla que almacenan los datos. A una columna se le asigna un tipo de dato y un nombre nico. TIPOS DE DATOS: Existen varios tipos de datos a elegir como carcter, numrico, etc. A una columna en una tabla se le asigna soloun tipo de dato. CLAVES PRINCIPALES: Estas garantizan que cada fila sea nica en cada tabla, proporcionando una forma de identificar demanera nica a cada elemento que se almacena. CLAVES FORNEAS: Son columnas que hacen referencia a claves principales o restricciones nicas de otras tablas. RESTRICCIONES: Son mecanismos de integridad de datos implementados por el sistema con base en el servidor. DISPARADORES: Son procedimientos almacenados que se activan cuando se agregan, modifica o elimina datos de una base dedatos. INDICES: Pueden ayudar a organizar los datos a efecto de que las consultas se ejecuten con mayor rapidez. VISTAS: Bsicamente las vistas son consultas almacenadas en la base de datos que pueden hacer referencia a una o varias tablas. PROCEDIMIENTOS ALMACENADOS: Sentencias Transact almacenadas en la base de datos; listas para ser usados las cualesaceleran la respuesta en el servidor. FUNCIONES DEFINIDAS POR EL USUARIO: Son funciones creadas por cualquier usuario, las mismas que nos amplan lacapacidad del lenguaje. TIPOS DE DATOS DEFINIDOS POR EL USUARIO REGLAS. VALORES PREDETERMINADOS. USUARIOS.LAS BASES DE DATOS DEL SISTEMA

    Cuando se instala el SQL Server, se crean 5 bases de datos del sistema, 2 bases de datos de usuarios y 2 bases de datos del Report Server.Las bases de datos del sistema contienen las tablas del sistema, las que a su vez contienen metadatos. (datos de los datos).

    Master (sistema): Es la principal base de datos del sistema. Controla a los usuarios y las operaciones sobre el servidor manteniendodatos como cuentas de usuarios, etc. Model (sistema): Proporciona una plantilla o modelo para cualquier base de datos nueva. Cuando se crea una base de datos, todo elcontenido de la model se copia a la nueva base de datos. Msdb(sistema): Almacena toda la data que emplea el SQL Server Agent para programar alertas y trabajos, y para registraroperadores.

    Tempdb (sistema): Para almacenamiento de tablas temporales.Obteniendo en cada paso de normalizacin.

    CREACIN DE BASE DE DATOS (Lenguaje de Definicin de datos DDL)

    Comandos que permiten definir la base de datos.

    Comando DescripcinCREATE Utilizado para crear nuevas Base de Datos, tablas, campos e ndices.DROP Empleado para eliminar Base de Datos, tablas e ndices.ALTER Utilizado para modificar las Base de Datos, tablas agregando la configuracin, campos o cambiando la

    definicin de los campos.

    PracticaCrear la base de datos Biblioteca mediante cdigo EL LENGUAJE DE DEFINICIN DE DATOS (DDL)

    Posteriormente crear las tablas del sistema de Biblioteca.1. Crear la siguiente base de datos con sus respectivas tablas en el lenguaje de definicin de datos DDL.2. Insertar 20 registros a cada una de las tablas creadas en la Base de Datos Biblioteca

  • 7/31/2019 INFORMACIN sql

    9/43Pumallica CC ompi Flavio, .9

    Base de datos Biblioteca

    CREATEDATABASE BIBLIOTECAUSE BIBLIOTECA

    CREATETABLE DISTRITO(Cod_Distrito char(2)primarykeynotnull,Nom_Distrito varchar(30)notnull)

    CREATETABLE ESPECIALIDAD(

    Cod_Especialidadchar(2)primarykeynotnull,Nom_Especialidad varchar(30)notnull)

    CREATETABLE USUARIO(Cod_Alumno char(4)primarykeynotnull,Nombre varchar(30)null,Ape_Paterno varchar(30)notnull,Ape_Materno varchar(30)null,DNI varchar(8)null,Telefono varchar(9)null,Fecha_Naci datetimenotnull,Direccion varchar(30)notnull,Cod_Distrito char(2)references Distrito notnull,Cod_Especialidadchar(2)references Especialidad notnull)

    CREATETABLE TIPO(Cod_Tipo char(2)primarykeynotnull,Nom_Tipo varchar(30)notnull)

    CREATETABLE LIBRO(Cod_Libro char(4)primarykeynotnull,Titulo varchar(30)notnull,

    Autor varchar(30)notnull,Editorial varchar(30)null,Stock decimal(10)notnull,Stoack decimal(10)null,Tema varchar(30)notnull,Cod_Tipo char(2)references Tipo notnull,Cod_Especialidadchar(2)references Especialidad notnull)

    CREATETABLE PRESTAMO(Cod_Prestamo char(4)primarykeynotnull,Fecha_Prestamo datetimenotnull,Cod_Alumno char(4)references Usuario notnull,Cod_Libro char(4)references Libro notnull)

    INSERTINTO DISTRITO VALUES('01','Lima')INSERTINTO DISTRITO VALUES('02','Villa el Salvador')INSERTINTO DISTRITO VALUES('03','Lince')INSERTINTO DISTRITO VALUES('04','Villa Maria')INSERTINTO DISTRITO VALUES('05','Victoria')INSERTINTO DISTRITO VALUES('06','Molina')INSERTINTO DISTRITO VALUES('07','Lurin')INSERTINTO DISTRITO VALUES('08','Chorrillos')INSERTINTO DISTRITO VALUES('09','Ate')INSERTINTO DISTRITO VALUES('10','San Borja')

    INSERTINTO ESPECIALIDAD VALUES('01','computacion')INSERTINTO ESPECIALIDAD VALUES('02','Farmacia')INSERTINTO ESPECIALIDAD VALUES('03','Enfermeria')INSERTINTO ESPECIALIDAD VALUES('04','Secretaria')INSERTINTO ESPECIALIDAD VALUES('05','Mecanica')

    INSERTINTO ESPECIALIDAD VALUES('06','Electrotecnica')INSERTINTO ESPECIALIDAD VALUES('07','Cosmetologia')INSERTINTO ESPECIALIDAD VALUES('08','Contabilidad')INSERTINTO ESPECIALIDAD VALUES('09','Administracion')INSERTINTO ESPECIALIDAD VALUES('10','mmmmmmmmmm')

    INSERTINTO TIPO VALUES('01','literatura')INSERTINTO TIPO VALUES('02','PROGRAMACION')INSERTINTO TIPO VALUES('03','BASE DE DATOS')INSERTINTO TIPO VALUES('04','CORELDRAW')INSERTINTO TIPO VALUES('05','jAVA')INSERTINTO TIPO VALUES('06','INVESTIGACION')INSERTINTO TIPO VALUES('07','COKITO')INSERTINTO TIPO VALUES('08','CONDORITO')INSERTINTO TIPO VALUES('09','MECANICA')INSERTINTO TIPO VALUES('10','INGLES')

    INSERTINTO USUARIO VALUES('0001','FLAVIO ','PUMALLICA','CCompi','45852365','975191075','12/05/1980','AV ANGAMOS','05','05')INSERTINTO USUARIO VALUES('0002','Judith ','condor','CCompi','45852545','975192145','12/05/1990','AV ANGAMOS','02','05')INSERTINTO USUARIO VALUES('0003','Maria ','corman','Condori','','975141075','12/08/1980','AV AlosS','08','05')

    INSERTINTO USUARIO VALUES('0004','Lolo ','Quispe','','45587365','975191045','11/05/1980','AV ANGAMOS','01','09')INSERTINTO USUARIO VALUES('0005','Jely ','Elias','ccccc','54852365','954211075','05/01/1970','AV ceresa','04','05')INSERTINTO USUARIO VALUES('0006','Rosa ','Quispe','Ccubo','45852341','974511075','02/05/1984','AV ANGAMOS','08','05')INSERTINTO USUARIO VALUES('0007','Nando ','Condori','Huaman','45252365','956981075','08/05/1980','AV ANGAMOS','09','04')INSERTINTO USUARIO VALUES('0008','Kely ','Lopes','Ortega','45124565','971121075','10/01/1985','AV CCOS','10','05')INSERTINTO USUARIO VALUES('0009','Rony ','Diaz','Quispe','45854815','972191075','05/05/1985','AV ANgol','09','07')

    INSERTINTO LIBRO VALUES('0001','FLAVIO ','PUMALLICA','CCompi','65','5','AV ANGAMOS','05','05')INSERTINTO LIBRO VALUES('0002','Judith ','condor','CCompi','45','45','AV ANGAMOS','02','05')INSERTINTO LIBRO VALUES('0003','Maria ','corman','Condori','45','5','AV AlosS','08','05')INSERTINTO LIBRO VALUES('0004','Lolo ','Quispe','SSS','5','45','AV ANGAMOS','01','09')INSERTINTO LIBRO VALUES('0005','Jely ','Elias','ccccc','25','95','AV ceresa','04','05')INSERTINTO LIBRO VALUES('0006','Rosa ','Quispe','Ccubo','1','75','AV ANGAMOS','08','05')INSERTINTO LIBRO VALUES('0007','Nando ','Condori','Huaman','45','95','AV ANGAMOS','09','04')INSERTINTO LIBRO VALUES('0008','Kely ','Lopes','Ortega','45','75','AV CCOS','10','05')INSERTINTO LIBRO VALUES('0009','Rony ','Diaz','Quispe','15','5','AV ANgol','09','07')INSERTINTO LIBRO VALUES('0010','Ivan ','Tallo','Hung','5','5','AV ANGALO','06','01')INSERTINTO LIBRO VALUES('0011','Ivan ','Tilza','Hung','20','8','AV ANGALO','06','08')

    INSERTINTO PRESTAMO VALUES('0001','12/04/1995 ','0002','0003')INSERTINTO PRESTAMO VALUES('0002','11/02/1995 ','0004','0002')INSERTINTO PRESTAMO VALUES('0003','12/11/1997 ','0002','0007')INSERTINTO PRESTAMO VALUES('0004','08/02/1999 ','0002','0003')INSERTINTO PRESTAMO VALUES('0005','12/07/1994 ','0008','0009')INSERTINTO PRESTAMO VALUES('0006','05/02/1997 ','0003','0002')INSERTINTO PRESTAMO VALUES('0007','01/02/1993 ','0007','0005')INSERTINTO PRESTAMO VALUES('0008','12/08/1991 ','0009','0001')

    INSERTINTO PRESTAMO VALUES('0009','12/09/1990 ','0003','0010')INSERTINTO PRESTAMO VALUES('0010','15/02/2000 ','0002','0001')

    SELECT*FROM DISTRITOSELECT*FROM USUARIOSELECT*FROM ESPECIALIDADSELECT*FROM LIBRO

    SELECT*FROM PRESTAMO

  • 7/31/2019 INFORMACIN sql

    10/43Pumallica CC ompi Flavio, .10

    INFORMACINN 4

    BASE DE DATOS BIBLIOTECA

    LA SENTENCIA SELECT Y LA CLUSULA FROM

    La sentencia SELECT "selecciona" los campos que conformarn la consulta, es decir, que establece los campos que se visualizarn ocompondrn la consulta. El parmetro 'lista_campo' est compuesto por uno o ms nombres de campos, separados por comas, pudindoseespecificar tambin el nombre de la tabla a la cual pertenecen, seguido de un punto y del nombre del campo correspondiente. Si el nombre delcampo o de la tabla est compuesto de ms de una palabra, este nombre ha de escribirse entre corchetes ([nombre]). Si se desea seleccionar todoslos campos de una tabla, se puede utilizar el asterisco (*) para indicarlo.Una sentencia SELECT no puede escribirse sin la clusula FROM. Una clusula es una extensin de un mandato que complementa a unasentencia o instruccin, pudiendo complementar tambin a otras sentencias. Es, por decirlo as, un accesorio imprescindible en una determinada

    mquina, que puede tambin acoplarse a otras mquinas. En este caso, la clusula FROM permite indicar en qu tablas o en qu consultas seencuentran los campos especificados en la sentencias SELECT. Estas tablas o consultas se separan por medio de comas (,), y, si sus nombresestn compuestos por ms de una palabra, stos se escriben entreCorchetes ([nombre]).

    He aqu algunos ejemplos de mandatos SQL en la estructura SELECT...FROM...:

    Selecciona todos los campos de la tabla 'usuario'SELECT*FROM usuario

    Selecciona los campos 'nombre' y 'apellidos' de la tabla 'usuario'.SELECT nom_alumno,ape_pat,ape_mat FROM usuario

    Selecciona todos los campos de la tabla 'especialidad'.SELECT*FROM especialidad

    Selecciona los campos 'nombre', 'apellidos' y 'telefono' de la tabla 'clientes'. De esta manera obtenemos una agendatelefnica de nuestros clientes.SELECT nombre,ape_pat,ape_mat,telefono FROM usuario

    Selecciona el campo cod_especialidad de la tabla especialidad.SELECT cod_especialidad FROM especialidad

    CLASULA WHERE

    La clusula WHERE es opcional, y permite seleccionar qu registros aparecern en la consulta (si no se especifica aparecern todos losregistros). Para indicar este conjunto de registros se hace uso de criterios o condiciones, que no es ms que una comparacin del contenido de uncampo con un determinado valor (este valor puede ser constante (valor predeterminado), el contenido de un campo, una variable, un control,etc.).

    He aqu algunos ejemplos que ilustran el uso de esta clusula:

    Selecciona todos los campos de la tabla 'usuarios', pero los registros de todos aquellos usuarios que se llamen 'JUAN'.SELECT*FROM usuario WHERE nom_alumno='JUAN'Selecciona todos los campos de la tabla 'libro', pero los registros de todos los libros cuya especialidad sea 'computacion einformatica', 'contabilidad' o 'administracion'.

    SELECT*FROM libro WHERE cod_especialidad='02'OR cod_especialidad='03'OR cod_especialidad='01'

  • 7/31/2019 INFORMACIN sql

    11/43Pumallica CC ompi Flavio, .11

    Selecciona los campos 'nombre' y 'apellidos' de la tabla usuario, escogiendo a aquellos usuarios que sean de villa elsalvador

    SELECT nom_alumno,ape_pat,ape_mat FROM usuario WHERE cod_distrito='01'

    Selecciona todos los libros cuyo stock sea mayor que 5.SELECT*FROM libro WHERE stock>5

    Selecciona todos los libros con stock comprendidos entre los 4 y los 7.SELECT*FROM libro WHERE stock BETWEEN 4AND 7

    Selecciona los alumnos nacidos del 1 de Julio de 1983 al 1 de julio 1985.SELECT*FROM usuario WHERE fec_nac>='01/07/1983'and fec_nac=07 andmonth(fec_nac)

  • 7/31/2019 INFORMACIN sql

    12/43Pumallica CC ompi Flavio, .12

    ARITMTICA CON SQLQuin no ha echado en falta el saber el total de ingresos o de gastos de esta fecha a esta otra?. Quin no ha deseado saber la media de ventas delos comerciales en este mes?. Tranquilos!: el lenguaje SQL nos permitir resolver estas y otras cuestiones de forma muy sencilla, ya que poseeuna serie de funciones de carcter aritmtico:

    SUMAS O TOTALES

    Para sumar las cantidades numricas contenidas en un determinado campo, hemos de utilizar la funcin SUM, cuya sintaxis es la siguiente:SUM(expresin)donde 'expresin' puede representar un campo o una operacin con algn campo.

    La funcin SUM retorna el resultado de la suma de la expresin indicada en todos los registros que son afectados por la consulta. Veamos

    algunos ejemplos:

    Retorna el total de libros (la suma de todos los valores almacenados en el campo stock de la tabla libro).SELECTSUM(stock)FROM libro

    Retorna la suma de todos los libros de la especialidad de computacin.SELECTSUM(stock)FROM libro WHERE cod_especialidad='02'

    VALORES MNIMOS Y MXIMOSTambin es posible conocer el valor mnimo o mximo de un campo, mediante las funciones MIN y MAX, cuyas sintaxis son las

    siguientes:

    MIN(expresin)

    MAX(expresin)

    He aqu algunos ejemplos:

    Retorna el libro que hay menos en stock.SELECTMIN(stock)FROM libro

    Retorna el libro que hay Mas en stock que sea de la especialidad de computacin.SELECTMAX(stock)FROM libro WHERE cod_especialidad='02'

    REEMPLAZAR DATOS

    Imaginemos por un momento que el precio de los productos ha subido un 10%, y que tenemos que actualizar nuestra tabla de productos con elnuevo importe. La solucin ms primitiva sera acceder a la tabla y, el precio de cada prodcuto multiplicarlo por 1.1 y reemplazarlo a mano. Con

    diez productos, la inversin de tiempo podra llegar al cuarto de hora, y no estaremos exentos de fallos al tipear el importe o al realizar el clculoen la calculadora. Si la tabla de productos superase la cantidad de 100 productos (algo muy probable y fcil de cumplir), la cosa ya no es unapequea molestia y un poco de tiempo perdido.

    El lenguaje SQL nos permite solucionar este problema en cuestin de pocos segundos, ya que posee una sentencia llamada Update, que se ocupade los clculos y reemplazos. Su sintaxis es la siguiente:

    UPDATE lista_tablas SET campo=nuevo_valor [,campo=nuevo_valor] [WHERE...]dondelista_tablasrepresenta el nombre de las tablas donde se realizarn las sustituciones o reemplazos. El parmetro campo indica el campo quese va a modificar, y el parmetro nuevo_valorrespresenta una expresin (constante, valor directo, un clculo, etc.) cuyo resultado o valor ser elnuevo valor del campo.

    Modifica el campo sexo a masculino todos los usuarios que sea de la especialidad de contabilidad.UPDATE usuario SET sexo=M WHERE cod_especialidad=03

    Modifica el campo stock y stoack a 7 a todos los libros de la especialidad de contabilidad.UPDATE libro SET stock=7, stoack=7 WHERE cod_especialidad=03

    Insertar Registros: Inserta un nuevo registro en la tabla Distrito y llena todos sus campos.InsertInto DistritoValues(11,LA VICTORIA)

    Inserta un nuevo registro en la tabla usuario y llena determinados campos, los indicados en las parntesis antes de laCLAUSULA VALUES.InsertInto Usuario(cod_alumno,nom_alumno,ape_pat, ape_mat, cod_distrito, cod_especialidad)Values(0020,MARIO,CANTA,CARREO,02,02)

  • 7/31/2019 INFORMACIN sql

    13/43Pumallica CC ompi Flavio, .13

    LABORATORION 4

    BASE DE DATOS BIBLIOTECA

    -calse n4CREATEDATABASE BIBLIOTECA

    USE BIBLIOTECA

    CREATETABLE DISTRITO(Cod_Distrito char(2)primarykeynotnull,Nom_Distrito varchar(30)notnull)

    CREATETABLE ESPECIALIDAD(Cod_Especialidad char(2)primarykeynotnull,Nom_Especialidad varchar(30)notnull)

    CREATETABLE USUARIO(Cod_Alumno char(4)primarykeynotnull,Nombre varchar(30)null,Ape_Paterno varchar(30)notnull,Ape_Materno varchar(30)null,DNI varchar(8)null,Telefono varchar(9)null,Fecha_Naci datetimenotnull,Direccion varchar(30)notnull,

    Cod_Distrito char(2)references Distrito notnull,Cod_Especialidad char(2)references Especialidad notnull

    )

    CREATETABLE TIPO(Cod_Tipo char(2)primarykeynotnull,Nom_Tipo varchar(30)notnull)

    CREATETABLE LIBRO(Cod_Libro char(4)primarykeynotnull,Titulo varchar(30)notnull,

    Autor varchar(30)notnull,Editorial varchar(30)null,Stock decimal(10)notnull,Stoack decimal(10)null,Tema varchar(30)notnull,Cod_Tipo char(2)references Tipo notnull,Cod_Especialidad char(2)references Especialidad notnull)

    CREATETABLE PRESTAMO(Cod_Prestamo char(4)primarykeynotnull,Fecha_Prestamo datetimenotnull,Cod_Alumno char(4)references Usuario notnull,Cod_Libro char(4)references Libro notnull

    )

    INSERTINTO DISTRITO VALUES('01','Lima')INSERTINTO DISTRITO VALUES('02','Villa el Salvador')INSERTINTO DISTRITO VALUES('03','Lince')INSERTINTO DISTRITO VALUES('04','Villa Maria')INSERTINTO DISTRITO VALUES('05','Victoria')INSERTINTO DISTRITO VALUES('06','Molina')INSERTINTO DISTRITO VALUES('07','Lurin')INSERTINTO DISTRITO VALUES('08','Chorrillos')INSERTINTO DISTRITO VALUES('09','Ate')INSERTINTO DISTRITO VALUES('10','San Borja')

    INSERTINTO ESPECIALIDAD VALUES('01','computacion')INSERTINTO ESPECIALIDAD VALUES('02','Farmacia')INSERTINTO ESPECIALIDAD VALUES('03','Enfermeria')INSERTINTO ESPECIALIDAD VALUES('04','Secretaria')INSERTINTO ESPECIALIDAD VALUES('05','Mecanica')INSERTINTO ESPECIALIDAD VALUES('06','Electrotecnica')INSERTINTO ESPECIALIDAD VALUES('07','Cosmetologia')INSERTINTO ESPECIALIDAD VALUES('08','Contabilidad')INSERTINTO ESPECIALIDAD VALUES('09','Administracion')INSERTINTO ESPECIALIDAD VALUES('10','mmmmmmmmmmm')

    INSERTINTO USUARIO VALUES('0001','FLAVIO ','PUMALLICA','CCompi','45852365','975191075','12/05/1980','AV ANGAMOS','05','05')INSERTINTO USUARIO VALUES('0002','Judith ','condor','CCompi','45852545','975192145','12/05/1990','AV ANGAMOS','02','05')

    INSERTINTO USUARIO VALUES('0003','Maria ','corman','Condori','','975141075','12/08/1980','AV AlosS','08','05')INSERTINTO USUARIO VALUES('0004','Lolo ','Quispe','','45587365','975191045','11/05/1980','AV ANGAMOS','01','09')INSERTINTO USUARIO VALUES('0005','Jely ','Elias','ccccc','54852365','954211075','05/01/1970','AV ceresa','04','05')INSERTINTO USUARIO VALUES('0006','Rosa ','Quispe','Ccubo','45852341','974511075','02/05/1984','AV ANGAMOS','08','05')INSERTINTO USUARIO VALUES('0007','Nando ','Condori','Huaman','45252365','956981075','08/05/1980','AV ANGAMOS','09','04')INSERTINTO USUARIO VALUES('0008','Kely ','Lopes','Ortega','45124565','971121075','10/01/1985','AV CCOS','10','05')INSERTINTO USUARIO VALUES('0009','Rony ','Diaz','Quispe','45854815','972191075','05/05/1985','AV ANgol','09','07')INSERTINTO USUARIO VALUES('0010','Ivan ','Tallo','Hung','451452065','912191075','12/08/1989','AV ANGALO','06','01')

  • 7/31/2019 INFORMACIN sql

    14/43Pumallica CC ompi Flavio, .14

    INSERTINTO TIPO VALUES('01','literatura')INSERTINTO TIPO VALUES('02','PROGRAMACION')INSERTINTO TIPO VALUES('03','BASE DE DATOS')INSERTINTO TIPO VALUES('04','CORELDRAW')INSERTINTO TIPO VALUES('05','jAVA')INSERTINTO TIPO VALUES('06','INVESTIGACION')INSERTINTO TIPO VALUES('07','COKITO')INSERTINTO TIPO VALUES('08','CONDORITO')INSERTINTO TIPO VALUES('09','MECANICA')INSERTINTO TIPO VALUES('10','INGLES')

    INSERTINTO LIBRO VALUES('0001','FLAVIO ','PUMALLICA','CCompi','65','5','AV ANGAMOS','05','05')

    INSERTINTO LIBRO VALUES('0002','Judith ','condor','CCompi','45','45','AV ANGAMOS','02','05')INSERTINTO LIBRO VALUES('0003','Maria ','corman','Condori','45','5','AV AlosS','08','05')INSERTINTO LIBRO VALUES('0004','Lolo ','Quispe','SSS','5','45','AV ANGAMOS','01','09')INSERTINTO LIBRO VALUES('0005','Jely ','Elias','ccccc','25','95','AV ceresa','04','05')INSERTINTO LIBRO VALUES('0006','Rosa ','Quispe','Ccubo','1','75','AV ANGAMOS','08','05')INSERTINTO LIBRO VALUES('0007','Nando ','Condori','Huaman','45','95','AV ANGAMOS','09','04')INSERTINTO LIBRO VALUES('0008','Kely ','Lopes','Ortega','45','75','AV CCOS','10','05')INSERTINTO LIBRO VALUES('0009','Rony ','Diaz','Quispe','15','5','AV ANgol','09','07')INSERTINTO LIBRO VALUES('0010','Ivan ','Tallo','Hung','5','5','AV ANGALO','06','01')INSERTINTO LIBRO VALUES('0011','Ivan ','Tilza','Hung','20','8','AV ANGALO','06','08')

    INSERTINTO PRESTAMO VALUES('0001','12/04/1995 ','0002','0003')INSERTINTO PRESTAMO VALUES('0002','11/02/1995 ','0004','0002')INSERTINTO PRESTAMO VALUES('0003','12/11/1997 ','0002','0007')INSERTINTO PRESTAMO VALUES('0004','08/02/1999 ','0002','0003')INSERTINTO PRESTAMO VALUES('0005','12/07/1994 ','0008','0009')

    INSERTINTO PRESTAMO VALUES('0006','05/02/1997 ','0003','0002')INSERTINTO PRESTAMO VALUES('0007','01/02/1993 ','0007','0005')INSERTINTO PRESTAMO VALUES('0008','12/08/1991 ','0009','0001')INSERTINTO PRESTAMO VALUES('0009','12/09/1990 ','0003','0010')INSERTINTO PRESTAMO VALUES('0010','15/02/2000 ','0002','0001')

    SELECT*FROM DISTRITOSELECT*FROM USUARIOSELECT*FROM ESPECIALIDADSELECT*FROM LIBROSELECT*FROM PRESTAMO

    1. Selecciona todos los campos de la tabla 'usuarios', pero los registros de todosaquellos usuarios que se llamen 'JUAN'.SELECT*FROM USUARIO WHERE Nombre='MARIA'SELECTDISTINCT Nombre ='FLAVIO','MARIA'FROM USUARIO

    2. Selecciona todos los campos de la tabla 'libro', pero los registros de todos loslibros cuya especialidad sea 'computacin e informtica','contabilidad' o

    'administracin'.SELECT*FROM LIBRO WHERE Cod_Especialidad IN( 01 , 08, 09)

    3. Selecciona los campos 'nombre' y 'apellidos' de la tabla usuario, escogiendo aaquellos usuarios que sean de villa el salvador.SELECT*FROM LIBRO WHERECod_Especialidad ='01'IN Cod_Especialidad ='08'OR Cod_Especialidad ='09'4. Selecciona todos los libros con stock comprendidos entre los 4 y los 7 ordenadospor ttulo.SELECT*FROM LIBRO WHERE Stock BETWEEN 4 AND 75. Selecciona los usuarios nacidos del 1 de Julio de 1983 al 1 de julio 1985 y seandel distrito de villa mara.

    SELECT*FROM USUARIO WHERE Fecha_Naci>='01/07/1983'AND Fecha_Naci

  • 7/31/2019 INFORMACIN sql

    15/43Pumallica CC ompi Flavio, .15

    13. Selecciona el mximo stock de los libros.SELECTMax(Stock)AS Promedio FROM LIBRO14. Selecciona el mnimo stock de los libros de la especialidad de administracin.SELECTMin(Stock)AS Promedio FROM LIBRO WHERE Cod_Especialidad='09'15. Selecciona todos los libros prestados en el mes de enero a febrero del 2005.SELECT*FROM PRESTAMO WHEREmonth(Fecha_Prestamo)=01 ANDmonth(Fecha_Prestamo)=02 andyear(Fecha_Prestamo)=200516. Selecciona todos los libros cuyo tipo sea separata.SELECT*FROM LIBRO WHERE Cod_Tipo ='07'17. Selecciona todos los prestamos efectuados al cliente con cdigo 1001 en el mes de

    octubre del 2005.SELECT*FROM PRESTAMO WHERE Cod_Alumno ='0005'andmonth(Fecha_Prestamo)=10 andyear(Fecha_Prestamo)=200518. Selecciona los usuarios que hayan nacido en el ao 2005 en el distrito de villael salvador.SELECT*FROM USUARIO WHEREyear(Fecha_Naci)=2005 AND Cod_Distrito='02'19. Selecciona los alumnos cuyo nombre comience con los caracteres 'AL' y el apellidocontenga la letra N.SELECT*FROM USUARIO WHERE Nombre LIKE'Al%'and Ape_Paterno LIKE'%n%'20. Relacin de usuarios ordenados desde el menor a mayor.SELECT*FROM USUARIO ORDERBY Fecha_Naci DESC

    LABORATORIO N 4.1Lenguaje de manipulacin de datos (DML).

    Como ya hemos comentado el lenguaje de manipulacin de datos que permite gestionar la informacinde las bases de datos. Las sentencias principales de este lenguaje son:

    SELECT INSERT UPDATE DELETEEn esta unidad comenzaremos explicando la sentencia INSERT que nos permite aadir registros anuestras tablas, de modo que luego podamos realizar nuestros ejemplos de la sentencia SELECT conlos registros que vamos a aadir.

    Insertando registros.

    La sentencia INSERT se utiliza para aadir nuevos registros a las tablas. Su sintaxises la siguiente:INSERTINTO nombre_tabla(columna1, columna2,..., columnaN)VALUES(valor1, valor2,..., valorN)

  • 7/31/2019 INFORMACIN sql

    16/43Pumallica CC ompi Flavio, .16

    En la sintaxis vemos que introducimos el nombre de la tabla en la que vamos a aadir las siguientesvalores para las columnas que especificamos entre parntesis. La lista de valores que vamos aintroducir se coloca entre parntesis despus de la sentencia VALUES. El orden debe corresponder conel de las columnas. En caso de introducir un valor no vlido en alguna de las columnas se produce unerror y el registro no se aade.

    Vamos a aadir dos vehculos a nuestra tabla Vehculos:

    En la segunda sentencia no hemos introducido las columnas en las que vamos a incluir los datos, yaque si vamos a aadir valores para todas las columnas de un registro, no es necesario indicar lascolumnas.

    Observa que los valores de cadena se introducen con comilla simple y no dobles.

    Debes recordar que si una columna es auto incremental no debemos especificar el valor aqu tampoco.

    Si todo ha ido correctamente, SQL Server nos indica el nmero de columnas que se han vistoafectadas:

    Vamos a aadir los registros para nuestro ejemplo:

    Oficinas y Empleados:

  • 7/31/2019 INFORMACIN sql

    17/43Pumallica CC ompi Flavio, .17

    Reservas:

  • 7/31/2019 INFORMACIN sql

    18/43Pumallica CC ompi Flavio, .18

    Recuperacin de registros.

    La sentencia SELECT permite obtener la informacin almacenada en nuestras tablas. Su sintaxisgeneral es la siguiente:

    SELECT FROM tablas

    Despus de la sentencia SELECT se introducen el nombre de las columnas a las que queremos acceder,en caso de estar consultando varias tablas se introduce primero el nombre de la tabla a la quepertenece la columna y se separa con un punto del nombre de la columna:

    nombre_tabla.nombre_columna

    Si vamos a acceder a todas las columnas de la tabla se utiliza el operador *.

    Seguido de la clusula FROM se introducen el nombre de las tablas a las que vamos a accederseparndolas con una coma.

    Si por ejemplo queremos recoger todos los registros de nuestra tabla empleados:

    Y si nos interesa nicamente los nombres y apellidos de nuestros empleados:

  • 7/31/2019 INFORMACIN sql

    19/43Pumallica CC ompi Flavio, .19

    Filas duplicadas.

    Una consulta que incluye una clave primaria, los resultados obtenidos sern nico, pero si tenemos elcaso de que una consulta no incluye una clave primara puede darse el caso de obtener filas repetidas.

    Si por ejemplo listamos el campo codOficina de la tabla empleados obtenemos:

    Si aadimos la clusula DISTINCT, evitamos la duplicacin de resultados:

    Ordenando los resultados.

    Tenemos la posibilidad de ordenar los resultados que obtenemos mediante la clusula ORDER BY.Adems podemos indicar si deseamos que se ordene de modo ascendente (ASC) o descendente(DESC). Por defecto se ordena en modo ascendente.

  • 7/31/2019 INFORMACIN sql

    20/43Pumallica CC ompi Flavio, .20

    Si deseamos ordenar por ms de un campo, podemos separas las expresiones de ordenacin porcomas. En el siguiente ejemplo mostramos el salario y el nombre del empleado, ordenados en ordendescendente por salario y en caso de coincidir por orden ascendente del nombre. Observa la posicinde las filas 6 y 7 como han quedado ordenadas al coincidir el salario:

    Renombras columnas.

    Mediante la clusula AS, podemos utilizar en la salida de columnas de resultado, nombre distintos a losreales dados en las tablas. Lo que hacemos es dar un alas para distinguir una determinada columnacon un nombre modificado.

    SELECT nombre_columna AS 'Nuevo_nombre' FROM tabla

    En el siguiente ejemplo renombramos la columna nombre con Empleado, observa como en la zona deresultados se modifica:

    Tambin podemos realizar operaciones entre columnas. En este ejemplo unimos el nombre delempleado y su apellido mediante un guin:

  • 7/31/2019 INFORMACIN sql

    21/43Pumallica CC ompi Flavio, .21

    Eliminar registros.

    Para eliminar registros existentes en nuestras tablas, utilizamos la sentencia DELETE

    Su sintaxis es la siguiente: DELETEFROM tabla WHERE condicin.

    Esta sentencia elimina los registros de una tabla, pero incluso eliminando todos los registros de unatabla, esta sigue permaneciendo en nuestra base de datos. Para eliminar una tabla vaca de nuestrabase de datos, utilizaremos la instruccin DROP TABLE.

    Tenemos otra instruccin que permite eliminar todos los registros de una tabla de un modo ms rpidoque si utilizamos la instruccin DELETE sin condicin, su sintaxis es la siguiente:

    TRUNCATE TABLE tabla

    En caso de existir claves forneas en la tabla no se puede utilizar, estamos obligados a utilizar lasentencia DELETE sin condicin.

    Actualizar registros.

    La instruccin UPDATE nos permite modificar los valores de una fila, varias o todos los registros deuna fila en funcin de su condicin o condiciones. Esta instruccin slo puede modificar los registros deuna nica tabla a la vez. Su sintaxis es la siguiente:

    UPDATE tabla SET columna1 = valor1, columna2 = valor2,...., columnaN = valoreN WHEREcondicin

    En el siguiente ejemplo se incrementa en 100 euros el salario de los empleados que tengan un salariomenor a 1200 euros. Al principio tenemos los siguientes salarios:

    Ejecutamos la consulta de actualizacin, y vemos que nos indica que 5 registros han sido modificados:

  • 7/31/2019 INFORMACIN sql

    22/43Pumallica CC ompi Flavio, .22

    Si listamos ahora los empleados vemos las modificaciones que hemos realizado:

    INFORMACINN 5

    Lenguaje de manipulacin de datos (Consultas Select).

    Funciones de cadena.

    En la siguiente tabla puedes ver las principales funciones de lenguaje que podemos utilizar paranuestras sentencias:

    Funcin Descripcin

    ASCII(cadena) Obtiene el cdigo ASCII del carcter de la izquierda en la cadena.

    CHAR(cadena) Obtiene el cdigo ASCII de la cadena entera.

    CHAININDEX(cadena1, cadena2) Devuelve la posicin de la primera cadena en la segundaempezando a contar desde el inicio de la segunda cadena.

    CHAININDEX(cadena1, cadena2, posicininicial)

    Devuelve la posicin de la primera cadena en la segundacomenzando a contar desde la posicin indicada.

    ESPACE(n) Genera n espacios.

    LEFT(cadena, n) Obtiene los n caracteres de la izquierda de la cadena.

    LEN(cadena) Devuelve la longitud de la cadena.LOWER(cadena) Devuelve la cadena en minsculas.

    LTRIM(cadena) Suprime los espacios iniciales de la cadena.

    NCHAR(n) Obtiene el carcter UNICODE relativo al entero n.

    REPLACE(cadena1, cadena2, cadena3)Encuentra la coincidencia de la segunda cadena en la primera ylas remplaza por la tercera.

    RIGTH(cadena, n) Devuelve la n caracteres de la derecha de la cadena.

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

    SUBSTRING(cadena, m, n) Extrae la su cadena de la cadena que se encuentre entre lasposiciones m y n.

    UNICODE(expresion)Devuelve el valor entero UNICODE del primer carcter de laexpresin UNICODE.

    UPPER(cadena) Devuelve la cadena en maysculas.

  • 7/31/2019 INFORMACIN sql

    23/43Pumallica CC ompi Flavio, .23

    Funciones numricas

    En la siguiente tabla se presentan las funciones numricas ms importantes:

    Funciones Descripcin

    a+b Suma de a y b.

    a-b Resta de a menos b.

    a*b Multiplicacin de a y b.

    a/b Cociente de a y b.

    ABS(a) Valor absoluto.

    ASIN(a) Arco seno de a (en radianes)

    ATAN(a) Arco tangente de a (en radianes)

    ATN2(a,b) ngulo en radianes, cuya tangente est entre a y b.

    CEILING(a) Entero ms pequeo mayor o igual que a.

    COS(a) Coseno de a, en radianes.

    COT(a) Cotangente de a en radianes.

    DEGREES(N) Devuelve el valor en grados de n radianes.EXP(a) Nmero e elevado al exponente a.

    FLOOR(a) Mayor entero menor o igual que a.

    LOG(a) Logaritmo neperiano de a.

    LOG10(a) Logaritmo decimal de a.

    PI Valor del nmero pi.

    POWER(a,b) Calcula a elevado a b.

    RADIANS(n) Devuelve el valor en radianes de n grados.

    RAND(semilla) Calcula un nmero aleatorio entre 0 y 1 a partir del semilla.

    ROUND(a,b) Redondea a con precisin b.

    SIGN(a) Devuelve 1 si a es positivo o cero, y -1 si a es negativo.

    SIN(a) Seno de a.

    SQRT(a) Raz cuadrada de a.

    SQUARE(a) Cuadrado de a.

    TAN(a) Tangente de a.

    Funciones estadsticas.

    Las principales funciones de agregado o estadsticas son las siguientes:Funcin Descripcin

    AVG(columna) Media de la columna, ignora valores nulos.

    COUNT(columna) Nmero de elementos en la columna, incluye valores nulos.

    MAX(columna) Mximo valor de una columna.

    MIN(columna) Mnimo valor de una columna.

    STDEV(columna) Desviacin tpica de la columna.

    STDEVP(columna) Cuasi desviacin tpica de la columna.

    SUM(columna) Suma valores de la columna.

    VAR(columna) Varianza de la columna.

    VARP(columna) Cuasi varianza de la columna.

  • 7/31/2019 INFORMACIN sql

    24/43Pumallica CC ompi Flavio, .24

    Funciones de fecha.

    Para trabajar con datos de tipo fecha contamos con las siguientes funciones:

    Funciones Descripcin

    DATEADD(tipo, fecha, a)Aade a unidades de fecha del tipo dado (Day, Week, Month,Quarter, Year)

    DATEDIF(tipo, f1, f2) Nmero de unidades de fecha del tipo dado (Day, Week, Month,Quarter, Year)

    DATEPART(tipo, fecha)Da el valor entero del tipo de fecha dado (Day, Week, Month,Quarter, Year)

    Day(fecha) Da el da especificado en la fecha como un valor entero.

    GETDATE Devuelve la fecha y hora actuales del sistema.

    DAY(fecha) Da el da especificado en la fecha como un valor entero.

    MONTH(fecha) Da el mes especificado en la fecha como un valor entero.

    YEAR(fecha) Devuelve el ao especificado en la fecha como valor entero.

    Columnas calculadas.

    Con SQL podemos utilizar columnas que son el resultado de una serie de operaciones. En el siguienteejemplo, duplicamos el salario de los empleados y le damos el nombre de Salario2:

  • 7/31/2019 INFORMACIN sql

    25/43Pumallica CC ompi Flavio, .25

    Consultas con condiciones.

    La clusula WHERE permite introducir una serie de condiciones sobre los valores de los campos de losregistros, para recoger slo aquellos registros que cumplan esa condicin. Estas condiciones suelendenominarse contrastes de comparacin. Tenemos los siguientes contrastes de comparacin:

    Contraste decomparacin:

    Descripcin:

    Contraste de comparacin Comparan el valor de una expresin con el valor de otra.

    Contrastes de rango Comprueba si el valor se encuentra entre unos lmites.

    Contrastes de pertenencia aun grupo.

    Comprueba si el valor de una expresin pertenece a un determinadogrupo.

    Contrastes decorrespondencia de patrn.

    Comprueba si los datos cumplen con un patrn dado.

    Contrastes de valor nulo. Comprueba si alguna de las columnas contiene el valor nulo.

    Contraste de comparacin.

    Con estas condiciones SQL compara los valores dados entre dos expresiones para cada registro.

    Los operadores de comparacin que tenemos a nuestra disposicin son:

    Operador: Descripcin:

    = Compara si los valores son iguales.

    < Compara si una expresin es menor que otra.

    > Compara si una expresin es mayor que otra.

    = Compara si una expresin es mayor o igual que otra. Compara si las dos expresiones son distintas.

    La sintaxis es la siguiente:

    SELECTFROMWHERE expresion1 operador expresion2

    En el siguiente ejemplo se muestran todos los empleados que superen un salario mayor o igual que1200:

    Contrastes de rango.

    El contraste de rango comprueba si un valor se encuentra entre dos valores determinados. Pararealizar esta comparacin contamos con la clusula Between...AND

    Como ejemplo vamos a mostrar aquellos empleados nacidos entre el 1 de enero de 1960 y el 31 dediciembre de 1969:

  • 7/31/2019 INFORMACIN sql

    26/43Pumallica CC ompi Flavio, .26

    Contraste de pertenencia a un grupo.

    Este tipo de condicin comprueba si el valor de una determinada expresin aparece en una lista devalores determinada. Para esta tarea utilizaremos la clusula IN

    En el siguiente ejemplo mostramos aquellos empleados que tengan un salario que coincida con lasiguiente lista de valores: {1000, 1200}

    Contraste de correspondencia con patrn.

    Este tipo de consultas devuelve los registros para el que el valor de una columna de texto se

    corresponde con una expresin dada. La clusula LIKE, permite este tipo de comparaciones, y utiliza eloperador % como comodn. El smbolo % se sustituye por cualquier conjunto de caracteres.

    En el siguiente ejemplo mostramos aquellos trabajadores que comiencen por la letra R:

    Ahora modificamos la consulta para mostrar aquellos empleados donde su apellido aparezca la letra R,sin importar donde:

  • 7/31/2019 INFORMACIN sql

    27/43Pumallica CC ompi Flavio, .27

    Otro comodn que utiliza la clusula LIKE es el guin bajo '_' que representa la posicin de un carcter.El smbolo % permite cualquier nmero de caracteres, y toma como coincidencia la ausencia decaracteres, en cambio el smbolo '_' permite slo un nico carcter coincidente.

    En el siguiente ejemplo se obtienen los registros de la tabla Empleados cuyo campo Apellidos contengauna cadena donde la segunda letra sea una 'a':

    Contrastes de valor nulo.

    La clusula IS NULL devuelve aquellos registros que tienen una columna determinada con valor nulo, para laoperacin opuesta tenemos la clusula IS NOT NULL. En el siguiente ejemplo se muestra aquellos empleados queno tienen un valor nulo en campo codOficina, es decir aquellos empleados que tienen asignada una oficina (en estecaso todos).

    Contrastes compuestos.

    Es muy frecuente el uso de consultas que requieren ms de una condicin de bsqueda. Los operadores AND, ORy NOT, pueden combinarse para unir condiciones que utilicen las reglas lgicas para obtener un nico resultado.

    En el siguiente ejemplo se muestran aquellos empleados que tengan un salario superior a 1200 y hayan nacidoantes de la fecha '01/01/1970':

    Combinacin de consultas.

    Mediante la clusula UNION podemos unir los resultados de dos o ms tablas en una nica tabla. En elsiguiente ejemplo mostramos en una nica tabla los salarios de los empleados y los kilmetrosrealizados en las reservas de vehculos:

  • 7/31/2019 INFORMACIN sql

    28/43Pumallica CC ompi Flavio, .28

    Puedes ver que toma como nombre de columna el de la primera consulta, en este caso salario.

    Por defecto este tipo de consultas elimina los valores duplicados, para evitar esto podemos aadir eloperador ALL a la clusula UNION como vez en el siguiente ejemplo:

    Condiciones para utilizar el operador UNION:

    Las consultas que se utilicen con el con UNION deben tener el mismo nmero de expresiones. Las columnas devueltas como resultado de las consultas utilizadas con el operador UNIONdeben ser del mismo tipo de datos, o tener la posibilidad de convertir los tipos de datos de modoimplcito o explcito. Las columnas del conjunto de resultados de una consulta debe coincidir con el orden de otra, yaque el operador UNION compara por orden. Los nombres de columna de la tabla que obtenemos de UNION se toman de la primera consultaindividual.

    En el siguiente ejemplo se obtienen lasumatoria de todos los salarios de losempleados cuya condicin sea que su cdigo deoficina sea igual a 2:

    En el siguiente ejemplo se obtienen la cantidadde registros que contiene la tabla empleados:

  • 7/31/2019 INFORMACIN sql

    29/43Pumallica CC ompi Flavio, .29

    En el siguiente ejemplo se obtienen el empleadoque tiene el mayor sueldo de la tablaempleado:

    En el siguiente ejemplo se obtienen lasumatoria de todos los salarios de losempleados cuya condicin sea que su cdigo deoficina sea igual a 2:

    Consultas AgrupadasEn el siguiente ejemplo se obtienen el cdigo deoficina y la sumatoria del salario de los empleadosagrupados por cdigo de oficina:

    En el siguiente ejemplo se obtienen el cdigo de oficina,el nombre del empleado y el salario de los empleadosagrupados por cdigo de oficina, nombre del empleado ysalario de todos los empleados cuyo salario sea mayorque 1000

  • 7/31/2019 INFORMACIN sql

    30/4330

    En el siguiente ejemplo se obtienen el cdigo de oficina, el nombre del empleado y la sumatoria delsalario de los empleados agrupados por cdigo de oficina, nombre del empleado de todos losempleados cuya sumatoria del salario sea menor que 1200:

    Practica:BASE DE DATOS VENTAS

    FACTURA:Id_factura char(4)Cod_cliente char(4)Fecha DateTimeIgv decimal(7,2)Subtotal decimal(7,2)Total decimal(7,2)

    DETALLE:Id_factura char(4)Cod_producto char(4)Punitario decimal(7,2)Cantidad int

    DISTRITO:Cod_dis char(2)Nom_dis varchar(30)

    CLIENTE:Cod_cliente char(4)Nom_cliente varchar(50)Ruc char(11)Telefono char(7)Direccion varchar(60)Cod_dis char(2)

    PRODUCTO:Cod_producto char(4)Nom_producto varchar(30)Stock intPreciodecimal(7,2)Id_categoria char(2)

    CATEGORIA:Id_categoria char(2)

    Nom_categoria varchar(20)

    CREATEDATABASE VENTAS01

    USE VENTAS01

    CREATETABLE DISTRITO(Cod_Distrito char(2)primarykeynotnull,Nom_Distrito varchar(30)notnull)

    CREATETABLE CATEGORIA(Cod_Categoria char(2)primarykeynotnull,Nom_Categoria varchar(20)notnull)

    CREATETABLE CLIENTE(Cod_Cliente char(4)primary keynotnull,Nombre varchar(50)null,Ruc varchar(11)notnull,Telefono varchar(7) null,Direccion varchar(60)notnull,Cod_Distrito char(2)references Distrito notnull)

    CREATETABLE PRODUCTO(

    Cod_Producto char(4)primary keynotnull,Nom_Producto varchar(30)notnull,Stock intnull,

    Precio decimal(7,2)notnull,Cod_Categoria char(2)references Categorianotnull)

    CREATETABLE FACTURA(Cod_Factura char(4)primary keynotnull,Cod_Cliente char(4)references Cliente notnull,Fecha datetimenull,Igv decimal(7,2) null,SubTotal decimal(7,2) null,Total decimal(7,2)null)

    CREATETABLE DETALLE(Cod_Factura char(4)references Factura notnull,Cod_Producto char(4)references Producto notnull,PUnitario decimal(7,2) null,Cantidad intnotnull)

  • 7/31/2019 INFORMACIN sql

    31/4331

    //distritoINSERTINTO DISTRITO VALUES('01','Lima')INSERTINTO DISTRITO VALUES('02','Villa el Salvador')INSERTINTO DISTRITO VALUES('03','Lince')INSERTINTO DISTRITO VALUES('04','Villa Maria')INSERTINTO DISTRITO VALUES('05','Victoria')INSERTINTO DISTRITO VALUES('06','Molina')INSERTINTO DISTRITO VALUES('07','Lurin')INSERTINTO DISTRITO VALUES('08','Chorrillos')INSERTINTO DISTRITO VALUES('09','Ate')INSERTINTO DISTRITO VALUES('10','San Borja')

    INSERTINTO DISTRITO VALUES('11','San JUAN')INSERTINTO DISTRITO VALUES('12','Surco')//categoriaINSERTINTO CATEGORIA VALUES('01','Computadoras')INSERTINTO CATEGORIA VALUES('02','Muebles de hogar')INSERTINTO CATEGORIA VALUES('03','Instr musicales')INSERTINTO CATEGORIA VALUES('04','Construccion')INSERTINTO CATEGORIA VALUES('05','Motores')INSERTINTO CATEGORIA VALUES('06','Maquinarias pesadas')INSERTINTO CATEGORIA VALUES('07','Prendas de vestir')INSERTINTO CATEGORIA VALUES('08','Abarrotes')INSERTINTO CATEGORIA VALUES('09','Librerias')

    //clienteINSERTINTO CLIENTE VALUES('0001','FLAVIO PUMALLICA CCompi','45852365000','9751910','AV ANGAMOS','05')INSERTINTO CLIENTE VALUES('0002','Judith condor CCompi','45852545000','9751921','AV ANGAMOS','05')INSERTINTO CLIENTE VALUES('0003','Maria corman Condori','97514107541','9751971','AV AlosS','08')INSERTINTO CLIENTE VALUES('0004','Lolo Quispe','45587365457','9751910','AV ANGAMOS','09')INSERTINTO CLIENTE VALUES('0005','Jely Elias ccccc','54852365478','9542110','AV ceresa','05')INSERTINTO CLIENTE VALUES('0006','Rosa Quispe Ccubo','45852341698','9745110','AV ANGAMOS','05')INSERTINTO CLIENTE VALUES('0007','Nando Condori Huaman','45252365001','9569810','AV ANGAMOS','04')INSERTINTO CLIENTE VALUES('0008','Kely Lopes Ortega','45124565123','9711210','AV CCOS','05')INSERTINTO CLIENTE VALUES('0009','Rony Diaz Quispe','45854815004','9721910','AV ANgol','07')INSERTINTO CLIENTE VALUES('0010','Ivan Tallo Hung','451452065032','9121910','AV ANGALO','01')INSERTINTO CLIENTE VALUES('0011','MARIA Tallo Hung','451452065032','9121910','AV ANGALO','02')

    //productoINSERTINTO PRODUCTO VALUES('0001','literatura infort','25','52.20','02')INSERTINTO PRODUCTO VALUES('0002','fierro contsteru','5','52.20','04')INSERTINTO PRODUCTO VALUES('0003','pc intekl','25','600.20','08')

    INSERTINTO PRODUCTO VALUES('0004','yamaha 345','10','2000.20','02')INSERTINTO PRODUCTO VALUES('0005','eternet','25','20.20','07')INSERTINTO PRODUCTO VALUES('0006','caterpilar','25','20000.21','08')INSERTINTO PRODUCTO VALUES('0007','arroz','2','52.20','05')INSERTINTO PRODUCTO VALUES('0008','chela','25','32.20','02')INSERTINTO PRODUCTO VALUES('0009','bolkete ','25','50000.21','04')INSERTINTO PRODUCTO VALUES('0010','literatura infort','100','10.20','02')

    INSERTINTO FACTURA VALUES('0001','0005','12/04/1985','019','4512','0')INSERTINTO FACTURA VALUES('0002','0001','02/04/1985','0.19','12.21','0')INSERTINTO FACTURA VALUES('0003','0002','11/05/1995','0.19','0','0')INSERTINTO FACTURA VALUES('0004','0005','18/08/1975','0.19','0','0')INSERTINTO FACTURA VALUES('0005','0006','15/09/1983','0.19','0','0')INSERTINTO FACTURA VALUES('0006','0005','19/07/1988','0.19','0','0')INSERTINTO FACTURA VALUES('0007','0008','17/01/1987','0.19','0','0')

    INSERTINTO FACTURA VALUES('0008','0009','14/03/1995','0.19','5841.','55')INSERTINTO FACTURA VALUES('0009','0001','18/12/2010','0.19','0','14')INSERTINTO FACTURA VALUES('0010','0006','20/06/2000 ','0.19','11.20','0')

    INSERTINTO DETALLE VALUES('0001','0005','65','142')INSERTINTO DETALLE VALUES('0004','0007','48','475')INSERTINTO DETALLE VALUES('0002','0005','65','45')INSERTINTO DETALLE VALUES('0009','0008','64','65')INSERTINTO DETALLE VALUES('0004','0006','78','78')INSERTINTO DETALLE VALUES('0007','0004','46','35')INSERTINTO DETALLE VALUES('0008','0007','617','45')INSERTINTO DETALLE VALUES('0002','0007','14','15')INSERTINTO DETALLE VALUES('0001','0006','89','46')INSERTINTO DETALLE VALUES('0003','0004','42','18')

    SELECT*FROM DISTRITOSELECT*FROM CATEGORIASELECT*FROM CLIENTE

    SELECT*FROM FACTURASELECT*FROM DETALLE

  • 7/31/2019 INFORMACIN sql

    32/4332

    Crear la Base de Datos Ventas e Ingresar 10 registros por cada tabla y realizar las

    siguientes consultas SQL.

    1.Realizar una consulta que muestre los clientes que hayan nacido en los distritos devilla el salvador, san juan y surco.SELECT*FROM CLIENTE WHERE Cod_Distrito IN('02','04','12')

    2.Realizar una consulta que muestre todos los productos cuyo stock este comprendidoentre 10 a 50 de la categora monitor.SELECT*FROM PRODUCTO WHERE Stock>='10'AND Stock400.SELECT*FROM PRODUCTO WHERE Cod_Categoria ='06'AND Precio>'400'

    11. Realizar una consulta que muestre los clientes que hayan nacido en los distritosde villa el salvador, san Juan y surco.SELECT Nombre, Cod_Distrito FROM CLIENTE WHERE Cod_Distrito IN('02','04','12')

    12. Realizar una consulta que muestre todas las ventas del cliente 1002 en entre losmeses de marzo y agosto del 2009.SELECT Cod_Cliente, Fecha FROM FACTURA

    WHEREmonth(Fecha)=03 ANDmonth(Fecha)=08 ANDyear(Fecha)=2009

    13. Realizar una consulta que me muestre el mnimo precio de los productos de lacategora mouse.SELECTMin(Precio)AS Promedio FROM PRODUCTO WHERE Cod_Categoria='02'

    14. Realizar una consulta que muestre el promedio de todos los productos de lacategora monitores cuyo nombre de producto empiece con la letra s.SELECTAvg(Precio)AS Promedio FROM PRODUCTOWHERE Cod_Categoria='02'and Nom_Producto LIKE's%'

    15. Realizar una consulta que nos muestre la sumatoria de los totales del cliente concdigo 1000 en el mes de octubre o diciembre

    SELECT SUM(Cod_Cliente)FROM CLIENTEWHEREmonth(Fecha)=08 ANDyear(Fecha)=1998 and codCliente=1000

    16. Realizar modificar los datos de nmero de telfono de la tabla cliente a 2876655a todos los clientes que vivan en san Juan.UPDATE CLIENTE SET Telefono='2876655'WHERE Cod_Distrito='11'

  • 7/31/2019 INFORMACIN sql

    33/4333

    17. Realizar la modificacin de todos los stock de la tabla producto a 500, a todoslos productos que empiecen con la letra r y termine con la letra s que sean de lacategora impresoras.UPDATE PRODUCTO SET Stock='500'WHERE Nom_Producto LIKE'r%'and Nom_Producto LIKE's%'and Cod_Categoria='09'

    18. Eliminar todos los productos de la categora disco duro.DELETEFROM PRODUCTO WHERE Cod_Categoria ='02'

    19. Eliminar todo los registros cuyos clientes contengan en su nombre la letra r encualquier posicin y la n en la antepenltima posicin.

    DELETEFROM CLIENTE WHERE Nombre LIKE'%r%'and Nombre LIKE'%n%'

    20. Realizar el promedio de todas las ventas del mes de julio.SELECTAvg(Total)AS Promedio FROM FACTURA WHEREmonth(Fecha)=07

    INFORMACIN N 61. Crear la siguiente Base de Datos e ingresar Valores.

    BASE DE DATOS NOTAS

    Select con dos tablas relacionadas

    Creando las tablas Alumnos y NotasCreateTable Alumnos(id_AlumnointIdentity(1,1),Nombrevarchar(30),

    Constraint PK_id_Alumno PrimaryKey(id_Alumno))

    CreateTable Notas(id_Alumno intNotNULL,

    Nota int,

    Constraint FK_id_Alumno ForeignKey(id_Alumno)References Alumnos)

    --Insertando registros en la tabla Alumnos

    Insert Alumnos Values('Juan')Insert Alumnos Values('Ana')Insert Alumnos Values('Luis')Insert Alumnos Values('Jorge')Insert Alumnos Values('Carmen')

    Insertando registros en la tabla Notas Ejecutar estas 5 lneas marcndolasDeclare @id intSelect @id=(Select id_Alumno From Alumnos Where Nombre like'Juan')Insert NotasValues(@id, 12)Insert NotasValues(@id, 13)Insert NotasValues(@id, 11)

    Select*From Notas

    Declare @id intSelect @id=(Select id_Alumno From Alumnos Where Nombre like'Ana')Insert NotasValues(@id, 11)Insert NotasValues(@id, 15)Insert NotasValues(@id, 12)

    Select*From Notas

  • 7/31/2019 INFORMACIN sql

    34/4334

    Declare @id intSelect @id=(Select id_Alumno From Alumnos Where Nombre like'Luis')Insert NotasValues(@id, 6)Insert NotasValues(@id, 12)

    Select*From Notas

    Declare @id intSelect @id=(Select id_Alumno From Alumnos Where Nombre like'Jorge')Insert NotasValues(@id, 11)

    Insert NotasValues(@id, 10)Declare @id intSelect @id=(Select id_Alumno From Alumnos Where Nombre like'Carmen')Insert NotasValues(@id, 6)Insert NotasValues(@id, 12)

    Verificar

    Select*From AlumnosSelect*From Notas

    [01] Mostrar Nombre de alumnos con sus respectivas Notas

    Select Nombre, NotaFromAlumnos INNERJOIN NotasOnAlumnos.id_Alumno=Notas.id_Alumno--Otro modoSelect A.Nombre, B.NotaFrom Alumnos As A, Notas As BWhereA.id_Alumno=B.id_Alumno--Otro modoSelect Nombre, Nota From Alumnos, NotasWhereAlumnos.id_Alumno=Notas.id_Alumno

    [02] Mostrar Nombre de alumnos con sus respectivas notas en Orden alfabtico

    Select Nombre, NotaFrom Alumnos INNERJOIN NotasOnAlumnos.id_Alumno=Notas.id_Alumno

    OrderBy Nombre

    [03] Mostrar Nombre de alumno y cuntas notas tiene cada uno

    Select Nombre,Count(Nota)As [Cantidad de Notas] From Alumnos INNERJOIN NotasOnAlumnos.id_Alumno=Notas.id_AlumnoGroup ByNombreOrder ByNombre

    .........................................Select Nombre,Avg(Nota)As [Promedio de Notas]From Alumnos INNERJOIN NotasOnAlumnos.id_Alumno=Notas.id_AlumnoGroup ByNombre

    Order ByNombre

    [04] Mostrar Nombre de alumno y su respectivo promedio en orden de mrito

    SelectNombre,Avg(Nota)From Alumnos INNERJOIN NotasOnAlumnos.id_Alumno=Notas.id_AlumnoGroup ByNombreOrderByavg(nota)desc

    [05] Nombre de alumnos aprobados y su respectivo promedio en ordenalfabtico

    Select Nombre,Avg(Nota)As Promedio From Alumnos INNERJOIN Notas

    OnAlumnos.id_Alumno=Notas.id_AlumnoGroup ByNombreHavingAvg(Nota)>10OrderBy Nombre--Otro modo

  • 7/31/2019 INFORMACIN sql

    35/4335

    Select A.Nombre, Avg(B.Nota)As Promedio From Alumnos As A,Notas As BWhereA.id_Alumno=B.id_AlumnoGroup ByA.NombreHavingAvg(B.Nota)>10OrderByA.Nombre

    [06] Seleccione alumnos que tienen comonota un 11 o un 12

    Select Nombre, NotaFrom Alumnos INNERJOIN NotasOnAlumnos.id_Alumno=Notas.id_AlumnoWhereNotas.Nota=11 OrNotas.Nota=12

    Order ByNombre

    -- Otro modo

    Select A.Nombre, B.NotaFrom Alumnos As A, Notas As BWhere(A.id_Alumno=B.id_Alumno)And(B.Nota=11 Or B.Nota=12)Order ByA.Nombre

    [07] Seleccione alumnos que tienen comonotas promedio 10 y 12

    Select Nombre,avg(Nota)FromAlumnos INNERJOIN NotasOnAlumnos.id_Alumno=Notas.id_Alumnogroupby nombre

    havingavg(Notas.Nota)=10 Oravg(Notas.Nota)=12OrderBy Nombre

    [08] Nombre de alumnos que tienen notas desaprobadas y cuntas notas desaprobadastiene

    Select Nombre,Count(Nota)As [Nm. Notas Desaprobadas]From Alumnos INNERJOIN NotasOnAlumnos.id_Alumno=Notas.id_AlumnoWhereNotas.Nota

  • 7/31/2019 INFORMACIN sql

    36/4336

    Todos los campos de la lista de campos de SELECT deben o bien incluirse en la clusula GROUP BY o como argumentos de una

    funcin SQL agregada.

    SELECT Id_Familia, Sum(Stock) FROM Productos GROUP BY Id_Familia;

    Una vez que GROUP BY ha combinado los registros, HAVING muestra cualquier registro agrupado por la clusula GROUP BY que

    satisfaga las condiciones de la clusula HAVING.

    HAVING es similar a WHERE, determina qu registros se seleccionan. Una vez que los registros se han agrupado utilizando

    GROUP BY, HAVING determina cules de ellos se van a mostrar.

    PRACTICA CALIFICADA

    createdatabase VENTA

    USE VENTA

    CREATETABLE DISTRITO(Cod_dis char(2)primarykeynotnull,Nom_dis varchar(30))

    CREATETABLE CLIENTE(Cod_cliente char(4)primarykeynotnull,Nom_cliente varchar(50),Ruc char(11),Telefono char(7),Direccion varchar(60),Cod_dis char(2)REFERENCES DISTRITO NOTNULL,

    )

    CREATETABLE PRODUCTO(Cod_producto char(4)primarykeynotnull,Nom_producto varchar(30),Stock int,Precio decimal(7,2),Id_categoria char(2)REFERENCES CATEGORIA NOTNULL,)

    CREATETABLE CATEGORIA(Id_categoria char(2)primarykeynotnull,Nom_categoria varchar(20))

    CREATETABLE FACTURA(Id_factura char(4)primarykeynotnull,Cod_cliente char(4)REFERENCES CLIENTE NOTNULL,Fecha DateTime,Igv decimal(7,2),Subtotal decimal(7,2),Total decimal(7,2))

    CREATETABLE DETALLE(Id_factura char(4)references FACTURA notnull,Cod_producto char(4)references PRODUCTO NOTNULL,Punitario decimal(7,2),Cantidad int)

    INSERTINTO DISTRITO VALUES('01','Lima')INSERTINTO DISTRITO VALUES('02','Villa el Salvador')INSERTINTO DISTRITO VALUES('03','Lince')INSERTINTO DISTRITO VALUES('04','Villa Maria')INSERTINTO DISTRITO VALUES('05','Victoria')INSERTINTO DISTRITO VALUES('06','Molina')INSERTINTO DISTRITO VALUES('07','Lurin')INSERTINTO DISTRITO VALUES('08','Chorrillos')INSERTINTO DISTRITO VALUES('09','Ate')INSERTINTO DISTRITO VALUES('10','San Borja')

    INSERTINTO CLIENTE VALUES('0001','FLAVIO PUMALLICA CCompi','45852365000','9751910','AV ANGAMOS','05')INSERTINTO CLIENTE VALUES('0002','Judith condor CCompi','45852545000','9751921','AV ANGAMOS','05')INSERTINTO CLIENTE VALUES('0003','Maria corman Condori','97514107541','9751971','AV AlosS','08')INSERTINTO CLIENTE VALUES('0004','Lolo Quispe','45587365457','9751910','AV ANGAMOS','09')INSERTINTO CLIENTE VALUES('0005','Jely Elias ccccc','54852365478','9542110','AV ceresa','06')INSERTINTO CLIENTE VALUES('0006','Rosa Quispe Ccubo','45852341698','9745110','AV ANGAMOS','05')INSERTINTO CLIENTE VALUES('0007','Nando Condori Huaman','45252365001','9569810','AV ANGAMOS','04')INSERTINTO CLIENTE VALUES('0008','Kely Lopes Ortega','45124565123','9711210','AV CCOS','11')INSERTINTO CLIENTE VALUES('0009','Rony Diaz Quispe','45854815004','9721910','AV ANgol','07')INSERTINTO CLIENTE VALUES('0010','Ivan Tallo Hung','451452065032','9121910','AV ANGALO','01')

    INSERTINTO CLIENTE VALUES('0011','MARIA Tallo Hung','451452065032','9121910','AV ANGALO','02')

    INSERTINTO CATEGORIA VALUES('01','Computadoras')INSERTINTO CATEGORIA VALUES('02','Muebles de hogar')INSERTINTO CATEGORIA VALUES('03','Instr musicales')INSERTINTO CATEGORIA VALUES('04','Construccion')INSERTINTO CATEGORIA VALUES('05','Motores')INSERTINTO CATEGORIA VALUES('06','Maquinarias pesadas')INSERTINTO CATEGORIA VALUES('07','Prendas de vestir')INSERTINTO CATEGORIA VALUES('08','Abarrotes')INSERTINTO CATEGORIA VALUES('09','Librerias')INSERTINTO CATEGORIA VALUES('10','Ferreteria')

    INSERTINTO PRODUCTO VALUES('0001','literatura infort','25','52.20','02')INSERTINTO PRODUCTO VALUES('0002','fierro contsteru','5','52.20','04')

    INSERTINTO PRODUCTO VALUES('0003','pc intekl','25','600.20','08')INSERTINTO PRODUCTO VALUES('0004','yamaha 345','10','2000.20','02')INSERTINTO PRODUCTO VALUES('0005','eternet','25','20.20','07')INSERTINTO PRODUCTO VALUES('0006','caterpilar','25','20000.21','08')INSERTINTO PRODUCTO VALUES('0007','arroz','2','52.20','05')INSERTINTO PRODUCTO VALUES('0008','chela','25','32.20','02')INSERTINTO PRODUCTO VALUES('0009','bolkete ','25','50000.21','04')

  • 7/31/2019 INFORMACIN sql

    37/4337

    INSERTINTO PRODUCTO VALUES('0010','literatura infort','100','10.20','02')

    INSERTINTO FACTURA VALUES('0001','0005','12/04/1985','019','4512','0')INSERTINTO FACTURA VALUES('0002','0001','02/04/1985','0.19','12.21','0')INSERTINTO FACTURA VALUES('0003','0002','11/05/1995','0.19','0','0')INSERTINTO FACTURA VALUES('0004','0005','18/08/1975','0.19','0','0')INSERTINTO FACTURA VALUES('0005','0006','15/09/1983','0.19','0','0')INSERTINTO FACTURA VALUES('0006','0005','19/07/1988','0.19','0','0')INSERTINTO FACTURA VALUES('0007','0008','17/01/1987','0.19','0','0')INSERTINTO FACTURA VALUES('0008','0009','14/03/1995','0.19','5841.','55')INSERTINTO FACTURA VALUES('0009','0001','18/12/2010','0.19','0','14')INSERTINTO FACTURA VALUES('0010','0006','20/06/2000 ','0.19','11.20','0')

    INSERTINTO DETALLE VALUES('0001','0005','65.22','142')INSERTINTO DETALLE VALUES('0004','0007','48','475')INSERTINTO DETALLE VALUES('0002','0005','65','45')INSERTINTO DETALLE VALUES('0009','0008','64','65')INSERTINTO DETALLE VALUES('0004','0006','78','78')INSERTINTO DETALLE VALUES('0007','0004','46','35')INSERTINTO DETALLE VALUES('0008','0007','617','45')INSERTINTO DETALLE VALUES('0002','0007','14','15')INSERTINTO DETALLE VALUES('0001','0006','89','46')INSERTINTO DETALLE VALUES('0003','0004','42','18')

    SELECT*FROM DETALLESELECT*FROM FACTURASELECT*FROM DISTRITO

    SELECT*FROM CLIENTESELECT*FROM PRODUCTOSELECT*FROM CATEGORIA

    1. Selecciona de la tabla cliente, los clientes agrupados por distrito.SELECT CLIENTE.Cod_cliente,CLIENTE.Nom_cliente, DISTRITO.Nom_disFROM CLIENTE,DISTRITO WHERE CLIENTE.Cod_dis=DISTRITO.Cod_dis

    SELECT Cod_dis, Nom_cliente from CLIENTE

    2. Selecciona de la tabla factura las compras efectuadas por los clientes agrupndolos porcdigo del cliente.SELECT Cod_cliente, Fecha from FACTURASELECT CLIENTE.Nom_cliente, FACTURA.Id_facturaFROM CLIENTE,FACTURA WHERE FACTURA.Cod_cliente=CLIENTE.Cod_cliente

    3. Selecciona de la tabla factura el total de compras efectuadas por los clientesagrupndolos por cdigo del cliente.SELECT Cod_cliente, total from FACTURA

    4.Selecciona de la tabla factura el total de compras efectuadas por los clientes agrupndolos porcdigo del cliente cuyas compras supera los 2500.SELECT Cod_cliente, total from FACTURA WHERE total >=12

    5.Selecciona de la tabla cliente y distrito, la relacin de todos los clientes agrupados pordistrito.SELECT Nom_cliente, Cod_dis from CLIENTE

    6. realizar una consulta que muestre el nmero de factura, nombre del cliente, ruc, total detodas las facturas emitidas en el mes de marzo.SELECT Id_factura, Nom_cliente, Ruc FROM FACTURA INNERJOIN CLIENTE

    ON FACTURA.Id_factura=CLIENTE.Cod_cliente

    7. realizar una consulta que muestre el nmero de factura, nombre del cliente, ruc, fecha defactura, cod_producto, nombre del producto, precio y cantidad agrupados por factura.SELECT Id_factura, Nom_cliente, Ruc, Fecha, Cod_producto, Nom_producto, Precio, Stock FROMFACTURA INNERJOIN CLIENTE INNERJOIN PRODUCTOON FACTURA.Id_factura=CLIENTE.Cod_clienteON FACTURA.Id_factura=PRODUCTO.Cod_producto

    8. hacer una consulta que muestre todas las facturas emitidas en el mes de octubre quevendieron al menos un Impresora.SELECT *FROM FACTURA WHEREmonth(Fecha)=10

    9. realizar una consulta que muestre todas las facturas emitidas a clientes nacidos en el

    distrito de villa el salvador.SELECT Id_factura, Nom_cliente, Cod_dis FROM FACTURA INNERJOIN CLIENTEON FACTURA.Id_factura=CLIENTE.Cod_cliente WHERE Cod_dis='11'

    10. hacer una consulta que muestre todos los productos que han sido vendidos en una cantidadmayor a 10 unidades.SELECT Nom_producto, Stock as cantidad FROM PRODUCTO WHERE Stock >10

  • 7/31/2019 INFORMACIN sql

    38/4338

    11. realizar una consulta que muestre los datos del producto que ms ha sido vendido.

    SELECT Nom_producto,Avg(Id_factura)FROM DETALLE INNERJOIN DETALLEON DETALLE.Id_factura=PRODUCTO.Cod_producto

    12. Realizar una consulta que muestre los datos del cliente que ms ha comprado.

    INFORMACINN 7

    USO DE SUBCONSULTAS BASE DE DATOS VENTAS

    FACTURA:Id_factura char(4)Cod_cliente char(4)Fecha DateTimeIgv decimal(7,2)Subtotal decimal(7,2)Total decimal(7,2)

    DETALLE:Id_factura char(4)Cod_producto char(4)Punitario decimal(7,2)Cantidad int

    DISTRITO:Cod_dis char(2)Nom_dis varchar(30)

    CLIENTE:

    Cod_cliente char(4)Nom_cliente varchar(50)Ruc char(11)Telefono char(7)Direccion varchar(60)Cod_dis char(2)

    PRODUCTO:Cod_producto char(4)Nom_producto varchar(30)Stock intPreciodecimal(7,2)

    Id_categoria char(2)

    CATEGORIA:Id_categoria char(2)Nom_categoria varchar(20)

    Agrupamiento de Registros GROUPBY

    Combina los registros con valores idnticos, en la lista de campos especificados, en unnico registro. Para cada registro se crea un valor sumario si se incluye una funcinSQL agregada, como por ejemplo Sum o Count, en la instruccin SELECT. Su sintaxis es:SELECT campos FROM tabla WHERE criterio GROUPBY campos del grupo

    GROUPBY es opcional.

    Los valores de resumen se omiten si no existe una funcin SQL agregada en lainstruccin SELECT. Los valores Null en los campos GROUPBY se agrupan y no se omiten.No obstante, los valores Nullno se evalan en ninguna de las funciones SQL agregadas.

    Se utiliza la clusula WHERE para excluir aquellas filas que no desea agrupar, y laclusula HAVING para filtrar los registros una vez agrupados.

    A menos que contenga un dato Memo u Objeto OLE , un campo de la lista de campos GROUP

    BY puede referirse a cualquier campo de las tablas que aparecen en la clusula FROM,incluso si el campo no esta incluido en la instruccin SELECT, siempre y cuando lainstruccin SELECT incluya al menos una funcin SQL agregada.

    Todos los campos de la lista de campos de SELECT deben o bien incluirse en la clusulaGROUPBY o como argumentos de una funcin SQL agregada.

    SELECT Id_Familia,Sum(Stock)FROM Productos GROUPBY Id_Familia;

    Una vez que GROUP BY ha combinado los registros, HAVING muestra cualquier registroagrupado por la clusula GROUPBY que satisfaga las condiciones de la clusula HAVING.

    HAVING es similar a WHERE, determina qu registros se seleccionan. Una vez que losregistros se han agrupado utilizando GROUPBY,HAVING determina cuales de ellos se vana mostrar.SELECT Id_FamiliaSum(Stock)FROM Productos GROUPBY Id_Familia

    HAVINGSum(Stock)> 100 AND NombreProducto Like BOS%;

  • 7/31/2019 INFORMACIN sql

    39/4339

    1. Hacer las siguientes consultas con Agrupamiento.

    Selecciona de la tabla cliente, los clientes agrupados por distrito.

    selectcod_dis,nom_cliente from cliente groupBy cod_dis,nom_cliente

    Selecciona de la tabla factura las compras efectuadas por los cliente agrupndolos porcodigo del cliente.

    select cod_cliente,fecha,totalfrom factura groupBy cod_cliente,fecha,total

    Selecciona de la tabla factura el total de compras efectuadas por los clienteagrupndolos por codigo del cliente.

    select cod_cliente,sum(total)from factura groupBy cod_cliente

    Selecciona de la tabla factura el total de compras efectuadas por los clienteagrupndolos por codigo del cliente cuyas compras supera los 2500.

    select cod_cliente,sum(total)from factura groupBy cod_cliente havingsum(total)>2500

    Selecciona de la tabla cliente y distrito, la relacin de todos los clientes agrupados

    por distrito.

    Select c.nom_cliente,d.nom_dis from cliente c,distrito d where c.cod_dis=d.cod_dis

    groupBy d.nom_dis,c.nom_cliente

    USO DE SUBCONSULTAS

    Como saben, el lenguaje SQL est compuesto por comandos (CREATE,DROP,ALTER,SELECT,INSERT,UPDATE,DELETE), clusulas(FROM,WHERE,GROUPBY,HAVING,ORDERBY), operadoreslgicos (AND,OR,NOT) y de comparacin (,=,LIKE,IN...), y funciones deagregado(AVG,COUNT,MAX,MIN,SUM), las cuales se combinan en las instrucciones paracrear, actualizar y manipular las base de datos. Cuando se comprende el significado deestos comandos las consultas (tanto consultas internas o subconsultas, y externas)pueden verse bastante sencillas y realizar muchas operaciones contra la base datos conmucha facilidad.

    Volviendo al tema de la subconsultas, es propicio mencionar que una subconsulta es unainstruccin SELECT anidada dentro de otra instruccin SELECT:SELECTINTO,INSERTINTO,DELETE, o UPDATE o dentro de otra subconsulta. Los formatos para las instrucciones desubconsultas son las siguientes:

    WHERE expression[NOT] IN(subconsulta)

    WHERE expression operador_comparacion[ANY | ALL](subconsulta)

    WHERE [NOT] EXISTS(subconsulta )

    Una subconsulta puede devolver:

    1. Una sola columna o un solo valor en cualquier lugar en donde pueda utilizarse unaexpresin de un slo valor y puede compararse usando los siguientes operadores:=,,=,,!> y !

  • 7/31/2019 INFORMACIN sql

    40/4340

    Se puede usar el predicado ANY o SOME, para recuperar registros de la consultaprincipal, que satisfagan la comparacin con cualquier otro registro recuperado en lasubconsulta. Ejemplo:

    // muestra todos los productos que han sido vendidos en precios mayores 2000.

    SELECT cod_producto,nom_producto,stock,precio from producto Where cod_producto IN(select cod_producto from detalle where precio>2000)

    // Muestra todos los clientes que han comprado productos.

    SELECT cod_cliente,nom_cliente,ruc,telefono from cliente c whereEXISTS(select*fromfactura f Where c.cod_cliente=f.cod_cliente)

    // Muestra todos los clientes que han comprado productos utilizando la clusula IN.

    SELECT cod_Cliente,nom_cliente,ruc,telefono FROM Cliente WHERE cod_cliente IN(SELECTcod_Cliente FROM factura)

    // Modifica el campo sexo, ingresa la letra F a todos los clientes que vivan en eldistrito que empiece con la letra V.

    Update cliente Set sexo='F' Where cod_disIN(select cod_dis from distritoWhere nom_dis like'V%')

    // Elimina todos los clientes que vivan el distrito que empieza con la letra V.

    Delete CLIENTE Where cod_DISIN(select cod_DIS from DISTRITO Where nom_dis like'V%')

    LABORATORIO N 7

    BASE DE DATOS ALQUILER

    Dadas las siguientes tablas responda a las consultas en SQL

  • 7/31/2019 INFORMACIN sql

    41/4341

    --Clase N 7CREATEDATABASE ALQUILERgoUSE ALQUILER

    CREATETABLE LIBRO(IdLibro char(2)PRIMARYKEYNOTNULL,Titulo VARCHAR(20) NULL,Editorial VARCHAR(20)NULL,Area VARCHAR (20)NULL

    )

    CREATETABLE AUTOR (

    IdAutor CHAR(2)PRIMARYKEYNOTNULL,Nombre VARCHAR(50)NOTNULL,Nacionalidad VARCHAR(50)NOTNULL

    )

    CREATE TABLE LIBROAUTOR(IdAutor CHAR(2)REFERENCES AUTOR NOT

    NULL,IdLibro CHAR(2)REFERENCES LIBRO NOTNULL

    )

    CREATETABLE ESTUDIANTE (IdLetor CHAR(2)PRIMARYKEYNOTNULL,CarnetIdentidad CHAR(8)NOTNULL,Nombre VARCHAR(50)NOTNULL,Direccion VARCHAR(50)NOTNULL,Carrera VARCHAR(50)NOTNULL,Edad CHAR(2)NOTNULL

    )

    CREATETABLE PRESTAMO(

    IdLector CHAR(2)REFERENCES ESTUDIANTE NOTNULL,

    IdLibro CHAR(2)REFERENCES LIBRO NOTNULL,FechaPrestamo DATETIME,FechaDevolucion DATETIME,Devuelto VARCHAR(50)NOTNULL

    )

    INSERTINTO LIBRO VALUES('01','VISUAL ESTUDIO','loLA','INFORMATICA')INSERTINTO LIBRO VALUES('02','VISUAL ESTUDIO','norma','INFORMATICA')INSERTINTO LIBRO VALUES('03','corel draw','ditions du cochon','informatica')INSERTINTO LIBRO VALUES('04',' 7 palabras','ARBIA','NOVELA')INSERTINTO LIBRO VALUES('05','photosh','UNESCO Montevideo','informatica')

    INSERTINTO LIBRO VALUES('06','ingles','Amrica Libre','idiomas')INSERTINTO LIBRO VALUES('07',' El Amor Eficaz','Amrica Libre','NOVELA')INSERTINTO LIBRO VALUES('08',' 2da Edicin','Amrica Libre','LITERATURA')INSERTINTO LIBRO VALUES('09',' Triple Fronteraente','Amrica Luxemburgo','LITERATURA')go

    INSERTINTO AUTOR VALUES('01','PEDRO DIAS','BRAZIL')INSERTINTO AUTOR VALUES('02',' RUBIE RIVERA','QUITO ECUADOR')INSERTINTO AUTOR VALUES('03','JUAN Florio','Buenos Aires Argentina')INSERTINTO AUTOR VALUES('04',' KEVIN MOLINA','BRAZIL')INSERTINTO AUTOR VALUES('05',' Fabricio Caiazza','PARAGUAY')INSERTINTO AUTOR VALUES('06','DANIEL DIAS ','Espaa')INSERTINTO AUTOR VALUES('07','JUAN ACOSTA','Buenos Aires Argentina')INSERTINTO AUTOR VALUES('08','JEAN LOPEZ','Buenos Aires Argentina')

    INSERTINTO LIBROAUTOR VALUES('01','02')INSERTINTO LIBROAUTOR VALUES('05','03')INSERTINTO LIBROAUTOR VALUES('01','04')INSERTINTO LIBROAUTOR VALUES('06','05')INSERTINTO LIBROAUTOR VALUES('07','06')INSERTINTO LIBROAUTOR VALUES('01','07')INSERTINTO LIBROAUTOR VALUES('06','08')INSERTINTO LIBROAUTOR VALUES('04','05')

    INSERTINTO ESTUDIANTE VALUES('12','12345678','NEOLINA MENDOZA','AV.ARGENTINA','IDIOMAS','18')INSERTINTO ESTUDIANTE VALUES('13','42345678','JUANITO LA RUIZ ','AV.ARGENTINA','INGENIERAINFORMATICA','17')INSERTINTO ESTUDIANTE VALUES('14','12345678','FRANK PEREYRA','AV.ARGENTINA','ADMINISTRACION DEEMPRESAS','20')INSERTINTO ESTUDIANTE VALUES('15','41345678','KIARA GONZALES ','AV.LOS ANGELES','CONTABILIDAD','21')

    INSERTINTO ESTUDIANTE VALUES('18','45345678','CARLA RUIZ','AV.ARRIBA PERU','IDIOMAS','22')INSERTINTO ESTUDIANTE VALUES('19','23345678','JOSUE ROJAS ','AV.BOLIVAR','COMPUTACION','19')INSERTINTO ESTUDIANTE VALUES('20','49345678','YESSI ISIDRO ','AV.URUGUAY','ENFERMERIA','18')INSERTINTO ESTUDIANTE VALUES('21','78345678','GERSON DIAZ','AV.BRAZIL','MECANICA','23')

    INSERTINTO PRESTAMO VALUES('04','08','12/03/12','05/03/12','SI')INSERTINTO PRESTAMO VALUES('06','03','20/04/12','25/04/12','no')INSERTINTO PRESTAMO VALUES('04','04','22/05/12','23/05/12','SI')INSERTINTO PRESTAMO VALUES('05','05','23/06/12','26/06/12','NO')INSERTINTO PRESTAMO VALUES('04','06','24/07/12','26/08/12','SI')INSERTINTO PRESTAMO VALUES('05','07','25/08/12','28/08/12','NO')INSERTINTO PRESTAMO VALUES('03','08','26/09/12','29/09/12','SI')INSERTINTO PRESTAMO VALUES('02','01','27/10/12','30/10/12','NO')

    SELECT*FROM LIBRO

    SELECT*FROM PRESTAMOSELECT*FROM LIBROAUTORSELECT*FROM AUTORSELECT*FROM ESTUDIANTE

  • 7/31/2019 INFORMACIN sql

    42/4342

    1.Listar los nombres de los estudiantes cuyo apellido comience con la letra G?SELECT nombre FROM estudiante WHERE nombre LIKE'g%'

    2.Quines son los autores del libro Visual Studio Net, listar solamente los nombres?SELECT nombre FROM AUTOR WHERE IdAutor IN(SELECT IdAutor FROM LibroAutor WHERE IdLibro IN(SELECT IdLibro FROM libro WHERE Titulo ='VISUAL ESTUDIO'))

    3. Qu autores son de nacionalidad USA o Francia?SELECT Nombre, Nacionalidad FROM AUTOR WHERE Nacionalidad IN('ESPAA','BRAZIL')

    4. Qu libros No Son del Area de Internet?SELECT Titulo,Editorial, Area FROM libro WHERE area 'INFORMATICA'

    5. Qu libros se prest al Lector Raul Valdez Alanes?SELECT *FROM libro WHERE idlibro IN(SELECT idlibro FROM prestamo WHERE idlector IN(SELECT idlector FROM estudiante WHERE nombre='CARLA RUIZ'))

    6. Listar el nombre del estudiante de menor edad.SELECT nombre FROM estudiante WHERE edad IN(SELECT min(edad)FROM estudiante)

    7. Listar los nombres de los estudiante que se prestaron Libros de Base de DatosSELECT *FROM ESTUDIANTE WHERE IdLector IN(SELECT IdLictor FROM PRESTAMO WHERE IdLibro IN(SELECT IdLibro FROM lLIBRO WHERE Area='Base de Datos'))

    8. Listar los libros de editorial AlfayOmegaSELECT*FROM libro WHERE editorial ='COREL DRAW'

    9. Listar los libros que pertenecen al autor Mario BenedettiSELECT *FROM LIBRO WHERE IdLibro IN(SELECT IdLibro FROM LIBROAUTOR WHERE IdAutor IN(SELECT IdAutor FROM AUTOR WHERE Nombre='Benedetti Mario'))

    10. Listar los ttulos de los libros que deban devolverse el 10/04/07SELECT *FROM LIBRO WHERE IdLibro IN(SELECT IdLibro FROM Prestamo WHEREFechaDevolucion='04/10/2007'AND Devuelto='No')

    11. Hallar la suma de las edades de los estudiantesSELECTSUM(Edad)AS'TOTAL'FROM ESTUDIANTE

    12. Listar los datos de los estudiantes cuya edad es mayor al promedio

    SELECT* FROM ESTUDIANTE WHERE Edad > 18 --hecho por flavio

    LABORATORIO N 8Fecha : 09-10-2012

    1.Selecciona todos los campos de la tabla 'Clientes', pero los registros de todosaquellos clientes que sean del pas de Francia y de la ciudad de Marsella

    select NombreCompaa,Ciudad,Pas from clientes where Ciudad='Marsella'

    2. Selecciona todos los Empleados cuya fecha de nacimiento sea el ao de 1963 o

    1969, que sean de la ciudad de Londres y su fecha de contratacin sea del mes de ctubre

    SELECT Apellidos +'-'+ Nombre As'Empleados', FechaNacimiento, Ciudad,FechaContratacinFROM Empleados WHERE Ciudad='Londres'andyear(FechaNacimiento)=1963 oryear(FechaNacimiento)=1969

    3. Selecciona todos los productos agrupados por nombre de proveedorselect B.NombreCompaa, A.NombreProductofrom Proveedores As B, Productos as Aorderby NombreCompaa

    4. Selecciona todos los productos agrupados por nombre de categora

    select A.NombreCategora, B.NombreProductofrom Categoras As A, Productos As Borderby NombreCategora

  • 7/31/2019 INFORMACIN sql

    43/43

    5. Selecciona todos los proveedores cuyo nombre de la compaa tenga la letra o enla segunda y la R en la penltima posicin, as como as como nombre del contactoempiece con la G y Termine con la GSELECT NombreCompaa, NombreContactoFROM Proveedores WHERE NombreCompaa LIKE'_O%R_'and NombreContacto Like'G%G'

    6. Selecciona todos los pedidos realizados en el mes de mayo, agrupados porclientes en forma ascendenteSELECT A.FechaPedido, B.NombreCompaa FROM Pedidos As A,Clientes As BWHEREmonth(FechaPedido)=6 orderby IdEmpleado desc

    7. Selecciona la sumatoria de los totales por pedido, agrupados por pedido

    Select A.IdPedido, B.NombreProducto,(A.PrecioUnidad *A.Cantidad-A.Descuento)AsTotal'from Detalles As A, Productos As B orderby IdPedido

    8. Selecciona el nombre del producto, sumatoria del precio y nombre de la categorade los productos agrupados por nombre de categora, pero cuya sumatoria sea mayor que100select A.PrecioUnidad As'Total', A.NombreProducto, B.NombreCategorafrom Productos As A,Categoras As B

    9. Selecciona todos los nombres de los proveedores que vendieron productos de lacategora bebidas.

    select A.NombreCompaa, B.NombreProducto,C.NombreCategorafrom Proveedores As A, Productos As B, Categoras As C Orderby NombreCompaa

    10. Selecciona todos los nombres de los clientes que compraron el producto PEZ ESPADAordenados por nombre compaa en forma descendente

    select A.NombreCompaa, B.NombreProducto from Proveedores As A, Productos As Bwhere NombreProducto ='Pez Espada' Orderby NombreCompaa

    11. Selecciona los apellidos y nombres de los empleados que abastecieron de pedidosal cliente Hanari Carnes

    select A.Apellidos+' '+A.Nombre AS'Empleados ',B.NombreCompaa, B.NombreContacto

    from Empleados As A,Clientes As B where NombreCompaa='Hanari Carnes'

    12. Selecciona el promedio de los precios de los productos de la categora bebidas

    select A.NombreCategora ,sum(B.PrecioUnidad)As'Total' from Categoras As A,Productos As B where NombreCategora='Bebidas'

    13. Selecciona el mximo precio de los productos de la categora bebidasselectmax(PrecioUnidad)as Promedio from Productos where IdCategora='1'

    14. Selecciona el total de las compras efectuadas por el cliente Hanari Carnesselect*from Detalles where IdCategora IN(select IdCategora from Categoras where IdCliente IN(

    select IdCliente from Clientes where NombreCompaa ='Hanari carnes'))

    15. Selecciona todos los productos que compro el cliente Maison Dewey

    select A.NombreProducto, B.NombreCompaa from Productos As A, Clientes As Bwhere NombreCompaa ='Maison Dewey'

    16. Selecciona el total de compras efectuadas por el cliente Maison Dewey en el mesde febrero de 1998

    select A.NombreProducto, B.NombreCompaa , C.FechaEntrega from Productos As A,Clientes As B , Pedidos As C where NombreCompaa='Maison Dewey'andmonth(FechaEntrega)=02 and year(FechaEntrega)=1998