Вы находитесь на странице: 1из 50

Taller SQL - SUP

Introduccin al Lenguaje SQL.


Sentencia Sentencia Sentencia Sentencia Select Insert Update Delete

Clasula Where
Condiciones de Bsqueda Operadores de Comparacin Rangos Listas Patrones de Caracteres y Comodines Valores desconocidos

Taller SQL - SUP


Otras Clasulas
Group by Having Order by Sub Querys Union

Principales Funciones
Matemticas De Fechas De Cadenas

Taller SQL - SUP


Elaboracin de Consultas con tablas del SUP
Tablas Principales (tb_admcae, tb_biecgf, otros.) Tablas Auxiliares (tb_prmadmtse, otros)

Ejecucin de Stored Procedures elaborados por OFIN Examen de Evaluacin

Introduccin al Lenguaje SQL


SQL es un lenguaje de alto nivel para sistemas de base de datos relacionales, el curso pretende dar a conocer las operaciones bsicas que se pueden realizar con SQL . Las aplicaciones en red son cada da ms numerosas y verstiles. En muchos casos, el esquema bsico de operacin es una serie de Scripts que rigen el comportamiento de una base de datos. Debido a la diversidad de lenguajes y de bases de datos existentes, la manera de comunicar entre unos y otras sera realmente complicada a gestionar de no ser por la existencia de estndares que nos permiten el realizar las operaciones bsicas de una forma universal.

Introduccin al Lenguaje SQL


Es de eso de lo que trata el Structured Query Language que no es mas que un lenguaje estndar de comunicacin con bases de datos. Hablamos por tanto de un lenguaje normalizado que nos permite trabajar con cualquier tipo de lenguaje en combinacin con cualquier tipo de base de datos

Introduccin al Lenguaje SQL

Ejemplos : PLSQL de Oracle, Transact SQL de SQL Server, Informix 4GL de Informix, Microsoft JET SQL de Access, SYBASE Las sentencias SQL pueden ser incrustadas en programas de lenguajes como Cobol, Java, C, Visual Basic, etc.

Introduccin al Lenguaje SQL

Sentencias de Manipulacin de Datos


SELECT UPDATE INSERT DELETE

Sentencia SELECT

Es la sentencia base del SQL y sirve para consultar las tablas de una base de datos. Esta sentencia incluye ocho clusulas de las cuales SELECT y FROM son obligatorias. Con esta sentencia se resuelven los operadores relacionales.

Sentencia SELECT
Estructura bsica: SELECT, FROM. SELECT corresponde a la operacin Proyeccin (). Lista los atributos deseados en el resultado de la consulta. FROM corresponde a la operacin Producto Cartesiano (X). Lista las relaciones que se deben analizar.

Clusula FROM
Especfica la(s) fuente(s) de donde van a ser tomadas las columnas mostradas y/o operadas en la sentencia Select. [SELECT] FROM expresin tabla [as] t_alias [, ...]

Ejemplos de la Sentencia SELECT


Mostrar las compras de cigarrillos de color negro
SELECT marca Marca', filtro Filtro, color, clase, mentol, Dcompra Fecha, Qcomprada Cantidad Compras color = N

FROM WHERE

Sentencia INSERT
INSERT es otra sentencia DML base, que usa para incorporar nuevas filas a una tabla de base de datos. INSERT [INTO] {table-name | view-name} [(column-list)] {VALUES | (values-list) | select-statement }

Sentencia INSERT
INSERT INTO FABRICANTES (Nfabricante, Pas) VALUES (Reynolds Tobacco CO., EEUU) INSERT INTO MARCAS VALUES (Camel, Reynolds Tobacco CO., 10, 20) INSERT INTO CIGARRILLOS VALUES (Camel, N, R, Normal, N, 1.1, 15, 2)

Sentencia UPDATE
Modifica los datos existentes en filas de una tabla de Base de Datos
UPDATE {table-name | view-name} SET{column-list | variable-list | variable_and_column-list},.. [ WHERE { condition }]

Sentencia UPDATE
Cambiar aquellos cigarrillos de clase Normal, con filtro, fabricados por Tabacalera Nacional, de modo que ahora no tengan filtro

UPDATE CIGARRILLOS SET filtro = N WHERE marca in (SELECT marca FROM MARCAS WHERE Nfabricante = Tabacalera Nacional And filtro = S and clase = Normal)

Sentencia DELETE
Elimina filas de una tabla de Base de Datos. DELETE FROM {table-name | view-name} [WHERE {condition} ]

Sentencia DELETE
Eliminar todos los fabricantes que no manufacturen cigarrillos de clase Ultra Light
DELETE FROM FABRICANTES WHERE Nfabricante NOT IN (SELECT DISTINCT Nfabricante FROM MARCAS WHERE marca IN (SELECT marca FROM CIGARRILLOS WHERE clase = Ultra Light))

Clusula WHERE
Es la clusula en donde se especifican las condiciones de bsqueda para las filas que conforman el conjunto resultado. [SELECT ...] INTO tabla_temp [FROM ...] WHERE condiciones_de_bsqueda

Clusula WHERE
Las condiciones_de_bsqueda se conectan de forma opcional con los operadores lgicos AND, OR o NOT. Pueden corresponder a los siguientes tipos
Condiciones de comparacin. Condiciones con Subquery.

Condiciones de Bsqueda
Las condiciones de bsqueda pueden incluir: Operadores de Comparacin (=, <>, < y >). Rangos (BETWEEN y NOT BETWEEN). Listas (IN, NOT IN). Patrones de caracteres (LIKE y NOT LIKE). Valores desconocidos (IS NULL y IS NOT NULL). Combinaciones con conjunciones (AND, OR).

Condiciones de Bsqueda
Operadores de comparacin:
WHERE SueldoBsico > 1000 WHERE SUBSTR(CodigoPostal, 1, 3)= SAN

Rangos (BETWEEN / NOT BETWEEN):


WHERE SueldoBsico BETWEEN 1000 AND 5000

Listas (IN / NOT IN):


WHERE Departamento NOT IN ('ADM', 'SIS')

Coincidencia de patrones o cadenas de caracteres (LIKE / NOT LIKE))


WHERE NombreCompleto LIKE LET%

Operadores y Comodines (Wildcards) en la clusula WHERE


Operador Significado
= > < >= <= <> !> !< Igual a Mayor que Menor que Mayor o igual Menor o igual No igual a No mayor No menor

Wildcard
*% ?, #, _ [-] [!]

Significado
Cualquier cadena de cero o mas caracteres. Cualquier carcter/ nmero nico. Cualquier carcter nico dentro de un rango. Cualquier carcter nico que no est dentro de un rango.

Operadores y Wildcards en el WHERE .WHERE Nombre


LIKE Ma% busca todos los nombres que comiencen con Ma busca todos los nombres que terminen con a. busca todos los nombres que tengan las letras ar.
(Ej.: Mara, Mariana, Manuel, Martn)

LIKE %a

(Ej.: Sofa, Mara, Estefana).

LIKE %ar%

(Ej.:Carlos, Arturo, Eleazar).

Operadores y Wildcards en la clusula WHERE


LIKE _va busca todos los nombres de tres letras que terminan en va. (Ej.: Eva, Iva, Ava). busca todos los nombres: Carlon, Marlon, Carlos y Marlos. busca todos los nombres que terminan en elia y que comiencen con las letras de la B a la D. (Ej.: Delia, Celia).

LIKE [CM]arlo[ns]

LIKE [B-D]elia

Operadores y Wildcards en la clusula WHERE


LIKE M[!a]% busca todos los nombres que comiencen con M y cuya segunda letra no es a.(Mnica). busca todas las cadenas de exactamente 3 caracteres. busca las cadenas de al menos 3 caracteres.

LIKE _ _ _

LIKE _ _ _ %

Clusula GROUP BY
Especifica las columnas por las que las filas van a estar agrupadas o particionadas. Los resultados del query contienen un valor o conjunto de valores para cada conjunto de valores indicado por las funciones_de_agregacin nombradas en la lista del Select

Clusula GROUP BY
SELECT {{columnas_de_agrupacin,}, {funcin_de_agregacin,}} [FROM ] [WHERE ] GROUP BY {columnas_de_agrupacin,}

GROUP BY
Obtener el total de compras de cigarrillos de color negro realizadas
SELECT SUM(Qcomprada) Total_Unidades marca Marca', filtro Filtro, color Rubio/Negro, clase Clase, mentol Mentol FROM Compras WHERE color = N GROUP BY marca, filtro, color, clase, mentol

Clusula HAVING
Especifica una restriccin que se aplica a las funciones de agregacin de los grupos. Esto afecta a las filas que son devueltas como resultado y no al clculo de las funciones de agregacin. La clusula WHERE si puede condicionar al nmero de filas que intervienen en el clculo de las funciones de agregacin.

Clusula HAVING
SELECT {{columnas_de_agrupacin,}, {funcin_de_agregacin,}} [FROM ] [WHERE ] GROUP BY {columnas_de_agrupacin,} HAVING condiciones_de_bsqueda

GROUP BY y HAVING
Mostrar los nombres estancos que hayan realizado menos de 500 operaciones de venta
SELECT a.RUCEstanco, b.Nestanco FROM VENTAS a, ESTANCOS b WHERE a.RUCEstanco = b.RUCEstanco GROUP BY a.RUCEstanco, b.Nestanco HAVING COUNT(*) < 500

GROUP BY - HAVING - WHERE


Procedimiento: Si en una misma consulta aparece una clusula WHERE y una clusula HAVING, se aplica primero el predicado de la clusula WHERE. Las tuplas que satisfagan la condicin, se colocan en grupos segn la clusula GROUP BY. La clusula HAVING se aplica luego a cada grupo. Los grupos que no la satisfagan se eliminan. La clusula SELECT utiliza los grupos restantes para generar las tuplas resultado de la consulta.

Clusula ORDER BY
Ordena el resultado de los querys por los valores de las columnas mencionadas. Solamente se puede ordenar por las columnas especificadas en el SELECT.
ASC: Es el valor por defecto e indica que los resultados se van a presentar ascendentemente. DESC: Debe especificarse al lado de la columna cuyo orden se desea ver en forma descendente.

Consideracin: ordenar un gran nmero de tuplas puede ser costoso. Es conveniente ordenar slo cuando sea estrictamente necesario.

Clusula ORDER BY
SELECT {columna 1, columna 2,} [FROM ] [WHERE ] [GROUP BY...] [HAVING ...] ORDER BY columna 1 [ASC|DESC],....

ORDER BY
SELECT Nombre 'Departamento', AVG(SueldoBasico) 'Promedio Sueldos' FROM EMPLEADO E, DEPARTAMENTO D WHERE E.Departamento = D.Departamento GROUP BY Nombre ORDER BY AVG(SueldoBasico) DESC

Uso de Subqueries
Un Subquery es una sentencia SELECT anidada dentro de otras sentencias SQL como SELECT, INSERT, UPDATE o DELETE, o dentro de otro Subquery. A una sentencia SELECT, que contiene uno o mas Subqueries, se la denomina Nested Query o SELECT anidado.

Conectores para incrustar Subconsultas en Where


Operando izquierdo
elemento conjunto elemento elemento elemento elemento

Conector
En / no en = / no = Existe / no existe >/< = / no = >=/<=

Operando derecho
Conjunto de elementos Conjunto Conjunto Conjunto de un elemento Conjunto de un elemento Conjunto de un elemento

>, <, =, no =, > =, Conjunto de elementos < = modificados con ANY o con ALL

Uso de Subqueries
Subqueries con el uso de la palabra IN: El resultado, es una lista de cero o mas valores. Una vez que el Subquery devuelve resultados, el Outer query los usa. (Con el uso de esta palabra se puede resolver el operador relacional de Interseccin)

Uso de Subqueries
Subqueries con el uso de las palabras NOT IN: El resultado, es una lista de cero o mas valores. Una vez que el Subquery devuelve resultados, el Outer query los usa por negacin. (Con el uso de esta palabra se puede resolver el operador relacional de Diferencia)

Uso de Subqueries
SELECT FROM WHERE NombreCompleto, SueldoBasico PERSONA, EMPLEADO IDPersona=IDEmpleado and IDEmpleado NOT IN (SELECT IDEmpleado FROM SANCIONES_EMPLEADO)

Uso de Subqueries
Subqueries con Operadores de comparacin. Son los subquerys que se introducen con algn operador de comparacin como =, <>, <, <=, >, >=, etc. Estos subqueries retornan un solo valor.

Uso de Subqueries
Operadores de comparacin modificados por ANY o ALL. Estos subqueries retornan cero o muchos valores.
> ALL, significa que todos los valores retornados por el subquery son menores al valor de comparacin del outer. > ANY, significa que por lo menos un valor retornado por el subquery es menor al valor de comparacin del outer.

Uso de Subqueries
Subqueries Correlativos. El Subquery depende del outer query para devolver sus valores. Esto significa que el Subquery se ejecuta repetidamente, una vez por cada fila seleccionada por el Outer query.

Uso de Subqueries
Subqueries Correlativos.
SELECT a.IDEmpleado, a.SueldoBasico FROM EMPLEADO a WHERE a.SueldoBasico >= (SELECT b.SueldoBasico FROM EMPLEADO b WHERE a.IDJefe = b.IDEmpleado ) Muestra cdigo y sueldo de los empleados cuyos sueldos son mayores o iguales a los sueldos de sus respectivos jefes

Operadores de UNION
A diferencia del SELECT, que por omisin conserva los duplicados, las operaciones de unin normalmente los suprimen. A fin de evitar esto, es necesario colocar a continuacin del operador UNION la palabra clave ALL

Guas para la construccin de UNION


Todas las select-list mencionadas con la sentencia UNION, deben tener el mismo nmero de expresiones (columnas, expresiones aritmticas, funciones de agregacin, etc.). Las columnas que se corresponden, deben tener el mismo tipo de dato, sino es as, debe existir una conversin de datos implcita o explcita con una funcin de conversin de por medio.

Guas para la construccin de UNION


Las columnas que se corresponden en SELECTs individuales deben ocurrir en el mismo orden, porque UNION compara las columnas una a una. Si se quiere alterar los nombres de las columnas, se debe hacer en el primero de los SELECT y estos nombres podrn ser usados en la clusula ORDER BY Si no se especifica la clusula ALL, las tuplas duplicadas se eliminan automticamente del resultado.

UNION
Todos los clientes que poseen una cuenta, un prstamo o ambos (SELECT FROM UNION (SELECT FROM nombre-cliente TITULAR-CUENTA) nombre-cliente PRESTATARIO)

Funciones de Agregacin
SUM([ALL|DISTINCT] expresin)
Calcula el total de una expresin numrica para todas las filas o slo las distintas.

AVG([ALL|DISTINCT] expresin)
Calcula el promedio de una expresin numrica para las filas involucradas.

MIN([ALL|DISTINCT] expresin)
Calcula el mnimo valor de una expresin numrica para las filas involucradas.

Funciones de Agregacin
MAX([ALL|DISTINCT] expresin)
Calcula el mximo valor de una expresin numrica para las filas involucradas.

COUNT([ALL|DISTINCT] expresin)
Nmero de veces que se repite el valor de la expresin.

COUNT(*)
Nmero de filas seleccionadas

Вам также может понравиться