Académique Documents
Professionnel Documents
Culture Documents
FROM WHERE)
Si este fuese un manual de SQL, o alguno de los muchos cursos SQL que se pueden encontrar
por la web, ahora tocara abordar la instalacin de un SGBD para posteriormente crear una BD
con algunas tablas de ejemplo con las que empezar a trabajar. Pero este curso pretende ser
diferente. Si ahora se expusiera lo antes mencionado, corremos el riesgo de que usted pierda
el inters por la materia, adems, el SQL no incluye la instalacin del SGBD ni la creacin de
tablas. Si usted, por ejemplo, desea aprender electricidad, a caso ha de fabricar bombillas,
cables y el generador elctrico con el que poder trabajar? Obviamente no.
En este curso la BD y las tablas con las que trabajar las tiene accesibles mediante el banco de
pruebas, as que empezaremos directamente por lo que ser la tnica de este curso: las
consultas SQL, que es digamos donde est la miga, y no ser hasta el final del curso que se
ver la creacin de tablas y como modificar la informacin. A fin de cuentas no tiene
demasiado sentido aprender a crear tablas cuando aun no sabe que hacer con ellas.
Consultas SQL
Abordemos las consultas SQL con un caso prctico. Sobre la tabla EMPLEADOS se plantea la
siguiente cuestin:
La respuesta es simple: Jos y Carlos tiene un salario mayor a 1350, pero si tuvisemos 500
empleados nos llevara ms tiempo responder, y al final tampoco tendramos la certeza de no
habernos equivocado. El SQL nos permite responder estas preguntas de forma rpida y fiable,
salvo error al construir la consulta o errores en los propios datos.
Vamos pues a construir la consulta que nos permita responder a esta cuestin.
Preguntas de Construccin
Para construir una consulta SQL debemos hacernos como mnimo tres preguntas:
Vamos a suponer por un momento que el SGBD, que es quien intermedia entre el usuario y la
BD, fuese una persona; la BD un archivo de papel, y el jefe pide lo siguiente: "Necesito saber
qu empleados cobran ms de 1350 euros? Usted, que conoce bien el archivo(tablas) y que
datos contiene la ficha de un empleado (campos de la tabla EMPLEADOS), mentalmente se
hace las preguntas de construccin y le dice a su ayudante que siempre espera ordenes
concretas:
El ayudante sirve la peticin y se la entrega para que finalmente usted se la facilite a su jefe.
Que papel ocuparan hoy en una empresa moderna? El jefe sigue siendo el jefe, eso est
claro, pero usted ha pasado a ser el informtico, y su ayudante el SGBD.
Sintaxis SQL
En SQL la forma de operar es parecida, esta informacin se obtiene mediante la siguiente
consulta:
Obsrvese que en la consulta los nombres de los objectos de base de datos (tabla y campos) los
escribimos en maysculas, mientras que para las palabras reservadas de la consulta SQL (select,
from, where) lo hacemos en minsculas; esto tiene nicamente un propsito esttico, con
intencin de hacer el cdigo ms ordenado y legible. Puede no ser as siempre, dependiendo del
SGBD y/o del sistema operativo(windows, linux, ...) donde trabaje el SGBD, este puede ser
sensible a maysculas y minsculas.
Forma general
El SQL permite al usuario desentenderse de como el SGBD ejecuta la consulta, al igual que
usted se desentiende de como su ayudante en el archivo de papel se las ingenia para
facilitarle la informacin. Usted esperar pacientemente tras el mostrador a que su ayudante
prepare su pedido y le entregue los datos. Dicho de otro modo, basta con saber como pedir la
informacin y no como proceder a reunirla.
***
Resumen
Hemos visto como construir una consulta SQL simple y concreta, que nos da la solucin a una
cuestin concreta.
Sugerencia: si enva el cdigo SQL que sigue a este prrafo desde el banco de pruebas al
SGBD, este le reportar la lista de campos de la tabla EMPLEADOS bajo una columna titulada
Fied(termino en ingls que significa campo). Esto le puede venir bien para tener presente los
nombres de los campos de la tabla EMPLEADOS mientras desarrolla el ejercicio.
describe EMPLEADOS
desc EMPLEADOS
Aprendimos tambin losfundamentos de diseo de una base de datos relacional. Hoy vamos a
de Datos) trabajan sobre los datos almacenados en nuestro SGBD, permitiendo consultarlos o
modificarlos.
En general a las operaciones bsicas de manipulacin de datos que podemos realizar con SQL se les
denominaoperaciones CRUD (de Create, Read, Update and Delete, o sea, Crear, Leer, Actualizar y
Borrar, sera CLAB en espaol, pero no se usa). Lo vers utilizado de esta manera en muchos sitios,
as que aprndete ese acrnimo.
SELECT: muestra informacin sobre los datos almacenados en la base de datos. Dicha
Consulta de datos
Ahora nos vamos a centrar en la R de CRUD, es decir, en cmo recuperar la informacin que nos
interesa de dentro de una base de datos, usando para ello el lenguaje de consulta o SQL. Ya nos
Para realizar consultas sobre las tablas de las bases de datos disponemos de la instruccin SELECT.
Con ella podemos consultar una o varias tablas. Es sin duda el comando ms verstil del lenguaje
SQL.
Existen muchas clusulas asociadas a la sentencia SELECT (GROUP BY, ORDER, HAVING, UNION).
Tambin es una de las instrucciones en la que con ms frecuencia los motores de bases de datos
El resultado de una consulta SELECT nos devuelve una tabla lgica. Es decir, los resultados son una
relacin de datos, que tiene filas/registros, con una serie de campos/columnas. Igual que cualquier
tabla de la base de datos. Sin embargo esta tabla est en memoria mientras la utilicemos, y luego se
La sintaxis bsica de una consulta SELECT es la siguiente (los valores opcionales van entre corchetes):
[Expresion]
FROM Nombre_Tabla_Vista
WHERE Condiciones
A continuacin analizaremos cada una de las partes de la consulta para entenderla mejor.
SELECT
Permite seleccionar las columnas que se van a mostrar y en el orden en que lo van a hacer.
Simplemente es la instruccin que la base de datos interpreta como que vamos a solicitar
informacin.
ALL / DISTINCT
ALL es el valor predeterminado, especifica que el conjunto de resultados puede incluir filas
DISTINCT especifica que el conjunto de resultados slo puede incluir filas nicas. Es decir, si al realizar
una consulta hay registros exactamente iguales que aparecen ms de una vez, stos se eliminan.
Nombres de campos
Se debe especificar una lista de nombres de campos de la tabla que nos interesan y que por tanto
queremos devolver. Normalmente habr ms de uno, en cuyo caso separamos cada nombre de los
dinmica.
Si queremos que nos devuelva todos los campos de la tabla utilizamos el comodn * (asterisco).
Los nombres indicados deben coincidir exactamente con los nombre de los campos de la tabla, pero
si queremos que en nuestra tabla lgica de resultados tengan un nombre diferente podemos utilizar:
AS
utilizamos en la clusula FROM. Es opcional. Con ello podremos crear diversos alias de columnas y
FROM
Esta clusula permite indicar las tablas o vistas de las cuales vamos a obtener la informacin. De
AS.
WHERE
Especifica la condicin de filtro de las filas devueltas. Se utiliza cuando no se desea que se devuelvan
todas las filas de una tabla, sino slo las que cumplen ciertas condiciones. Lo habitual es utilizar esta
Condiciones
Son expresiones lgicas a comprobar para la condicin de filtro, que tras su resolucin devuelven
para cada fila TRUE o FALSE, en funcin de que se cumplan o no. Se puede utilizar cualquier expresin
> (Mayor)
< (Menor)
= (Igual)
<> o != (Distinto)
LIKE: para la comparacin de un modelo. Para ello utiliza los caracteres comodn especiales:
y con el segundo que puede ir cualquier carcter individual (un solo carcter). Con la
ejemplo:
LIKE A_
o El nombre empieza una A, despus cualquier carcter, luego una E y al final cualquier
19791231
IN( ): para especificar una relacin de valores concretos. Por ejemplo: Ventas de los Clientes
Por supuesto es posible combinar varias condiciones simples de los operadores anteriores utilizando
los operadores lgicosOR, AND y NOT, as como el uso de parntesis para controlar la prioridad de
los operadores (como en matemticas). Por ejemplo: (Cliente = 100 AND Provincia
= 30) OR Ventas > 1000 que sera para los clientes de las provincias 100 y 30 o cualquier
ORDER BY
Define el orden de las filas del conjunto de resultados. Se especifica el campo o campos (separados
ASC / DESC
ordenar de forma ascendente, o sea, de menor a mayor. Si por el contrario se especifica DESC se
Por ejemplo, para ordenar los resultados de forma ascendente por ciudad, y los que sean de la misma
Como a la columna Ciudad no le hemos puesto ASC o DESC se usar para la misma el valor
- Mostrar apellido, ciudad y regin (LastName, city, region) de los empleados de USA (ntese el uso
FROM Employees AS E
- Mostrar los clientes que no sabemos a qu regin pertenecen (o sea, que no tienen asociada
ninguna regin) :
- Mostrar las distintas regiones de las que tenemos algn cliente, accediendo slo a la tabla de
clientes:
- Mostrar los clientes que pertenecen a las regiones CA, MT o WA, ordenados por regin
- Mostrar las Ventas del producto 65 con cantidades entre 5 y 10, o que no tengan descuento:
Nota: En SQL Server, para utilizar nombres de objetos con caracteres especiales se deben poner
entre corchetes. Por ejemplo en la consulta anterior [Order Details] se escribe entre corchetes
porque lleva un espacio en blanco en su nombre. En otros SGBDR se utilizan comillas dobles (Oracle,
por ejemplo: Order Details) y en otros se usan comillas simples (por ejemplo en MySQL).