Tietokantakyselyt hakevat tiettyjä tietoja tietokannasta.
Alikysely on toisen kyselyn sisällä oleva kysely. Alikysely voi sisältää myös toisen alikyselyn. Näiden sanotaan olevan "sisäkkäisiä" alikyselyjä. Liitos on, kun kyselyn "From"-lauseessa viitataan kahteen tai useampaan taulukkoon. Eri tietokantakoneet voivat optimoida alikyselyt ja liitokset eri tavalla. Esimerkiksi DB2:n optimoija muuttaa alikyselyn liitokseksi, jos tietyt ehdot täyttyvät. Joissakin tapauksissa yhdistäminen tuottaa paremman suorituskyvyn kuin alikysely.
Mikä tekee alikyselystä
Alakysely on "SELECT"-käsky "INSERT", "UPDATE", "MERGE" tai "DELETE" -lauseen "WHERE"- tai "HAVING"-lauseessa. Alakyselyä kutsutaan myös "sisäksi kyselyksi" tai "sisäiseksi valinnaksi". Alikyselyssä voi olla "FROM"-lause, jossa on yksi tai useampi taulukko, ja siinä voi valinnaisesti olla "WHERE", "GROUP BY"- tai "HAVING"-lause. Se on aina sulkeissa.
Päivän video
Alikyselyiden edut ja haitat
Alikyselyt ovat edullisia, koska ne jäsentävät kyselyn eristämään lausunnon jokaisen osan, suorittaa saman toiminnon, joka tavallisesti vaatisi monimutkaisia liitoksia ja liitoksia ja jotka ovat helpompia lukea. Alikyselyt olivat jopa perustana nimelle "Structured Query Language" (SQL) helposti luettavan rakenteensa vuoksi. Haittana on, että et voi muokata taulukkoa ja valita samasta taulukosta alikyselyssä samassa SQL-käskyssä. Alikyselyiden suorittaminen voi myös kestää kauemmin kuin liittyminen, koska tietokannan optimoija käsittelee ne.
Mikä saa liittymään
Useimmat alikyselyt voidaan kirjoittaa uudelleen liitoksiksi, ja useimmat liitokset voidaan kirjoittaa uudelleen alikyselyiksi. Liitos määrittää kaksi tai useampia taulukkoja toisiinsa liittyvän sarakkeen perusteella. Taulukot yhdistetään yleensä ensisijaisella ja vierasavaimella. Esimerkiksi työntekijätaulukossa voi olla työntekijän tunnus -sarakkeen ensisijainen avain, kun taas työaikaraportin taulukossa on myös työntekijän tunnus -sarake, joka on työntekijätaulukon vierasavain. SQL-liitos voidaan kirjoittaa muodossa "WHERE työntekijä.empid = timesheet.empid" tai "FROM worker JOIN timesheet ON (työntekijä.empid = timesheet.empid)."
Liitosten edut ja haitat
Liitoksen tärkein etu on, että se suoritetaan nopeammin. Loppukäyttäjä ei välttämättä huomaa suorituskyvyn kasvua. Koska tietokantamoottori kuitenkin nimeää sarakkeet ja indeksoi ja optimoi ne, hakuaika on melkein aina nopeampi kuin alikyselyn. Myös sisä- ja ulkoliitokset, vasen ja oikea liitokset, täysliitokset ja ristiliitokset. Liitosten käytön haittana on, että niitä ei ole yhtä helppo lukea kuin alikyselyitä. Toinen haittapuoli on, että voi olla hämmentävää siitä, mikä liitos on sopiva liitostyyppi, jota käytetään oikean halutun tulosjoukon saamiseksi.