Breves Conceptos de SQL

Post on 16-Jan-2016

12 views 0 download

description

Principales comandos Standar SQL

Transcript of Breves Conceptos de SQL

SQL

Esquema de HR

Descripción de Tablas

Recuperación de datos mediante la instrucción SQL SELECT

Esquema Básico

Sintaxis:

Select .- Identifica los columnas que se van a desplegar.

From.- identifica la tabla que contiene los campos.

Column/expression.- Selecciona los nombres de las comunas o expresiones.

DISTINCT.- Suprime duplicados.

Alias.- da un nombre diferente a la columna seleccionada

Selección de todos los Campos

Selección de columnas

Utilizando Operaciones matemáticas

Operador Precedente

Usando Alias

Registros Duplicados

Limitación de las filas del Select

Sintaxis:

Where.- Restringe la consulta para filas que cumplen una condición.

Logical Expression.- Esta definida por nombres de columnas, constantes y operador de comparación. En donde se especifica una combinación de una o más expresiones y Operadores booleanos que retornan un valor verdadero, falso o desconocido

Limitación de las filas del Select

Operadores de comparaciónSintaxis:Where expr operador valor

Comparación de Valores

Operador Between

Operador In

Operador Like

Like se usa para Buscar valores dentro de una cadena de caracteres

Usando la condición NULL

Definición de condiciones usando los operadores lógicos

Utilizando el Operador NOT

El Operador NOT se puede utilizar también con otros operadores SQL, tales como: BETWEEN, LIKE, Y NULL. Ejemplo:

Reglas de Precedencia o orden

Usted puede utilizar perentheses para anular reglas de precedencia.

Reglas de Precedencia

La primera condición es que el Job_id es ‘AD_PRES’ y el salario es mayor que $ 15.000

La segunda condición es job_id es ‘SA_REP’

Reglas de Precedencia

Reglas de Precedencia

La primera condición ejecutada es job_id es 'AD_PRES ' OR 'SA_REP‘.

La segunda condición es que el salario>15,000.

Utilizando la clausula order by

Test

Preguntas

Conjunto de Operaciones para obtener una determinada información de la base de datos.R: ConsultasEn el Modelo E-R adjetivo que define una característica de una entidad.R: atributo

Test

Conjunto de Normas que establecen limitaciones del modelo. Lo que el modelo no puede hacer.R: Restricciones

Test

Test

Restricción de datos en consultas básicas de SQL

Restricción de datos

Limitar las filas recuperadas por una consulta:La cláusula WHERE1.- Los operadores de comparación: =, <=, BETWEEN, IN, LIKE.2.- Utilizando las Condiciones lógicas AND, OR y NOT

Restricción de datos

Limitar filas utilizando una selección:

recuperar todos los empleados

en el departamento 90

Restricción de datos

Restringir las filas recuperadas utilizando la cláusula Where:

Donde:Where.-Restringe la consulta a las filas que cumplen una condición.

logical expression.- Compuesta de nombres de columna, constantes y un operador de comparación. Especifica una combinación de una o más expresiones y operadores booleanos y devuelve un valor de Verdad.

Restricción de datos

Restricción de datos

También puede utilizar el operador BETWEEN en valores de carácter:

Ordenar de datos

Ordenar filas utilizando la cláusula ORDER BY:

Ordenar de datos

Clasificar en orden descendente

Clasificación por alias de columna

Ordenar de datos

Clasificación por usar posición numérica de la columna

La clasificación por varias columnas

Funciones

Restricción de datos

Utilizando Funciones

Las funciones :1.- Reciben argumentos y devolver un valor2.- Retorna un resultado por fila3.- Puede modificar el tipo de datos4.- Acepta argumentos que pueden ser una columna o una expresión5.- Se pueden anidar o combinar.

Funciones Consultas SQL

Funciones de carácter

Funciones de carácter

Funciones de carácter

Funciones numéricas

Funciones numéricas

Funciones numéricas

Funciones numéricas

Funciones

Funciones

Select Sum(total) As suma_pedidos From pedidos

Select Sum(cantidad) as suma_articulos From pedidos Where id_articulo=6

Funciones generales

Funciones de la jerarquizaciónFunciones de una sola fila se pueden anidar a cualquier nivel.Las funciones anidadas se evalúan desde el nivel más profundo al nivel menos profundo.

Funciones de la jerarquización

Result1 = SUBSTR (LAST_NAME, 1, 8)

Uso de las funciones del GrupoLas funciones de grupo operan en conjuntos de filas para dar un resultado por grupo.

Tipos de Funciones de Grupo

Tipos de Funciones de Grupo

Sintaxis

Funciones de Grupo

Puede utilizar AVG y SUM para los datos numéricos.

Uso de la función COUNT

COUNT(*) devuelve el número de filas de una tabla:

COUNT (expr) devuelve el número de filas, valores no nulos de la expr

Formatos de la función COUNTLa función COUNT tiene tres formatos:

COUNT (*) devuelve el número de filas de una tabla que satisfacen los criterios de la sentencia SELECT, incluidas las filas duplicadas y las filas que contienen valores nulos en cualquiera de las columnas. Si una cláusula WHERE se incluye en la instrucción SELECT, COUNT (*) devuelve el número de filas que satisfacen la condición en la cláusula WHERE.

Por el contrario, COUNT (expr) devuelve el número de valores no nulos que están en la columna identificada por expr.

COUNT (DISTINCT expr) devuelve el número de valores únicos, no nulos que están en la columna identificada por expr

Formatos de la función COUNT

Funciones de Grupo y Valores Nulos

Las funciones de grupo ignoran los valores nulos en la columna:

Creación de grupos de datos

Creación de grupos de datos

Puede dividir las filas de una tabla en grupos más pequeños mediante el uso de laCláusula GROUP BY.

Creación de grupos de datos

Todas las columnas de la lista SELECT que no están en funciones de grupo deben estar en la cláusula GROUP BY

Creación de grupos de datos

La columna GROUP BY no tiene que estar en la lista SELECT

Creación de grupos de datos

¿Puede utilizar la función de grupo en la cláusula ORDER BY?SELECT department_id, AVG(salary)

FROMemployees

GROUP BY department_id

ORDER BY AVG(salary);

Consultas ilegales en el uso de funciones de grupo

Cualquier columna o expresión en la lista SELECT que no es una función de agregación deben estar en la cláusula GROUP BY

Consultas ilegales en el uso de funciones de grupo

No se puede utilizar la cláusula WHERE para restringir grupos.Se utiliza la cláusula HAVING para restringir grupos

Consultas ilegales en el uso de funciones de grupo

No se puede utilizar la cláusula WHERE para restringir grupos.Se utiliza la cláusula HAVING para restringir grupos

Restringir los resultados del grupo con la Cláusula HAVING

Restringir los resultados del grupo con la Cláusula HAVING

Funciones anidamiento de grupos

Uso de sub consultas

Sintaxis

Puede colocar la sub consulta en una serie de cláusulas SQL, incluyendo las siguientes:

• Clausula WHERE

• Clausula HAVING

• Clausula FROM

En la sintaxis:operador incluye una condición de comparación como: >, =, o IN.

Ejemplo

Uso de las funciones del Grupo en una sub consulta

Clausula HAVING con sub consultas

Uso de operadores SET

Uso de operadores SET

Uso de operadores SET

Operadores de conjunto se combinan los resultados de dos o más consultas de componentes en un solo resultado. Las consultas que contienen los operadores establecidos se llaman consultas compuestas.

Operador UNION

1.- El número de columnas seleccionadas deben ser el mismo en las consultas.2.- Los tipos de datos de las columnas deben estar en el mismo grupo de tipos de datos (como numérico o de caracteres).3.- Los nombres de las columnas no tienen que ser idénticos.

Operador UNION

El operador UNION elimina los registros duplicados. Si los registros que se producen en los empleados y las tablas JOB_HISTORY son idénticos, los registros se muestran sólo una vez. Observe en el resultado que se muestra en la diapositiva que el registro del empleado con la EMPLOYEE_ID 200 aparece dos veces porque la JOB_ID es diferente en cada fila

Operador UNION

Considere el siguiente ejemplo

Operador UNION

Considere el siguiente ejemplo

Operador UNION ALL

Considere el siguiente ejemplo

Operador INTERSECT

Utilice el operador INTERSECT para devolver todas las filas que son comunes a varias consultas.

DirectricesEl número de columnas y los tipos de datos de las columnas que se seleccionan por las sentencias SELECT en las consultas deben ser idénticos en todas las sentencias SELECT utilizadas en la consulta. Los nombres de las columnas, sin embargo, no tienen por qué ser idénticos.Invertir el orden de las tablas intersecadas no altera el resultado.INTERSECT no ignora los valores NULL

Operador INTERSECT

Operador MINUS

Muestra los employees ids de los empleados que no han cambiado sus puestos de trabajo ni una sola vez

El uso de la cláusula ORDER BY en operaciones de conjunto

La cláusula ORDER BY sólo puede aparecer una vez al final de la consulta compuesta.

La cláusula ORDER BY sólo reconoce las columnas de la primera consulta SELECT.

Por defecto, la primera columna de la primera consulta SELECT se utiliza para ordenar la salida en un orden ascendente

Manipulación de Datos

Sentencia INSERT

Añade nuevas filas a una tabla. El formato de la sentencia INSERT es:

Con esta sentencia, únicamente podemos insertar una fila en un instante de tiempo.

Sentencia INSERT

1.- Inserta una nueva fila que contiene los valores para cada columna.2.- Los valores de la lista deben estar en el orden predeterminado de las columnas de la tabla.3.- De forma opcional, se puede definir la lista de las columnas a insertar en la cláusula INSERT.

Sentencia INSERT

Copiar filas de otra tabla

Actualizar datos en una tabla

Update modifica los valores existentes en una tabla. Sintaxis:

Actualiza más de una fila si fuese necesario.

Actualizar datos en una tabla

Actualizar columnas con una sub consulta

Actualice el job_id, salario del empleado 113 con job_id y salario del employee 205

Eliminar filas de una tabla

Test

Test

Usando una sub consulta es equivalente a realizar dos consultas secuenciales y usando el resultado de la primera consulta como los valores de búsqueda en la segunda consultaa.- Verdaderob.- Falso

Test

Usando una sub consulta es equivalente a realizar dos consultas secuenciales y usando el resultado de la primera consulta como los valores de búsqueda en la segunda consultaa.- Verdaderob.- Falso

Test

Tres de los siguientes operadores son válidos para la condición WHERE. ¿Cuáles?a.- >=

b.- !=

d.- IS LIKE

c.- IN BETWEEN

e.- <>

Test

Tres de los siguientes operadores son válidos para la condición WHERE. ¿Cuáles?a.- >=

b.- !=

d.- IS LIKE

c.- IN BETWEEN

e.- <>

Test

Identificar las dos consultas SELECT que se ejecutan con éxito

Test

Identificar las dos consultas SELECT que se ejecutan con éxito

Test

¿Qué hay de malo con esta afirmación?

Test

¿Cuál será el resultado de la siguiente función? ROUND(144.24,-1) a. - 140 b. - 144 c. - 150 d. – 100

Test

¿Cuál será el resultado de la siguiente función? ROUND(144.24,-1) a. - 140 b. - 144 c. - 150 d. – 100

Test

¿Cuál de las siguientes afirmaciones es verdadera con respecto a la función COUNT? a.- COUNT (*) Cuenta los valores duplicados y los valores NULL en columnas de cualquier tipo de datos.

b.- La Función COUNT no puede trabajar con tipos de datos de fecha.

c.- COUNT (DISTINCT job_id) devuelve el número de filas con exclusión de las filas que contienen los duplicados y los valores NULL en la columna job_id.

d.- Una instrucción SELECT utilizando la función CONTAR con una palabra clave DISTINCT y no se puede incluir una cláusula WHERE.

Test

¿Cuál de las siguientes afirmaciones es verdadera con respecto a la función COUNT? a.- COUNT (*) Cuenta los valores duplicados y los valores NULL en columnas de cualquier tipo de datos.

b.- La Función COUNT no puede trabajar con tipos de datos de fecha.

c.- COUNT (DISTINCT job_id) devuelve el número de filas con exclusión de las filas que contienen los duplicados y los valores NULL en la columna job_id.

d.- Una instrucción SELECT utilizando la función CONTAR con una palabra clave DISTINCT y no se puede incluir una cláusula WHERE.

Test

¿Cuál de las siguientes opciones muestra relaciones correctas entre el criterio de búsqueda de datos, dentro de una base de datos utilizando la cláusula WHERE y la función de cada uno?

1.- 1C, 2A, 3B

2.- 1A, 2B, 3D

3.- 1D, 2A, 3C

4.- 1B, 2C,3A

Test

¿Cuál de las siguientes opciones muestra relaciones correctas entre el criterio de búsqueda de datos, dentro de una base de datos utilizando la cláusula WHERE y la función de cada uno?

1.- 1C, 2A, 3B

2.- 1A, 2B, 3D

3.- 1D, 2A, 3C

4.- 1B, 2C,3A

Test

Identifique dos conceptos para las funciones de grupo y la cláusula GROUP BY.a.Ud. no puede utilizar un alias de columna en la cláusula GROUP BY.

b.La columna GROUP BY debe estar en la cláusula SELECT.

c.Mediante el uso de una cláusula WHERE, puede excluir filas antes de dividirse en grupos.

d.La cláusula GROUP BY asegura el orden de los registros y/o conjunto de resultados.

e.Si incluye una función de grupo en una cláusula SELECT, debe incluir una cláusula GROUP BY.

Test

Identifique dos conceptos para las funciones de grupo y la cláusula GROUP BY.a.Ud. no puede utilizar un alias de columna en la cláusula GROUP BY.

b.La columna GROUP BY debe estar en la cláusula SELECT.

c.Mediante el uso de una cláusula WHERE, puede excluir filas antes de dividirse en grupos.

d.La cláusula GROUP BY asegura el orden de los registros y/o conjunto de resultados.

e.Si incluye una función de grupo en una cláusula SELECT, debe incluir una cláusula GROUP BY.

Test

Suponiendo que los apellidos de los empleados están bien registrados en la tabla, ¿cuál será el resultado de la siguiente consulta?

SELECT employee_id, last_name, department_id FROM employees WHERE last_name = 'smith';

a.- Puede mostrar los detalles del empleado con el último nombre que Smith

b.-Le dará ningún resultado.

c.-Le dará los detalles para que el empleado tenga el apellido que 'Smith' en minúsculas.

d.-Le dará los detalles del empleado tenga el apellido 'Smith'.

Test

Suponiendo que los apellidos de los empleados están bien registrados en la tabla, ¿cuál será el resultado de la siguiente consulta?

SELECT employee_id, last_name, department_id FROM employees WHERE last_name = 'smith';

a.- Puede mostrar los detalles del empleado con el último nombre que Smith

b.-Le dará ningún resultado.

c.-Le dará los detalles para que el empleado tenga el apellido que 'Smith' en minúsculas.

d.-Le dará los detalles del empleado tenga el apellido 'Smith'.

Test

Usted necesita saber cuales son los empleados que pertenecen al departamento de 'Jessica Butcher' y tienen sueldo mayor que el salario de 'Jessica Butcher', ella tiene un ID de empleado número 40. ¿Cuál de las siguientes consultas va a funcionar? a.- SELECT first_name, last_name

FROM employees

WHERE last_name = 'Butcher'

AND first_name = 'Jessica'

AND salary > 10000;

Test

Usted necesita saber cuales son los empleados que pertenecen al departamento de 'Jessica Butcher' y tienen sueldo mayor que el salario de 'Jessica Butcher', ella tiene un ID de empleado número 40. ¿Cuál de las siguientes consultas va a funcionar? b.- SELECT first_name, last_name

FROM employees

WHERE department = 100;

Test

Usted necesita saber cuales son los empleados que pertenecen al departamento de 'Jessica Butcher' y tienen sueldo mayor que el salario de 'Jessica Butcher', ella tiene un ID de empleado número 40. ¿Cuál de las siguientes consultas va a funcionar? c.- SELECT first_name, last_name FROM employees

WHERE department = (SELECT department FROM employees

WHERE first_name = 'Jessica‘ AND last_name = 'Butcher'

AND employee_id = 40)

AND salary > (SELECT salary FROM employees

WHERE first_name = 'Jessica‘ AND last_name = 'Butcher'

AND employee_id = 40);

Test

Identifique dos ideas de los operadores establecidos.

a. Las expresiones en las consultas SELECT deben coincidir en número.b. Los paréntesis no puede ser utilizado para alterar la secuencia de ejecución.c. El tipo de datos de cada columna en la segunda consulta debe coincidir con el tipo de datos de su columna correspondiente de la primera consulta.d. La cláusula ORDER BY sólo se puede utilizar una vez en una consulta compuesta, a menos que se utilice el operador UNION ALL.

Test

Identifique dos ideas de los operadores establecidos.

a. Las expresiones en las consultas SELECT deben coincidir en número.b. Los paréntesis no puede ser utilizado para alterar la secuencia de ejecución.c. El tipo de datos de cada columna en la segunda consulta debe coincidir con el tipo de datos de su columna correspondiente de la primera consulta.d. La cláusula ORDER BY sólo se puede utilizar una sola vez en una consulta compuesta, a menos que se utilice el operador UNION ALL.

Test

Dentro de base de datos, las sub consultas con SQL permiten:

a.- Utilizar los resultados de una consulta como parte de otra.

b.- Consultar información que se encuentra en más de tres tablas.

c.- Consultar información comparando campos que tienen el mismo tipo de dato.

c.- Ejecutar las consultas de manera más rápida

Test

Dentro de base de datos, las sub consultas con SQL permiten:

a.- Utilizar los resultados de una consulta como parte de otra.

b.- Consultar información que se encuentra en más de tres tablas.

c.- Consultar información comparando campos que tienen el mismo tipo de dato.

c.- Ejecutar las consultas de manera más rápida

Ejercicio 1

Listar el Apellido y el sueldo de los empleados que no ganan entre 4000 y 15000.

Select last_name, salaryfrom employeeswhere salary not between 4000 and 15000

Ejercicio 2

Listar el apellido y el sueldo de los empleados que pertenecen a los departamentos 20 o 50, que ganan entre 4000 y 15000.

Select last_name, salaryfrom employeeswhere salary between 4000 and 15000 and department_id in (20, 50)

Ejercicio 3

Listar el apellido de los empleados que tengan un ‘a’ en la segunda letra del apellido.

Select last_namefrom employeesWhere last_name like ‘_a%’

Ejercicio 4

Listar el apellido y sueldo de los empleados pertenecientes a departamentos radicados en ‘Seattle’.Select last_name, salaryfrom employeesWhere department_id in (select department_id from departments d, locations l where d.location_id=l.location_id and city=‘Seattle’)

Ejercicio 5

Listar cod departamento cuya media de salarios es inferior a 7000 (Contando solo los empleados que ganan menos de 4000)Select department_id, avg(salary)from employeesWhere salary < =4000Group by department_idHaving avg(salary)<7000

Ejercicio 6

Encontrar el nombre y salario de los empleados que ganan menos de 2000. De este conjunto, seleccionar los que tengan una ‘a’ en el nombre. Select *from (select last_name, salary from employees where salary > 2000)Where last_name like ‘%a%’

Ejercicio 7

Seleccionar el ID empleado, apellido y sueldo de los empleados que ganan más que la media de la empresa. Ordenar los registros por el salarioSelect employee_id, last_name, salaryfrom employeesWhere salary > (select avg(salary) from employees)Order by salary

Ejercicio 8

Seleccionar el ID empleado, apellido, de todos los colegas de empleados que tengan una ‘u’ en su apellido. (Colega: persona que trabaja en el mismo departamento.)Select employee_id, last_namefrom employeesWhere department_id in (select department_id from employees where last_name like ‘%u%’)

Ejercicio 8

Seleccionar ID empleado, apellido, sueldo de los colegas de empleados que tengan una ‘u’ en su apellido, y que ganen sueldos (los colegas) mayor que la media de sueldos de la empresa.Select employee_id, last_name, salaryfrom employeesWhere department_id in (select department_id from employees where last_name like ‘%u%’) and salary > (select avg(salary) from employees)

Creación de Tablas

Sentencia: CREATE TABLE, su formato:

Donde la definición de columna es: