Select (SQL)

De la Viquipèdia, l'enciclopèdia lliure

Les sentències SELECT en llenguatge SQL retornen un conjunt de resultats (result set) format per files, les quals formades per registres, d'una o més taules o vistes de la base de dades.[1][2] SELECT és la comanda DML més utilitzada en les aplicacions.

Les consultes SELECT especifiquen un conjunt de resultats, però no especifiquen com calcular-ho donat que l'SQL és un llenguatge declaratiu. La base de dades tradueix la consulta en un "pla d'execució" que pot variar entre execucions, versió de base de dades i programari de la base de dades. Aquesta funcionalitat es coneix com a "query optimizer" (optimitzador de consulta), car és responsable de trobar el millor pla d'execució possible per a la consulta, dins de les restriccions aplicables.

Les sentències SELECT tenen diverses clàusules opcionals:

  • WHERE especifica quines files recuperar.
  • GROUP BY agrupa files que comparteixen una propietat per així poder aplicar una funció agregada a cada grup.
    • HAVING selecciona entre els grups definits per la clàusula GROUP BY.
  • ORDER BY especifica l'ordre amb el qual s'han de retornar les files. (ASC o DSC)
  • AS assigna un alies que es pot utilitzar per canviar el nom temporalment de taules o columnes.

Exemples[modifica]

Taula "T" Consulta Resultat
C1 C2
1 a
2 b
SELECT * FROM T;
C1 C2
1 a
2 b
C1 C2
1 a
2 b
SELECT C1 FROM T;
C1
1
2
C1 C2
1 a
2 b
SELECT * FROM T WHERE C1 = 1;
C1 C2
1 a
C1 C2
1 a
2 b
SELECT * FROM T ORDER BY C1 DESC;
C1 C2
2 b
1 a

La consulta SELECT * FROM T retorna tots els elements de totes les files de la taula T. La segona consulta, SELECT C1 FROM T, retorna el camp C1 de totes les files de la taula a la Base de Dades. Aquesta consulta és similar a la projecció de l'algebra relacional, amb l'excepció que en aquest cas general, el resultat pot contenir files duplicades. Aquest cas es coneix en algunes bases de dades com una partició vertical (Vertical Partition), perquè restringeix el resultat de la consulta a només els camps o columnes especificats.

La tercera consulta, SELECT * FROM T WHERE C1 = 1, retorna tots els camps de la taula T on el seu camp C1 tingui com a valor '1'. És el que es coneix en terminologia d'àlgebra relacional com a selecció. Altrament també es coneix com a partició horitzontal (Horizontal Partition), perquè restringeix les files resultants a aquelles que compleixen les condicions especificades.

Quan s'utilitza més d'una taula, el resultat serà la combinació de les files. Llavors, si tenim les taules T1 i T2 i la consulta SELECT * FROM T1, T2 el resultat serà la combinació de totes les files de T1 amb totes les files de T2. Per exemple, si T1 té 3 files i T2 en té 5, el nombre de files resultants serà 15.

Referències[modifica]

Bibliografia[modifica]

  • Horizontal & Vertical Partitioning, Microsoft SQL Server 2000 Books Online

Enllaços externs[modifica]