Beruflich Dokumente
Kultur Dokumente
en SQL
Como hemos visto, las instrucciones DML (Data Manipulation Language
Lenguaje de Manipulacin 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.
Hay cuatro instrucciones para realizar estas tareas:
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 preocuparemos luego de cmo
llegamos a introducir los datos primeramente.
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 incorporan clusulas adicionales al
estndar, que es el que veremos aqu.
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
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 dems mediante comas.
Se puede anteponer el nombre de la tabla al nombre de las columnas,
utilizando el formato Tabla.Columna. Adems de nombres de columnas, en esta
lista se pueden poner constantes, expresiones aritmticas, y funciones, para
obtener campos calculados de manera 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
Permite renombrar columnas si lo utilizamos en la clusula SELECT, o renombrar
tablas si lo utilizamos en la clusula FROM. Es opcional. Con ello podremos crear
diversos alias de columnas y tablas. Enseguida veremos un ejemplo.
FROM
Esta clusula permite indicar las tablas o vistas de las cuales vamos a obtener
la informacin. De momento veremos ejemplos para obtener informacin de
una sola tabla.
Como se ha indicado anteriormente, tambin se pueden renombrar las tablas
usando la instruccin 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
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 lgica y en ella
utilizar diversos operadorescomo:
> (Mayor)
< (Menor)
= (Igual)
<> o != (Distinto)
Se dice que una columna de una fila es NULL si est completamente vaca. Hay
que tener en cuenta que si se ha introducido cualquier dato, incluso en un
campo alfanumrico si se introduce una cadena en blanco o un cero en un
campo numrico, deja de ser NULL.
BETWEEN
para
controlar
la
prioridad
de
los
operadores
(como
en
ORDER BY
Define el orden de las filas del conjunto de resultados. Se especifica el campo o
campos (separados por comas) por los cuales queremos ordenar los resultados.
ASC / DESC
ASC es el valor predeterminado, especifica que la columna indicad en la
clusula ORDER BY se ordenar de forma ascendente, o sea, de menor a mayor.
Si por el contrario se especifica DESC se ordenar de forma descendente (de
mayor a menor).
Por ejemplo, para ordenar los resultados de forma ascendente por ciudad, y los
que sean de la misma ciudad de forma descendente por nombre, utilizaramos
esta clusula de ordenacin:
ORDER BY Ciudad, Nombre DESC
Como a la columna Ciudad no le hemos puesto ASC o DESC se usar para la
misma el valor predeterminado (que es ASC)
OJO: Aunque al principio si an no se est habituado, pueda dar la impresin de
que se ordena por ambas columnas en orden descendente. Si es eso lo que
queremos deberemos escribir ORDER BY Ciudad DESC, Nombre DESC
Algunos ejemplos
Para terminar este repaso a las consultas simples practicarlas un poco, veamos
algunos ejemplos con la base de datos Northwind en SQL Server:
- Mostrar todos los datos de los Clientes de nuestra empresa:
SELECT * FROM Customers
- Mostrar apellido, ciudad y regin (LastName, city, region) de los empleados de
USA (ntese el uso de AS para darle el nombre en espaol a los campos
devueltos):
SELECT E.LastName AS Apellido, City AS Ciudad, Region
FROM Employees AS E
WHERE Country = USA
- Mostrar los clientes que no sabemos a qu regin pertenecen (o sea, que no
tienen asociada ninguna regin) :
SELECT * FROM Customers WHERE Region IS NULL
- Mostrar las distintas regiones de las que tenemos algn cliente, accediendo
slo a la tabla de clientes:
SELECT DISTINCT Region FROM Customers WHERE Region IS NOT NULL
- Mostrar los clientes que pertenecen a las regiones CA, MT o WA, ordenados
por regin ascendentemente y por nombre descendentemente.
CODE SELECT * FROM Customers WHERE Region IN(CA, MT, WA)
ORDER BY Region, CompanyName DESC
- Mostrar los clientes cuyo nombre empieza por la letra W:
La sentencia SELECT
La sentencia SELECT nos permite consultar los datos almacenados en una tabla
de la base de datos.
El formato de la sentencia select es:
Veamos por partes que quiere decir cada una de las partes que conforman la
sentecia.
Significado
SELECT
ALL
Palabra clave que indica que la sentencia de SQL que queremos ejecutar es
de seleccin.
Indica que queremos seleccionar todos los valores.Es el valor por defecto y no
suele especificarse casi nunca.
FROM
WHERE
Especifica una condicin que debe cumplirse para que los datos sean
devueltos por la consulta. Admite los operadores lgicos AND y OR.
GROUP BY
HAVING
Especifica una condicin que debe cumplirse para los datosEspecifica una
condicin que debe cumplirse para que los datos sean devueltos por la
consulta. Su funcionamiento es similar al de WHERE pero aplicado al
conjunto de resultados devueltos por la consulta. Debe aplicarse siempre
junto a GROUP BY y la condicion debe estar referida a los campos contenidos
en ella.
predeterminado es ASC.
SELECT matricula,
marca,
modelo,
color,
numero_kilometros,
num_plazas
FROM tCoches
ORDER BY marca,modelo;
La palabra clave FROM indica que los datos sern recuperados de la tabla
tCoches. Podriamos haber especificado mas de una tabla, pero esto se ver en el
apartado de consultas combinadas.
Tambien podramos haber simplicado la consulta a travs del uso del comodin de
campos, el asterisco "*".
SELECT *
FROM tCoches
ORDER BY marca,modelo;
El uso del asterisco indica que queremos que la consulta devuelva todos los
campos que existen en la tabla.
[arriba]
La clusula WHERE
La clusula WHERE es la instruccin que nos permite filtrar el resultado de una
sentencia SELECT. Habitualmente no deseamos obtener toda la informacin
existente en la tabla, sino que queremos obtener slo la informacin que nos resulte
util es ese momento. La clusula WHERE filtra los datos antes de ser devueltos por
la consulta.
En nuestro ejemplo, si queremos consultar un coche en concreto debemos
agregar una clusula WHERE. Esta clusula especifica una o varias condiciones que
deben cumplirse para que la sentencia SELECT devuelva los datos. Por ejemplo,
para que la consulta devuelva slo los datos del coche con maricula M-1525-ZA
debemos ejecutar la siguiente sentencia:
SELECT matricula,
marca,
modelo,
color,
numero_kilometros,
num_plazas
FROM tCoches
WHERE matricula = 'M-1525-ZA';
Cuando en una clusula where queremos incluir un tipo texto,
debemos incluir el valor entre comillas simples.
SELECT matricula,
marca,
modelo,
color,
numero_kilometros,
num_plazas
FROM tCoches
WHERE matricula = 'M-1525-ZA'
OR matricula = 'M-2566-AA' ;
Adems una condicin WHERE puede ser negada a travs del operador
lgico NOT. La siguiente consulta devolver todos los datos de la tabla tCohes
menos el que tenga matricula M-1525-ZA.
SELECT matricula,
marca,
modelo,
color,
numero_kilometros,
num_plazas
FROM tCoches
WHERE NOT matricula = 'M-1525-ZA' ;
La clusula ORDER BY
Como ya hemos visto en los ejemplos anteriores podemos especificar el orden en
el que sern devueltos los datos a travs de la clusula ORDER BY.
SELECT matricula,
marca,
modelo,
color,
numero_kilometros,
num_plazas
FROM tCoches
ORDER BY marca ASC,modelo DESC;
SELECT matricula,
marca,
modelo,
color,
numero_kilometros,
num_plazas
FROM tCoches
ORDER BY 2;