0% encontró este documento útil (0 votos)
69 vistas43 páginas

Copia y restauración de bases en SQL Server

Este documento proporciona instrucciones para realizar copias de seguridad y restauraciones de bases de datos en SQL Server. Explica cómo hacer una copia de seguridad seleccionando la base de datos en el Explorador de objetos y eligiendo "Copia de seguridad". Luego muestra cómo restaurar una base de datos seleccionando "Restaurar base de datos" y eligiendo el archivo de copia de seguridad. También cubre opciones adicionales como sobrescribir copias existentes o restaurar en una ubicación diferente.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
69 vistas43 páginas

Copia y restauración de bases en SQL Server

Este documento proporciona instrucciones para realizar copias de seguridad y restauraciones de bases de datos en SQL Server. Explica cómo hacer una copia de seguridad seleccionando la base de datos en el Explorador de objetos y eligiendo "Copia de seguridad". Luego muestra cómo restaurar una base de datos seleccionando "Restaurar base de datos" y eligiendo el archivo de copia de seguridad. También cubre opciones adicionales como sobrescribir copias existentes o restaurar en una ubicación diferente.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

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 hayas abierto), 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 botn derecho (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 SQL Server Express usa por defecto, simplemente puedes pulsar en el botn Aceptar para hacer la copia, pero si quieres elegir la ruta en la que 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 de seguridad. 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 muestra reducido, pero es mucho ms alto), pero no solo vale con seleccionar el directorio, ya que hay que escribir el nombre del fichero de copia de seguridad, en mi caso, como la base de datos que estoy copiando se llama conImagenes2, el nombre que le he dado es [Link], aunque no es obligatorio usar ninguna extensin, pero como es un "backup", pues...

Pumallica CC ompi Flavio,

.1

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 Archivos de 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 por defecto 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.

Pumallica CC ompi Flavio,

.2

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 realizado correctamente (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 el disco 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 base de datos... tal como te muestro en la figura 7.

Figura 7. Restaurar una base de datos


Pumallica CC ompi Flavio, .3

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 una base 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 la opcin Desde dispositivo y pulsar en el botn para seleccionar el fichero de copia de seguridad de la base mediante un cuadro de dilogo como el 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 para que 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 datos que 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
Pumallica CC ompi Flavio, .4

datos existente. Para indicarlo, en el cuadro de dilogo (figura 8), tendrs que pulsar en Opciones y seleccionar la opcin Sobrescribir la base de 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 directorio diferente, 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 mostrar seleccionado 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 la versin en espaol de Windows XP, es el directorio C:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\Data, aunque ese directorio 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 forma correcta con un aviso como el mostrado en la figura 12.

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


Pumallica CC ompi Flavio, .5

SEPARAR BASE DE DATOS Modo cdigo:

EXEC [Link].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 archivos de la base desde fuera del gestor SSMS, por ejemplo, desde el Explorador de Windows. Es decir, no podremos copiar, cortar, mover o eliminar los archivos fuente mdf, ndf y ldf. Si lo intentamos se mostrar un aviso de que la base de datos est en uso. sto es as porque SQL Server sigue en marcha, a pesar de que se cierre el gestor. Ten en cuenta que el servidor de base de datos normalmente se crea para que sirva informacin a diferentes programas, por eso sera absurdo que dejara de funcionar cuando cerramos el programa gestor, que slo se utiliza para realizar modificaciones sobre la base. Para poder realizar acciones sobre la base de datos, sta debe estar desconectada. Para ello, desde el SSMS, desplegamos el men contextual de la 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 Windows nos dejar manipular los archivos. ADJUNTAR BASE DE DATOS

indicndonos que la base de datos est desconectada, a partir de este momento

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 la ubicacin 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 carpeta Bases de datos desplegar el men contextual y elegir Adjuntar...

Pumallica CC ompi Flavio,

.6

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.

Pumallica CC ompi Flavio,

.7

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 de los 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 los siguientes: TABLAS: Estos objetos contienen a los datos de la base de datos. Estos datos estn agrupados en filas y en columnas.(Cada fila representa 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 solo un tipo de dato. CLAVES PRINCIPALES: Estas garantizan que cada fila sea nica en cada tabla, proporcionando una forma de identificar de manera 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 de datos. 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 cuales aceleran la respuesta en el servidor. FUNCIONES DEFINIDAS POR EL USUARIO: Son funciones creadas por cualquier usuario, las mismas que nos amplan la capacidad 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 manteniendo datos 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 el contenido 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 registrar operadores. 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 CREATE DROP ALTER Descripcin Utilizado para crear nuevas Base de Datos, tablas, campos e ndices. Empleado para eliminar Base de Datos, tablas e ndices. Utilizado para modificar las Base de Datos, tablas agregando la configuracin, campos o cambiando la definicin de los campos.

Practica Crear la base de datos Biblioteca mediante cdigo EL LENGUAJE DE DEFINICIN DE DATOS (DDL) 1. 2. Posteriormente crear las tablas del sistema de Biblioteca. Crear la siguiente base de datos con sus respectivas tablas en el lenguaje de definicin de datos DDL. Insertar 20 registros a cada una de las tablas creadas en la Base de Datos Biblioteca

Pumallica CC ompi Flavio,

.8

Base de datos Biblioteca

CREATEDATABASE 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 ) 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')

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 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('0009','12/09/1990 ','0003','0010') INSERTINTO PRESTAMO VALUES('0001','12/04/1995 ','0002','0003') INSERTINTO PRESTAMO VALUES('0010','15/02/2000 ','0002','0001') INSERTINTO PRESTAMO VALUES('0002','11/02/1995 ','0004','0002') INSERTINTO PRESTAMO VALUES('0003','12/11/1997 ','0002','0007') SELECT*FROM DISTRITO INSERTINTO PRESTAMO VALUES('0004','08/02/1999 ','0002','0003') SELECT*FROM USUARIO INSERTINTO PRESTAMO VALUES('0005','12/07/1994 ','0008','0009') SELECT*FROM ESPECIALIDAD INSERTINTO PRESTAMO VALUES('0006','05/02/1997 ','0003','0002') SELECT*FROM LIBRO INSERTINTO PRESTAMO VALUES('0007','01/02/1993 ','0007','0005') SELECT*FROM PRESTAMO INSERTINTO PRESTAMO VALUES('0008','12/08/1991 ','0009','0001')

Pumallica CC ompi Flavio,

.9

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 o compondrn la consulta. El parmetro 'lista_campo' est compuesto por uno o ms nombres de campos, separados por comas, pudindose especificar tambin el nombre de la tabla a la cual pertenecen, seguido de un punto y del nombre del campo correspondiente. Si el nombre del campo o de la tabla est compuesto de ms de una palabra, este nombre ha de escribirse entre corchetes ([nombre]). Si se desea seleccionar todos los 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 una sentencia 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 se encuentran los campos especificados en la sentencias SELECT. Estas tablas o consultas se separan por medio de comas (,), y, si sus nombres estn compuestos por ms de una palabra, stos se escriben entre Corchetes ([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 agenda telefnica de nuestros clientes. SELECT nombre,ape_pat,ape_mat,telefono FROM usuario Selecciona el campo cod_especialidad de la tabla [Link] 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 los registros). Para indicar este conjunto de registros se hace uso de criterios o condiciones, que no es ms que una comparacin del contenido de un campo 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 e informatica', 'contabilidad' o 'administracion'. SELECT*FROM libro WHERE cod_especialidad='02'OR cod_especialidad='03'OR cod_especialidad='01'
Pumallica CC ompi Flavio, .10

Selecciona los campos 'nombre' y 'apellidos' de la tabla usuario, escogiendo a aquellos usuarios que sean de villa el salvador SELECT nom_alumno,ape_pat,ape_mat FROM usuario WHERE cod_distrito='01' Selecciona todos los libros cuyo stock sea mayor que [Link]*FROM libro WHERE stock>5 Selecciona todos los libros con stock comprendidos entre los 4 y los [Link]*FROM libro WHERE stock BETWEEN 4 AND 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<='01/07/1985' Selecciona los usuarios nacidos entre los meses de julio a diciembre. SELECT*FROM usuario WHEREmonth(fec_nac)>=07 andmonth(fec_nac)<=12 Selecciona los alumnos nacidos en julio del 1984. SELECT*FROM usuario WHEREmonth(fec_nac)=07 andyear(fec_nac)=1984 Selecciona los alumnos cuyo nombre comience con los caracteres 'AL'. SELECT*FROM usuario WHERE nom_alumno LIKE'Al%' Selecciona los clientes cuyos apellido paterno terminen con los caracteres 'EZ'. SELECT*FROM usuario WHERE ape_pat LIKE'%EZ' Selecciona los alumnos cuyo apellido paterno contenga, en cualquier posicin, los caracteres 'AN'. SELECT*FROM usuario WHERE ape_pat LIKE'%AN%' Selecciona todos los usuarios que vivan en el distrito de VILLA EL SALVADOR, SAN JUAN, SURCO y LA MOLINA, que se llamen JUAN. SELECT*FROM usuario WHERE cod_distrito IN('01','02','07','10')ANDnom_alumno='JUAN'
CLUSULA ORDER BY La clusula ORDER BY suele escribirse al final de un mandato en SQL. Dicha clusula establece un criterio de ordenacin de los datos de la consulta, por los campos que se especifican en dicha clusula. La potencia de ordenacin de dicha clusula radica en la especificacin de los campos por los que se ordena, ya que el programador puede indicar cul ser el primer criterio de ordenacin, el segundo, etc., as como el tipo de ordenacin por ese criterio: ascendiente o descendente. (...)ORDERBY campo1 [ASC/DESC][,campo2 [ASC/DESC]...] La palabra reservada ASC es opcional e indica que el orden del campo ser de tipo ascendiente (0-9 A-Z), mientras que, si se especifica la palabra reservada DESC, se indica que el orden del campo es descendiente (9-0 Z-A). Si no se especifica ninguna de estas palabras reservadas, la clusula ORDER BY toma, por defecto, el tipo ascendiente [ASC]. He aqu algunos ejemplos:

Relacin de todos los registros de la tabla Usuario, ordenados por el campo apellido paterno y apellido materno. SELECT*FROM usuario ORDERBY ape_pat, ape_mat Relacin de usuarios ordenados desde el menor a mayor. SELECT*FROM usuario ORDERBY fec_nac DESC Relacin de usuario por 'apellidos en forma Ascendente, y por 'fecha de nacimiento' en orden descendiente (del ms viejo al ms joven). SELECT*FROM usuario ORDERBY ape_pat, ape_mat, fecha_nacimiento DESC
ELIMINACIN DINMICA DE REGISTROS Quin no ha sentido la necesidad de eliminar de un golpe un grupo de registros en comn, en lugar de hacerlo uno por uno. Esta operacin puede ser mucho ms habitual de lo que parece en un principio y, por ello, el lenguaje SQL nos permitir eliminar registros que cumplan las condiciones o criterios que nosotros le indiquemos a travs de la sentencia DELETE, cuya sintaxis es la siguiente: DELETEFROM tablas WHERE criterios Donde el parmetro 'tablas' indica el nombre de las tablas de las cuales se desea eliminar los registros, y, el parmetro 'criterios', representa las comparaciones o criterios que deben cumplir los registros a eliminar, respetando a aquellos registros que no los cumplan. Si por ejemplo. Quisiramos eliminar todos los libros de la especialidad de computacin en el da de hoy, utilizaramos la

DELETEFROM libroWHERE cod_especialidad=02


Pumallica CC ompi Flavio, .11

ARITMTICA CON SQL Quin 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 de los comerciales en este mes?. Tranquilos!: el lenguaje SQL nos permitir resolver estas y otras cuestiones de forma muy sencilla, ya que posee una 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 MXIMOS Tambin 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 [Link](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 el nuevo 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 clculo en 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 una pequea 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 ocupa de 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 que se va a modificar, y el parmetro nuevo_valorrespresenta una expresin (constante, valor directo, un clculo, etc.) cuyo resultado o valor ser el nuevo 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 la CLAUSULA VALUES. InsertInto Usuario(cod_alumno,nom_alumno,ape_pat, ape_mat, cod_distrito, cod_especialidad) Values(0020,MARIO,CANTA,CARREO,02,02)

Pumallica CC ompi Flavio,

.12

LABORATORION 4 BASE DE DATOS BIBLIOTECA

-calse n4 CREATEDATABASE 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
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')

) 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 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') Pumallica CC ompi Flavio, .13

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') SELECT*FROM DISTRITO SELECT*FROM USUARIO SELECT*FROM ESPECIALIDAD SELECT*FROM LIBRO SELECT*FROM PRESTAMO 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')

1. Selecciona todos los campos de la tabla 'usuarios', pero los registros de todos aquellos 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 los libros 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 a aquellos usuarios que sean de villa el salvador. SELECT*FROM LIBRO WHERE Cod_Especialidad ='01' IN Cod_Especialidad ='08'OR Cod_Especialidad ='09' 4. Selecciona todos los libros con stock comprendidos entre los 4 y los 7 ordenados por ttulo. SELECT*FROM LIBRO WHERE Stock BETWEEN 4 AND 7 5. Selecciona los usuarios nacidos del 1 de Julio de 1983 al 1 de julio 1985 y sean del distrito de villa mara. SELECT*FROM USUARIO WHERE Fecha_Naci>='01/07/1983'AND Fecha_Naci<='01/07/1985' 6. Selecciona los usuarios nacidos en julio del 1984 que sean de la especialidad de administracin. SELECT*FROM USUARIO WHERE month(Fecha_Naci)=07 AND year(Fecha_Naci)=1984 and Cod_Especialidad ='09' 7. Selecciona todos los usuarios que vivan en el distrito de VILLA EL SALVADOR, SAN JUAN, SURCO y LA MOLINA, que se llamen JUAN. SELECT*FROM USUARIO WHERE Cod_Distrito IN('01','02','07','10')AND Nombre='FLAVIO' 8. Selecciona los usuarios cuyo apellido paterno terminen con los caracteres 'EZ'. SELECT*FROM USUARIO WHERE Ape_Paterno LIKE'%pe' 9. Selecciona los alumnos cuyo nombre comience con los caracteres 'AL' y el apellido contenga la letra N. SELECT*FROM USUARIO WHERE Nombre LIKE'Al%'and Ape_Paterno LIKE'%n%' 10. Relacin de usuarios ordenados desde el menor a mayor. SELECT*FROM USUARIO ORDER BY Fecha_Naci DESC 11. Selecciona la sumatoria del stock de los libros de pertenecen a la especialidad de computacin. SELECT SUM(Stock)FROM LIBRO WHERE Cod_Especialidad='02' 12. Selecciona el promedio del stock de los libros. SELECT Avg(Stock)AS Promedio FROM LIBRO
Pumallica CC ompi Flavio, .14

13. Selecciona el mximo stock de los libros. SELECT Max(Stock)AS Promedio FROM LIBRO 14. Selecciona el mnimo stock de los libros de la especialidad de administracin. SELECT Min(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 WHERE month(Fecha_Prestamo)=01 AND month(Fecha_Prestamo)=02 and year(Fecha_Prestamo)=2005 16. 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'and month(Fecha_Prestamo)=10 and year(Fecha_Prestamo)=2005 18. Selecciona los usuarios que hayan nacido en el ao 2005 en el distrito de villa el salvador. SELECT*FROM USUARIO WHERE year(Fecha_Naci)=2005 AND Cod_Distrito='02' 19. Selecciona los alumnos cuyo nombre comience con los caracteres 'AL' y el apellido contenga 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 ORDER BY Fecha_Naci DESC

LABORATORIO N 4.1
Lenguaje de manipulacin de datos (DML).
Como ya hemos comentado el lenguaje de manipulacin de datos que permite gestionar la informacin de las bases de datos. Las sentencias principales de este lenguaje son: SELECT INSERT UPDATE DELETE

En esta unidad comenzaremos explicando la sentencia INSERT que nos permite aadir registros a nuestras tablas, de modo que luego podamos realizar nuestros ejemplos de la sentencia SELECT con los registros que vamos a aadir.

Insertando registros. La sentencia INSERT se utiliza para aadir nuevos registros a las tablas. Su sintaxis es la siguiente: INSERT INTO nombre_tabla (columna1, columna2,..., columnaN) VALUES (valor1, valor2, ..., valorN)
Pumallica CC ompi Flavio, .15

En la sintaxis vemos que introducimos el nombre de la tabla en la que vamos a aadir las siguientes valores para las columnas que especificamos entre parntesis. La lista de valores que vamos a introducir se coloca entre parntesis despus de la sentencia VALUES. El orden debe corresponder con el de las columnas. En caso de introducir un valor no vlido en alguna de las columnas se produce un error 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, ya que si vamos a aadir valores para todas las columnas de un registro, no es necesario indicar las columnas. 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 visto afectadas:

Vamos a aadir los registros para nuestro ejemplo: Oficinas y Empleados:

Pumallica CC ompi Flavio,

.16

Reservas:

Pumallica CC ompi Flavio,

.17

Recuperacin de registros. La sentencia SELECT permite obtener la informacin almacenada en nuestras tablas. Su sintaxis general es la siguiente: SELECT <columnas> 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 que pertenece 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 acceder separndolas 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:

Pumallica CC ompi Flavio,

.18

Filas duplicadas.
Una consulta que incluye una clave primaria, los resultados obtenidos sern nico, pero si tenemos el caso 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.

Pumallica CC ompi Flavio,

.19

Si deseamos ordenar por ms de un campo, podemos separas las expresiones de ordenacin por comas. En el siguiente ejemplo mostramos el salario y el nombre del empleado, ordenados en orden descendente por salario y en caso de coincidir por orden ascendente del nombre. Observa la posicin de 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 los reales dados en las tablas. Lo que hacemos es dar un alas para distinguir una determinada columna con 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 de resultados se modifica:

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

Pumallica CC ompi Flavio,

.20

Eliminar registros.
Para eliminar registros existentes en nuestras tablas, utilizamos la sentencia DELETE Su sintaxis es la siguiente: DELETE FROM tabla WHERE condicin. Esta sentencia elimina los registros de una tabla, pero incluso eliminando todos los registros de una tabla, esta sigue permaneciendo en nuestra base de datos. Para eliminar una tabla vaca de nuestra base de datos, utilizaremos la instruccin DROP TABLE. Tenemos otra instruccin que permite eliminar todos los registros de una tabla de un modo ms rpido que 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 la sentencia DELETE sin condicin.

Actualizar registros.
La instruccin UPDATE nos permite modificar los valores de una fila, varias o todos los registros de una fila en funcin de su condicin o condiciones. Esta instruccin slo puede modificar los registros de una nica tabla a la vez. Su sintaxis es la siguiente: UPDATE tabla SET columna1 = valor1, columna2 = valor2, .... , columnaN = valoreN WHERE condicin En el siguiente ejemplo se incrementa en 100 euros el salario de los empleados que tengan un salario menor 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:

Pumallica CC ompi Flavio,

.21

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 para nuestras sentencias:
Funcin ASCII(cadena) CHAR(cadena) CHAININDEX(cadena1, cadena2) CHAININDEX(cadena1, cadena2, posicin inicial) ESPACE(n) LEFT(cadena, n) LEN(cadena) LOWER(cadena) LTRIM(cadena) NCHAR(n) REPLACE(cadena1, cadena2, cadena3) RIGTH(cadena, n) RTRIM(cadena) SUBSTRING(cadena, m, n) UNICODE(expresion) UPPER(cadena) Descripcin Obtiene el cdigo ASCII del carcter de la izquierda en la cadena. Obtiene el cdigo ASCII de la cadena entera. Devuelve la posicin de la primera cadena en la segunda empezando a contar desde el inicio de la segunda cadena. Devuelve la posicin de la primera cadena en la segunda comenzando a contar desde la posicin indicada. Genera n espacios. Obtiene los n caracteres de la izquierda de la cadena. Devuelve la longitud de la cadena. Devuelve la cadena en minsculas. Suprime los espacios iniciales de la cadena. Obtiene el carcter UNICODE relativo al entero n. Encuentra la coincidencia de la segunda cadena en la primera y las remplaza por la tercera. Devuelve la n caracteres de la derecha de la cadena. Elimina los espacios en blanco del final de la cadena. Extrae la su cadena de la cadena que se encuentre entre las posiciones m y n. Devuelve el valor entero UNICODE del primer carcter de la expresin UNICODE. Devuelve la cadena en maysculas.

Pumallica CC ompi Flavio,

.22

Funciones numricas
En la siguiente tabla se presentan las funciones numricas ms importantes:
Funciones a+b a-b a*b a/b ABS(a) ASIN(a) ATAN(a) ATN2(a,b) CEILING(a) COS(a) COT(a) DEGREES(N) EXP(a) FLOOR(a) LOG(a) LOG10(a) PI POWER(a,b) RADIANS(n) RAND(semilla) ROUND(a,b) SIGN(a) SIN(a) SQRT(a) SQUARE(a) TAN(a) Suma de a y b. Resta de a menos b. Multiplicacin de a y b. Cociente de a y b. Valor absoluto. Arco seno de a (en radianes) Arco tangente de a (en radianes) ngulo en radianes, cuya tangente est entre a y b. Entero ms pequeo mayor o igual que a. Coseno de a, en radianes. Cotangente de a en radianes. Devuelve el valor en grados de n radianes. Nmero e elevado al exponente a. Mayor entero menor o igual que a. Logaritmo neperiano de a. Logaritmo decimal de a. Valor del nmero pi. Calcula a elevado a b. Devuelve el valor en radianes de n grados. Calcula un nmero aleatorio entre 0 y 1 a partir del semilla. Redondea a con precisin b. Devuelve 1 si a es positivo o cero, y -1 si a es negativo. Seno de a. Raz cuadrada de a. Cuadrado de a. Tangente de a. Descripcin

Funciones estadsticas.
Las principales funciones de agregado o estadsticas son las siguientes:
Funcin AVG(columna) COUNT(columna) MAX(columna) MIN(columna) STDEV(columna) STDEVP(columna) SUM(columna) VAR(columna) VARP(columna) Descripcin Media de la columna, ignora valores nulos. Nmero de elementos en la columna, incluye valores nulos. Mximo valor de una columna. Mnimo valor de una columna. Desviacin tpica de la columna. Cuasi desviacin tpica de la columna. Suma valores de la columna. Varianza de la columna. Cuasi varianza de la columna.

Pumallica CC ompi Flavio,

.23

Funciones de fecha.
Para trabajar con datos de tipo fecha contamos con las siguientes funciones:
Funciones DATEADD(tipo, fecha, a) DATEDIF(tipo, f1, f2) DATEPART(tipo, fecha) Day(fecha) GETDATE DAY(fecha) MONTH(fecha) YEAR(fecha) Descripcin Aade a unidades de fecha del tipo dado (Day, Week, Month, Quarter, Year) Nmero de unidades de fecha del tipo dado (Day, Week, Month, Quarter, Year) Da el valor entero del tipo de fecha dado Quarter, Year) (Day, Week, Month,

Da el da especificado en la fecha como un valor entero. Devuelve la fecha y hora actuales del sistema. Da el da especificado en la fecha como un valor entero. Da el mes especificado en la fecha como un valor entero. 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 siguiente ejemplo, duplicamos el salario de los empleados y le damos el nombre de Salario2:

Pumallica CC ompi Flavio,

.24

Consultas con condiciones.


La clusula WHERE permite introducir una serie de condiciones sobre los valores de los campos de los registros, para recoger slo aquellos registros que cumplan esa condicin. Estas condiciones suelen denominarse contrastes de comparacin. Tenemos los siguientes contrastes de comparacin: Contraste de comparacin: Contraste de comparacin Contrastes de rango Contrastes de pertenencia a un grupo. Contrastes de correspondencia de patrn. Contrastes de valor nulo. Descripcin: Comparan el valor de una expresin con el valor de otra. Comprueba si el valor se encuentra entre unos lmites. Comprueba si el valor de una expresin pertenece a un determinado grupo. Comprueba si los datos cumplen con un patrn dado. 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 menor o igual que otra. Compara si una expresin es mayor o igual que otra. Compara si las dos expresiones son distintas.

La sintaxis es la siguiente: SELECT<columnas>FROM<tablas>WHERE expresion1 operador expresion2 En el siguiente ejemplo se muestran todos los empleados que superen un salario mayor o igual que 1200:

Contrastes de rango.
El contraste de rango comprueba si un valor se encuentra entre dos valores determinados. Para realizar 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 de diciembre de 1969:
Pumallica CC ompi Flavio, .25

Contraste de pertenencia a un grupo.


Este tipo de condicin comprueba si el valor de una determinada expresin aparece en una lista de valores determinada. Para esta tarea utilizaremos la clusula IN En el siguiente ejemplo mostramos aquellos empleados que tengan un salario que coincida con la siguiente 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 el operador % 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:

Pumallica CC ompi Flavio,

.26

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 de caracteres, 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 contenga una 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 la operacin opuesta tenemos la clusula IS NOT NULL. En el siguiente ejemplo se muestra aquellos empleados que no tienen un valor nulo en campo codOficina, es decir aquellos empleados que tienen asignada una oficina (en este caso todos).

Contrastes compuestos.
Es muy frecuente el uso de consultas que requieren ms de una condicin de bsqueda. Los operadores AND, OR y 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 nacido antes 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 el siguiente ejemplo mostramos en una nica tabla los salarios de los empleados y los kilmetros realizados en las reservas de vehculos:

Pumallica CC ompi Flavio,

.27

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 el operador 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 UNION deben ser del mismo tipo de datos, o tener la posibilidad de convertir los tipos de datos de modo implcito o explcito. Las columnas del conjunto de resultados de una consulta debe coincidir con el orden de otra, ya que el operador UNION compara por orden. Los nombres de columna de la tabla que obtenemos de UNION se toman de la primera consulta individual. En el siguiente ejemplo se obtienen la sumatoria de todos los salarios de los empleados cuya condicin sea que su cdigo de oficina sea igual a 2:

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

Pumallica CC ompi Flavio,

.28

En el siguiente ejemplo se obtienen el empleado que tiene el mayor sueldo de la tabla empleado:

En el siguiente ejemplo se obtienen la sumatoria de todos los salarios de los empleados cuya condicin sea que su cdigo de oficina sea igual a 2:

Consultas Agrupadas
En el siguiente ejemplo se obtienen el cdigo de oficina y la sumatoria del salario de los empleados agrupados por cdigo de oficina:

En el siguiente ejemplo se obtienen el cdigo de oficina, el nombre del empleado y el salario de los empleados agrupados por cdigo de oficina, nombre del empleado y salario de todos los empleados cuyo salario sea mayor que 1000

Pumallica CC ompi Flavio,

.29

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

Practica: FACTURA: Id_factura Cod_cliente Fecha Igv Subtotal Total DETALLE: Id_factura Cod_producto Punitario Cantidad DISTRITO: Cod_dis Nom_dis BASE DE DATOS VENTAS CLIENTE: char(4) Cod_cliente char(4) Nom_cliente DateTime Ruc decimal(7,2) Telefono decimal(7,2) Direccion decimal(7,2) Cod_dis PRODUCTO: Cod_producto Nom_producto Stock Precio decimal(7,2) Id_categoria char(4) varchar(50) char(11) char(7) varchar(60) char(2) char(4) varchar(30) int char(2)

char(4) char(4) decimal(7,2) int char(2) varchar(30)

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

CREATE DATABASE VENTAS01 USE VENTAS01 CREATE TABLE DISTRITO( Cod_Distrito char(2) primary key not null, Nom_Distrito varchar (30)not null ) CREATE TABLE CATEGORIA( Cod_Categoria char(2) primary key not null, Nom_Categoria varchar (20)not null ) CREATE TABLE CLIENTE( Cod_Cliente char (4) primary key not null, Nombre varchar(50) null, Ruc varchar (11)not null, Telefono varchar (7) null, Direccion varchar (60)not null, Cod_Distrito char(2) references Distrito not null ) CREATE TABLE PRODUCTO(

Cod_Producto char (4) primary key not null, Nom_Producto varchar (30)not null, Stock int null, Precio decimal (7,2) not null, Cod_Categoria char (2) references Categoria not null ) CREATE TABLE FACTURA( Cod_Factura char (4) primary key not null, Cod_Cliente char (4) references Cliente not null, Fecha datetime null, Igv decimal(7,2) null, SubTotal decimal (7,2) null, Total decimal (7,2) null ) CREATE TABLE DETALLE( Cod_Factura char (4) references Factura not null, Cod_Producto char (4)references Producto not null, PUnitario decimal (7,2) null, Cantidad int not null)

30

//distrito INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO //categoria INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO //cliente
INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO

DISTRITO DISTRITO DISTRITO DISTRITO DISTRITO DISTRITO DISTRITO DISTRITO DISTRITO DISTRITO DISTRITO DISTRITO

VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES

('01','Lima') ('02','Villa el Salvador') ('03','Lince') ('04','Villa Maria') ('05','Victoria') ('06','Molina') ('07','Lurin') ('08','Chorrillos') ('09','Ate') ('10','San Borja') ('11','San JUAN') ('12','Surco') ('01','Computadoras') ('02','Muebles de hogar') ('03','Instr musicales') ('04','Construccion') ('05','Motores') ('06','Maquinarias pesadas') ('07','Prendas de vestir') ('08','Abarrotes') ('09','Librerias')

CATEGORIA CATEGORIA CATEGORIA CATEGORIA CATEGORIA CATEGORIA CATEGORIA CATEGORIA CATEGORIA

VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES

CLIENTE CLIENTE CLIENTE CLIENTE CLIENTE CLIENTE CLIENTE CLIENTE CLIENTE CLIENTE CLIENTE

VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES

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

//producto INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INTO INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO

PRODUCTO PRODUCTO PRODUCTO PRODUCTO PRODUCTO PRODUCTO PRODUCTO PRODUCTO PRODUCTO PRODUCTO FACTURA FACTURA FACTURA FACTURA FACTURA FACTURA FACTURA FACTURA FACTURA FACTURA DETALLE DETALLE DETALLE DETALLE DETALLE DETALLE DETALLE DETALLE DETALLE DETALLE

VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES

('0001','literatura infort','25','52.20','02') ('0002','fierro contsteru','5','52.20','04') ('0003','pc intekl','25','600.20','08') ('0004','yamaha 345','10','2000.20','02') ('0005','eternet','25','20.20','07') ('0006','caterpilar','25','20000.21','08') ('0007','arroz','2','52.20','05') ('0008','chela','25','32.20','02') ('0009','bolkete ','25','50000.21','04') ('0010','literatura infort','100','10.20','02')

VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES

('0001','0005','12/04/1985','019','4512','0') ('0002','0001','02/04/1985','0.19','12.21','0') ('0003','0002','11/05/1995','0.19','0','0') ('0004','0005','18/08/1975','0.19','0','0') ('0005','0006','15/09/1983','0.19','0','0') ('0006','0005','19/07/1988','0.19','0','0') ('0007','0008','17/01/1987','0.19','0','0') ('0008','0009','14/03/1995','0.19','5841.','55') ('0009','0001','18/12/2010','0.19','0','14') ('0010','0006','20/06/2000 ','0.19','11.20','0') ('0001','0005','65','142') ('0004','0007','48','475') ('0002','0005','65','45') ('0009','0008','64','65') ('0004','0006','78','78') ('0007','0004','46','35') ('0008','0007','617','45') ('0002','0007','14','15') ('0001','0006','89','46') ('0003','0004','42','18') SELECT * FROM FACTURA SELECT * FROM DETALLE

SELECT * FROM DISTRITO SELECT * FROM CATEGORIA SELECT * FROM CLIENTE

31

Crear la Base de Datos Ventas e Ingresar 10 registros por cada tabla y realizar las siguientes consultas SQL. [Link] una consulta que muestre los clientes que hayan nacido en los distritos de villa el salvador, san juan y surco. SELECT * FROM CLIENTE WHERE Cod_Distrito IN ('02', '04', '12') [Link] una consulta que muestre todos los productos cuyo stock este comprendido entre 10 a 50 de la categora monitor. SELECT * FROM PRODUCTO WHERE Stock>='10'AND Stock<='50'AND Cod_Categoria='08' [Link] una consulta que me muestre todas las facturas emitidas en el ao 2010 del cliente con cdigo 1001. SELECT * FROM FACTURA WHERE year(Fecha)=2010 and Cod_Cliente= '0009' 3. Realizar una consulta que muestre todas las ventas realizadas por los clientes cuyo nombre contenga la letra r en su campo nombre y termine con la letra z. SELECT * FROM CLIENTE WHERE Nombre LIKE '%r%' and Nombre LIKE '%z' 5. Realizar una consulta que nos muestre todas la ventas realizadas en julio del 2010 cuyo total este comprendida 1000 o 1200. SELECT * FROM FACTURA WHERE year(Fecha)=2010 and Total= '1000'and Total='1200' 6. Realizar una consulta que muestre el promedio de todas las ventas del mes de octubre del 2011. SELECT Avg(Total) AS Promedio FROM FACTURA WHERE month(Fecha)=10 AND year(Fecha)=2011 7. Realizar una consulta que muestre la sumatoria de todas las existencias de los productos cuya categora sea monitores. SELECT SUM(Stock) AS Total FROM PRODUCTO WHERE Cod_Categoria='02' 8. Realizar una consulta que me cuente cuantos artculos clientes tengo que viven en villa el salvador SELECT Nombre FROM CLIENTE WHERE Cod_Distrito='05' 9. Realizar una consulta que nos muestre la cantidad de clientes que viven en el distrito de villa mara. SELECT Nombre FROM CLIENTE WHERE Cod_Distrito='04' 10. Realizar una consulta que nos muestre la cantidad de productos de la categora impresoras cuya precio >400. SELECT * FROM PRODUCTO WHERE Cod_Categoria ='06'AND Precio>'400' 11. Realizar una consulta que muestre los clientes que hayan nacido en los distritos de 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 los meses de marzo y agosto del 2009. SELECT Cod_Cliente, Fecha FROM FACTURA WHERE month(Fecha)=03 AND month(Fecha)=08 AND year(Fecha)=2009 13. Realizar una consulta que me muestre el mnimo precio de los productos de la categora mouse. SELECT Min (Precio) AS Promedio FROM PRODUCTO WHERE Cod_Categoria='02' 14. Realizar una consulta que muestre el promedio de todos los productos de la categora monitores cuyo nombre de producto empiece con la letra s. SELECT Avg (Precio) AS Promedio FROM PRODUCTO WHERE Cod_Categoria='02'and Nom_Producto LIKE 's%' 15. Realizar una consulta que nos muestre la sumatoria de los totales del cliente con cdigo 1000 en el mes de octubre o diciembre SELECT SUM(Cod_Cliente) FROM CLIENTE WHERE month(Fecha)=08 AND year(Fecha)=1998 and codCliente=1000 16. Realizar modificar los datos de nmero de telfono de la tabla cliente a 2876655 a todos los clientes que vivan en san Juan. UPDATE CLIENTE SET Telefono='2876655' WHERE Cod_Distrito='11'

32

17. Realizar la modificacin de todos los stock de la tabla producto a 500, a todos los productos que empiecen con la letra r y termine con la letra s que sean de la categora 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. DELETE FROM PRODUCTO WHERE Cod_Categoria ='02' 19. Eliminar todo los registros cuyos clientes contengan en su nombre la letra r en cualquier posicin y la n en la antepenltima posicin. DELETE FROM CLIENTE WHERE Nombre LIKE '%r%' and Nombre LIKE '%n%' 20. Realizar el promedio de todas las ventas del mes de julio. SELECT Avg(Total) AS Promedio FROM FACTURA WHERE month(Fecha)=07

INFORMACIN N 6
1. Crear la siguiente Base de Datos e ingresar Valores. BASE DE DATOS NOTAS Select con dos tablas relacionadas Creando las tablas Alumnos y Notas

Create Table Alumnos( id_AlumnointIdentity(1,1), Nombrevarchar(30), Constraint PK_id_Alumno Primary Key(id_Alumno) ) Create Table Notas( id_Alumno int Not NULL, Nota int, Constraint FK_id_Alumno Foreign Key(id_Alumno) References Alumnos ) --Insertando registros en la tabla Alumnos Insert Insert Insert Insert Insert Alumnos Alumnos Alumnos Alumnos Alumnos Values('Juan') Values('Ana') Values('Luis') Values('Jorge') Values('Carmen')

Insertando registros en la tabla Notas Ejecutar estas 5 lneas marcndolas

Declare @id int Select @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 int Select @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

33

Declare @id int Select @id= (Select id_Alumno From Alumnos Where Nombre like 'Luis') Insert NotasValues(@id, 6) Insert NotasValues(@id, 12) Select * From Notas Declare @id int Select @id= (Select id_Alumno From Alumnos Where Nombre like 'Jorge') Insert NotasValues(@id, 11) Insert NotasValues(@id, 10) Declare @id int Select @id= (Select id_Alumno From Alumnos Where Nombre like 'Carmen') Insert NotasValues(@id, 6) Insert NotasValues(@id, 12) Verificar Select * From Alumnos Select * From Notas [01] Mostrar Nombre de alumnos con sus respectivas Notas Select Nombre, NotaFromAlumnos INNER JOIN Notas OnAlumnos.id_Alumno=Notas.id_Alumno --Otro modo Select [Link], [Link] Alumnos As A, Notas As B WhereA.id_Alumno=B.id_Alumno --Otro modo Select Nombre, Nota From Alumnos, Notas WhereAlumnos.id_Alumno=Notas.id_Alumno [02] Mostrar Nombre de alumnos con sus respectivas notas en Orden alfabtico Select Nombre, NotaFrom Alumnos INNER JOIN Notas OnAlumnos.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 INNER JOIN Notas OnAlumnos.id_Alumno=Notas.id_Alumno Group ByNombre Order ByNombre ......................................... Select Nombre, Avg(Nota) As [Promedio de Notas]From Alumnos INNER JOIN Notas OnAlumnos.id_Alumno=Notas.id_Alumno Group ByNombre Order ByNombre [04] Mostrar Nombre de alumno y su respectivo promedio en orden de mrito SelectNombre,Avg(Nota)From Alumnos INNER JOIN Notas OnAlumnos.id_Alumno=Notas.id_Alumno Group ByNombre Order By avg(nota) desc [05] Nombre de alumnos aprobados y su respectivo promedio en orden alfabtico Select Nombre, Avg(Nota) As Promedio From Alumnos INNER JOIN Notas OnAlumnos.id_Alumno=Notas.id_Alumno Group ByNombre HavingAvg(Nota)>10 OrderBy Nombre --Otro modo

34

Select [Link], Avg([Link]) As Promedio From Alumnos As A,Notas As B WhereA.id_Alumno=B.id_Alumno Group [Link] Having Avg([Link])>10 [Link] [06] Seleccione alumnos que tienen comonota un 11 o un 12 Select Nombre, NotaFrom Alumnos INNER JOIN Notas OnAlumnos.id_Alumno=Notas.id_Alumno [Link]=11 [Link]=12 Order ByNombre -- Otro modo Select [Link], [Link] Alumnos As A, Notas As B Where (A.id_Alumno=B.id_Alumno) And ([Link]=11 Or [Link]=12) Order [Link] [07] Seleccione alumnos que tienen comonotas promedio 10 y 12 Select Nombre, avg(Nota)FromAlumnos INNER JOIN Notas OnAlumnos.id_Alumno=Notas.id_Alumno group by nombre havingavg([Link])=10 Or avg([Link])=12 OrderBy Nombre [08] Nombre de alumnos que tienen notas desaprobadas y cuntas notas desaprobadas tiene Select Nombre, Count(Nota) As [Nm. Notas Desaprobadas]From Alumnos INNER JOIN Notas OnAlumnos.id_Alumno=Notas.id_Alumno [Link]<11 Group ByNombre Order ByNombre -- Otro modo Select [Link], Count([Link]) As [Nm. Notas Desaprobadas]From Alumnos As A, Notas As B Where (A.id_Alumno=B.id_Alumno) And ([Link]<11) Group [Link] Order [Link] [09] Quin fue el mejor alumno? Select Nombre,Avg(Nota)From Alumnos INNER JOIN Notas OnAlumnos.id_Alumno=Notas.id_Alumno Group ByNombre Order By avg(nota) desc

LABORATORIO N 6 (EVALUACION)
Agrupamiento de Registros GROUP BY Combina los registros con valores idnticos, en la lista de campos especificados, en un nico registro. Para cada registro se crea un valor sumario si se incluye una funcin SQL agregada, como por ejemplo Sum o Count, en la instruccin SELECT. Su sintaxis es: SELECT campos FROM tabla WHERE criterio GROUP BY campos del grupo GROUP BY es opcional. Los valores de resumen se omiten si no existe una funcin SQL agregada en la instruccin SELECT. Los valores Null en los campos GROUP BY se agrupan y no se omiten. No obstante, los valores Null no se evalan en ninguna de las funciones SQL agregadas. Se utiliza la clusula WHERE para excluir aquellas filas que no desea agrupar, y la clusula 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 la instruccin SELECT incluya al menos una funcin SQL agregada.

35

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
create database VENTA USE VENTA CREATE TABLE DISTRITO( Cod_dis char(2) primary key not null, Nom_dis varchar(30) ) CREATE TABLE CLIENTE( Cod_cliente char(4)primary key not null, Nom_cliente varchar(50), Ruc char(11), Telefono char(7), Direccion varchar(60), Cod_dis char(2) REFERENCES DISTRITO NOT NULL, ) CREATE TABLE PRODUCTO( Cod_producto char(4) primary key not null, Nom_producto varchar(30), Stock int, Precio decimal(7,2), Id_categoria char(2)REFERENCES CATEGORIA NOT NULL,) CREATE TABLE CATEGORIA( Id_categoria char(2)primary key not null, Nom_categoria varchar(20) ) CREATE TABLE FACTURA( Id_factura char(4)primary key not null, Cod_cliente char(4) REFERENCES CLIENTE NOT NULL, Fecha DateTime, Igv decimal(7,2), Subtotal decimal(7,2), Total decimal(7,2) ) CREATE TABLE DETALLE( Id_factura char(4) references FACTURA not null, Cod_producto char(4) references PRODUCTO NOT NULL, Punitario decimal(7,2), Cantidad int )

INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT
INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT

INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO
INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO

DISTRITO DISTRITO DISTRITO DISTRITO DISTRITO DISTRITO DISTRITO DISTRITO DISTRITO DISTRITO

VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES

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

CLIENTE CLIENTE CLIENTE CLIENTE CLIENTE CLIENTE CLIENTE CLIENTE CLIENTE CLIENTE CLIENTE

VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES

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

INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT

INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO

CATEGORIA CATEGORIA CATEGORIA CATEGORIA CATEGORIA CATEGORIA CATEGORIA CATEGORIA CATEGORIA CATEGORIA PRODUCTO PRODUCTO PRODUCTO PRODUCTO PRODUCTO PRODUCTO PRODUCTO PRODUCTO PRODUCTO

VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES

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

VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES

('0001','literatura infort','25','52.20','02') ('0002','fierro contsteru','5','52.20','04') ('0003','pc intekl','25','600.20','08') ('0004','yamaha 345','10','2000.20','02') ('0005','eternet','25','20.20','07') ('0006','caterpilar','25','20000.21','08') ('0007','arroz','2','52.20','05') ('0008','chela','25','32.20','02') ('0009','bolkete ','25','50000.21','04')

36

INSERT INTO PRODUCTO VALUES ('0010','literatura infort','100','10.20','02') INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO FACTURA FACTURA FACTURA FACTURA FACTURA FACTURA FACTURA FACTURA FACTURA FACTURA DETALLE DETALLE DETALLE DETALLE DETALLE DETALLE DETALLE DETALLE DETALLE DETALLE VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES ('0001','0005','12/04/1985','019','4512','0') ('0002','0001','02/04/1985','0.19','12.21','0') ('0003','0002','11/05/1995','0.19','0','0') ('0004','0005','18/08/1975','0.19','0','0') ('0005','0006','15/09/1983','0.19','0','0') ('0006','0005','19/07/1988','0.19','0','0') ('0007','0008','17/01/1987','0.19','0','0') ('0008','0009','14/03/1995','0.19','5841.','55') ('0009','0001','18/12/2010','0.19','0','14') ('0010','0006','20/06/2000 ','0.19','11.20','0') ('0001','0005','65.22','142') ('0004','0007','48','475') ('0002','0005','65','45') ('0009','0008','64','65') ('0004','0006','78','78') ('0007','0004','46','35') ('0008','0007','617','45') ('0002','0007','14','15') ('0001','0006','89','46') ('0003','0004','42','18') SELECT * FROM CLIENTE SELECT * FROM PRODUCTO SELECT * FROM CATEGORIA distrito.

SELECT * FROM DETALLE SELECT * FROM FACTURA SELECT * FROM DISTRITO

1. Selecciona de la tabla cliente, los clientes agrupados por SELECT CLIENTE.Cod_cliente,CLIENTE.Nom_cliente, DISTRITO.Nom_dis FROM 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 por cdigo del cliente. SELECT Cod_cliente, Fecha from FACTURA SELECT CLIENTE.Nom_cliente, FACTURA.Id_factura FROM CLIENTE,FACTURA WHERE FACTURA.Cod_cliente=CLIENTE.Cod_cliente 3. Selecciona de la tabla factura el total de compras efectuadas por los clientes agrupndolos por cdigo del cliente. SELECT Cod_cliente, total from FACTURA [Link] de la tabla factura el total de compras efectuadas por los clientes agrupndolos por cdigo del cliente cuyas compras supera los 2500. SELECT Cod_cliente, total from FACTURA WHERE total >=12 [Link] de la tabla cliente y distrito, la relacin de todos los clientes agrupados por distrito. SELECT Nom_cliente, Cod_dis from CLIENTE 6. realizar una consulta que muestre el nmero de factura, nombre del cliente, ruc, total de todas las facturas emitidas en el mes de marzo. SELECT Id_factura, Nom_cliente, Ruc FROM FACTURA INNER JOIN CLIENTE ON FACTURA.Id_factura=CLIENTE.Cod_cliente 7. realizar una consulta que muestre el nmero de factura, nombre del cliente, ruc, fecha de factura, cod_producto, nombre del producto, precio y cantidad agrupados por factura. SELECT Id_factura, Nom_cliente, Ruc, Fecha, Cod_producto, Nom_producto, Precio, Stock FROM FACTURA INNER JOIN CLIENTE INNER JOIN PRODUCTO ON FACTURA.Id_factura=CLIENTE.Cod_cliente ON FACTURA.Id_factura=PRODUCTO.Cod_producto 8. hacer una consulta que muestre todas las facturas emitidas en el mes de octubre que vendieron al menos un Impresora. SELECT * FROM FACTURA WHERE month(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 INNER JOIN CLIENTE ON 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 cantidad mayor a 10 unidades. SELECT Nom_producto, Stock as cantidad FROM PRODUCTO WHERE Stock >10

37

11.

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

SELECT Nom_producto, Avg(Id_factura) FROM DETALLE INNER JOIN DETALLE ON 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 FACTURA: Id_factura Cod_cliente Fecha Igv Subtotal Total DETALLE: Id_factura Cod_producto Punitario Cantidad DISTRITO: Cod_dis Nom_dis CLIENTE: BASE DE DATOS VENTAS char(4) char(4) DateTime decimal(7,2) decimal(7,2) decimal(7,2) char(4) char(4) decimal(7,2) int char(2) varchar(30) Cod_cliente Nom_cliente Ruc Telefono Direccion Cod_dis PRODUCTO: Cod_producto Nom_producto Stock Precio decimal(7,2) Id_categoria CATEGORIA: Id_categoria Nom_categoria char(4) varchar(50) char(11) char(7) varchar(60) char(2) char(4) varchar(30) int char(2) char(2) varchar(20)

Agrupamiento de Registros

GROUP BY

Combina los registros con valores idnticos, en la lista de campos especificados, en un nico registro. Para cada registro se crea un valor sumario si se incluye una funcin SQL agregada, como por ejemplo Sum o Count, en la instruccin SELECT. Su sintaxis es: SELECT campos FROM tabla WHERE criterio GROUP BY campos del grupo GROUP BY es opcional. Los valores de resumen se omiten si no existe una funcin SQL agregada en la instruccin SELECT. Los valores Null en los campos GROUP BY se agrupan y no se omiten. No obstante, los valores Null no se evalan en ninguna de las funciones SQL agregadas. Se utiliza la clusula WHERE para excluir aquellas filas que no desea agrupar, y la clusula 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 la instruccin SELECT incluya al menos una funcin SQL agregada. 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 cuales de ellos se van a mostrar. SELECT Id_FamiliaSum(Stock) FROM Productos GROUP BY Id_Familia HAVING Sum(Stock) > 100 AND NombreProducto Like BOS%;

38

1.

Hacer las siguientes consultas con Agrupamiento. distrito.

Selecciona de la tabla cliente, los clientes agrupados por

selectcod_dis,nom_cliente from cliente group By cod_dis,nom_cliente Selecciona de la tabla factura las compras efectuadas por los cliente agrupndolos por codigo del cliente. select cod_cliente,fecha,totalfrom factura group By cod_cliente,fecha,total Selecciona de la tabla factura el total de compras efectuadas por los cliente agrupndolos por codigo del cliente. select cod_cliente,sum(total) from factura group By cod_cliente

Selecciona de la tabla factura el total de compras efectuadas por los cliente agrupndolos por codigo del cliente cuyas compras supera los 2500. select cod_cliente,sum(total) from factura group By cod_cliente having sum(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 group By 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, GROUP BY, HAVING, ORDER BY), operadores lgicos (AND, OR, NOT) y de comparacin (<, >, =, LIKE, IN...), y funciones de agregado(AVG, COUNT, MAX, MIN, SUM), las cuales se combinan en las instrucciones para crear, actualizar y manipular las base de datos. Cuando se comprende el significado de estos comandos las consultas (tanto consultas internas o subconsultas, y externas) pueden verse bastante sencillas y realizar muchas operaciones contra la base datos con mucha facilidad. Volviendo al tema de la subconsultas, es propicio mencionar que una subconsulta es una instruccin SELECT anidada dentro de otra instruccin SELECT: SELECT INTO, INSERT INTO, DELETE, o UPDATE o dentro de otra subconsulta. Los formatos para las instrucciones de subconsultas 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 una expresin de un slo valor y puede compararse usando los siguientes operadores: =, <, >, <=, >= , <>, !> y !<. 2. Una sola columna o muchos valores que se pueden utilizar con el operador de comparacin de listas IN en la clusula WHERE. 3. Muchas filas que pueden utilizarse para comprobar la existencia, usando la palabra EXISTS en la clusula WHERE.

39

Se puede usar el predicado ANY o SOME, para recuperar registros de la consulta principal, que satisfagan la comparacin con cualquier otro registro recuperado en la subconsulta. 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 where EXISTS (select * from factura 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 el distrito que empiece con la letra V. Update cliente Set sexo='F' Where cod_disIN(select cod_dis from distrito Where 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

40

--Clase N 7
CREATE DATABASE go USE ALQUILER ALQUILER ) CREATE TABLE ESTUDIANTE ( IdLetor CHAR (2) PRIMARY KEY NOT NULL, CarnetIdentidad CHAR(8) NOT NULL, Nombre VARCHAR (50) NOT NULL, Direccion VARCHAR (50) NOT NULL, Carrera VARCHAR (50) NOT NULL, Edad CHAR (2) NOT NULL ) CREATE TABLE PRESTAMO( IdLector CHAR (2) REFERENCES ESTUDIANTE NOT NULL, IdLibro CHAR (2) REFERENCES LIBRO NOT NULL, FechaPrestamo DATETIME, FechaDevolucion DATETIME, Devuelto VARCHAR (50) NOT NULL )

CREATE TABLE LIBRO( IdLibro char(2)PRIMARY KEY NOT NULL, Titulo VARCHAR (20) NULL, Editorial VARCHAR (20) NULL, Area VARCHAR (20)NULL ) CREATE TABLE AUTOR ( IdAutor CHAR (2)PRIMARY KEY NOT NULL, Nombre VARCHAR (50) NOT NULL, Nacionalidad VARCHAR (50) NOT NULL ) CREATE NULL, IdLibro CHAR (2) REFERENCES LIBRO NOT NULL TABLE LIBROAUTOR( IdAutor CHAR (2) REFERENCES AUTOR NOT

INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT go INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT

INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO INTO

LIBRO LIBRO LIBRO LIBRO LIBRO LIBRO LIBRO LIBRO LIBRO AUTOR AUTOR AUTOR AUTOR AUTOR AUTOR AUTOR AUTOR

VALUES ('01','VISUAL ESTUDIO','loLA','INFORMATICA') VALUES ('02','VISUAL ESTUDIO','norma','INFORMATICA') VALUES ('03','corel draw','ditions du cochon','informatica') VALUES ('04',' 7 palabras','ARBIA','NOVELA') VALUES ('05','photosh','UNESCO Montevideo','informatica') VALUES ('06','ingles','Amrica Libre','idiomas') VALUES ('07',' El Amor Eficaz','Amrica Libre','NOVELA') VALUES ('08',' 2da Edicin','Amrica Libre','LITERATURA') VALUES ('09',' Triple Fronteraente','Amrica Luxemburgo','LITERATURA') VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES ('01','PEDRO DIAS' ,'BRAZIL') ('02',' RUBIE RIVERA','QUITO ECUADOR') ('03','JUAN Florio','Buenos Aires Argentina') ('04',' KEVIN MOLINA','BRAZIL') ('05',' Fabricio Caiazza','PARAGUAY') ('06','DANIEL DIAS ','Espaa') ('07','JUAN ACOSTA','Buenos Aires Argentina') ('08','JEAN LOPEZ','Buenos Aires Argentina') ('01','02') ('05','03') ('01','04') ('06','05') ('07','06') ('01','07') ('06','08') ('04','05')

LIBROAUTOR LIBROAUTOR LIBROAUTOR LIBROAUTOR LIBROAUTOR LIBROAUTOR LIBROAUTOR LIBROAUTOR

VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES

INSERT INTO ESTUDIANTE INSERT INTO ESTUDIANTE INFORMATICA','17') INSERT INTO ESTUDIANTE EMPRESAS','20') INSERT INTO ESTUDIANTE INSERT INTO ESTUDIANTE INSERT INTO ESTUDIANTE INSERT INTO ESTUDIANTE INSERT INTO ESTUDIANTE

VALUES ('12','12345678','NEOLINA MENDOZA','[Link]','IDIOMAS','18') VALUES ('13','42345678','JUANITO LA RUIZ ','[Link]','INGENIERA VALUES ('14','12345678','FRANK PEREYRA','[Link]','ADMINISTRACION DE VALUES VALUES VALUES VALUES VALUES ('15','41345678','KIARA GONZALES ','[Link] ANGELES','CONTABILIDAD','21') ('18','45345678','CARLA RUIZ','[Link] PERU','IDIOMAS','22') ('19','23345678','JOSUE ROJAS ','[Link]','COMPUTACION','19') ('20','49345678','YESSI ISIDRO ','[Link]','ENFERMERIA','18') ('21','78345678','GERSON DIAZ','[Link]','MECANICA','23')

INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT SELECT SELECT SELECT SELECT SELECT

INTO INTO INTO INTO INTO INTO INTO INTO * * * * *

PRESTAMO PRESTAMO PRESTAMO PRESTAMO PRESTAMO PRESTAMO PRESTAMO PRESTAMO

VALUES VALUES VALUES VALUES VALUES VALUES VALUES VALUES

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

FROM FROM FROM FROM FROM

LIBRO PRESTAMO LIBROAUTOR AUTOR ESTUDIANTE

41

[Link] los nombres de los estudiantes cuyo apellido comience con la letra G? SELECT nombre FROM estudiante WHERE nombre LIKE 'g%' [Link] 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 Datos SELECT * 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 AlfayOmega SELECT * FROM libro WHERE editorial ='COREL DRAW' 9. Listar los libros que pertenecen al autor Mario Benedetti SELECT * 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/07 SELECT * FROM LIBRO WHERE IdLibro IN (SELECT IdLibro FROM Prestamo WHERE FechaDevolucion='04/10/2007' AND Devuelto='No' ) 11. Hallar la suma de las edades de los estudiantes SELECT SUM(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 8
Fecha

: 09-10-2012

[Link] todos los campos de la tabla 'Clientes', pero los registros de todos aquellos 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, FechaContratacin FROM Empleados WHERE Ciudad='Londres' and year (FechaNacimiento)=1963 or year (FechaNacimiento)=1969 3. Selecciona todos los productos agrupados por select [Link], [Link] from Proveedores As B, Productos as A order by NombreCompaa nombre de proveedor

4. Selecciona todos los productos agrupados por nombre de categora select [Link], [Link] from Categoras As A, Productos As B order by NombreCategora

42

5. Selecciona todos los proveedores cuyo nombre de la compaa tenga la letra o en la segunda y la R en la penltima posicin, as como as como nombre del contacto empiece con la G y Termine con la G SELECT NombreCompaa, NombreContacto FROM Proveedores WHERE NombreCompaa LIKE '_O%R_' and NombreContacto Like 'G%G' 6. Selecciona todos los pedidos realizados en el mes de mayo, agrupados por clientes en forma ascendente SELECT [Link], [Link] FROM Pedidos As A,Clientes As B WHERE month (FechaPedido)=6 order by IdEmpleado desc 7. Selecciona la sumatoria de los totales por pedido, agrupados por pedido

Select [Link], [Link],([Link] *[Link]) As Total'from Detalles As A, Productos As B order by IdPedido 8. Selecciona el nombre del producto, sumatoria del precio y nombre de la categora de los productos agrupados por nombre de categora, pero cuya sumatoria sea mayor que 100 select [Link] As 'Total', [Link], [Link] from Productos As A,Categoras As B 9. Selecciona todos los nombres de los proveedores que vendieron productos de la categora bebidas. select [Link], [Link],[Link] from Proveedores As A, Productos As B, Categoras As C Order by NombreCompaa 10. Selecciona todos los nombres de los clientes que compraron el producto PEZ ESPADA ordenados por nombre compaa en forma descendente select [Link], [Link] from Proveedores As A, Productos As B where NombreProducto ='Pez Espada' Order by NombreCompaa 11. Selecciona los apellidos y nombres de los empleados que abastecieron de pedidos al cliente Hanari Carnes select [Link]+' ' +[Link] AS 'Empleados ',[Link], [Link] 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 [Link] ,sum([Link]) As 'Total' from Categoras Productos As B where NombreCategora='Bebidas' 13. Selecciona el mximo precio de los productos de la categora bebidas select max(PrecioUnidad) as Promedio from Productos where IdCategora='1'

As A,

14. Selecciona el total de las compras efectuadas por el cliente Hanari Carnes select * 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 [Link], [Link] from Productos As A, Clientes As B where NombreCompaa ='Maison Dewey' 16. Selecciona el total de compras efectuadas por el cliente Maison Dewey en el mes de febrero de 1998 select [Link], [Link] , [Link] from Productos As A, Clientes As B , Pedidos As C where NombreCompaa='Maison Dewey'and month(FechaEntrega)=02 and year(FechaEntrega)=1998

43

También podría gustarte