Sei sulla pagina 1di 13

Programa 5 Estrellas

SQL Server 2005


Estrella 1
Unidad 3
Introduccin al SQL

2007

Contenido del curso


Contenido del curso...........................................................................................2
Unidad 3 Introduccin al SQL..........................................................................3
Objetivos........................................................................................................3
Conceptos Claves..........................................................................................4
Introduccin al SQL........................................................................................4
Bsqueda de informacin en una tabla.........................................................4
Condiciones mltiples para una bsqueda....................................................5
Bsqueda de informacin en varias tablas relacionales - JOIN QUERY.....8
Funciones para el manejo de grupo de filas................................................10
Condiciones de bsqueda de un grupo de lneas: HAVING........................11
Sub-bsquedas o subqueries......................................................................12

Pgina 2 de 13

Unidad 3 Introduccin al SQL


Objetivos
Este modulo contiene una introduccin inicial al SQL,
mencionando la descripcin de consultas (select) y
consultas de tablas relacionadas (join) del motor de
base de datos.

Pgina 3 de 13

Conceptos Claves
SQL es un lenguaje que permite realizar consultas en
forma sencilla sobre la informacin contenida en la
base de datos.

Introduccin al SQL
El lenguaje de gestin de bases de datos ms conocido en la actualidad es el
SQL, Structured Query Language, que es un lenguaje estandar internacional,
comnmente aceptado por los fabricantes de generadores de bases de
datos.
El SQL trabaja
computadoras.

con

estructura

cliente/servidor

sobre

una

red

de

La PC Cliente es la que inicia la consulta; el Servidor atiende la consulta. De


esta manera, el cliente no utiliza toda su capacidad de proceso para trabajar
sino que se limita a solicitar datos al Servidor. Estas peticiones y las
respuestas son transferencias de textos que cada ordenador cliente se
encarga de obtener por pantalla, presentar en informes tabulados, imprimir,
guardar, etc., dejando el Servidor libre.
El SQL permite:

Definir una base de datos mediante tablas


Almacenar informacin en tablas.
Seleccionar la informacin que sea necesaria de la base de datos.
Realizar cambios en la informacin y estructura de los datos.
Combinar y calcular datos para conseguir la informacin necesaria.

Bsqueda de informacin en una tabla


La operacin ms comn en una base de datos es pedir informacin, y a la
cual se denomina bsqueda o Query. El comando Select va seguido de FROM
y en ocasiones de WHERE. SELECT especifica las columnas, FROM especifica las
tablas y WHERE especifica las condiciones. Si no hay condiciones de bsqueda
se presentarn las columnas completas, sin restricciones.
Por ejemplo: Si se quiere ver el contenido de toda la tabla EMP, puede
sustituirse toda la lista de columnas por un asterisco:
Pgina 4 de 13

SELECT * FROM DEPT;


El Resultado es el siguiente:

Por ejemplo, para seleccionar determinados registros o filas de la base


de datos, debe aadirse una condicin con el comando WHERE al
usar SELECT... FROM:
SELECT

FROM

EMP

WHERE

DEPTNO=30;

Para obtener todas las columnas pero de los empleados del


Departamento nmero 30:
El Resultado es el siguiente:

WHERE obliga al SQL a buscar en la informacin de la tabla y mostrar


solo aquellas lneas o registros que cumple la condicin.

Condiciones mltiples para una bsqueda


A veces WHERE va seguido de ms de una condicin.
Por ejemplo, consultas con dos condiciones:
SELECT

ENAME,
JOB,
SAL
Pgina 5 de 13

FROM

EMP

WHERE

JOB = 'SALESMAN' AND SAL >=100;

En este caso se piden los datos del nombre, trabajo, salario de


aquellos empleados de la tabla cuyo empleo sea 'SALESMAN' y su
salario mayor o igual que 100:
El Resultado es el siguiente:

Para las condiciones alternativas, negativas (excluyentes) se utilizan


los comandos OR, y NOT. As por ejemplo:
SELECT

NAME,
JOB,
SAL

FROM

EMP

WHERE

JOB = 'manager' OR SAL >=100;

Pide los datos de empleados con categora manager o que su salario


sea mayor que 100:
El Resultado es el siguiente:

El siguiente ejemplo pide un listado con los nombres, categoras y


nmero de departamento de los empleados cuyo trabajo sea clerck
(oficinista) y su departamento sea distinto del 30,
SELECT

ENAME,
JOB,
DEPTNO

FROM

EMP

Pgina 6 de 13

WHERE

JOB = 'CLERCK AND DEPTNO!=30;

El Resultado es el siguiente:

Mediante los comandos BEETWEEN y AND pueden pedirse datos


comprendidos en un rango determinado. El ejemplo siguiente busca y
muestra el nombre y el salario de los empleados cuyo salario est
comprendido entre 800 y 900:
SELECT

ENAME,
SAL

FROM

EMP

WHERE

SAL BETWEEN 800 AND 900;

El Resultado es el siguiente:

El comando IN permite seleccionar lneas cuyo campo contenga uno


de los valores de una lista especificada entre parntesis:
SELECT

FROM

DEPT

WHERE

DEPTNO IN (10,30);

El Resultado es el siguiente:

Pgina 7 de 13

Bsqueda de informacin en varias tablas relacionales JOIN QUERY


Hasta ahora se han efectuado bsquedas en una sola tabla, pero puede
ocurrir que la informacin que buscamos no est almacenada en una sola
tabla. Como SQL es una base de datos relacional permite seleccionar
informacin de ms de una tabla y combinar los resultados en un listado. La
bsqueda combinada en ms de una tabla se denomina bsqueda relacional
o join query.
En las bases de datos jerrquicas y en anillo, las relaciones son estticas
porque estn perfectamente definidas en la estructura de la base de datos
desde el diseo, por lo que las consultas deben seguir ese mismo esquema.
En las bases de datos relacionales como SQL, las relaciones son dinmicas;
se establecen en el momento de la consulta, y es posible extraer informacin
segn convenga en cada caso.
Por ejemplo, si se desea saber el nombre del departamento donde trabaja
determinado empleado, y se intenta buscar en la tabla EMP (empleados),
puede verse que no tiene columna con el nombre de departamento; sin
embargo, la tabla de departamentos si tiene el departamento (nmero y
nombre). Como las dos tablas tienen una columna en comn -el
n[[ordmasculine]] de departamento-, es posible relacionar las dos tablas. Esto
puede hacerse con dos bsquedas:
Primera Bsqueda
SELECT

ENAME,
DEPTNO

FROM

EMP

WHERE

ENAME = 'WARD';

El Resultado es el siguiente:

Segunda Bsqueda

SELECT

LOC

FROM

DEPT

Pgina 8 de 13

WHERE

DEPTNO = 30;

El Resultado es el siguiente:

Tambin puede llegarse al mismo resultado mediante una nica


bsqueda indicando la tabla y la columna separados por un punto,
como en el ejemplo siguiente :
SELECT

ENAME,
LOC

FROM

EMP,
DEPT

WHERE

ENAME=''KING' AND EMP.DEPTNO =DEPT.DEPTNO;

El Resultado es el siguiente:

En este ejemplo, se buscan los empleados en la tabla EMP cuyo


nombre es KING y se utiliza el valor del cdigo del empleado
localizado para buscar en la tabla DEPT el nombre del departamento
de trabajo. Por ultimo, localiza los registros donde coinciden los
valores de las columnas EMPTO y DEPTO:

Pgina 9 de 13

En el ejemplo anterior, en la tabla EMP se busca la fila que contiene al


empleado 'KING', y se determina el nmero de departamento al que
pertenece DEPTNO. Con este nmero de departamento de la tabla DEPT se
extrae el registro con el mismo valor de DEPTNO. La clusula
EMP.DEPTNO =DEPT.DEPTNO
especifica que los registros de las tablas EMP y DEPT deben coincidir en el
valor del campo o columna DEPTNO.

Funciones para el manejo de grupo de filas


Las funciones para grupos permiten seleccionar informacin a partir de
grupos de lneas o registros. Por ejemplo, pueden agruparse todos los
empleados que pertenezcan al mismo departamento y entonces
calcular el salario mximo en cada grupo de departamentos:
SELECT

DEPTNO,
MAX(SAL)

FROM

EMP

GROUP BY DEPTNO;
El Resultado es el siguiente:

En una bsqueda de grupos, cada lnea en el resultado de la bsqueda,


corresponde a un grupo de lneas de nuestra tabla. La columna que se pone
a continuacin de group by es aquella por la que se quiere agrupar las lneas
de la tabla. En el ejemplo anterior cada lnea de la tabla EMP se incluye en
uno de los tres grupos, uno para cada departamento, dependiendo de su
valor en el campo DEPTO: todas las lneas de su mismo grupo tienen el
mismo nmero de departamento.
Podemos combinar las funciones de grupo con las bsquedas relacionales.
Existen tres funciones que pueden utilizarse con los grupos:
SUM : Para sumar los valores de los campos, dentro de los grupos
definidos por GROUP BY.
COUNT: Para contar el nmero de lneas que entran en cada uno de
esos grupos.

Pgina 10 de 13

AVG: Para saber el promedio de los valores de campos especficos en


cada grupo.

El siguiente ejemplo tiene como objetivo saber cuantos empleados


estn trabajando en cada categora por cada departamento, cuantos
secretarios hay en el departamento de ventas y, en esos grupos, cul
es la suma y media de los salarios:
SELECT

DNAME,
JOB,
SUM(SAL),
COUNT(*),
AVG(SAL)

FROM

EMP,DEPT

WHERE

EMP.DEPTNO=DEPT.DEPTNO

GROUP BY DNAME,JOB;

El Resultado es el siguiente:

Condiciones de bsqueda de un grupo de lneas: HAVING


As como en el operador WHERE se especifican las condiciones para las
bsquedas con lneas individuales, con HAVING pueden especificarse las
condiciones de bsqueda para grupos de lneas.
Supongamos que se quiere realizar una bsqueda como la anterior,
pero en la que slo se necesita ver aquellos grupos que tengan al
menos dos empleados:

SELECT

ENAME,
Pgina 11 de 13

JOB,
SUM(SAL),
COUNT(*),
AVG(SAL)
FROM

EMP

WHERE

EMP.DEPTNO = DEPT.DEPTNO

GROUP BY DNAME,JOB
HAVING COUNT(*)>=2

El Resultado es el siguiente:

Sub-bsquedas o subqueries
Supngase, por ejemplo, que se desea obtener una lista con todos los
empleados que tienen el mismo empleo que King y SQL lo busca, en
lo que constituira una bsqueda subordinada o subbsqueda:

SELECT

ENAME,
JOB

FROM

EMP

WHERE

JOB =
(SELECT JOB
FROM EMP
WHERE ENAME = 'KING'));

El Resultado es el siguiente:

Pgina 12 de 13

SQL realiza las sub-bsquedas antes, porque necesita el resultado de


estas para las bsquedas.
Como ejemplo adicional puede buscarse el empleado que gana ms
que la media de todos los salarios de los empleados:
SELECT

ENAME,
SAL

FROM

EMP
WHERE SAL >

(SELECT AVG(SAL)
FROM EMP);

El Resultado es el siguiente:

Pgina 13 de 13

Potrebbero piacerti anche