Este documento presenta un manual de consultas SQL Server. Explica consultas básicas como SELECT, WHERE y ORDER BY, e incluye ejemplos. También cubre consultas más avanzadas como INNER JOIN, UNION y agregados como SUM, AVG, MIN y MAX. Finalmente, incluye secciones de prácticas de ejemplo y conclusiones.
Este documento presenta un manual de consultas SQL Server. Explica consultas básicas como SELECT, WHERE y ORDER BY, e incluye ejemplos. También cubre consultas más avanzadas como INNER JOIN, UNION y agregados como SUM, AVG, MIN y MAX. Finalmente, incluye secciones de prácticas de ejemplo y conclusiones.
Este documento presenta un manual de consultas SQL Server. Explica consultas básicas como SELECT, WHERE y ORDER BY, e incluye ejemplos. También cubre consultas más avanzadas como INNER JOIN, UNION y agregados como SUM, AVG, MIN y MAX. Finalmente, incluye secciones de prácticas de ejemplo y conclusiones.
Jos Antelmo Ortega Hernandez 12CG0222 Rolando Flores Sigala 12CG0515
Ing. Sal Garca Andazola
Taller de Base de Datos
ISC-4BV
10/04/14
2
ndice. INTRODUCCIN, SELECT FROM, ALIAS.3
WHERE, ORDER BY..4
COLUMNAS CALCULADAS, DISTINCT.5
TOP, CONDICIONES DE COMPARACIN...6
BETWEEN, AND.....7
IN, LIKE.8
IS NULL, IS NOT NULL, UNION9
INNER JOIN...10
PRODUCTO CARTESIANO11
SUM, AVG, MIN.12
MAX, COUNT13
PRCTICAS..14
CONCLUSIONES, BIBLIOGRFIA21
3
Introduccin.- En este manual de consultas SQL se vern algunas de las consultas bsicas y avanzadas que se utilizan en SQL Server tales como Select, Where, Order By, In, como bsicas e Inner Join, Union, Productos Cartesianos como avanzadas.
SELECT FROM.- Este comando sirve para seleccionar y mostrar datos de una tabla. SELECT * FROM -NOMBRE DE LA TABLA- EJEMPLOS.- SELECT * FROM ALUMNO$ SELECT NOMBRE,CALLE_NUM,COLONIA FROM EMPLEADOS$ ALIAS.- Sirve para crear una columna temporal con diferente nombre y asignarle datos. SELECT CAMPO- AS [NUEVO NOMBRE DEL CAMPO] FROM NOMBRE DE LA TABLA- EJEMPLOS.- SELECT NOMBRE [NOMBRE DE LOS EMPLEADOS],CALLE_NUM [DIRECCION DE LOS EMPLEADOS] FROM EMPLEADOS$ SELECT NO_CONTROL MATRICULA,AP_PATERNO PATERNO, AP_MATERNO MATERNO, NOMBRE NOMBRES FROM ALUMNO$
4
WHERE.- Es una condicin que se pone en los SELECT para decirle que solo seleccionara los datos que cumplan la condicin aplicada en el SELECT SELECT CAMPO- FROM NOMBRE DE LA TABLA- WHERE CAMPO-=-DATO- EJEMPLOS.- SELECT * FROM ALUMNO$ WHERE AP_PATERNO = 'RODRIGUEZ' SELECT * FROM ALUMNO$ WHERE TURNO = 'MATUTINO' ORDER BY.- Esta funcin sirve para ordenar los datos a partir de una columna ascendente o descendente. SELECT CAMPO- FROM NOMBRE DE LA TABLA- ORDER BY CAMPO- -ASC O DESC- EJEMPLOS.- SELECT * FROM ALUMNO$ ORDER BY NO_CONTROL ASC SELECT * FROM ALUMNO_GENERAL$ ORDER BY NOMBRE DESC
5
COLUMNAS CALCULADAS.- Estas sirven para que a partir de algunos datos puedas calcular otros como multiplicar campos numricos por otros, divisiones o promedios. SELECT (CAMPO1- * -CAMPO2-) FROM NOMBRE DE LA TABLA- EJEMPLOS.- SELECT (SUELDO_HORA * HORAS) AS [SUELDO SEMANAL] FROM PUESTO$ SELECT ((CALIFICACION1 + CALIFICACION2 + CALIFICACION3 + CALIFICACION4)/4) AS [PROMEDIO GENERAL] FROM CALIFICACIONES$
DISTINCT.- Esta funcin te muestra los datos distintos o diferentes de la tabla. SELECT DISTINCT CAMPO- FROM NOMBRE DE LA TABLA- EJEMPLOS.- SELECT DISTINCT PUESTO FROM PUESTO$ SELECT DISTINCT EDAD FROM ALUMNO_GENERAL$
6
TOP.- Esta funcin sirve para mostrar un nmero determinado de registros que el usuario desee. SELECT TOP NUMERO A SELECCIONAR- -CAMPO-- FROM NOMBRE DE LA TABLA- EJEMPLOS.- SELECT TOP 4 * FROM ALUMNO$ SELECT TOP 6 NOMBRE FROM ALUMNO$ ORDER BY NOMBRE ASC
CONDICIONES DE COMPARACIN.- Sirven para que solo se muestren registros que sean mayor que, menor que, igual, diferente, entre otros. Los principales operadores son >, <, <>, >=, <=, =, !=. EJEMPLOS.- SELECT * FROM ALUMNO_GENERAL$ WHERE EDAD = 24 SELECT * FROM ALUMNO_GENERAL$ WHERE EDAD > 20
7
BETWEEN.- Esta funcin nos muestra los registros que estn dentro de un rango dado por el usuario. SELECT -CAMPO- FROM NOMBRE DE LA TABLA- WHERE -CAMPO- BETWEEN -DATO- AND -DATO- EJEMPLOS.- SELECT * FROM ALUMNO_GENERAL$ WHERE EDAD BETWEEN 20 AND 25 SELECT * FROM PUESTO$ WHERE HORAS BETWEEN 30 AND 40
AND.- Sirve para que la consulta deseada se cumpla bajo varias condiciones. SELECT -CAMPO- FROM NOMBRE DE LA TABLA- WHERE -CAMPO- = -DATO- AND CAMPO- = -DATO- EJEMPLOS.- SELECT * FROM ALUMNO$ WHERE SEMESTRE = 4 AND TURNO = VESPERTINO SELECT * FROM ALUMNO_GENERAL$ WHERE COLONIA = CENTRO AND EDAD > 23
8
IN.- Sirve para buscar 2 datos en una columna al mismo tiempo. SELECT CAMPO- FROM NOMBRE DE LA TABLA- WHERE CAMPO- IN (-DATO1-,-DATO2-)
EJEMPLOS.- SELECT * FROM ALUMNO$ WHERE SEMESTRE IN (2,4) SELECT * FROM PUESTO$ WHERE PUESTO IN (DOCENTE,ADMINISTRATIVO)
LIKE.- Sirve para buscar un dato que se parezca a una palabra o parte de una palabra. SELECT CAMPO- FROM NOMBRE DE LA TABLA- WHERE CAMPO- LIKE _A- En este caso el guion bajo lo toma como un espacio y por lo tanto va a buscar las palabras que como segunda letra contengan una A. EJEMPLOS.- SELECT * FROM ALUMNO$ WHERE NO_CONTROL LIKE 10CG SELECT * FROM PUESTO$ WHERE NUMEMPLEADO LIKE _1
9
IS NULL, IS NOT NULL .- Estas palabras reservadas nos sirven para que la consulta muestre los datos que estn vacos o que no lo estn. SELECT CAMPO- FROM -NOMBRE DE LA TABLA- WHERE CAMPO- IN NULL AND CAMPO- IS NOT NULL EJEMPLOS.- SELECT * FROM ALUMNO_GENERAL$ WHERE TELEFONO IS NULL SELECT * FROM ALUMNO_GENERAL$ WHERE CALLE IS NOT NULL
UNION.- Sirve para juntar los datos de 2 tablas en una sola tabla. SELECT CAMPO- FROM NOMBRE DE LA TABLA- UNION SELECT -CAMPO- FROM NOMBRE DE LA TABLA- EJEMPLOS.- SELECT * FROM ALUMNO$ UNION SELECT * FROM ALUMNO_GENERAL$ SELECT * FROM ALUMNO$ UNION SELECT * FROM CALIFICACIONES$
10
INNER JOIN.- Sirve para juntar los datos de 2 o ms tablas en una sola tabla. SELECT TABLA1.CAMPO-,-TABLA2.CAMPO- FROM TABLA1- INNER JOIN -TABLA2- ON CAMPO.TABLA1-=-CAMPO.TABLA2- En la sentencia ON, se tienen que igualar 2 campos que existan en las 2 tablas porque es requisito para realizar esta consulta y para que no muestre datos duplicados. EJEMPLOS.- SELECT A.AP_PATERNO, A .AP_MATERNO, A.NOMBRE, (C.CALIFICACION1 + C.CALIFICACION2 + C.CALIFICACION3 + C.CALIFICACION4) / 4 PROMEDIO FROM ALUMNO$ A INNER JOIN CALIFICACIONES$ C ON A.NO_CONTROL=C.NO_CONTROL ORDER BY 4 DESC
SELECT A.AP_PATERNO, A .AP_MATERNO, A.NOMBRE, C.NOMBRE AS CARRERA, AG.SEXO, AG.EDAD FROM ALUMNO$ A INNER JOIN CARRERAS$ C ON A.CARRERA_ID=C.CARRERA_ID INNER JOIN ALUMNO_GENERAL$ AG ON A.NO_CONTROL=AG.NO_CONTROL
11
PRODUCTO CARTESIANO.- Sirve para extraer datos de diferentes tablas, es parecido al INNER JOIN. SELECT TABLA1.CAMPO- , -TABLA2.CAMPO- FROM TABLA1- , -TABLA2- WHERE TABLA1-.CAMPO=-TABLA2.CAMPO- En la sentencia WHERE se tienen que igualar 2 campos que existan en las 2 tablas para que no nos muestre datos duplicados. EJEMPLOS.- SELECT ALUMNO$.NO_CONTROL, ALUMNO$.AP_PATERNO,ALUMNO$.AP_MATERNO,ALUMNO$ .NOMBRE, ALUMNO_GENERAL$.EDO_CIVIL, ALUMNO_GENERAL$.SEXO, ALUMNO_GENERAL$.EDAD FROM ALUMNO$, ALUMNO_GENERAL$ WHERE ALUMNO$.NO_CONTROL=ALUMNO_GENERAL$.NO_CONTR OL
SELECT ALUMNO$.AP_PATERNO,ALUMNO$.AP_MATERNO,ALUMNO$ .NOMBRE, CARRERAS$.NOMBRE FROM ALUMNO$, CARRERAS$ WHERE ALUMNO$.CARRERA_ID=CARRERAS$.CARRERA_ID
12
SUM.- Sirve para calcular la suma de una columna numrica. SELECT SUM (COLUMNA) FROM NOMBRE DE LA TABLA- EJEMPLOS.- SELECT SUM SUELDO FROM PUESTO$ SELECT SUM SUELDO_HORA FROM PUESTO$
AVG.- Sirve para calcular el promedio de una columna numrica. SELECT AVG (COLUMNA) FROM NOMBRE DE LA TABLA- EJEMPLOS.- SELECT AVG CALIFICACION1 FROM CALIFICACIONES$ SELECT AVG EDAD FROM ALUMNO_GENERAL$
MIN.- Sirve para mostrar el valor ms pequeo de una columna. SELECT MIN (COLUMNA) FROM NOMBRE DE LA TABLA- EJEMPLOS.- SELECT MIN EDAD FROM ALUMNO_GENERAL$ SELECT MIN CALIFICACION1 FROM CALIFICACIONES$
13
MAX.- Sirve para mostrar el valor ms grande de una columna. SELECT MAX (COLUMNA) FROM NOMBRE DE LA TABLA- EJEMPLOS.- SELECT MAX EDAD FROM ALUMNO_GENERAL$ SELECT MAX CALIFICACION1 FROM CALIFICACIONES$
COUNT.- Cuenta el nmero de valores de una columna. SELECT COUNT (COLUMNA) FROM NOMBRE DE LA TABLA- EJEMPLOS.- SELECT COUNT (EDAD) FROM ALUMNO_GENERAL$ SELECT COUNT (CALIFICACION1) FROM CALIFICACIONES$
14
Prcticas 13 de Marzo.- CREATE DATABASE ESCUELA --SELECCIONAR VARIOS CAMPOS SELECT NO_CONTROL, AP_PATERNO, AP_MATERNO, NOMBRE FROM ALUMNO$ SELECT NOMBRE, CALLE_NUM, COLONIA FROM EMPLEADOS$ --AGREGAR ALIAS SELECT NOMBRE [NOMBRE DE LOS EMPLEADOS], CALLE_NUM [DIRECCION DE LOS EMPLEADOS] FROM EMPLEADOS$ --LA PALABRA RESERVADA AS NO ES NECESARIA SELECT NO_CONTROL MATRICULA, AP_PATERNO PATERNO, AP_MATERNO MATERNO, NOMBRE NOMBRES FROM ALUMNO$ --ALIAS CON ESPACIOS SELECT NO_CONTROL [NUMERO DE CONTROL], AP_PATERNO [APELLIDO PATERNO], AP_MATERNO [APELLIDO MATERNO], NOMBRE NOMBRES FROM ALUMNO$ --MOSTRAR CAMPOS SIN PONERLOS SELECT * FROM ALUMNO$ --MOSTRAR EL SUELDO POR SEMANA DE LOS EMPLEADOS SELECT NUMEMPLEADO, SUELDO_HORA * HORAS AS [SUELDO SEMANAL] FROM PUESTO$ --CONCATENAR DATOS SELECT NO_CONTROL, AP_PATERNO+ ' ' +AP_MATERNO+ ' ' +NOMBRE AS [NOMBRE COMPLETO] FROM ALUMNO$ --ORDENAR FILAS SELECT * FROM EMPLEADOS$ ORDER BY EDAD --ORDENAR A PARTIR DE VARIOS CAMPOS SELECT * FROM ALUMNO$ ORDER BY AP_PATERNO, AP_MATERNO, NOMBRE --ORDENAR DESCENDENTEMENTE SELECT * FROM ALUMNO$ ORDER BY SEMESTRE DESC --ORDENAR POR NUMERO DE CAMPO SELECT * FROM ALUMNO$ ORDER BY 3, 4, 5
15
18 de Marzo CREATE DATABASE ESCUELA --1 SELECT AP_PATERNO, AP_MATERNO, NOMBRE, TURNO, SEMESTRE FROM ALUMNO$ --2 SELECT NOMBRE, SEXO, EDAD FROM EMPLEADOS$ --3 SELECT NUMEMPLEADO, EGRESO AS [ESCUELA DE EGRESO], ESTUDIOS FROM ESCOLARIDAD$ --4 SELECT NO_CONTROL, CALLE, NMERO, COLONIA FROM ALUMNO_GENERAL$ --5 SELECT NO_CONTROL, MATERIA1, CALIFICACION1, MATERIA2, CALIFICACION2, MATERIA3, CALIFICACION3, ((CALIFICACION1 + CALIFICACION2 + CALIFICACION3)/3) AS PROMEDIO FROM CALIFICACIONES$ --6 SELECT NO_CONTROL, SEXO, EDAD FROM ALUMNO_GENERAL$ ORDER BY SEXO, EDAD --7 SELECT * FROM ALUMNO$ ORDER BY ESTATUS, AP_PATERNO, AP_MATERNO, NOMBRE
20 de Marzo CREATE DATABASE ESCUELA --DISTINCT SELECT DISTINCT ESTATUS FROM ALUMNO$ SELECT DISTINCT PUESTO, HORAS FROM PUESTO$ ORDER BY 1 --TOP SELECT TOP 8 * FROM EMPLEADOS$ ORDER BY EDAD DESC SELECT TOP 5(SUELDO_HORA * HORAS) AS [SUELDO SEMANAL] FROM PUESTO$ ORDER BY [SUELDO SEMANAL] DESC --WHERE SELECT * FROM ALUMNO$ WHERE AP_PATERNO = 'RODRIGUEZ' SELECT * FROM ALUMNO$
16
WHERE TURNO != 'MATUTINO' SELECT * FROM EMPLEADOS$ WHERE EDAD < 30 SELECT * FROM EMPLEADOS$ WHERE EDAD <= 40 SELECT * FROM EMPLEADOS$ WHERE EDAD > 40 SELECT * FROM EMPLEADOS$ WHERE EDAD >= 40 --BETWEEN SELECT * FROM EMPLEADOS$ WHERE EDAD BETWEEN 26 AND 30 ORDER BY EDAD SELECT * FROM PUESTO$ WHERE HORAS BETWEEN 30 AND 35 ORDER BY HORAS --IN SELECT * FROM ALUMNO$ WHERE SEMESTRE IN (1, 3, 5) ORDER BY SEMESTRE SELECT * FROM ALUMNO_GENERAL$ WHERE COLONIA IN ('CENTRO', 'ALAMEDAS') --NULL SELECT * FROM ALUMNO_GENERAL$ WHERE TELEFONO IS NULL --LIKE SELECT * FROM ALUMNO$ WHERE AP_PATERNO LIKE 'A%' SELECT * FROM ALUMNO$ WHERE AP_PATERNO LIKE '_A%' SELECT * FROM CARRERAS$ WHERE NOMBRE LIKE '%ELECTRO%'
17
24 de Marzo --1 SELECT * FROM ALUMNO_GENERAL$ SELECT DISTINCT EDO_CIVIL FROM ALUMNO_GENERAL$ --2 SELECT DISTINCT MATERIA1 FROM CALIFICACIONES$ --3 SELECT * FROM CALIFICACIONES$ SELECT TOP 6 * FROM CALIFICACIONES$ WHERE MATERIA1 = 'TALLER DE BASES DE DATOS' ORDER BY CALIFICACION1 DESC --4 SELECT * FROM ALUMNO$ WHERE ESTATUS = 'INSCRITO' --5 SELECT * FROM PUESTO$ WHERE PUESTO != 'DOCENTE' --6 SELECT * FROM PUESTO$ WHERE SUELDO_HORA < 100 --7 SELECT * FROM CALIFICACIONES$ SELECT * FROM CALIFICACIONES$ WHERE MATERIA3 = 'SIMULACION' AND CALIFICACION3 >= 70 --8 SELECT * FROM CALIFICACIONES$ WHERE MATERIA2 = 'MATEMATICAS I' AND CALIFICACION2 BETWEEN 90 AND 100 --9 SELECT * FROM PUESTO$ WHERE PUESTO IN ('DOCENTE','ADMINISTRATIVO') --10 SELECT * FROM ALUMNO_GENERAL$ WHERE CP IS NULL AND CALLE IS NOT NULL --11 SELECT * FROM ALUMNO$ WHERE NO_CONTROL LIKE '10CG%' --12 SELECT *
18
FROM CALIFICACIONES$ WHERE MATERIA2 LIKE '%INFORMATICA%'
27 de Marzo --UNION SELECT NO_CONTROL FROM ALUMNO$ UNION SELECT NOMBRE FROM ALUMNO$ SELECT NUMEMPLEADO FROM PUESTO$ UNION SELECT NOMBRE FROM ALUMNO$ --INNER JOIN SELECT * FROM ALUMNO$ INNER JOIN ALUMNO_GENERAL$ ON ALUMNO$.NO_CONTROL = ALUMNO_GENERAL$.NO_CONTROL SELECT * FROM EMPLEADOS$ INNER JOIN PUESTO$ ON EMPLEADOS$.NUMEMPLEADO = PUESTO$.NUMEMPLEADO
SELECT ALUMNO$.NO_CONTROL, ALUMNO$.AP_PATERNO, ALUMNO$.AP_MATERNO, ALUMNO$.NOMBRE, ALUMNO_GENERAL$.EDO_CIVIL, ALUMNO_GENERAL$.SEXO, ALUMNO_GENERAL$.EDAD FROM ALUMNO$, ALUMNO_GENERAL$ WHERE ALUMNO$.NO_CONTROL=ALUMNO_GENERAL$.NO_CONTROL
SELECT ALUMNO$.AP_PATERNO, ALUMNO$.AP_MATERNO, ALUMNO$.NOMBRE, CARRERAS$.NOMBRE FROM ALUMNO$, CARRERAS$ WHERE ALUMNO$.CARRERA_ID=CARRERAS$.CARRERA_ID
1 de Abril --INNER JOIN SELECT A.AP_PATERNO, A .AP_MATERNO, A.NOMBRE, (C.CALIFICACION1 + C.CALIFICACION2 + C.CALIFICACION3 + C.CALIFICACION4) / 4 PROMEDIO FROM ALUMNO$ A INNER JOIN CALIFICACIONES$ C ON A.NO_CONTROL=C.NO_CONTROL ORDER BY 4 DESC
SELECT A.AP_PATERNO, A .AP_MATERNO, A.NOMBRE, C.NOMBRE AS CARRERA, AG.SEXO, AG.EDAD FROM ALUMNO$ A INNER JOIN CARRERAS$ C ON A.CARRERA_ID=C.CARRERA_ID INNER JOIN ALUMNO_GENERAL$ AG ON A.NO_CONTROL=AG.NO_CONTROL
19
3 de Abril USE [ESCUELA] GO
/****** Object: Table [dbo].[ALUMNO$] Script Date: 01/04/2014 04:34:00 p. m. ******/ SET ANSI_NULLS ON GO
GO --2 SELECT * FROM EMPLEADOS$ WHERE EDAD>40 AND SEXO='MASCULINO' UNION SELECT * FROM EMPLEADOS2$ WHERE EDAD>40 AND SEXO='MASCULINO'
--3 SELECT A.AP_PATERNO, A.AP_MATERNO, A.NOMBRE, AG.CALLE, AG.COLONIA, AG.CP, AG.CIUDAD FROM ALUMNO$ A INNER JOIN ALUMNO_GENERAL$ AG ON A.NO_CONTROL=AG.NO_CONTROL --4 SELECT A.AP_PATERNO, A.AP_MATERNO, A.NOMBRE, C.NOMBRE AS CARRERA, CA.CALIFICACION1 AS [TALLER DE BD] FROM ALUMNO$ A INNER JOIN CARRERAS$ C ON A.CARRERA_ID=C.CARRERA_ID INNER JOIN CALIFICACIONES$ CA ON CA.NO_CONTROL=A.NO_CONTROL WHERE C.NOMBRE='INGENIERIA EN SISTEMAS COMPUTACIONALES' AND CA.MATERIA1='TALLER DE BASES DE DATOS' --5 SELECT E.NOMBRE, ES.EGRESO, P.PUESTO, (P.SUELDO_HORA * P.HORAS) AS [SUELDO SEMANAL] FROM EMPLEADOS$ E INNER JOIN PUESTO$ P ON E.NUMEMPLEADO=P.NUMEMPLEADO INNER JOIN ESCOLARIDAD$ ES ON P.NUMEMPLEADO=ES.NUMEMPLEADO WHERE ES.EGRESO='ITSNCG'
21
Conclusiones.-
Rolando Flores Sigala.- A lo largo de la unidad he aprendido a realzar una base de datos en SQL server con comandos y a exportar una base de datos hecha en Excel y dentro de la base de datos aprend a realzar los diferentes comandos ya expuestos en este manual. As como saber diferenciar cuando tengo que usar cada uno de ellos.
Jos A. Ortega Hernndez.- He comprendido la utilizacin de las consultas cuando se necesiten, as como su sintaxis y estructura para evitar posibles errores.