Anda di halaman 1dari 37

2

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24 Por: Aleksandr Paúl Quito Pérez


25
CONTENIDO

1. CREACIÓN DE BASE DE DATOS.

2. RELACIÓN DE TABLAS.

3. GENERACIÓN DE SCRIPTS.

4. SENTENCIAS Y CONSULTAS

4.1 SENTENCIA SELECT.

4.2 LA CLÁUSULA WHERE.

4.3 LA CLÁUSULA ORDER BY

4.4 PRESENTACIÓN DE LOS PRIMEROS “N” VALORES.

4.5 USO DE FUNCIONES DE AGREGADO.

4.6 LA CLÁUSULA GROUP BY.

4.7 CONSULTA CON MAS DE UNA TABLA

4.8 SCRIPT DE LA BASE DE DATOS: BDNOTAS


Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

CREACIÓN DE UNA BASE DE DATOS


Para crear una base de datos, existen varias maneras, una de ellas puede ser utilizando el
Analizador de Consultas, donde nosotros creamos la base de datos a través de pura
codificación, la otra manera posible es utilizando el Administrador Corporativo, el cual
usaremos a continuación para la creación de una base de datos.

Paso 1: Abrimos el Administrador Corporativo, que aparece en la siguiente ruta:


Inicio Programas Microsoft SQL Server Administrador corporativo, tal como se
muestra en la figura:

Una vez abierto el Administrador Corporativo, desglosamos las listas tal como se
muestran en la figura:

Observación:
Si deseamos trabajar con un nuevo
Servidor, podemos añadir este nuevo
registro ubicándonos en la sección
Grupo de SQL Server, damos clic
derecho, Nuevo registro de servidor
SQL Server.

y desde allí podemos agregar nuevos


servidores a nuestra lista. Para este
ejemplo trabajare con mi servidor de
nombre AQP001

Una vez ubicado en la carpeta Bases de datos, damos clic derecho y escogemos Nueva
base de datos, tal como se muestra:

No saldrá el siguiente asistente, donde debemos de colocar el nombre a nuestra base de


datos, tal como se muestra, luego de esto damos clic en Aceptar.

3
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

Luego podemos observar en la segunda columna que se genero nuestra base de datos:

Una vez creada nuestra base de datos podemos crear tablas dentro de ella, para ello, nos
ubicaremos en la primera columna, desglosamos el contenido de la carpeta Bases de
datos, y se nos mostrara todas las bases de datos que tenemos, luego escogeremos la
base de datos DB_VENTAS, desglosamos su contenido, tal como se muestra:

podemos observar todo el contenido de la Base


de datos al desglosarla, tenemos Diagramas,
Tablas, Vistas, Procedimientos
almacenados,…etc.

Paso 2: Como nuestro propósito es la


creación de tablas para nuestra base de datos,
haremos lo siguiente nos ubicamos en la sección Tablas, clic derecho y escogemos
Nueva Tabla, tal como se muestra en la siguiente imagen:

Luego nos aparecerá el siguiente asistente en donde debemos de ingresar los atributos
de la tabla con su respectivo tipo de datos.

Una ves definido los atributos, procedemos a establecer nuestra clave principal(llave
primaria), para eso seleccionamos el campo y damos clic en la imagen de la llave,

4
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

O sino sobre la parte sombreada del campo seleccionado clic derecho y damos
Establecer clave principal, tal como se muestra:

Obteniendo el siguiente resultado: apreciemos la llave que apareció en la primera


columna:

Si todo esta correcto en nuestra tabla procedemos a guardarla, para eso ubicamos la
imagen del diskette , damos clic y nos saldrá el siguiente asistente donde pondremos
un nombre a esta tabla, el cual llamaré Clientes:

Damos clic en Aceptar, y apreciaremos que se añadió nuestra tabla:

Las demás tablas que apreciamos en la imagen son generadas automáticamente por el
sistema.

5
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

Observación: si una ves guardada nuestra tabla quisiéramos realizar alguna


modificación a está. Debemos de hacer lo siguiente:

Al dar clic en diseñar tabla, nos aparecerá el cuadro inicial.

Una vez realizados todos los cambios, damos clic en el icono del diskette ,y
listo nuestra tabla ha sido modificada exitosamente.

• Haremos el mismo procedimiento del Paso 2 para la creación de las tablas:


Articulos, Fac_cabecera, Fac_detalles, Vendedor.

Una vez creadas, estas tablas: (no considerar la tabla del sistema)

Paso 3: Luego procederemos a llenar los datos en cada una de las tablas, por
ejemplo deseamos llenar los datos para tabla clientes, estonces haremos:

Primero nos ubicamos en la tabla cliente, clic derecho Abrir tabla  Devolver todas
las filas. Tal como se muestra.

Se nos abrirá el siguiente asistente:

6
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

En donde procederemos a llenar los datos para cada campo de nuestra base de datos
clientes. Obteniéndose por ejemplo:

Una ves hecho esto si queremos realizar alguna modificación lo que hacemos es
seleccionar un cliente dar clic derecho y escoger cualquiera de las alternativas.

Tabla Fac_Cabecera:

7
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

Si todo esta correcto presionamos el icono de ejecutar y luego cerramos la ventana y


los datos fueron guardados exitosamente, lo mismo se procede para llenar las demás
tablas.

RELACIONAR TABLAS.- para tener un concepto básico de lo que es un


relación entres tablas, proponemos lo siguiente por ejemplo si queremos relacionar 2
tablas la relación existentes entre estas son de 1 y si deseamos relacionar 3 tablas la
relación entres estas 3 tablas seria de 2. Y así sucesivamente, si extendemos este
concepto para n-ésimas tablas podremos decir
que para n (números de tablas) existen
(n-1) (relaciones):

Ahora para poder nosotros realizar estas


relaciones, en Ms SQL Server, nos
proporciona de la herramienta de nombre
Diagramas.

DIAGRAMAS.- esta parte podemos relacionar las tablas siguiendo los siguientes
pasos.

Paso 1: Seleccionamos la base de datos con la cual queremos trabajar, para nuestro
ejemplo usaremos la base de datos antes creada DB_VENTAS. Luego seleccionamos
Diagramas, clic derecho y escogemos Nuevo diagrama de base de datos, tal como se
muestra:

Luego de esto nos aparecerá el asistente,

8
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

Presionamos en Siguiente, luego de esto el asistente nos pedirá que agreguemos las
tablas las cuales queremos relacionar. Entonces procedemos a escoger las tablas a
trabajar y damos en agregar, tal como se muestra en la figura:

9
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

Una vez agregadas todas las tablas a relacionar, damos clic en siguiente:
Luego de esto, nos parecerá lo siguiente, en donde debemos de confirmar si las tablas
que aparecen allí, son con las que trabajaremos, si todo esta correcto, damos clic en
Finalizar, si hubiera alguna modificación que hacer, presionamos Atrás y corregimos
nuestro error.

10
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

Al dar clic en Finalizar aparecerá la siguiente ventana con nuestras tablas:

Luego procederemos a relacionar estas tablas.

Para relacionar las tablas lo primero que debemos de tener en cuenta es que tablas se
van a relacionar, en este caso vamos a relacionar la tabla Clientes con Fac_cabecera, ya
que en la tabla Fac_cabecera se jala el código del cliente cli_cod.
Entonces lo que debemos hacer es escoger la tabla Clientes (ya que de aquí se van a
jalar los códigos) exactamente escogemos el campo del cual vamos a jalar los datos en
este caso cli_cod y lo vamos a arrastrar y dejar encima de la tabla Fac_cabecera ,

de ahí se mostrara una ventana indicando la relación que se ha creado, el nombre que se
le puso, etc. Tal como se muestra en la figura:

11
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

Aquí aparecen dos columnas Clientes y Fac_cabecera, luego en la columna de


Fac_cabecera debemos de escoger cli_cod, por que nosotros queremos que la relación
entre estas dos tablas sea por el código del cliente cli_cod. Obteniéndose:

Luego damos clic en , y veremos la relación entre estas dos tablas, repetimos
el mismo proceso para relacionar las demás tablas.

Relaciones de las tablas:

Tablas Clientes y Fac_cabecera, se relacionan por el código del cliente cod_cli.


Tablas Fac_cabecera y Vendedor, se relacionan por el código del vendedor
ven_cod.
Tablas Articulos y Fac_detalle, se relacionan por el código del articulo art_cod.
Tablas Fac_detalle y Fac_cabecera, se relacionan por el numero de factura
fac_num

Nota: cabe aclarar que para relacionar 2 tablas por un campo en común, este campo
debe de contener el mismo tipo y longitud de datos, en las dos tablas.

Una vez hecho todas las relaciones procedemos a guardarlas presionando el icono
diskette , que aparece en la parte superior de la ventana.

12
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

Le colocamos un nombre, para este caso le ponemos DIAGRAMA1, y damos en


aceptar y nos saldrá el siguiente asistente, donde daremos la confirmación, damos clic
en Sí.

y listo, nuestro diagrama se ha guardado correctamente.

GENERACIÓN DE SCRIPTS.- Un script es un código en este caso un código


para crear base de datos. Para esto escogemos la base de datos, clic derecho Todas las
tareas Generar secuencia de comandos SQL. Tal como se muestra:

Uego de esto nos parecerá el siguiente asistente:

13
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

Presionaremos el botón Mostrar todo, y luego marcamos Incluir todos los objetos.
Tal como se muestra:

Luego damos clic en aceptar.


SQL Server responderá mostrando una ventana en la cual nos pedirá guardar

14
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

Escogemos una ubicación, colocamos un nombre al archivo, que lleva la extensión *sql,
y damos clic en Guardar.

Lo que se graba es similar a un archivo de texto que tiene l extensión SQL el cual se
podrá abrir con el analizador de consultas y tendrá código que creara la base de datos,
tablas etc.

Veamos ingresemos al analizador de consultas: Inicio Programas  Microsoft SQL


Server Analizador de consultas. O sino en Ejecutar escribimos – isqlw.

Una vez dentro de allí, abriremos nuestro script,:

Nos mostrara toda la codificación de nuestra base de datos.

15
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

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 enfoque 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 Recupera datos de una o más tablas.


FROM Las tablas involucradas en la consulta. Se
requiere para cada SELECT.
WHERE Los Criterios de selección que determinan cuales
filas se van a recuperar, eliminar o actualizar.
GROUP BY Criterio para agrupar filas.
ORDER BY Criterio para ordenar filas.
INSERT Insertar filas en una tabla especificada.
UPDATE Actualizar filas en una tabla especifica.
DELETE 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.

16
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

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
IDALUMNO
 APEALUMNO : Apellido del Alumno
 NOMALUMNO : Nombre del Alumno
 IDESP : Código de especialidad
IDESP
 PROCE : Procedencia

CURSO
 IDCURSO : Código del curso.
 NOMCURSO : Nombre del curso. IDCURSO
 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

17
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

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.

18
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

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:

19
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

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.

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'

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:

20
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

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:

21
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

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.

22
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

 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
Descripción
agregado

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.

23
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

 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 En las columnas de los tipos de datos bit no se
MAX pueden utilizar las funciones MIN y MAX.
SUM y Las funciones de agregado SUM y AVG solo se
AVG 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

24
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

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.

25
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

 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

26
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

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.

27
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

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:

28
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

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

29
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

-- 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

30
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

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')
Insert Into ALUMNO Values('A0006','Carranza Fuentes','Maria
Elena','E02','P')
Insert Into ALUMNO Values('A0007','Prado Castro','Gabriela','E01','N')

31
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

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

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

32
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

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

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


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

33
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

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)
Insert Into NOTAS Values('A0003','C008',12,13)
Insert Into NOTAS Values('A0003','C005',16,14)
Insert Into NOTAS Values('A0003','C003',8,13)

34
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

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)
Insert Into NOTAS Values('A0016','C006',17,12)

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

35
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

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)

SELECT * FROM ALUMNO


SELECT * FROM ESPECIALIDAD
SELECT * FROM PAGOS
SELECT * FROM NOTAS
SELECT * FROM CURSO

36
Introducción al Lenguaje SQL – Ms SQL Server
Por: Aleksandr Paúl Quito Pérez.

37

Anda mungkin juga menyukai