Sunteți pe pagina 1din 8

Apunte de

S.Q.L.
AO 2011

Prof Guillermo Reina

Terminologa de Bases de Datos


Concepto
RDBMS
Tabla
Fila
Columna
Campo
Clave Primaria

Descripcin
Sistema manejador de bases de datos relacionales
Estructura de almacenamiento bsica de un RDBMS. Consiste en una o ms columnas y
cero o ms filas.
Combinacin de valores de columnas de una tabla.
Un tipo de datos en una tabla.
Se encuentra en la interseccin de una fila y una columna. Puede contener datos, si no los
tiene, se dice que es nulo.
Columna o conjunto de columnas que identifican unvocamente cada fila de una tabla. Debe
contener un valor. No admite valores nulos. Generalmente no se pueden modificar.

Objetos de la Base de Datos


Objeto
Tabla
Vista
Secuencia
Indice

Descripcin
Unidad bsica de almacenamiento compuesta por filas y columnas.
Representa lgicamente subconjuntos de datos de una o ms tablas.
Genera valores de claves primarias.
Mejora la performance de algunas consultas. Campo por el que puede
accederse a la tabla

Comandos SQL
Tipo de
Comando
Recuperacin
de Datos

Comandos

Descripcin

SELECT

Recupera los datos de la base de Datos. Es el comando


utilizado con mayor frecuencia.

Bloque de Consulta Bsico


Una sentencia SELECT recupera informacin desde la base de datos, implementando todos los
operadores algebraicos.
En su forma ms simple, una sentencia SELECT puede incluir:
Una clusula SELECT, que especifica las columnas a ser visualizadas.
Una clusula FROM, que especifica la tabla que contiene las columnas listadas en la
clusula SELECT

Escritura de Comandos SQL

Los Comandos pueden constar de una o varias lneas


Pueden ubicarse las clusulas en diferentes lneas y usar tabulaciones e indentaciones para
mayor legibilidad y facilidad de edicin.
No estn permitidas las abreviaturas y separacin de palabras.
Un comando SQL se ingresa en el prompt SQL y las lneas subsiguientes estn numeradas.
Hay que escribir un punto y coma (;) al final de la ltima clusula

Ejemplo: Seleccin de Todas las Columnas y Filas


SQL> SELECT *
2 FROM
Examenes;

Ejemplo: Seleccin Columnas especficas


SQL> SELECT Alumnos.Codialum, Alumnos.Apellido, Alumnos.Domicilio

2 FROM

Alumnos;

Expresiones Aritmticas
Pueden crearse expresiones aritmticas sobre tipos de datos numricos y fechas.
Una expresin aritmtica puede contener nombres de columnas, valores numricos, constantes
y operadores aritmticos.
Pueden usarse los operadores aritmticos en cualquier sentencia de SQL excepto en la
clusula FROM.
Operadores
+
*
/

Descripcin
Suma
Resta
Multiplicacin
Divisin

Ejemplo:
SQL> SELECT Alumnos.Apellido, Alumnos.Promedio, Alumnos.Promedio / 12
2 FROM
Alumnos;

Precedencia de Operadores

La multiplicacin y la divisin tienen prioridad sobre la suma y la resta.


Los operadores de igual prioridad se evalan de izquierda a derecha.
Pueden usarse parntesis para cambiar la prioridad de evaluacin o para clarificar la
sentencia.

Ejemplos:

Mostrar el apellido, la suma de las notas y el promedio de cada alumno. Calcular el


promedio dividiendo por 12 la suma de las notas y sumndole 2 puntos, por la presentacin
de los trabajos prcticos
SQL> SELECT Alumnos.Apellido, Alumnos.Sumanotas, (Alumnos.Sumanotas/12) + 2
2 FROM
Alumnos;

La clusula ORDER BY
El orden de las filas recuperadas por una consulta es indefinido. La clusula ORDER BY se
puede usar para ordenar las filas.
SELECT expr
FROM
tabla
[ORDER BY
{columna, expr} [ASC | DESC] ] ;
Donde:
ORDER BY especifica e orden en el cual se muestran las filas recuperadas.
ASC
ordena las filas en orden ascendente. Este es el valor por defecto.
DESC
ordena las filas en orden descendente.

Ejemplo
SQL> SELECT Alumnos.Apellido, Alumnos.Domicilio, Alumnos.Localidad
2 FROM
Alumnos
3 ORDER BY Alumnos.Localidad;

Ordenamiento de datos por defecto


El orden por defecto es ascendente, para invertir el orden en el cual las filas se recuperan, se
especifica el comando DESC despus del nombre de la columna afectada.
Los valores nulos se muestran ltimos en las secuencias ascendentes y primeros en la
secuencias descendentes.

Ordenamiento por Varias Columnas


Se puede ordenar el resultado de una consulta por varias columnas. El lmite es la cantidad de
columnas de la tabla. En la clusula ORDER BY se especifican los nombres de las columnas
separadas por comas. Si desea invertirse el orden de una columna se especifica DESC
despus de su nombre o posicin.
Puede ordenarse por columnas que no se encuentran en la lista SELECT.
SQL> SELECT Alumnos.Apellido, Alumnos.Domicilio, Alumnos.Localidad
2 FROM
Alumnos
3 ORDER BY Alumnos.Apellido, Alumnos.Domicilio DESC;

Restriccin de las Filas seleccionadas con la clusula WHERE


Pueden restringirse las filas recuperadas usando la clusula WHERE. Una Clusula WHERE
contiene la condicin que debe cumplirse y se ubica a continuacin de la clusula FROM.
SELECT expr
FROM
tabla
[WHERE condicion(es) ]
[ORDER BY
expr ] ;
Donde:
WHERE
restringe la consulta a las filas que cumplen una condicin.
condicin
se compone de nombres de columnas, expresiones, constantes y
operadores de comparacin.
La clusula WHERE se ubica a continuacin de la clusula FROM.
Las condiciones consisten en lo siguiente:
Nombre de columna, expresin, constante.
Operador de comparacin.

Literal

Ejemplo
SQL> SELECT Alumnos.Apellido, Alumnos.Domicilio, Alumnos.Localidad
2 FROM
Alumnos
3 WHERE
Alumnos.Localidad = Lomas de Zamora;

Operadores de Comparacin
Operador
=
>
>=
<
<=

Significado
Igual a
Mayor que
Mayor o igual que
Menor que
Menor o igual que

BETWEEN...AND...
IS NULL

Entre dos valores (inclusive)


Es un valor nulo

Operadores Lgicos
Operador
AND
OR

Significado
Si ambos componentes de la condicin son verdaderos, el
resultado tambin
Si algn componente de la condicin es verdadero, el resultado
tambin lo es

Operador BETWEEN
Selecciona las filas que se encuentran dentro de un rango de valores. El rango que se
especifica contiene un valor inferior y otro superior, debe especificarse primero el lmite inferior
del rango. Los valores especificados con el operador BETWEEN se incluyen.

Ejemplo
Seleccionar los alumnos cuyas notas estn entre 4 y 6 inclusive.
SQL> SELECT
Alumnos.Apellido, Alumnos.Nota
2 FROM
Alumnos
3 WHERE
Alumnos.Nota BETWEEN 4 AND 6;

Consultas de Datos con Condiciones Mltiples


Pueden especificarse criterios complejos combinando varias condiciones. Los operadores AND
y OR pueden usarse para componer expresiones lgicas.
El operador AND retorna VERDADERO si ambas condiciones evaluadas son VERDADERAS.
El operador OR retorna VERDADERO si alguna de las condiciones es VERDADERA.
En los dos ejemplos siguientes, las condiciones son las mismas, pero el operador es diferente.
Observar cmo los resultados cambian sustancialmente.

Ejemplo 1
Mostrar el apellido, Domicilio, cdigo de carrera que cursa y materia Costos para todos los
que cursan la carrera 12.
SQL> SELECT Alumnos.Apellido, Alumnos.Domicilio, Alumnos.Codcarrera, Alumnos.Materia
2 FROM Alumnos
3 WHERE Alumnos.Codcarrera = 12
4 AND Alumnos.Materia = 'Costos' ;

Ejemplo 2
Mostrar el apellido, salario, nmero de departamento y cargo para todos los empleados que
son representantes de ventas o que trabajen en el departamento 31.
SQL> SELECT Empleados.Apellido, Empleados.Salario, Empleados.Nrodepto,
Empleados.Cargo
2 FROM Empleados
3 WHERE Empleados.Nrodepto = 31
4 OR Empleados.Cargo = 'Ventas';

Reglas de Precedencia
Pueden combinarse los operadores AND y OR en la misma expresin lgica. Los resultados de
todas las condiciones se combinan en el orden determinado por la precedencia de los
operadores conectores. Cuando los operadores tienen igual precedencia, se ejecutan de
izquierda a derecha.
Cada AND se ejecuta primero y luego cada OR. AND tiene prioridad ms alta que OR.
Cuando se usa negacin de expresiones, los operadores de comparacin tambin se evalan
primero.
Para modificar las reglas de precedencia usar parntesis, de ese modo, primero se evaluarn
las expresiones entre parntesis.
Cada vez que se presenten dudas acerca de qu operacin ser ejecutada primero al evaluar
una expresin, usar parntesis para clarificar la sentencia.
Orden de Evaluacin
Operador
1
Todos los Operadores de Comparacin
(=, <>, >, >=, <, <=, IN, LIKE, IS NULL, BETWEEN)
2
AND
3
OR
En los siguientes ejemplos se muestra cmo se modifica el orden de precedencia y,
consecuentemente, el resultado de la consulta, mediante el uso de parntesis.

Ejemplo 1
Mostrar el apellido, domicilio y cdigo de carrera para aquellos alumnos de la carrera 14 que
aprobaron 15 o ms, como as tambin todos los alumnos de la carrera 12.
SQL> SELECT Alumnos.Apellido, Alumnos.Domic, Alumnos.CodCarrera
2 FROM Alumnos
3 WHERE Alumnos.MaterAprob >= 15
4 AND Alumnos.CodCarrera = 14
5 OR Alumnos.CodCarrera = 12;

Ejemplo 2
Mostrar el apellido, domicilio y cdigo de carrera para aquellos alumnos de las carreras 12 o
14 y que hayan aprobado 15 materias o ms.
SQL> SELECT Alumnos.Apellido, Alumnos.Domic, Alumnos.CodCarrera
2 FROM Alumnos
3 WHERE Alumnos.MaterAprob >= 15
4 AND (Alumnos.CodCarrera = 14
5 OR Alumnos.CodCarrera = 12);
Ver que la nica diferencia en el cdigo es la inclusin de los parntesis que cambian el
sentido de la expresin

Generalidades Consulta con varias tablas


Cuando se requieren datos a partir de ms de una tabla se usa una condicin de inclusin de
esos datos. Esto se obtiene relacionando dos o mas tablas
Las filas de una tabla pueden ser combinadas con las de otra tabla de acuerdo con valores
comunes existentes en las columnas correspondientes, es decir en las claves primarias y
externas.

Relaciones entre Tablas


En el siguiente esquema, la tabla Alumnos se relaciona con la tabla Exmenes por el nmero
de Alumno, y la tabla Exmenes se relaciona con Materias por el nmero de materia.
ALUMNOS
Codalum

EXAMENES
Codalum
CodMater

MATERIAS
CodMater

Producto Cartesiano
Cuando se define una condicin para relacionar dos tablas que es invlida o se omite
completamente el campo que relaciona ambas tablas, se establece como resultado un
Producto Cartesiano, en el cual se muestran las combinaciones de todas las filas. Se combinan
todas las filas de la primer tabla con todas las filas de la segunda.

Ejemplo
La tabla Alumnos tiene 12 filas y la tabla Materias tiene 25, la combinacin de todas las filas de
Alumnos con todas las filas de Materias da 300 filas.
SQL> SELECT Alumnos.Apellido, Examenes NombreMater
2 FROM Alumnos, Examenes;
Esto se evita incluyendo en el FROM una condicin de vnculo apropiada:
SQL> SELECT Alumnos.Apellido, Examenes NombreMater
2 FROM Alumnos, Examenes; (Alumnos.Codalum = Examenes.Codalum)

Consulta Simple
Cuando se escribe una sentencia SELECT que combina tablas, es conveniente preceder el
nombre de la columna con el nombre de la tabla por claridad y para mejorar el acceso a la base
de datos.
Si el mismo nombre de columna aparece en ms de una tabla, es necesario prefijar la columna
con el nombre de la tabla correspondiente.
Para combinar tablas, se necesita como mnimo una cantidad de condiciones equivalentes a la
cantidad de tablas menos uno. Por lo tanto, para combinar cuatro tablas, se requerirn un
mnimo de tres condiciones. Esta regla no puede aplicarse si la tabla contiene una clave
primaria concatenada, en dicho caso, se requieren ms de una columna para identificar
unvocamente a cada fila.

Sintaxis
SELECT tabla.columna, tabla.columna, ...
FROM tabla1, tabla2; tabla1.columna1 = tabla2.columna2;
Donde:
tabla.columna
tabla1, tabla2
tabla1.columna1=tabla2.columna2
tablas.

denota la tabla y columna seleccionadas.


identifica las tablas que contienen la informacin
es la condicin que combina (o relaciona) las

Consulta Mltiple
Se denomina Consulta mltiple a la consulta que involucra dos o ms tablas cuya condicin de
vnculo es una igualdad.
La condicin de vnculo entre las tablas se especifica con la clusula FROM.
Frecuentemente, las columnas que componen la condicin de vnculo son claves primarias.

Ejemplo
Combinar las tablas de Alumnos y Exmenes para visualizar el nombre del Alumno, nmero de
legajo y cdigo de la materia rendida.
SQL> SELECT Alumnos.Nleg, Alumnos.Apellido, Materias.CodMater
2 FROM Alumnos, Materias; (Alumnos.Nleg = materias.Nleg);
Ahora cada Alumno tiene su cdigo de materias. Las filas de la tabla Alumnos se combinan con
las de la tabla Exmenes y se obtienen slo aquellas cuyos valores de nmero de legajo sean
iguales.

Condiciones de Bsqueda Adicionales


Es posible incorporar criterios adicionales para la clusula WHERE., las condiciones restantes
deben agregarse usando el operador AND.

Ejemplo
Mostrar el apellido, el nmero de legajo del alumno y la nota del examen, para todos los
alumnos con notas mayores a 4.
SQL> SELECT Alumnos.Apellido, Examenes.Nota, Materias.Nommateria
2 FROM Alumnos, Examenes, Materias, (Alumnos.Nleg=materias.Nleg),
(examenes.Codmater = Materias. Codmater)
3 WHERE Nota>4;
Tambin podemos querer establecer una relacin en la cual ninguna columna de la primera
tabla se corresponde directamente con una columna de la segunda tabla.
La relacin se obtiene usando un operador distinto del igual (=).

Ejemplo
Crear una consulta para evaluar las notas de los alumnos. Estas notas deben estar entre
cualquier valor del par comprendido entre las notas 7 y 9.
SQL> SELECT Alumnos.Apellido, Examenes.Fchexamen, Examenes.Nota
2 FROM Alumnos.Nleg=Examenes.Nleg
3 WHERE Nota BETWEEN 7 AND 9;
SELECT Tabla1.Campo1, Tabla2.Campo1
FROM Tabla1, Tabla2, (Tabla1.Campo1 = Tabla2.Campo1)
WHERE ((Tabla1.Campo1)<> 4)
ORDER BY Tabla1.Campo1 Asc;