Vous êtes sur la page 1sur 35

Prof.

Mlaga

SQL
Structured Query Language

SQL - Una Breve Historia

El lenguaje de consulta estructurado (Structured


Query Language - SQL) es un lenguaje para accesar
a la informacin de base de datos relacionales.
Originalmente creado por IBM.

Al comienzo de 1980's, El American National


Standards Institute (ANSI) comienza a desarrollar
un lenguage standard de base de datos relacionales.
ANSI y el International Standards Organization
(ISO) publica SQL standards en 1986 y 1987.

Prof. Mlaga

SQL - Una Breve Historia

ANSI y ISO trabaja juntamente en extender


los estndares llamado SQL2 o SQL-92 o
SQL/92.
Versin SQL/86 dialecto SQL de IBM. Se
agrega SQL (C, ADA, etc..) creado como
un lenguaje separado de los estndares.

Prof. Mlaga

SQL - En nuestros das

SQL permite a los usuarios describir la data


que quieren visualizar y como tambin los
usuarios pueden definir la data en una base de
datos, y manipularla.
SQL permite a los usuarios accesar a la
informacin del sistema de manejador de bases
de datos, tales como Oracle, Sybase, Informix,
Microsoft SQL Server, Access, y entre otros.

SQL Server 7.0


Client/Server Database Management System

Prof. Mlaga

SQL - El Uso de SQL


En estos ltimos aos han aparecido
diferentes textos referente a la
instalacin, el uso de recursos y
programacin de SQL, y como esta
herramienta se esta haciendo cada vez
ms popular.

Prof. Mlaga

SQL - El Uso de SQL

A continuacin mostraremos algunas


sentencias mas usadas en SQL y con su
prctica conocern mucho mejor el poder
que tiene estas herramientas de consultas.

Prof. Mlaga

Componentes del SQL

El lenguaje SQL est compuesto por comandos,


clusulas, operadores y funciones de agregado.
Estos elementos se combinan en las instrucciones
para crear, actualizar y manipular las bases de
datos. Tres tipos de comandos
DLL que permiten crear y definir nuevas bases de datos,
campos e ndices.
DML que permiten generar consultas para ordenar, filtrar y
extraer datos de la base de datos.
DCL que permiten controlar aspectos diarios, como por
ejemplo la confidencialidad de acceso a los datos.

Prof. Mlaga

SQL - Data Manipulation


Language

Algunos comandos de SQL afectan al


contenido de la base de datos y son
agrupadas en categoras llamadas Data
Manipulation Language (DML) Lenguaje
de Manipulacin de informacin.
SELECT

Seleccin data de la base de datos

INSERT

Inserta filas en una tabla

UPDATE

Actualiza filas en una tabla

DELETE

Deletea
filas en una tabla
Prof. Mlaga

SQL - Data Definition


Language

Otros comandos afecta a la estructura de la


base de datos objeto y son designados como
Data Definition Language (DDL) lenguaje
de definicin de la informacin.
CREATE

Crea una base de datos objeto

DROP

Elimina una base de datos objeto

ALTER

Modifica una base de datos objeto


Prof. Mlaga

Elementos de una Sentencia

Palabras pre-definidas: palabras que tienen un


significado pre-definido.
Nombres de Tablas y Columnas: palabras
inventadas por los creadores de tablas. Se asignan
cuando se crea una nueva tabla.
Constantes Literales: son secuencias de
caracteres (letras, nmeros y signos) que
representan un valor determinado.
Signos delimitadores: Son signos especiales en las
sentencias fuera de los otros elementos. Sirven
para delimitar a estos ltimos dentro de la
sentencia, van entre comillas apstrofes
Prof. Mlaga

Ejemplo
SELECT NOMCE FROM TCENTR WHERE MUNC=10

Palabras pre-definidas
SELECT, FROM WHERE

Nombre de Tablas y Columnas


TCENTR (tabla)
NOMCE,NUMCE (columnas).

Constantes Literales
10

Signos delimitadores
Espacios en blanco
Signo de igualdad
Prof. Mlaga

EL RESULTADO DE
UNA SENTENCIA
SIEMPRE ES UNA
TABLA

Escribiendo Comandos SQL

Cada comando puede estar en una o ms lneas.


Puede usar tabulaciones y sangras para darle mayor
legibilidad.
No est permitido el uso de abreviaciones ni palabras
separadas.
Los comandos no son sensitivos a las maysculas o
minsculas.
Los comandos se almacenan dentro del buffer SQL.
Cuando los comandos ocupan mas de una lnea, estas
son numeradas por Oracle.
Prof. Mlaga

SQL - Select
Comando

Valor

Descripcin

Select

Columnas

From

Tablas

Where
Group by

Criterio de
bsqueda
Columnas

Having

Restriccin

Order by

Columnas

Identifica que data


extraer.
Identifica de que tabla se
extrae la data
Depura las filas que no
cumpla la condicin
Agrupa el resultado por
columnas
Cumpla la condicin por
columnas
Ordena por columnas

Prof. Mlaga

SQL - Select ... From

Es la mnima expresin de comando requerido el select


y from:
select especifica que data se requiere.

from especifica de donde es obtenida la data


por el select.
La consulta mostrada abajo selecciona dos columnas
from la tabla informacin y la segunda consulta
selecciona todas las columnas con un asterisco, *.
SELECT Nombre, E_Mail FROM
Informacin
SELECT * FROM Informacin
Prof. Mlaga

SQL - Where

La clusula where contiene condiciones de


bsqueda, solamente muestra las filas segn la
condicin.
Operadores de Comparacin

Signos

Significado

Signos

Significado

Igual

<>
<

Diferente

>

Mayor que

Menor que

>=

Mayor igual <=


que
Parecido
Between

Menor igual que

Like

Prof. Mlaga

Entre 2 valores

SQL - Group by

La clusula group by agrupa filas por columna o


columnas. Por ejemplo, la consulta de abajo
cuenta el numero de alumnos por cada seccin.
SELECT Seccion, COUNT(*) FROM Alumnos
GROUP BY Seccion
SELECT Curso, Seccion, COUNT(*) FROM
Alumnos
GROUP BY Curso, Seccion

Prof. Mlaga

SQL - Having

La clusula having restringe los grupos que


son retornados. Por ejemplo, la consulta
mostrada abajo muestra solamente el numero
de alumnos por aula mayor a 25.
SELECT Seccion, COUNT(*) FROM Alumnos
GROUP BY Seccion
HAVING COUNT(*) > 25
SELECT Curso, Seccion, COUNT(*) FROM Alumnos
GROUP BY Curso, Seccion
HAVING COUNT(*) > 25
Prof. Mlaga

SQL - Order by

La clusula order by ordena por columna o columnas,


en 2 direcciones
asc: ascendente (como default)
desc: descendente

SELECT Curso, Seccion, COUNT(*)


FROM Alumnos
GROUP BY Curso, Seccion
HAVING COUNT(*) > 25

ORDER BY Curso, Seccion

Prof. Mlaga

La consulta mostrada
ordena la tabla alumnos
por curso y luego
por seccin

SQL - Funciones Agregadas

Existen 5 funciones importantes: SUM, AVG, MAX,


MIN, y COUNT. Son llamadas funciones agregadas
porque el resultado de la consulta es un resumen, en
vez de listar todas la filas.

Prof. Mlaga

SQL - Funciones agregadas

Las funciones son las siguientes:


SUM () retorna el total de todas las filas, dependiendo a la
condicin dada por columna, en donde la columna
seleccionada tiene que ser numrica.

AVG () retorna el promedio de la columna seleccionada.


MAX () retorna el mximo dato de la columna
seleccionada.
MIN () retorna el mnimo dato de la columna
seleccionada.
COUNT(*) retorna el numero de filas dependiendo a la
condicin.
Prof. Mlaga

Funciones de Grupo
Se puede usar AVG y SUM sobre columnas que
almacenen datos numricos.
SQL> SELECT
2
3 FROM
4 WHERE

AVG(salary) , MAX(salary),
MIN(salary) , SUM(salary)
s_emp
UPPER(title) LIKE 'SALES%';

Ud. puede usar MAX y MIN para todo tipo de dato.


SQL> SELECT
2 FROM

MIN(last_name) , MAX(last_name)
s_emp;

Ejemplos
Mostrar todos los cdigos de departamentos para
aquellos con un pago salarial total mensual mayor a
los 4,000

SQL> SELECT
2
3
4

FROM
GROUP BY
HAVING

dept_id
s_emp
dept_id
SUM(salary) > 4000;

Ejemplos
Mostrar todos los departamentos ( cdigo y sueldo
promedio) que tengan un sueldo promedio mayor que
los del departamento 32.

SQL>
2
3
4
5
6
7

SELECT
FROM
GROUP BY
HAVING

dept_id, AVG(salary)
s_emp
dept_id
AVG(salary) >
(SELECT
AVG(salary)
FROM
s_emp
WHERE
dept_id = 32);

Funcin COUNT

COUNT(*) retorna el nmero de filas de la tabla.

SQL> SELECT
COUNT(*)
2 FROM
s_emp
3 WHERE
dept_id = 31;

COUNT(expr) retorna el nmero de filas no nulas.

SQL> SELECT
2 FROM
3 WHERE

COUNT(commission_pct)
s_emp
dept_id = 31;

Ejemplos
Muestre el nmero de empleados para cada categora laboral
dentro de cada departamento :

SQL> SELECT
2 FROM
3 GROUP BY

dept_id, title, COUNT(*)


s_emp
dept_id , title;

Subconsulta
Una subconsulta es una sentencia SELECT embebida en una
clusula de otra sentencia SQL.
Consulta
Principal

Sintaxis del SELECT anidado

SELECT...
FROM...
WHERE...

Una subConsulta
puede ser
colocada en una
clausula where o
Having

Subconsulta
SELECT Syntax

(SELECT...
FROM...
WHERE...);

Subconsultas: Sintaxis
SELECT
FROM
WHERE

lista_Campos
nom_tabla
expresin operador
(SELECT
lista_campos
FROM
nom_tabla);

Las subconsultas se ejecutan antes que la


consulta principal.
El resultado de la subconsulta es usado por
la consulta principal o externa.

Reglas de Subconsulta

Una subconsulta debe estar encerrada entre


parntesis.
Una subconsulta debe aparecer al lado derecho
del operador.
Las Subconsultas no pueden contener una
clusula ORDER BY.

Subconsultas:Filas Simples
SELECT last_name, title
FROM
s_emp
WHERE title =

Mostrar los apellidos y


cargos de los empleados que
tienen el mismo cargo que el
sr. Smith

SELECT title
FROM s_emp
WHERE last_name = Smith

SQL> SELECT last_name, title


2 FROM s_emp
3 WHERE title =
4 ( SELECT title
5 FROM s_emp
6 WHERE last_name = Smith );

Se escriben ambas
sentencias juntas y se
deja que SQL
determine el cargo
para Smith.

Funcin de Grupo en una


Subconsulta
Mientras la consulta principal
trabaja sobre todos las columnas

Server

la subconsulta trabaja sobre


el campo salario para
obtener su promedio

LAST_NAME TITLE
SALARY
SALARY
---------- ------------------ ------------Urguhart
Warehouse Manager
1200
2500
Menchu
Warehouse Manager
1250
1450
Biri
Warehouse Manager
1100
1400
Smith
Stock Clerk
940
1580
Nozaki
Stock Clerk
1200 AVG(SALARY)
1550
----------Patel
Stock Clerk
795
1200
1255.08
Newman
Stock Clerk
750
1250
Markarian Stock Clerk
850
1100
Mostrar
el
apellido,
cargo
y
Chang
Stock Clerk
800
1300
Patel
Clerk
795
1307
salario
de todosStock
los empleados
Dancs
Stock Clerk
860
1400
que ganen
menos
del
promedio.
Schwartz
Stock Clerk
1100
...

Funcin de Grupo en una


Subconsulta
SQL> SELECT
2

FROM

WHERE

last_name, title, salary


s_emp
salary <
( SELECT

AVG(salary)

5
) ;

FROM

s_emp

La funcin promedio AVG retorna un


solo valor.

Errores con subconsultas de


Filas Mltiples

Si Usted escribe una subconsulta que retorne ms de una fila y


utiliza un solo valor de comparacin, entonces cometer un error.
Para corregir el error, cambie el operador = de comparacin por
IN , un operador de fila mltiple.

SQL> SELECT
last_name, first_name, title
2 FROM
s_emp
Obtener el apellido,
3 WHERE
dept_id =
nombre y cargo de los
4
(SELECT
ID
empleados que estan en el
5
FROM
departamento Finance o
s_dept
en la regin 2
6
WHERE name = 'Finance'
7
OR region_id = 2);
ORA-01427:single-row subquery returns
more than one row

Errores con subconsultas de


Filas Mltiples

La subconsulta de fila mltiple retorna varias filas.


Usted debe usar un operador de fila mltiple en la
clusula WHERE, por ejemplo el operador IN.
SQL> SELECT
2 FROM
3 WHERE
4
5
s_dept
6
7

last_name, first_name, title


s_emp
dept_id IN
(SELECT
ID
FROM
WHERE name = 'Finance'
OR region_id = 2);

Se usa como vnculo de la consulta para las dos


tablas el campo cdigo de departamento.

VISTAS

Subconjuntos de la BD
tiles para mantener confidencialidad
restringiendo acceso a determinadas partes de la
BD.
Simplifican la formulacin de consultas
comnplejas repetitivas
Aumnta la independencia de los programas con
respecto a los datos

Prof. Mlaga

VISTAS
CREATE VIEW T1(EMPLEADO,PROYECTO,HORAS)
AS SELECT NOMBREE,NOMBREP,HORAS
FROM PROYECTO;

SELECT *
FROM T1
WHERE EMPLEADO = Juan Prez;

Prof. Mlaga

Vous aimerez peut-être aussi