Manual de S. Q. L

Anuncio
Apunte de
S.Q.L.
AÑO 2011
Prof Guillermo Reina
Terminología de Bases de Datos
Concepto
RDBMS
Tabla
Fila
Columna
Campo
Clave Primaria
Descripción
Sistema manejador de bases de datos relacionales
Estructura de almacenamiento básica de un RDBMS. Consiste en una o más columnas y
cero o más filas.
Combinación de valores de columnas de una tabla.
Un tipo de datos en una tabla.
Se encuentra en la intersección 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 unívocamente 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
Descripción
Unidad básica de almacenamiento compuesta por filas y columnas.
Representa lógicamente subconjuntos de datos de una o más 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
Recuperación
de Datos
Comandos
Descripción
SELECT
Recupera los datos de la base de Datos. Es el comando
utilizado con mayor frecuencia.
Bloque de Consulta Básico
Una sentencia SELECT recupera información desde la base de datos, implementando todos los
operadores algebraicos.
En su forma más simple, una sentencia SELECT puede incluir:
 Una cláusula SELECT, que especifica las columnas a ser visualizadas.
 Una cláusula FROM, que especifica la tabla que contiene las columnas listadas en la
cláusula SELECT
Escritura de Comandos SQL





Los Comandos pueden constar de una o varias líneas
Pueden ubicarse las cláusulas en diferentes líneas y usar tabulaciones e indentaciones para
mayor legibilidad y facilidad de edición.
No están permitidas las abreviaturas y separación de palabras.
Un comando SQL se ingresa en el prompt SQL y las líneas subsiguientes están numeradas.
Hay que escribir un punto y coma (;) al final de la última cláusula
Ejemplo: Selección de Todas las Columnas y Filas
SQL> SELECT *
2 FROM
Examenes;
Ejemplo: Selección Columnas específicas
SQL> SELECT Alumnos.Codialum, Alumnos.Apellido, Alumnos.Domicilio
2 FROM
Alumnos;
Expresiones Aritméticas
Pueden crearse expresiones aritméticas sobre tipos de datos numéricos y fechas.
Una expresión aritmética puede contener nombres de columnas, valores numéricos, constantes
y operadores aritméticos.
Pueden usarse los operadores aritméticos en cualquier sentencia de SQL excepto en la
cláusula FROM.
Operadores
+
*
/
Descripción
Suma
Resta
Multiplicación
División
Ejemplo:
SQL> SELECT Alumnos.Apellido, Alumnos.Promedio, Alumnos.Promedio / 12
2 FROM
Alumnos;
Precedencia de Operadores



La multiplicación y la división tienen prioridad sobre la suma y la resta.
Los operadores de igual prioridad se evalúan de izquierda a derecha.
Pueden usarse paréntesis para cambiar la prioridad de evaluación 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 sumándole 2 puntos, por la presentación
de los trabajos prácticos
SQL> SELECT Alumnos.Apellido, Alumnos.Sumanotas, (Alumnos.Sumanotas/12) + 2
2 FROM
Alumnos;
La cláusula ORDER BY
El orden de las filas recuperadas por una consulta es indefinido. La cláusula 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 después 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 límite es la cantidad de
columnas de la tabla. En la cláusula ORDER BY se especifican los nombres de las columnas
separadas por comas. Si desea invertirse el orden de una columna se especifica DESC
después de su nombre o posición.
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;
Restricción de las Filas seleccionadas con la cláusula WHERE
Pueden restringirse las filas recuperadas usando la cláusula WHERE. Una Cláusula WHERE
contiene la condición que debe cumplirse y se ubica a continuación de la cláusula FROM.
SELECT expr
FROM
tabla
[WHERE condicion(es) ]
[ORDER BY
expr ] ;
Donde:
WHERE
restringe la consulta a las filas que cumplen una condición.
condición
se compone de nombres de columnas, expresiones, constantes y
operadores de comparación.
La cláusula WHERE se ubica a continuación de la cláusula FROM.
Las condiciones consisten en lo siguiente:
 Nombre de columna, expresión, constante.
 Operador de comparación.

Literal
Ejemplo
SQL> SELECT Alumnos.Apellido, Alumnos.Domicilio, Alumnos.Localidad
2 FROM
Alumnos
3 WHERE
Alumnos.Localidad = “Lomas de Zamora”;
Operadores de Comparación
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 Lógicos
Operador
AND
OR
Significado
Si ambos componentes de la condición son verdaderos, el
resultado también
Si algún componente de la condición es verdadero, el resultado
también 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 límite inferior
del rango. Los valores especificados con el operador BETWEEN se incluyen.
Ejemplo
Seleccionar los alumnos cuyas notas estén 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 Múltiples
Pueden especificarse criterios complejos combinando varias condiciones. Los operadores AND
y OR pueden usarse para componer expresiones lógicas.
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 cómo los resultados cambian sustancialmente.
Ejemplo 1
Mostrar el apellido, Domicilio, código 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, número 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 expresión lógica. 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 más alta que OR.
Cuando se usa negación de expresiones, los operadores de comparación también se evalúan
primero.
Para modificar las reglas de precedencia usar paréntesis, de ese modo, primero se evaluarán
las expresiones entre paréntesis.
Cada vez que se presenten dudas acerca de qué operación será ejecutada primero al evaluar
una expresión, usar paréntesis para clarificar la sentencia.
Orden de Evaluación
Operador
1
Todos los Operadores de Comparación
(=, <>, >, >=, <, <=, IN, LIKE, IS NULL, BETWEEN)
2
AND
3
OR
En los siguientes ejemplos se muestra cómo se modifica el orden de precedencia y,
consecuentemente, el resultado de la consulta, mediante el uso de paréntesis.
Ejemplo 1
Mostrar el apellido, domicilio y código de carrera para aquellos alumnos de la carrera 14 que
aprobaron 15 o más, como así también 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 código de carrera para aquellos alumnos de las carreras 12 o
14 y que hayan aprobado 15 materias o más.
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 código es la inclusión de los paréntesis que cambian el
sentido de la expresión
Generalidades Consulta con varias tablas
Cuando se requieren datos a partir de más de una tabla se usa una condición de inclusión 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 Exámenes por el número
de Alumno, y la tabla Exámenes se relaciona con Materias por el número de materia.
ALUMNOS
Codalum
EXAMENES
Codalum
CodMater
MATERIAS
CodMater
Producto Cartesiano
Cuando se define una condición para relacionar dos tablas que es inválida 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 combinación 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 condición de vínculo 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 más de una tabla, es necesario prefijar la columna
con el nombre de la tabla correspondiente.
Para combinar tablas, se necesita como mínimo una cantidad de condiciones equivalentes a la
cantidad de tablas menos uno. Por lo tanto, para combinar cuatro tablas, se requerirán un
mínimo de tres condiciones. Esta regla no puede aplicarse si la tabla contiene una clave
primaria concatenada, en dicho caso, se requieren más de una columna para identificar
unívocamente 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 información
es la condición que combina (o relaciona) las
Consulta Múltiple
Se denomina Consulta múltiple a la consulta que involucra dos o más tablas cuya condición de
vínculo es una igualdad.
La condición de vínculo entre las tablas se especifica con la cláusula FROM.
Frecuentemente, las columnas que componen la condición de vínculo son claves primarias.
Ejemplo
Combinar las tablas de Alumnos y Exámenes para visualizar el nombre del Alumno, número de
legajo y código 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 código de materias. Las filas de la tabla Alumnos se combinan con
las de la tabla Exámenes y se obtienen sólo aquellas cuyos valores de número de legajo sean
iguales.
Condiciones de Búsqueda Adicionales
Es posible incorporar criterios adicionales para la cláusula WHERE., las condiciones restantes
deben agregarse usando el operador AND.
Ejemplo
Mostrar el apellido, el número 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;
También podemos querer establecer una relación en la cual ninguna columna de la primera
tabla se corresponde directamente con una columna de la segunda tabla.
La relación 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;
Documentos relacionados
Descargar