Saltar ao contido

SQL/SELECT

En Galilibros, o Wikibooks en galego.
< SQL
SQL
← Volver a DROP SELECT Seguir con Expresións


SELECT é a palabra clave coa que comezan un tipo de sentencias de SQL, coñecidas coma consultas. Estas sentencias serven para obter datos de bases de datos, pero non necesariamente dunha forma global, senón que nos permite non só especificar que datos queremos obter, senón como os queremos presentar, e mesmo obter operacións froito da análise dos mesmos. As posibilidades de SELECT son enormes, así que o mellor será comezar.

Uso básico

[editar]

O seguinte é o esquema básico de consulta:

SELECT campo
FROM taboa;

Esta sentencia obtén todos os datos da táboa taboa que se atopaban no campo campo. Tras o SELECT, en lugar de seleccionar un único campo, podemos seleccionar varios campos da táboa separando os seus nomes con comas, ou simplemente seleccionar todos os campos da táboa mediante un asterisco (*):

SELECT campo1,campo2,campo3,campo4 FROM taboa;
SELECT * FROM taboa;

Asemade, podemos «crear» campos valéndonos de operacións aritméticas. No caso de que campo1 e campo2 fosen campos de tipo numérico, poderíase facer unha consulta tal que:

SELECT campo1,campo2,campo1*2+campo2/4 FROM taboa;

Que podería dar datos tales coma:

1      1     2,25
3      4     7

ORDER BY

[editar]

Tamén podemos especificar a orde en que se presentarán os datos. Isto faise mediante o conxunto de palabras clave ORDER BY:

SELECT campo1,campo2 FROM taboa ORDER BY campo1;

Con isto obteriamos os valores dos campos campo1 e campo2 da táboa taboa ordenados segundo os valores do campo campo1. Por defecto, a orde é ascendente (ASC), pero podemos facer que sexa descendente (DESC). O código que indica se a orde é nun ou noutro sentido indícase despois do campo ou campos que rexen a orde:

SELECT campo1,campo2,campo3 FROM taboa ORDER BY campo2 ASC;
SELECT campo1,campo2,campo3 FROM taboa ORDER BY campo2 DESC;

En caso de non poñermos nin ASC nin DESC, a orde será por defecto ASC. Podemos especificar máis dun campo segundo o cal ordenar os datos obtidos da consulta, e en tal caso o primeiro campo será o que mande, e o segundo terá aplicación en casos en que se repita o valor do primeiro campo. Ademais, pódense seleccionar os campos segundo os cales se vai ordenar a consulta escribindo, en lugar do nome do campo, o número da posición que ocupa tras o SELECT. Así:

SELECT campo1,campo2,campo3 FROM taboa ORDER BY campo2; /* Está ordenado de forma ascendente segundo o campo2. */
SELECT campo1,campo2,campo3 FROM taboa ORDER BY 2; /* O efecto é o mesmo que o da liña anterior. */
SELECT campo1,campo3,campo6 FROM taboa ORDER BY 2 ASC, 3 DESC; /* Ordenarase primeiro segundo campo3 de forma ascendente,
                                                                  e logo segundo campo6 de forma descendente.            */

Hai que ter en conta que se ben podemos utilizar os números de posición dos campos no SELECT para referirmos a eles no ORDER BY, non estamos limitados a iso. E ben poderiamos, na última consulta en SQL que viches, ordenar os resultados da consulta segundo un campo quen non estivese presente no SELECT, é dicir, non fai falla seleccionar un campo nin que apareza nos resultados para basear a orde dos mesmos nos datos de dito campo. Poderiamos facer perfectamente:

SELECT campo1,campo3,campo6 FROM taboa ORDER BY campo8 DESC;

WHERE

[editar]

Ademais dun ORDER BY para indicar a orde segundo a cal queremos que se amosen os resultados, tamén podemos valernos dun WHERE seguido dunha expresión para limitar os datos que se nos amosarán, é dicir, poñer condicións que os datos teñen que cumprir para que a consulta nolos devolva. Este é un exemplo dunha consulta básica en SQL con ORDER BY e WHERE:

SELECT campo1,campo4,campo5,campo7 FROM taboa6 WHERE campo5 = campo2 ORDER BY 1 ASC;

Esta sentencia en SQL devolvería como resultado os valores dos campos campo1, campo4, campo5 e campo7, da táboa taboa6, ordenados segundo o primeiro campo seleccionado, o campo1. Pero grazas ao WHERE, só nos devolverá os casos en que os valores dos campos campo5 e campo6 sexan idénticos, aínda que non imos visualizar en ningún momento os valores deste último campo por non estar tras o SELECT.

Empezas ver as inmensas posibilidades? Máis adiante entrarase en detalle acerca do que pode seguir a un WHERE.

SELECT DISTINCT

[editar]

Tamén podemos facer que nunha consulta se eliminen os resultados en que se repita un mesmo valor nun campo determinado. É dicir, imaxinemos unha táboa de xogadores dun equipo de baloncesto, con campos tales coma nome, apelidos, altura, peso, talle_calzado... Neste caso, imaxinemos que queremos coñecer as distintas talles distintas de calzado, pero non queremos ver todas as talles, senón só unha talle distinta de cada vez. Se hai 3 xogadores cunha 45, só queremos que se amose un. Para iso utilizaremos DISTINCT:

SELECT DISTINCT talle_calzado FROM xogadores ORDER BY 1 DESC; /* Obteriamos as distintas talles de calzado de maior a menor */

Téñase en conta que no tería sentido facer un SELECT DISTINCT con todos os campos dunha táboa.

GROUP BY

[editar]

Serve para utilizar as funcións colectivas para os distintos elementos ou filas que teñan o valor dun campo en común.

HAVING

[editar]

Actúa coma o WHERE pero sobre as funcións colectivas.


SQL
← Volver a DROP SELECT Seguir con Expresións