13421871 sentencias y consultas en sql aleksandr quito perez

22
Recuperación de Datos – Consultas en SQL Server Por: Aleksandr Paúl Quito Pérez. 1 SENTENCIAS Y CONSULTAS EN SQL SERVER En esta sección nos preocuparemos por conocer, las consultas en SQL que describiremos aquí. Para eso haremos un pequeño de las palabras claves que se utilizan en SQL, tales como son TABLAS, CAMPOS, FILAS, esto se muestra en la siguiente imagen: TABLA: es el conjunto ordenado de campos (columnas) y filas. Campo 1 Campo 2 Campo 3 Campo 4 Fila 1 Fila 2 Fila 3 Las palabras claves SQL enlistadas en la figura adjunta, se describen en las siguientes subsecciones, cabe mencionar que esta edición es solo un trabajo de introducción básica, es por esta razón que el contexto de consultas SQL completas, escapa de esta edición. Palabra Clave SQL Descripción SELECT FROM WHERE GROUP BY ORDER BY INSERT UPDATE DELETE Recupera datos de una o más tablas. Las tablas involucradas en la consulta. Se requiere para cada SELECT. Los Criterios de selección que determinan cuales filas se van a recuperar, eliminar o actualizar. Criterio para agrupar filas. Criterio para ordenar filas. Insertar filas en una tabla especificada. Actualizar filas en una tabla especifica. Eliminar filas de una tabla especifica. Observación: Por lo general se acostumbra a escribir estas palabras claves en mayúsculas, tratando de diferenciarlos con los argumentos de una tabla. SELECT <campos> FROM <tablas> WHERE <condicion> GROUP BY <campos> La estructura presentada, es la que se utiliza SQL posee de una jerarquía entre sus palabras claves, y una manera general la presentamos para conocimiento del lector.

Upload: charles-paul-requena-palomino

Post on 01-Nov-2014

58 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 13421871 Sentencias y Consultas en SQL Aleksandr Quito Perez

Recuperación de Datos – Consultas en SQL Server Por: Aleksandr Paúl Quito Pérez.

1

SENTENCIAS Y CONSULTAS EN SQL SERVER

En esta sección nos preocuparemos por conocer, las consultas en SQL que

describiremos aquí. Para eso haremos un pequeño de las palabras claves

que se utilizan en SQL, tales como son TABLAS, CAMPOS, FILAS, esto se

muestra en la siguiente imagen:

TABLA: es el conjunto ordenado de campos (columnas) y filas.

Campo 1 Campo 2 Campo 3 Campo 4

Fila 1

Fila 2

Fila 3

Las palabras claves SQL enlistadas en la figura adjunta, se describen

en las siguientes subsecciones, cabe mencionar que esta edición es solo un

trabajo de introducción básica, es por esta razón que el contexto de

consultas SQL completas, escapa de esta edición.

Palabra Clave SQL Descripción

SELECT

FROM

WHERE

GROUP BY

ORDER BY

INSERT

UPDATE

DELETE

Recupera datos de una o más tablas.

Las tablas involucradas en la consulta. Se

requiere para cada SELECT.

Los Criterios de selección que determinan cuales

filas se van a recuperar, eliminar o actualizar.

Criterio para agrupar filas.

Criterio para ordenar filas.

Insertar filas en una tabla especificada.

Actualizar filas en una tabla especifica.

Eliminar filas de una tabla especifica.

Observación: Por lo general se acostumbra a escribir estas palabras claves en mayúsculas, tratando de diferenciarlos con los argumentos de una tabla. SELECT <campos> FROM <tablas> WHERE <condicion> GROUP BY <campos> La estructura presentada, es la que se utiliza SQL posee de una jerarquía entre sus palabras claves, y una manera general la presentamos para conocimiento del lector.

Page 2: 13421871 Sentencias y Consultas en SQL Aleksandr Quito Perez

Recuperación de Datos – Consultas en SQL Server Por: Aleksandr Paúl Quito Pérez.

2

Para efectos de ejemplos en esta oportunidad haremos uso de la siguiente

Base de Datos, BDNOTAS, en el cual esta contenida las siguientes tablas y

columnas:

ALUMNO

� IDALUMNO : Código de alumno

� APEALUMNO : Apellido del Alumno

� NOMALUMNO : Nombre del Alumno

� IDESP : Código de especialidad

� PROCE : Procedencia

CURSO

� IDCURSO : Código del curso.

� NOMCURSO : Nombre del curso.

� CREDITO : Créditos del curso.

ESPECIALIDAD

� IDESP : Código de especialidad

� NOMESP : Nombre de la especialidad.

� COSTO : Costo de la especialidad.

NOTAS

� IDALUMNO : Código de alumno

� IDCURSO : Código del curso.

� EXAPARCIAL : Examen Parcial.

� EXAFINAL : Examen final

PAGOS

� IDALUMNO : Código de alumno

� CICLO : Ciclo

� NCUOTA : Numero de cuota.

� MONTO : monto a pagar

� FECHA : fecha del pago

IDALUMNO

IDESP

IDCURSO

Page 3: 13421871 Sentencias y Consultas en SQL Aleksandr Quito Perez

Recuperación de Datos – Consultas en SQL Server Por: Aleksandr Paúl Quito Pérez.

3

CONSULTA BÁSICA SELECT.- lo que hace una consulta SELECT, es obtener datos de una Tabla determinada, en las que se especifican filas y

columnas. La sintaxis básica de una consulta SELECT es:

SELECT * FROM nombreDeTabla

En la consulta anterior, el asterisco (*) indica que deben recuperarse

todas las columnas de la tabla “nombreDeTabla”. Por ejemplo, deseamos

recuperar todos los datos de la tabla Alumno, la sintaxis seria la siguiente:

SELECT * FROM Alumno

Ahora para recuperar solo ciertas columnas de una tabla, debemos de

reemplazar el asterisco (*), por los nombres de las columnas, separando

cada columna con una coma. Por ejemplo, para recuperar solamente las

columnas IdAlumno, ApeAlumno, NomAlumno, para todas las filas de la

tabla Alumno. Utilizamos la siguiente consulta:

SELECT IdAlumno, ApeAlumno, NomAlumno FROM Alumno

El resultado de esta consulta se aprecia en la siguiente figura, donde

apreciamos las columnas ó campos que seleccionamos en el ejemplo,

listado desde la fila 1 hasta la 7:

Observación.

� Se debe evitar utilizar el asterisco (*), si se desea filtrar solo campos necesarios.

� Al especificar los nombres de columnas que se van a seleccionar, se garantiza que las columnas se devuelvan, siempre en el orden especificado y también se evita que se devuelven columnas innecesarias, incluso si cambia el orden real.

Page 4: 13421871 Sentencias y Consultas en SQL Aleksandr Quito Perez

Recuperación de Datos – Consultas en SQL Server Por: Aleksandr Paúl Quito Pérez.

4

LA CLÁUSULA WHERE.- en la mayoría de casos es necesario localizar, en una base de datos, filas que cumplan con ciertos criterios de

selección. SQL utiliza la cláusula WHERE en una consulta SELECT para

especificar los criterios de selección para la consulta. La forma básica de

una consulta SELECT con criterios ó condición de selección es:

SELECT nombreDeColumnas FROM nombreDeTabla WHERE criterios

Por ejemplo, para seleccionar las columnas IdAlumno, monto de la tabla

Pagos, para las cuales el monto sea mayor que 340, utilizamos la siguiente

consulta:

SELECT IdAlumno, Monto FROM Pagos WHERE monto>340

Los criterios de la cláusula WHERE pueden contener lo siguientes

operadores de comparación: =, >, <, >=, <=, !=, <>, IN, NOT IN,

BETWEEN, NOT BETWEEN, LIKE. Además, se puede construir condiciones

múltiples usando los operadores lógicos AND, OR y NOT. Se puede utilizar

paréntesis si se desea forzar algún orden de evaluación.

El operador LIKE, se utiliza para hacer comparaciones de cadenas,

relacionando patrones con los caracteres comodines porcentaje (%) y guión

abajo (_). El relacionar patrones permite a SQL buscar cadenas que

concuerden con un patrón dado.

Un patrón que contenga un carácter de porcentaje (%) busca

cadenas que tengan cero o más caracteres en la posición del carácter

porcentaje en el patrón. Debemos de tener presente que en SQL un

carácter y cadena van dentro de apostrofes ‘char’. Por ejemplo deseamos,

realizar la consulta que me permita conocer a todos los alumnos cuyo

nombre empiece con la letra A:

SELECT NomAlumno FROM Alumno WHERE NomAlumno LIKE 'A%'

El resultado de la siguiente consulta seria:

Page 5: 13421871 Sentencias y Consultas en SQL Aleksandr Quito Perez

Recuperación de Datos – Consultas en SQL Server Por: Aleksandr Paúl Quito Pérez.

5

Haremos un ejemplo más, se necesita filtrar a los alumnos cuyo

nombre, apellido empiece con A y Q, respectivamente:

SELECT NomAlumno, ApeAlumno FROM Alumno

WHERE ((NomAlumno LIKE 'A%') AND (ApeAlumno LIKE 'Q%'))

El resultado de la siguiente consulta seria:

El signo de % y el operador LIKE de la cláusula WHERE indican que

puede aparecer cualquier número de carácter después de la letra A y Q en

las columnas NomAlumno, ApeAlumno, respectivamente.

Cabe observar que la cadena del operador esta encerrada entre

caracteres de comillas sencillas ó apostrofes. Así mismo en el ejemplo

anterior se utilizo el operador AND, para realizar la comparación lógica de

nombre y apellido, hemos utilizado los paréntesis para darle un orden

específico a nuestra condición.

Un guión bajo (_) en la cadena del patrón indica un carácter comodín

individual en esa posición, por ejemplo, la siguiente consulta localiza las

filas de todos los alumnos cuyo apellido paterno empiece con cualquier

carácter (lo que se especifica con _), seguido por la letra i, seguida por

cualquier numero de caracteres adicionales (lo que se especifica con %):

SELECT ApeAlumno FROM Alumno WHERE ApeAlumno LIKE '_i%'

El resultado de la consulta seria:

Recuerda: hemos utilizado la palabra LIKE para comparar cadenas, en

esta oportunidad presentamos ejemplos en los cuales deseamos que

estas cadenas empiecen con una letra determinada. En el caso de que

una letra termine en una determinada letra, la sintaxis del uso del LIKE

seria similar a esta:

SELECT <Columnas> FROM <Tablas> WHERE Columna1 LIKE '%A'

Page 6: 13421871 Sentencias y Consultas en SQL Aleksandr Quito Perez

Recuperación de Datos – Consultas en SQL Server Por: Aleksandr Paúl Quito Pérez.

6

LA CLÁUSULA ORDER BY.- El resultado de una consulta puede ordenarse en forma ascendente o descendente, mediante el uso de la

cláusula ODER BY opcional. La forma básica de una instrucción SELECT con

una cláusula ORDER BY es:

SELECT nombreDeColumnas FROM Tablas ORDER BY columna1 ASC

SELECT nombreDeColumnas FROM Tablas ORDER BY columna1 DESC

En donde ASC especifica el orden ascendente (de menor a mayor),

DESC especifica el orden descendente (de mayor a menor) y columna1

especifica la columna en la cual se basa el ordenamiento. Por ejemplo, para

obtener la lista de cursos en orden ascendente por nombre de curso, utilice

la siguiente sintaxis:

SELECT nomcurso FROM Curso ORDER BY nomcurso ASC

El resultado seria:

Observe que el orden predeterminado es ascendente (pruebe la sintaxis

anterior sin la palabra ASC) , por lo que ASC es opcional. Para obtener la

misma lista de cursos en orden descendente por nombre de curso, utilice la

siguiente sintaxis:

SELECT nomcurso FROM Curso ORDER BY nomcurso DESC

El resultado seria:

Page 7: 13421871 Sentencias y Consultas en SQL Aleksandr Quito Perez

Recuperación de Datos – Consultas en SQL Server Por: Aleksandr Paúl Quito Pérez.

7

Otro uso que se le atribuye a esta cláusula ORDER BY es el de poder

ordenar por una columna especifica, cuando se posee varias columnas

seleccionadas. Por ejemplo deseamos obtener los campos IdAlumno,

ApeAlumno, NomAlumno el cual deben de estar ordenados por apellidos,

utilice la siguiente sintaxis:

SELECT IdAlumno, ApeAlumno, NomAlumno FROM Alumno ORDER BY 2

El resultado se esta sintaxis seria:

Observemos que después de la cláusula ORDER BY, hemos colocado el

numero 2, esto quiere decir que se ordenará por la columna numero 2 y de

la sintaxis anterior la columna 2 seria Apealumno. Es por eso que el

Apellido esta ordenado de forma como se mostró. También en vez de

colocar el numero 2 se puede poner el nombre del campo especifico al cual

se desea ordenar tal como se vio en la pagina anterior.

PRESENTACIÓN DE LOS n PRIMERO VALORES.- para hacer la presentación de los n primero valores, utilizamos la palabra clave

TOP para presentar sólo las n primeras filas o el n por ciento de un

conjunto de resultados. Aunque la palabra clave TOP n no es un estándar

ANSI, resulta útil, por ejemplo, para presentar los productos más vendidos

de una compañía.

Cuando utilice la palabra clave TOP n o TOP n PERCENT, considere los

hechos e instrucciones siguientes:

� Especifique el intervalo de valores en la cláusula ORDER BY. Si no

utiliza una cláusula ORDER BY, Microsoft® SQL Server™ 2000

devuelve las filas que cumplen la cláusula WHERE sin ningún orden

concreto.

Page 8: 13421871 Sentencias y Consultas en SQL Aleksandr Quito Perez

Recuperación de Datos – Consultas en SQL Server Por: Aleksandr Paúl Quito Pérez.

8

� Utilice un entero sin signo a continuación de la palabra clave TOP.

� Si la palabra clave TOP n PERCENT produce un número no entero de

filas, SQL Server redondea la cantidad no entera al siguiente valor

entero.

Por ejemplo se desea conocer cuales son las 5 primeras especialidades de la

tabla Especialidad, utilice la siguiente sintaxis:

SELECT TOP 5 idesp, nomesp FROM Especialidad

El resultado seria:

USO DE FUNCIONES DE AGREGADO.- Las funciones que calculan promedios y sumas se llaman funciones de agregado. Cuando se

ejecuta una función de agregado, SQL Server resume los valores de toda

una tabla o de grupos de columnas de una tabla, y produce un valor por

cada conjunto de filas para las columnas especificadas:

Funciones de

agregado Descripción

AVG Promedio de valores en una expresión numérica

COUNT Números de valores en una expresión

COUNT(*) Numero de filas seleccionadas

MAX Valor mas alto en la expresión

MIN Valor mas bajo en la expresión

SUM Valores totales en una expresión numérica

� Las funciones de agregado se pueden utilizar en la instrucción

SELECT o en combinación con la cláusula GROUP BY.

Page 9: 13421871 Sentencias y Consultas en SQL Aleksandr Quito Perez

Recuperación de Datos – Consultas en SQL Server Por: Aleksandr Paúl Quito Pérez.

9

� Con la excepción de la función COUNT(*), todas las funciones de

agregado devuelven NULL si ninguna fila cumple la cláusula WHERE.

La función COUNT(*) devuelve el valor cero si ninguna fila cumple la

cláusula WHERE.

Función Tipo de datos

COUNT COUNT es la única función de agregado que se

puede utilizar en las columnas de los tipos de datos

text, ntext o image.

MIN y

MAX

En las columnas de los tipos de datos bit no se

pueden utilizar las funciones MIN y MAX.

SUM y

AVG

Las funciones de agregado SUM y AVG solo se

pueden utilizar en las columnas con tipos de datos

int, smallint, tinyint, dcimal, numeric, flota,

real, nomey, y samallmoney.

Cuando se utiliza la función SUM o AVG, SQL

Server trata los tipos de datos smallint o tinyint

como un valor de tipo de datos int en el conjunto de

resultados.

Por ejemplo deseamos conocer el promedio de los exámenes finales de

todos los cursos, utilice la siguiente sintaxis:

SELECT AVG(exafinal)AS Promedio FROM notas

Observemos la palabra AS Promedio, esto se utiliza solo para asignarle un

nombre a la Columna, veremos en la imagen siguiente que esta palabra

aparece como titulo principal del resultado:

Veamos que ocurre si le quitamos la palabra AS Promedio, de la

sintaxis anterior, entonces nuestra nueva sintaxis seria:

SELECT AVG(exafinal) FROM notas

Page 10: 13421871 Sentencias y Consultas en SQL Aleksandr Quito Perez

Recuperación de Datos – Consultas en SQL Server Por: Aleksandr Paúl Quito Pérez.

10

Observemos ahora el resultado final sigue siendo el mismo, mas no el

de el nombre de la columna, ya que la palabra AS ___ sirvió para colocarle

un nombre a la columna.

Como segundo ejemplo, se solicita saber cuantos montos existen en la

tabla Pagos, esto se hace con la siguiente sintaxis:

SELECT COUNT(monto) AS [NUMEROS DE MONTO] FROM Pagos

El resultado seria:

Ahora observemos la palabra AS [NUMEROS DE MONTO], por lo dicho

en lo anterior sabemos que es un nombre de columna, ahora en particular

vemos que esta palabra [NUMEROS DE MONTO] se encuentra entre

corchetes [ ], esto lo hago por que mi titulo de columna posee espacios en

blanco, si no ponemos estos corchetes SQL nos enviara un mensaje de

error.

Ahora que pasa si se deseara seleccionar campos y funciones de agregado

dentro del SELECT, de una tabla especifica, SQL nos pedirá que agrupemos

estos parámetros; es por eso que necesitamos saber el tema de la Cláusula

GROUP BY, que se presenta a continuación.

LA CLÁUSULA GROUP BY.- Utilice la cláusula GROUP BY en columnas o expresiones para organizar filas en grupos y para resumir

dichos grupos. Por ejemplo, utilice la cláusula GROUP BY para determinar la

cantidad de cada producto pedida en todos los pedidos.

Cuando utilice la cláusula GROUP BY, considere los hechos e instrucciones

siguientes:

� SQL Server produce una columna de valores por cada grupo definido.

� SQL Server sólo devuelve filas por cada grupo especificado; no

devuelve información de detalle.

Page 11: 13421871 Sentencias y Consultas en SQL Aleksandr Quito Perez

Recuperación de Datos – Consultas en SQL Server Por: Aleksandr Paúl Quito Pérez.

11

� Todas las columnas que se especifican en la cláusula GROUP BY

tienen que estar incluidas en la lista de selección.

� Si incluye una cláusula WHERE, SQL Server sólo agrupa las filas que

cumplen las condiciones de la cláusula WHERE.

� No utilice la cláusula GROUP BY en columnas que contengan varios

valores nulos, porque los valores nulos se procesan como otro grupo.

� Utilice la palabra clave ALL con la cláusula GROUP BY para presentar

todas las filas que tengan valores nulos en las columnas de agregado,

independientemente de si las filas cumplen la condición de la cláusula

WHERE.

Por ejemplo deseamos conocer, cuales son las nota Máxima del Examen

Parcial y la nota Minima del Examen Final por cada curso. Utilizamos la

siguiente sintaxis:

SELECT Idcurso, MAX(exaparcial)AS [Nota Maxima EXP],

MIN(exafinal)AS [Nota Minima EXF] FROM Notas GROUP BY idcurso

El resultado seria:

CONSULTAS CON MÁS DE UNA TABLA.- En La página 2 de este documento, presenté la estructura de la base de datos que estamos

utilizando para cada ejemplo, en donde podemos ver las relaciones

existenciales con cada una de las tablas.

Para realizar consultas con mas de una tabla es necesario precisar como

estás tablas se relacionan, por ejemplo, la tablas Curso y Notas se

relaciona por el Idcurso, otro ejemplo las tablas Alumno, Curso y Notas,

se relacionan por el IdAlumno y por el Idcurso, generalizando estas

Page 12: 13421871 Sentencias y Consultas en SQL Aleksandr Quito Perez

Recuperación de Datos – Consultas en SQL Server Por: Aleksandr Paúl Quito Pérez.

12

proposiciones llegamos a la conclusión de que para un numero n de

tablas existe n-1 relaciones.

Es necesario trabajar con Alias, cuando se emplean múltiples tablas,

para evitar ambigüedades, es decir ponerle una identificación a la tabla,

para que en los campos en los cuales se generan la unión con otras tablas,

SQL reconozca a que tabla pertenece el campo.

Por ejemplo, queremos seleccionar los siguientes campos: Idalumno,

Apealumno, Idesp, nomesp de las tablas Alumno y Especialidad.

Lo primero que se nos ocurriría es esto:

SELECT Idalumno, Apealumno, Idesp, nomesp FROM Alumno, Especialidad

Al ejecutar esta aplicación SQL nos responderá que Idesp es ambiguo, tal

como se muestra:

Esto aparece por que en realidad SQL no sabe de que tabla jalar este

campo Idesp ya que esté aparece en dos tablas que son Alumno,

Especialidad, entonces necesitamos indicarle a SQL, a quien pertenece

este campo.

Es por esa razón que haremos uso de los Alias (identificadores), el

uso de estos alias es como sigue:

SELECT Idalumno, Apealumno, b.Idesp, nomesp

FROM Alumno AS a, Especialidad AS b

Observamos El nuevo cambio en la tablas hemos colocado Alumno AS a,

Especialidad AS b, y en el campo b.Idesp, la lógica es la siguiente, para

b.Idesp decimos que Idesp, pertenece a la tabla Especialidad que ya que

tiene como alias la letra b.

Las letras a y b, son cualquier letras para poder identificar, a una

tabla obviamente puede hacerse el uso de otras letras. Debemos recordar

que los identificadores solamente se colocan en los campos que son

ambiguos, es decir en el campo donde excita una relación o más entre las

tablas. Es por eso que no es necesario Identificar a Idalumno, ya que este

campo no se relaciona en ningún momento con la tabla Especialidad.

Page 13: 13421871 Sentencias y Consultas en SQL Aleksandr Quito Perez

Recuperación de Datos – Consultas en SQL Server Por: Aleksandr Paúl Quito Pérez.

13

El resultado de esta sintaxis es la siguiente:

Como vemos en esta ocasión SQL nos arroja el siguiente resultado, pero

observemos que todavía nos falta algo mas, esto es necesitamos poner las

relaciones que existen entre estas dos tablas es decir necesitamos

establecer esta relación: a.Idesp=b.Idesp , lo que hacemos aquí es

decirle que el Idesp que tiene la tabla a sea igual al Idesp de la tabla b.

esto se logra con la siguiente sintaxis:

SELECT Idalumno, Apealumno, b.Idesp, nomesp

FROM Alumno AS a, Especialidad AS b WHERE a.idesp=b.idesp

Hemos unidos 2 tablas por ende hay una sola relación: a.idesp=b.idesp

Como un segundo ejemplo, necesitamos listar los siguientes campos:

IdAlumno, Apealumno, Nomcurso, credito ,ExaParcial, ExaFinal.

Solución.- por petición del ejemplo es necesario el uso de 3 Tablas, las

cuales son Alumno, Curso, Notas, como debemos de unir 3 tablas,

entonces tenemos 2 relaciones entre estas, la solución se muestra a

continuación:

SELECT a.IdAlumno, Apealumno, Nomcurso, credito ,ExaParcial, ExaFinal

FROM Alumno AS a, Curso AS c, Notas AS n

WHERE a.idalumno=n.idalumno AND c.idcurso=n.idcurso

La relaciones en este ejemplo son:

a.idalumno=n.idalumno AND c.idcurso=n.idcurso

Al ejecutar esta sentencia obtenemos:

Page 14: 13421871 Sentencias y Consultas en SQL Aleksandr Quito Perez

Recuperación de Datos – Consultas en SQL Server Por: Aleksandr Paúl Quito Pérez.

14

Ejemplo 3: necesitamos conocer cual es el total del costo, de la especialidad

de cada alumno, para esto debe mostrar los siguientes campos:

a.IdAlumno, Apealumno, Nomesp, costo – además se pide ordenarlos por

código del alumno.

SELECT a.IdAlumno, Apealumno, Nomesp, SUM(costo) AS Total

FROM Alumno AS a, Especialidad AS e WHERE a.idesp=e.idesp

GROUP BY a.Idalumno,Apealumno, nomesp ORDER BY 1

SCRIPTS DE LA BASE DE DATOS BDNOTAS

USE MASTER

-- CREACION DE BASE DE DATOS (DATA y LOG)

USE master

SET DATEFORMAT DMY

IF EXISTS(SELECT * FROM sysdatabases WHERE name='bdnotas')

begin

DROP DATABASE bdnotas

--GO

end

CREATE DATABASE bdnotas

GO

USE bdnotas

Page 15: 13421871 Sentencias y Consultas en SQL Aleksandr Quito Perez

Recuperación de Datos – Consultas en SQL Server Por: Aleksandr Paúl Quito Pérez.

15

-- Verificando la existencia de las tablas

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

go

IF EXISTS ( SELECT name FROM sysobjects

WHERE type = 'U' AND name = 'alumno' )

DROP TABLE alumno

go

IF EXISTS ( SELECT name FROM sysobjects

WHERE type = 'U' AND name = 'PAGOS' )

DROP TABLE PAGOS

go

IF EXISTS ( SELECT name FROM sysobjects

WHERE type = 'U' AND name = 'especialidad' )

DROP TABLE especialidad

go

-- Creación de las Tablas y Claves Primarias

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

CREATE TABLE Alumno (

IdAlumno char(5) NOT NULL primary key,

ApeAlumno varchar(30) NOT NULL,

NomAlumno varchar(30) NOT NULL,

Idesp char(3) NOT NULL,

PROCE CHAR(1)

)

go

CREATE TABLE PAGOS (

IdAlumno char(5) NOT NULL ,

CICLO char(6) NOT NULL,

NCUOTA INT NOT NULL,

MONTO NUMERIC(12,2) NOT NULL,

FECHA DATETIME,

PRIMARY KEY(IDALUMNO, CICLO, NCUOTA)

)

go

go

Page 16: 13421871 Sentencias y Consultas en SQL Aleksandr Quito Perez

Recuperación de Datos – Consultas en SQL Server Por: Aleksandr Paúl Quito Pérez.

16

CREATE TABLE especialidad (

Idesp char(3) NOT NULL PRIMAry key,

Nomesp varchar(30) NOT NULL,

costo numeric(8,1) not null

)

go

CREATE TABLE Curso (

IdCurso char(4) NOT NULL primary key,

NomCurso varchar(35) NOT NULL,

credito int

)

go

go

CREATE TABLE NOTAS (

IdAlumno char(5) NOT NULL,

IdCurso char(4) NOT NULL,

ExaParcial real NULL,

ExaFinal real NULL,

primary key(Idalumno,Idcurso)

)

go

Insert Into Especialidad Values('E01','Educacion Informatica',2500)

Insert Into Especialidad Values('E02','Administracion',1800)

Insert Into Especialidad Values('E03','Contabilidad',2000)

Insert Into Especialidad Values('E04','Idiomas',1800)

Insert Into Especialidad Values('E05','Ing. de Sistemas',2800)

Insert Into ALUMNO Values('A0001','Valencia salcedo','Christian','E01','N')

Insert Into ALUMNO Values('A0002','Ortiz Rodriguez','Freddy','E01','P')

Insert Into ALUMNO Values('A0003','Silva Mejia','Ruth Ketty','E02','N')

Insert Into ALUMNO Values('A0004','Melendez Noriega','Liliana','E03','P')

Insert Into ALUMNO Values('A0005','Huerta Leon','Silvia','E04','N')

Page 17: 13421871 Sentencias y Consultas en SQL Aleksandr Quito Perez

Recuperación de Datos – Consultas en SQL Server Por: Aleksandr Paúl Quito Pérez.

17

Insert Into ALUMNO Values('A0006','Carranza Fuentes','Maria

Elena','E02','P')

Insert Into ALUMNO Values('A0007','Prado Castro','Gabriela','E01','N')

Insert Into ALUMNO Values('A0008','Atuncar Mesias','Juan','E05','P')

Insert Into ALUMNO Values('A0009','Aguilar Zavala','Patricia

Elena','E01','P')

Insert Into ALUMNO Values('A0010','Rodruigez Trujillo','Rubén

Eduardo','E01','N')

Insert Into ALUMNO Values('A0011','Canales Ruiz','Gino Leonel','E02','P')

Insert Into ALUMNO Values('A0012','Ruiz Quispe','Edgar','E02','N')

Insert Into ALUMNO Values('A0013','PanduroTerrazas','Omar','E03','P')

Insert Into ALUMNO Values('A0014','Zita Padilla','Peter Wilmer','E03','N')

Insert Into ALUMNO Values('A0015','Ternero Ubillús','Luis','E05','P')

Insert Into ALUMNO Values('A0016','Rivera García','Raúl Joel','E04','P')

Insert Into ALUMNO Values('A0017','Pomar García','Ana','E04','P')

Insert Into ALUMNO Values('A0018','Palomares

Venegas','Mercedes','E04','N')

Insert Into ALUMNO Values('A0019','Ruiz Venegaz','Luis Alberto','E04','P')

Insert Into ALUMNO Values('A0020','Tejada Bernal','Janet','E04','P')

Insert Into ALUMNO Values('A0021','Sotelo Canales','Juan

Carlos','E05','P')

Insert Into ALUMNO Values('A0022','LLosa Montalvan','Karla','E05','P')

Insert Into ALUMNO Values('A0023','Galarza Torres','Hugo','E03','P')

Insert Into ALUMNO Values('A0024','Valverde Jaramillo','Saul','E05','N')

Insert Into ALUMNO Values('A0025','Cipriano Avila','Roxana','E04','N')

Insert Into ALUMNO Values('A0026','Rodriguez Quispe','Luis

Alberto','E05','P')

Insert Into ALUMNO Values('A0027','Huerta Leon','Marco

Antonio','E05','N')

Insert Into ALUMNO Values('A0028','Ortiz Fuentes','Ana María','E04','P')

Insert Into ALUMNO Values('A0029','Rivera Jaramillo','Martha','E05','P')

Insert Into ALUMNO Values('A0030','Bustamante

Campos','Guino','E05','N')

-- PAGOS CORRESPONDIENTES

Insert Into PAGOS Values('A0001','2005-2',1,300, '10/10/05')

Insert Into PAGOS Values('A0001','2005-2',2,340, '11/11/05')

Insert Into PAGOS Values('A0001','2005-1',3,340, '12/12/05')

Insert Into PAGOS Values('A0002','2006-2',1,300, '10/05/06')

Insert Into PAGOS Values('A0002','2006-2',2,350, '11/05/06')

Insert Into PAGOS Values('A0002','2006-1',1,360, '12/05/06')

Insert Into PAGOS Values('A0002','2006-1',2,370, '11/05/06')

Page 18: 13421871 Sentencias y Consultas en SQL Aleksandr Quito Perez

Recuperación de Datos – Consultas en SQL Server Por: Aleksandr Paúl Quito Pérez.

18

Insert Into PAGOS Values('A0003','2005-1',1,340,'11/06/05')

Insert Into PAGOS Values('A0003','2005-1',2,340,'12/07/05')

Insert Into PAGOS Values('A0003','2005-2',1,340,'11/05/05')

Insert Into PAGOS Values('A0004','2005-2',1,300,'03/09/05')

Insert Into PAGOS Values('A0004','2005-2',2,380,'01/10/05')

Insert Into PAGOS Values('A0004','2006-1',1,370,'11/05/06')

Insert Into PAGOS Values('A0005','2005-2',1,350,'11/10/05')

Insert Into PAGOS Values('A0005','2005-2',2,360,'11/08/05')

Insert Into PAGOS Values('A0005','2006-1',1,380,'09/05/06')

Insert Into PAGOS Values('A0006','2005-2',3,300,'13/09/06')

Insert Into PAGOS Values('A0006','2005-1',1,340,'11/03/06')

Insert Into PAGOS Values('A0006','2005-1',2,390,'11/05/06')

Insert Into PAGOS Values('A0007','2005-2',1,340,'11/06/06')

Insert Into PAGOS Values('A0007','2005-1',1,380,'11/05/06')

Insert Into PAGOS Values('A0007','2005-1',2,440,'11/06/06')

Insert Into PAGOS Values('A0008','2005-2',1,340,'11/08/06')

Insert Into PAGOS Values('A0008','2005-2',2,320,'11/09/06')

Insert Into PAGOS Values('A0008','2004-1',1,370,'11/02/06')

Insert Into PAGOS Values('A0009','2005-2',1,340,'11/06/06')

Insert Into PAGOS Values('A0009','2005-2',2,330,'11/07/06')

Insert Into PAGOS Values('A0009','2005-1',1,340,'11/05/06')

Insert Into PAGOS Values('A0010','2005-2',1,340,'13/07/06')

Insert Into PAGOS Values('A0010','2005-2',2,330,'11/09/06')

Insert Into PAGOS Values('A0010','2005-1',1,350,'11/06/06')

Insert Into PAGOS Values('A0011','2005-2',1,340,'11/06/06')

Insert Into PAGOS Values('A0011','2005-2',2,330,'11/08/06')

Insert Into PAGOS Values('A0011','2005-1',2,370,'11/06/06')

Insert Into PAGOS Values('A0012','2005-2',1,340,'11/08/06')

Insert Into PAGOS Values('A0012','2005-2',2,370,'11/09/06')

Insert Into PAGOS Values('A0012','2005-1',1,390,'15/08/06')

Insert Into PAGOS Values('A0013','2005-2',1,340,'11/06/06')

Insert Into PAGOS Values('A0013','2005-1',1,340,'11/05/06')

Insert Into PAGOS Values('A0013','2005-1',2,350,'11/05/06')

Insert Into PAGOS Values('A0013','2005-1',3,370,'11/06/06')

Page 19: 13421871 Sentencias y Consultas en SQL Aleksandr Quito Perez

Recuperación de Datos – Consultas en SQL Server Por: Aleksandr Paúl Quito Pérez.

19

Insert Into PAGOS Values('A0014','2005-2',1,340,'11/10/06')

Insert Into PAGOS Values('A0014','2005-2',2,330,'11/11/06')

Insert Into PAGOS Values('A0014','2005-1',1,350,'11/05/06')

Insert Into PAGOS Values('A0016','2005-2',1,340,'11/09/06')

Insert Into PAGOS Values('A0016','2005-2',2,360,'11/10/06')

Insert Into PAGOS Values('A0016','2005-1',1,340,'11/05/06')

Insert Into PAGOS Values('A0021','2005-2',1,340,'11/07/06')

Insert Into PAGOS Values('A0021','2005-2',2,480,'10/08/06')

Insert Into PAGOS Values('A0021','2005-1',1,340,'10/05/06')

Insert Into PAGOS Values('A0022','2005-2',1,340,'11/08/06')

Insert Into PAGOS Values('A0022','2005-2',2,330,'11/09/06')

Insert Into PAGOS Values('A0022','2005-1',1,350,'11/03/06')

Insert Into PAGOS Values('A0023','2005-2',1,340,'11/09/06')

Insert Into PAGOS Values('A0023','2005-2',2,370,'11/10/06')

Insert Into PAGOS Values('A0023','2005-1',1,370,'11/05/06')

Insert Into PAGOS Values('A0024','2005-2',1,340,'11/06/06')

Insert Into PAGOS Values('A0024','2005-2',2,340,'11/08/06')

Insert Into PAGOS Values('A0024','2005-1',1,340,'11/05/06')

Insert Into PAGOS Values('A0024','2005-1',2,340,'11/05/06')

Insert Into PAGOS Values('A0025','2005-2',1,340,'11/08/06')

Insert Into PAGOS Values('A0025','2005-2',2,370,'11/09/06')

Insert Into PAGOS Values('A0028','2005-1',1,340,'11/05/06')

Insert Into PAGOS Values('A0028','2005-1',2,390,'11/06/06')

Insert Into PAGOS Values('A0029','2004-1',1,340,'11/06/06')

-- Agregar Datos a la Tabla NOTAS

-- ===============================

Insert Into NOTAS Values('A0001','C001',11,17)

Insert Into NOTAS Values('A0001','C003',09,15)

Insert Into NOTAS Values('A0001','C004',18,3)

Insert Into NOTAS Values('A0002','C001',15,9)

Insert Into NOTAS Values('A0002','C002',11,03)

Insert Into NOTAS Values('A0002','C003',14,13)

Page 20: 13421871 Sentencias y Consultas en SQL Aleksandr Quito Perez

Recuperación de Datos – Consultas en SQL Server Por: Aleksandr Paúl Quito Pérez.

20

Insert Into NOTAS Values('A0003','C008',12,13)

Insert Into NOTAS Values('A0003','C005',16,14)

Insert Into NOTAS Values('A0003','C003',8,13)

Insert Into NOTAS Values('A0003','C004',7,14)

Insert Into NOTAS Values('A0004','C006',11,12)

Insert Into NOTAS Values('A0004','C007',9,11)

Insert Into NOTAS Values('A0004','C005',7,12)

Insert Into NOTAS Values('A0005','C004',17,16)

Insert Into NOTAS Values('A0005','C005',12,17)

Insert Into NOTAS Values('A0005','C003',6,13)

Insert Into NOTAS Values('A0006','C004',16,15)

Insert Into NOTAS Values('A0006','C006',5,12)

Insert Into NOTAS Values('A0006','C007',8,13)

Insert Into NOTAS Values('A0007','C002',7,9)

Insert Into NOTAS Values('A0007','C004',12,7)

Insert Into NOTAS Values('A0007','C005',11,6)

Insert Into NOTAS Values('A0008','C008',5,8)

Insert Into NOTAS Values('A0008','C009',7,4)

Insert Into NOTAS Values('A0008','C004',5,13)

Insert Into NOTAS Values('A0009','C005',6,13)

Insert Into NOTAS Values('A0009','C009',18,13)

Insert Into NOTAS Values('A0009','C010',12,15)

Insert Into NOTAS Values('A0010','C010',16,14)

Insert Into NOTAS Values('A0010','C001',5,12)

Insert Into NOTAS Values('A0010','C003',12,11)

Insert Into NOTAS Values('A0011','C001',5,13)

Insert Into NOTAS Values('A0011','C002',11,13)

Insert Into NOTAS Values('A0011','C004',7,03)

Insert Into NOTAS Values('A0012','C004',10,08)

Insert Into NOTAS Values('A0012','C005',7,10)

Insert Into NOTAS Values('A0012','C006',17,10)

Insert Into NOTAS Values('A0013','C001',14,3)

Insert Into NOTAS Values('A0013','C002',7,10)

Insert Into NOTAS Values('A0013','C004',12,13)

Insert Into NOTAS Values('A0013','C003',15,12)

Insert Into NOTAS Values('A0014','C001',11,15)

Insert Into NOTAS Values('A0014','C003',15,13)

Insert Into NOTAS Values('A0014','C004',12,18)

Insert Into NOTAS Values('A0015','C001',5,13)

Insert Into NOTAS Values('A0015','C003',14,13)

Insert Into NOTAS Values('A0015','C004',15,12)

Insert Into NOTAS Values('A0016','C002',6,13)

Insert Into NOTAS Values('A0016','C003',12,11)

Page 21: 13421871 Sentencias y Consultas en SQL Aleksandr Quito Perez

Recuperación de Datos – Consultas en SQL Server Por: Aleksandr Paúl Quito Pérez.

21

Insert Into NOTAS Values('A0016','C006',17,12)

Insert Into NOTAS Values('A0021','C004',8,17)

Insert Into NOTAS Values('A0021','C005',14,3)

Insert Into NOTAS Values('A0021','C006',17,12)

Insert Into NOTAS Values('A0022','C004',17,13)

Insert Into NOTAS Values('A0022','C005',8,13)

Insert Into NOTAS Values('A0022','C003',7,13)

Insert Into NOTAS Values('A0023','C004',10,13)

Insert Into NOTAS Values('A0023','C008',12,13)

Insert Into NOTAS Values('A0023','C009',18,13)

Insert Into NOTAS Values('A0024','C004',10,3)

Insert Into NOTAS Values('A0024','C005',11,9)

Insert Into NOTAS Values('A0024','C003',16,8)

Insert Into NOTAS Values('A0024','C007',16,13)

Insert Into NOTAS Values('A0025','C004',1,13)

Insert Into NOTAS Values('A0025','C005',10,18)

Insert Into NOTAS Values('A0028','C005',16,13)

Insert Into NOTAS Values('A0028','C004',17,7)

Insert Into NOTAS Values('A0029','C004',11,13)

-- Agregar Datos a la Tabla Curso

-- ==============================

Insert Into Curso Values('C001','Matematica Basica',3)

Insert Into Curso Values('C002','Filosofia I',6)

Insert Into Curso Values('C003','Psicologia Industrial',5)

Insert Into Curso Values('C004','Algoritmica',4)

Insert Into Curso Values('C005','Software de Aplicacion',5)

Insert Into Curso Values('C006','Lenguaje de Programacion I',5)

Insert Into Curso Values('C007','Lenguaje Java ',4)

Insert Into Curso Values('C008','Matematica II',3)

Insert Into Curso Values('C009','Ingles Tecnico',5)

Insert Into Curso Values('C010','Lenguaje de Programcion III',3)

Insert Into Curso Values('C011','Aplicaciones Cliente/Servidor',4)

Page 22: 13421871 Sentencias y Consultas en SQL Aleksandr Quito Perez

Recuperación de Datos – Consultas en SQL Server Por: Aleksandr Paúl Quito Pérez.

22

SELECT * FROM ALUMNO

SELECT * FROM ESPECIALIDAD

SELECT * FROM PAGOS

SELECT * FROM NOTAS

SELECT * FROM CURSO