Sie sind auf Seite 1von 8

02/03/2016

Pasos
1.
2.
3.
4.
5.
6.

Construir la base de datos


Empresa
Ing. Martn Leiva Castillo
martin_leiva@hotmail.com

7.
8.
9.
10.

Abrir el Microsoft SQL Server Management Studio


Conectarse a SQL Server
Abrir el archivo: 1. creaBaseDatosEmpresa_2016.sql
Ejecutar con F5
Cerrar la ventana de consultas
Abrir el archivo: 2. llenaBaseDatosEmpresa_2016.sql
Ejecutar con F5
Cerrar la ventana de consultas
Crear un diagrama de base de datos con las tablas creadas
Abrir una nueva ventana de consultas para ejecutar las
consultas

Base de datos
Empresa

Consultas bsicas con SQL

02/03/2016

SELECT FROM


Sintaxis bsica:

SELECT FROM WHERE




Listando algunas columnas y filtrando filas:

SELECT <columnas>

SELECT nss_Emp, apellidoPat_Emp, apellidoMat_Emp, nombres_Emp

FROM <tablas>

FROM Empleado

WHERE <condiciones de seleccin> ;

WHERE situacion_Emp='C' ;

Listando todas las columnas y todas las filas

Con ms de una condicin:

SELECT *

SELECT nss_Emp, apellidoPat_Emp, apellidoMat_Emp, nombres_Emp

FROM Empleado

FROM Empleado
WHERE situacion_Emp='C' AND sexo_Emp=0 ;

Listando algunas columnas


SELECT nss_Emp, apellidoPat_Emp, apellidoMat_Emp, nombres_Emp

SELECT nss_Emp, apellidoPat_Emp, apellidoMat_Emp, nombres_Emp

FROM Empleado

FROM Empleado
WHERE estado_Emp IN ('V', 'A') AND telefonos_Emp IS NULL ;

Consultas con fechas




Listar los empleados que ingresaron a trabajar el 13 de marzo


de 1995

Ordenando el conjunto de resultados





SELECT apellidoPat_Emp,apellidoMat_Emp,nombres_Emp,fechaIng_Emp
FROM Empleado

WHERE fechaIng_Emp = '13/03/1995' ;

Listar los dependientes que nacieron en el ao 2000

SELECT apellidoPat_Depe,apellidoMat_Depe,nombres_Depe,fechaNac_Depe

Se utiliza la clusula: ORDER BY


Se puede ordenar de manera ascendente (ASC) o
descendente (DESC)
Se pueden ordenar por ms de una columna y cada una de
manera diferente
Para ordenar por ms de una columna, stas deben estar
separadas por comas (,)

FROM Dependiente
WHERE fechaNac_Depe >= '01/01/2000' AND fechaNac_Depe <= '31/12/2000' ;
SELECT apellidoPat_Depe,apellidoMat_Depe,nombres_Depe,fechaNac_Depe
FROM Dependiente
WHERE fechaNac_Depe

BETWEEN '01/01/2000' AND '31/12/2000' ;

02/03/2016

Ejemplo de ordenacin


Ordenando por una columna

Consultas usando NULL




SELECT nss_Emp, nombres_Emp, apellidoPat_Emp


FROM Empleado
ORDER BY nombres_Emp ASC ;
SELECT nss_Emp, nombres_Emp, apellidoPat_Emp
FROM Empleado




ORDER BY nombres_Emp DESC ;

Ordenando por ms de una columna


SELECT nss_Emp, nombres_Emp, apellidoPat_Emp
FROM Empleado

ORDER BY nombres_Emp DESC, apellidoPat_Emp ASC ;

NULL y NOT NULL




Listar los empleados que NO estn asignados a ningn


departamento

Bsqueda de patrones: LIKE y NOT


LIKE


Permite hacer comparaciones de cadenas utilizan comodines:





SELECT *
FROM Empleado

NULL es un marcador especial usado en SQL para indicar que


no existe un valor dentro de una base de datos
Representa informacin desconocida o no aplicable, y puede
ser asignado como valor a cualquier columna de una tabla
Si el valor de una columna es opcional, quiere decir, que
podemos insertar una fila en la tabla sin asignarle ningn valor
a esa columna opcional, as que esa columna tomar el valor
NULL
NULL es un valor especial, y por tanto, no se puede comparar
con los operadores aritmticos normales (=, >, <, <>), y en su
lugar debemos utilizar los operadores IS e IS NOT

WHERE numero_Dep IS NULL;

Porcentaje (%), reemplaza a uno o ms caracteres


Subguin (_), reemplaza a un solo carcter

Por ejemplo, listar los empleados cuyo apellido paterno empieza con
la letra J
SELECT *

Listar los empleados que estn asignados a algn


departamento

SELECT *
FROM Empleado
WHERE numero_Dep IS NOT NULL;

FROM Empleado
WHERE apellidoPat_Emp LIKE 'j%';

Otro ejemplo, listar los empleados cuyo apellido materno termina


con ra
SELECT *
FROM Empleado
WHERE apellidoMat_Emp LIKE '%ra';

02/03/2016

Otros ejemplos con LIKE




Listar los empleados cuyo nombre tiene la palabra ci

Ejemplos con NOT LIKE




Listar los empleados cuyo nombre NO tiene la palabra ci

SELECT *

SELECT *

FROM Empleado

FROM Empleado

WHERE nombres_Emp LIKE '%ci%';

Listar los proyectos cuyo nombre tenga como tercer carcter la


letra o

WHERE nombres_Emp NOT LIKE '%ci%';

Listar los proyectos cuyo nombre NO tenga como tercer carcter


la letra o

SELECT *

SELECT *

FROM Proyecto

FROM Proyecto

WHERE nombre_Pro LIKE '__o%';

Listar los empleados cuyo apellido paterno tenga slo tres


caracteres

WHERE nombre_Pro NOT LIKE '__o%';

Listar los empleados cuyo apellido paterno NO tenga tres


caracteres

SELECT *

SELECT *

FROM Empleado

FROM Empleado

WHERE apellidoPat_Emp LIKE '___';

WHERE apellidoPat_Emp NOT LIKE '___';

Consultas multitabla







Se utiliza la operacin: INNER JOIN


Consiste en combinar cada fila de una tabla con cada fila de la
otra tabla, seleccionando aquellas filas que cumplan una
determinada condicin
La condicin recibe el nombre de condicin de reunin, a
diferencia de la condicin que se especifica en la clusula
WHERE y que recibe el nombre de condicin de seleccin
La consulta tendr resultados siempre que haya concordancia
de valores en un campo comn
Se pueden tener ms de una operacin INNER JOIN en una
clusula FROM
Se puede combinar filas de una misma tabla

Combinaciones internas


Aquella en la que los valores de las columnas que se estn


combinando se comparan mediante un operador de
comparacin

SELECT d.numero_Dep, nombre_Dep, nombre_Pro, presupuesto_Pro


FROM Departamento d INNER JOIN Proyecto p ON d.numero_Dep=p.numero_Dep
WHERE vigencia_Dep=1

02/03/2016

Uso de Alias



Se utilizan para simplificar las sentencias SQL


Hay dos tipos de alias:



Alias de columna
Alias de tabla

Uso de alias de tabla




Ejemplo usando alias de columna y de tabla:

SELECT d.numero_Dep, nombre_Dep AS departamento, nombre_Pro AS proyecto


FROM Departamento d INNER JOIN Proyecto p ON d.numero_Dep = p.numero_Dep
WHERE estado_Pro='E' ;

Ejemplo usando alias de columna:

SELECT Departamento.numero_Dep, nombre_Dep AS departamento, nombre_Pro AS proyecto


FROM Departamento INNER JOIN Proyecto
ON Departamento.numero_Dep = Proyecto.numero_Dep
WHERE estado_Pro='E' ;

Reuniendo ms de dos tablas






Se pueden utilizar varios INNER JOIN en la clusula FROM de una


consulta
Cada INNER JOIN rene dos tablas o resultados de otras reuniones
y deben estar separadas por parntesis
Por ejemplo, listar los apellidos y nombres de los empleados que
trabajan en el proyecto ProductoX:
SELECT apellidoPat_Emp,apellidoMat_Emp,nombres_Emp
FROM (Empleado e INNER JOIN Asignacion a ON e.nss_Emp=a.nss_Emp)
INNER JOIN Proyecto p ON a.numero_Pro=p.numero_Pro
WHERE nombre_Pro='ProductoX';

Combinaciones externas





Las combinaciones internas slo devuelven filas cuando hay una


fila de ambas tablas, como mnimo, que coincide con la
condicin de la combinacin
Las combinaciones externas devuelven todas las filas de una de
las tablas mencionadas en la clusula FROM
Pueden ser:




LEFT OUTER JOIN o LEFT JOIN


RIGHT OUTER JOIN o RIGHT JOIN
FULL OUTER JOIN o FULL JOIN

02/03/2016

Combinacin externa izquierda





Se recuperarn todas las filas de la tabla izquierda a la que se


haya hecho referencia en la clusula FROM
Si no se encuentra coincidencia con la tabla de la derecha, la
fila muestra los campos de la segunda tabla seteados a NULL

Combinacin externa derecha





Se recuperarn todas las filas de la tabla derecha a la que se


haya hecho referencia en la clusula FROM
Si no se encuentra coincidencia con la tabla de la izquierda, la
fila muestra los campos de la primera tabla seteados a NULL

SELECT d.numero_Dep, nombre_Dep, nombre_Pro, presupuesto_Pro

SELECT nombre_Pro, presupuesto_Pro,nombre_Dis

FROM Departamento d LEFT JOIN Proyecto p ON d.numero_Dep=p.numero_Dep

FROM Proyecto p RIGHT JOIN Distrito d ON p.codigo_Dis=d.codigo_Dis

WHERE vigencia_Dep=1

WHERE codigo_Prov=1

Combinacin externa completa




Incluye en el resultado todas las filas de ambas tablas, con


independencia de que la otra tenga o no un valor coincidente

Suprimiendo filas duplicadas





SELECT e.nss_Emp,apellidoPat_Emp,apellidoMat_Emp,nombres_Emp,nombre_Dep
FROM Empleado e FULL JOIN Departamento d ON e.numero_Dep=d.numero_Dep

Se utiliza la clusula DISTINCT


Especifica que los registro con datos duplicados sean obviados
en el resultado
Un ejemplo con filas duplicadas:
SELECT estado_Emp
FROM Empleado;

Suprimiendo las filas duplicadas:


SELECT DISTINCT

estado_Emp

FROM Empleado;

02/03/2016

Listando los n primeros







Se utiliza la clusula: TOP n


Permite obtener slo una cantidad limitada de filas
Lista las n primeras filas del resultado de una consulta
Lista todas las filas:

TOP con empate






Su utiliza la clusula: WITH TIES


Se aplica con el operador ORDER BY
Lista las n primeras filas del resultado de una consulta, y si
hay empate en el ordenamiento tambin lo muestra

SELECT apellidoMat_Emp, apellidoPat_Emp, nombres_Emp, salario_Emp


FROM Empleado

SELECT TOP 3 WITH TIES apellidoMat_Emp, apellidoPat_Emp, nombres_Emp, salario_Emp

WHERE numero_Dep=3

FROM Empleado

ORDER BY salario_Emp DESC

WHERE numero_Dep=3
ORDER BY salario_Emp DESC

Listas las tres primeras filas, segn la columna de ordenamiento:

SELECT TOP 3 apellidoMat_Emp, apellidoPat_Emp, nombres_Emp, salario_Emp


FROM Empleado
WHERE numero_Dep=3
ORDER BY salario_Emp DESC

TOP PERCENT


Devuelve el primer porcentaje especificado de las filas del


conjunto de resultados

Concatenacin de cadenas



Se usa el operador +
Concatena dos o ms cadenas de caracteres

SELECT numero_Pro, nombre_Pro, presupuesto_Pro

SELECT e.nss_Emp,

FROM Proyecto
ORDER BY presupuesto_Pro DESC ;

nombre_Dep

apellidoPat_Emp + ' ' + apellidoMat_Emp + ' ' + nombres_Emp AS nombre,


FROM Empleado e INNER JOIN Departamento d ON e.numero_Dep=d.numero_Dep

SELECT TOP 50 PERCENT numero_Pro, nombre_Pro, presupuesto_Pro


FROM Proyecto
ORDER BY presupuesto_Pro DESC ;

Para eliminar los espacios en blanco entre los apellidos y


nombres, se usa la funcin RTRIM (a la derecha) o tambin
LTRIM (a la izquierda)

SELECT TOP 50 PERCENT WITH TIES numero_Pro, nombre_Pro, presupuesto_Pro

SELECT e.nss_Emp,

FROM Proyecto
ORDER BY presupuesto_Pro DESC ;

RTRIM(apellidoPat_Emp )+ ' ' + RTRIM(apellidoMat_Emp) + ' ' + nombres_Emp AS nombre,


nombre_Dep
FROM Empleado e INNER JOIN Departamento d ON e.numero_Dep=d.numero_Dep

02/03/2016

Uso de CASE



Evala una lista de condiciones y devuelve una de las


expresiones de resultado posible
Ejemplo 1:

SELECT RTRIM(apellidoPat_Emp )+ ' ' + RTRIM(apellidoMat_Emp) + ' ' + nombres_Emp AS nombre,


sexo = CASE sexo_Emp

Uso de CASE


Ejemplo 2:

SELECT RTRIM(apellidoPat_Emp )+ ' ' + RTRIM(apellidoMat_Emp) + ' ' + nombres_Emp AS nombre,


CASE estado_Emp
WHEN 'A' THEN 'Activo'
WHEN 'V' THEN 'Vacaciones'
ELSE 'Cesante'

WHEN 1 THEN 'Masculino'

END AS estado

ELSE 'Femenino'

FROM Empleado

END

WHERE situacion_Emp = 'N'

FROM Empleado
WHERE estado_Emp IN ('C','V')

Uso de CASE


Ejemplo 3:

SELECT RTRIM(apellidoPat_Emp )+ ' ' + RTRIM(apellidoMat_Emp) + ' ' + nombres_Emp AS nombre,


Salario_Emp,
salario = CASE
WHEN salario_Emp <= 1000 THEN 'Bajo'
WHEN salario_Emp > 1000 and salario_Emp <= 3000 THEN 'Medio'
WHEN salario_Emp > 3000 and salario_Emp <= 4000 THEN 'Alto'
ELSE 'Muy Alto'
END
FROM Empleado
WHERE situacion_Emp = 'N'

Das könnte Ihnen auch gefallen