consultas basicas sql server 2012
TRANSCRIPT
-
8/18/2019 Consultas Basicas SQL Server 2012
1/8
02/03/
Construir la base de datos
EmpresaIng. Martín Leiva Castillo
1. Abrir el Microsoft SQL Server Management Studio
2. Conectarse a SQL Server
3. Abrir el archivo: 1. creaBaseDatosEmpresa_2016.sql
4. Ejecutar con F5
5. Cerrar la ventana de consultas
6. Abrir el archivo: 2. llenaBaseDatosEmpresa_2016.sql
7. Ejecutar con F5
8. Cerrar la ventana de consultas
9. Crear un diagrama de base de datos con las tablas creadas
10. Abrir una nueva ventana de consultas para ejecutar las
consultas
Pasos
Base de datos
Empresa
Consultas básicas con SQL
-
8/18/2019 Consultas Basicas SQL Server 2012
2/8
02/03/
Sintaxis básica:
Listando todas las columnas y todas las filas
Listando algunas columnas
SELECT… FROM
SELECT
FROM
WHERE ;
SELECT *
FROM Empleado
SELECT nss_Emp, apellidoPat_Emp, apellidoMat_Emp, nombres_Emp
FROM Empleado
Listando algunas columnas y filtrando filas:
Con más de una condición:
SELECT… FROM… WHERE
SELECT nss_Emp, apellidoPat_Emp, apellidoMat_Emp, nombres_Emp
FROM Empleado
WHERE situacion_Emp='C' ;
SELECT nss_Emp, apellidoPat_Emp, apellidoMat_Emp, nombres_Emp
FROM Empleado
WHERE situacion_Emp='C' AND sexo_Emp=0 ;
SELECT nss_Emp, apellidoPat_Emp, apellidoMat_Emp, nombres_Emp
FROM Empleado
WHERE estado_Emp IN ('V', 'A') AND telefonos_Emp IS NULL ;
Listar los empleados que ingresaron a trabajar el 13 de marzo
de 1995
Listar los dependientes que nacieron en el año 2000
Consultas con fechas
SELECT apellidoPat_Emp,apellidoMat_Emp,nombres_Emp,fechaIng_Emp
FROM Empleado
WHERE fechaIng_Emp = '13/03/1995' ;
SELECT apellidoPat_Depe,apellidoMat_Depe,nombres_Depe,fechaNac_Depe
FROM Dependiente
WHERE fechaNac_Depe >= '01/01/2000' AND fechaNac_Depe
-
8/18/2019 Consultas Basicas SQL Server 2012
3/8
02/03/
Ordenando por una columna
Ordenando por más de una columna
Ejemplo de ordenación
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 ;
SELECT nss_Emp, nombres_Emp, apellidoPat_Emp
FROM Empleado
ORDER BY nombres_Emp DESC, apellidoPat_Emp ASC ;
NULL es un marcador especial usado en SQL para indicar que
no existe un valor dentro de una base de datos
Representa información “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 ningún 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 aritméticos normales (=, >,
-
8/18/2019 Consultas Basicas SQL Server 2012
4/8
02/03/
Listar los empleados cuyo nombre tiene la palabra “ci”
Listar los proyectos cuyo nombre tenga como tercer carácter la
letra “o”
Listar los empleados cuyo apellido paterno tenga sólo tres
caracteres
Otros ejemplos con LIKE
SELECT *
FROM Empleado
WHERE nombres_Emp LIKE '%ci%';
SELECT *
FROM Proyecto
WHERE nombre_Pro LIKE '__o%';
SELECT *
FROM Empleado
WHERE apellidoPat_Emp LIKE '___';
Listar los empleados cuyo nombre NO tiene la palabra “ci”
Listar los proyectos cuyo nombre NO tenga como tercer carácter
la letra “o”
Listar los empleados cuyo apellido paterno NO tenga tres
caracteres
Ejemplos con NOT LIKE
SELECT *
FROM Empleado
WHERE nombres_Emp NOT LIKE '%ci%';
SELECT *
FROM Proyecto
WHERE nombre_Pro NOT LIKE '__o%';
SELECT *
FROM Empleado
WHERE apellidoPat_Emp NOT LIKE '___';
Se utiliza la operación: INNER JOIN
Consiste en combinar cada fila de una tabla con cada fila de la
otra tabla, seleccionando aquellas filas que cumplan una
determinada condición
La condición recibe el nombre de condición de reunión, a
diferencia de la condición que se especifica en la cláusula
WHERE y que recibe el nombre de condición de selección
La consulta tendrá resultados siempre que haya concordancia
de valores en un campo común
Se pueden tener más de una operación INNER JOIN en unacláusula FROM
Se puede combinar filas de una misma tabla
Consultas multitabla Combinaciones internas
SELECT d.numero_Dep, nombre_Dep, nombre_Pro, presupuesto_ProFROM Departamento d INNER JOIN Proyecto p ON d.numero_Dep=p.numero_Dep
WHERE vigencia_Dep=1
Aquella en la que los valores de las columnas que se están
combinando se comparan mediante un operador de
comparación
-
8/18/2019 Consultas Basicas SQL Server 2012
5/8
02/03/
Se utilizan para simplificar las sentencias SQL
Hay dos tipos de alias:
Alias de columna
Alias de tabla
Ejemplo usando alias de columna:
Uso de Alias
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' ;
Ejemplo usando alias de columna y de tabla:
Uso de alias 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' ;
Se pueden utilizar varios INNER JOIN en la cláusula FROM de una
consulta
Cada INNER JOIN reúne dos tablas o resultados de otras reuniones
y deben estar separadas por paréntesis
Por ejemplo, listar los apellidos y nombres de los empleados que
trabajan en el proyecto ProductoX:
Reuniendo más de dos tablas
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 sólo devuelven filas cuando hay una
fila de ambas tablas, como mínimo, que coincide con la
condición de la combinación
Las combinaciones externas devuelven todas las filas de una de
las tablas mencionadas en la cláusula FROM
Pueden ser:
LEFT OUTER JOIN o LEFT JOIN
RIGHT OUTER JOIN o RIGHT JOIN
FULL OUTER JOIN o FULL JOIN
-
8/18/2019 Consultas Basicas SQL Server 2012
6/8
02/03/
Combinación externa izquierda Se recuperarán todas las filas de la tabla izquierda a la que se
haya hecho referencia en la cláusula FROM
Si no se encuentra coincidencia con la tabla de la derecha, la
fila muestra los campos de la segunda tabla seteados a NULL
SELECT d.numero_Dep, nombre_Dep, nombre_Pro, presupuesto_Pro
FROM Departamento d LEFT JOIN Proyecto p ON d.numero_Dep=p.numero_Dep
WHERE vigencia_Dep=1
Combinación externa derecha Se recuperarán todas las filas de la tabla derecha a la que se
haya hecho referencia en la cláusula 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 nombre_Pro, presupuesto_Pro,nombre_Dis
FROM Proyecto p RIGHT JOIN Distrito d ON p.codigo_Dis=d.codigo_Dis
WHERE codigo_Prov=1
Combinación externa completa
Incluye en el resultado todas las filas de ambas tablas, con
independencia de que la otra tenga o no un valor coincidente
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 cláusula DISTINCT
Especifica que los registro con datos duplicados sean obviados
en el resultado
Un ejemplo con filas duplicadas:
Suprimiendo las filas duplicadas:
Suprimiendo filas duplicadas
SELECT estado_Emp
FROM Empleado;
SELECT DISTINCT estado_Emp
FROM Empleado;
-
8/18/2019 Consultas Basicas SQL Server 2012
7/8
02/03/
Se utiliza la cláusula: TOP n
Permite obtener sólo una cantidad limitada de filas
Lista las “n” primeras filas del resultado de una consulta
Lista todas las filas:
Listas las tres primeras filas, según la columna de ordenamiento:
Listando los “n” primeros
SELECT apellidoMat_Emp, apellidoPat_Emp, nombres_Emp, salario_Emp
FROM Empleado
WHERE numero_Dep=3
ORDER BY salario_Emp DESC
SELECT TOP 3 apellidoMat_Emp, apellidoPat_Emp, nombres_Emp, salario_Emp
FROM Empleado
WHERE numero_Dep=3
ORDER BY salario_Emp DESC
Su utiliza la cláusula: 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 también lo muestra
TOP con empate
SELECT TOP 3 WITH TIES apellidoMat_Emp, apellidoPat_Emp, nombres_Emp, salario_Emp
FROM Empleado
WHERE numero_Dep=3
ORDER BY salario_Emp DESC
Devuelve el primer porcentaje especificado de las filas del
conjunto de resultados
TOP… PERCENT
SELECT numero_Pro, nombre_Pro, presupuesto_Pro
FROM Proyecto
ORDER BY presupuesto_Pro DESC ;
SELECT TOP 50 PERCENT numero_Pro, nombre_Pro, presupuesto_Pro
FROM Proyecto
ORDER BY presupuesto_Pro DESC ;
SELECT TOP 50 PERCENT WITH TIES numero_Pro, nombre_Pro, presupuesto_Pro
FROM Proyecto
ORDER BY presupuesto_Pro DESC ;
Se usa el operador +
Concatena dos o más cadenas de caracteres
Para eliminar los espacios en blanco entre los apellidos y
nombres, se usa la función RTRIM (a la derecha) o también
LTRIM (a la izquierda)
Concatenación de cadenas
SELECT e.nss_Emp,
apellidoPat_Emp + ' ' + apellidoMat_Emp + ' ' + nombres_Emp AS nombre,
nombre_Dep
FROM Empleado e INNER JOIN Departamento d ON e.numero_Dep=d.numero_Dep
SELECT e.nss_Emp,
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
-
8/18/2019 Consultas Basicas SQL Server 2012
8/8
02/03/
Evalúa una lista de condiciones y devuelve una de las
expresiones de resultado posible
Ejemplo 1:
Uso de CASE
SELECT RTRIM(apellidoPat_Emp )+ ' ' + RTRIM(apellidoMat_Emp) + ' ' + nombres_Emp AS nombre,
sexo= CASE sexo_Emp
WHEN 1 THEN 'Masculino'
ELSE 'Femenino'
END
FROM Empleado
WHERE estado_Emp IN ('C','V')
Ejemplo 2:
Uso de CASE
SELECT RTRIM(apellidoPat_Emp )+ ' ' + RTRIM(apellidoMat_Emp) + ' ' + nombres_Emp AS nombre,
CASE estado_Emp
WHEN 'A' THEN 'Activo'
WHEN 'V' THEN 'Vacaciones'
ELSE 'Cesante'
END AS estado
FROM Empleado
WHERE situacion_Emp = 'N'
Ejemplo 3:
Uso de CASE
SELECT RTRIM(apellidoPat_Emp )+ ' ' + RTRIM(apellidoMat_Emp) + ' ' + nombres_Emp AS nombre,
Salario_Emp,
salario = CASE
WHEN salario_Emp 1000 and salario_Emp 3000 and salario_Emp