logo   MySQL - SELECT - syntax




Sider vedr. SELECT kan ses herfra:


xSyntaks
xDiverse kodeksempler
xDynamisk select
xSideopdelt select




Nedenfor er vist alle de primære SELECT-parametre. SELECT og FROM er obligatoriske, mens alle øvrige er optionelle. De optionelle skal anvendes i den rækkefølge, hvori de er vist i oversigten.


Oversigten er ikke nødvendigvis komplet indenfor de enkelte parametre. For en del af dem vil der på detail-niveau være yderligere funktionalitet og kombinationsmuligheder, end der er vist idenne oversigt.


Alias-værdier kan kun bruges som kriterie i GROUP BY, ORDER BY og HAVING.


Obl.Opt. 1Opt. 2Beskrivelse
xselectxKriterie for udtræk af felter.
x
xavg()x, count()x, first()x, last()x, max()x, min()x, sum()x[as]Aggregerende SQL-funktioner.
Returnerer en enkelt værdi baseret på værdier i en kolonne.
x
xucase()x, lcase()x, mid()x, len()x, round()x, now()x, format()x[as]Skalerende SQL-funktioner.
Returnerer en enkelt værdi baseret på
x
xisnull()x, nvl()x, ifnull()x, coalesce()x[as]NULL funktioner. x
xconcat()x, date_pre(), date_sub()x, substr()x[as]Andre SQL-funktioner. x
x[all |
distinctx |
distinctrow]
Underkriterier for udtræk af data. x
x[high_priority]Ændring af prioritering for adgang til databasen.-
x[sql_small_result |
sql_big_result]
[sql_buffer_result]
Styring af metode til lagring af mellemresultater.-
x[sql_cache |
sql_no_cache]
[sql_calc_found_rows]
Styring af om udtræk skal gemmes i cache, samt optælling af antal records.-
x[into]x[outfile | dumpfile | @variable]Lagring af udtræk i filer / variabler. x
xfromIdent for (primær) tabel, der skal udtrækkes data fra.x
x[partition]Udtræk fra tabeller, der er opbygget (create) med partition.
x[inner joinx |
left joinx |
right joinx
Tilknytning af udtræk fra sekundære tabeller.
x[where]x[and]x
[or]x
[between]x
[like]x
in()
not in()
is nullx
is not nullx
match() against()
.....
[]Filter til afgrænsning af udtræk af poster fra FROM- og JOIN-tabeller.

() Kommasepareret liste eller afgrænsning med sekvens eller indlejret SELECT til styring af søgning.

NULL Medtager kun / ikke NULL-records.
Bruges i 'full text' søgning.
x x
x[group by]xKriterie (feltnavn) til opdeling af udtræk i grupper.
x[having]x count()x, sum(), min(), max()Filter til afgrænsning af udtræk med funktioner.
x[order by]x[asc | desc | rand()]Kriterie (feltnavn) til styring af orden, hvori udtræk skal vises.
x[limit]x
[limit offset]x
Antal records, der skal indgå i uddata - i forlængelse af 'offset'.
x[procedure]!!!!!!!!
x[for update |
lock in share mode]
Låsning af records før opdatering.




Collate


Collate (sammenligning, samordning) hører som parameter til i skemaet, men kan ikke indsættes deri, da det kan indsættes (mindst) 6 steder.




select


*select *Selekterer alle felter i anfordret / anfordrede tabeller. Kan ikke kombineres med funktioner eller andet.
feltnavnselect feltnavn01, .., feltnavn0n, func(x) as "a"selekterer anførte kommaseparerede felter i anfordret / anfordrede tabeller. Gælder både felter fra hovedtabel og fra JOIN-tabeller.


Alias

F.eks. for det ene felt når to felter i '*'-selektionen har samme navn. Skal placeres efter '*'.

$query = "SELECT *,PRI.fk_PRI_id AS alias01,count(fk_SEK_id) AS alias02 FROM PRI
LEFT JOIN SEK ON fk_SEK_id = PRI_id
LEFT JOIN TER ON PRI.fk_PRI_id = TER.TER_id
WHERE fk_PRI_id = $var_id
GROUP BY PRI_id




#################################################

Aggregerede funktioner


For felter med numeriske værdier. Skal have tilknyttet et alias for at kunne bruges. Anvendes GROUP BY agerer funktionerne med individuelt resultat for hver enkelt gruppe.


avg()select avg(feltnavn) as "a"Returnerer den gennemsnitlige værdi af udtræk fra numerisk kolonne. x
count()select feltnavn01, count(*) as "a"Returnerer antal forekomster af anført kriterie. x
first()Returnerer den første udtrukne værdi fra den anførte kolonne. x
last()Returnerer den sidste udtrukne værdi fra den anførte kolonne. x
max()select max(feltnavn) as "a"Returnerer den højeste udtrukne værdi fra den anførte kolonne. x
min()select min(feltnavn) as "a"Returnerer den laveste udtrukne værdi fra den anførte kolonne. x
sum()select sum(feltnavn) as "a"Returnerer summen af værdier udtrukket fra numerisk kolonne. x
. x
select feltnavn01, concat(feltnavn02, ' ', feltnavn03) as "a"Selekterer feltet feltnavn01 og samler feltnavn02 og feltnavn03 til felt med navnet "a".
select sum(distinct filnavn) as "a"Summerer værdier fra distinct records til felt med navnet "a".
select department, sum(feltnavn) as "a"Summerer værdier fra alle records til felt med navnet "a".
select avg(feltnavn) as "a"Finder gennemsnitsværdien for feltet til felt med navnet "a". x
select count(feltnavn) as "a"Placerer antal records pr. GROUP BY gruppe i felt med navnet "a".


count() og GROUP BY

$query = "SELECT * , count(fk_SEK_id) AS alias FROM PRItab
LEFT JOIN SEKtab ON fk_SEK_id = PRI_id
GROUP BY PRI_id




Skalerede funktioner


For felter med numeriske værdier.


ucase()Konverterer tekst i anført felt til store bogstaver. x
lcase()Konverterer tekst i anført felt til små bogstaver. x
mid()Udtrækker anført antal karakterer fra data i anført felt. x
len()Returnerer længden (antal kar.) for adta i anført felt. x
round()Afrunder numerisk felt baseret på anført antal decimaler. x
now()Returnerer aktuel system dato+tid.. x
format()Formattering af viste data fra anført felt. . x


count() og GROUP BY

$query = "SELECT * , count(fk_SEK_id) AS alias FROM PRItab
LEFT JOIN SEKtab ON fk_SEK_id = PRI_id
GROUP BY PRI_id




NULL funktioner


For felter med numeriske værdier.


func() asselect feltnavn01, count(*) as "a"Selekterer feltet feltnavn01 og tæller antallet af records til felt med navnet "a". x
select feltnavn01, concat(feltnavn02, ' ', feltnavn03) as "a"Selekterer feltet feltnavn01 og samler feltnavn02 og feltnavn03 til felt med navnet "a".
select max(feltnavn) as "a"Finder den maksimale værdi til felt med navnet "a". x
select min(feltnavn) as "a"Finder den minimale værdi til felt med navnet "a". x
select SUM(feltnavn) as "a"Summerer alle værdier til felt med navnet "a". x
select sum(distinct filnavn) as "a"Summerer værdier fra distinct records til felt med navnet "a".
select department, sum(feltnavn) as "a"Summerer værdier fra alle records til felt med navnet "a".
select avg(feltnavn) as "a"Finder gennemsnitsværdien for feltet til felt med navnet "a". x
select count(feltnavn) as "a"Placerer antal records pr. GROUP BY gruppe i felt med navnet "a".


count() og GROUP BY

$query = "SELECT * , count(fk_SEK_id) AS alias FROM PRItab
LEFT JOIN SEKtab ON fk_SEK_id = PRI_id
GROUP BY PRI_id




Andre funktioner


For felter med numeriske værdier.


func() asselect feltnavn01, count(*) as "a"Selekterer feltet feltnavn01 og tæller antallet af records til felt med navnet "a". x
select feltnavn01, concat(feltnavn02, ' ', feltnavn03) as "a"Selekterer feltet feltnavn01 og samler feltnavn02 og feltnavn03 til felt med navnet "a".
select max(feltnavn) as "a"Finder den maksimale værdi til felt med navnet "a". x
select min(feltnavn) as "a"Finder den minimale værdi til felt med navnet "a". x
select SUM(feltnavn) as "a"Summerer alle værdier til felt med navnet "a". x
select sum(distinct filnavn) as "a"Summerer værdier fra distinct records til felt med navnet "a".
select department, sum(feltnavn) as "a"Summerer værdier fra alle records til felt med navnet "a".
select avg(feltnavn) as "a"Finder gennemsnitsværdien for feltet til felt med navnet "a". x
select count(feltnavn) as "a"Placerer antal records pr. GROUP BY gruppe i felt med navnet "a".


count() og GROUP BY

$query = "SELECT * , count(fk_SEK_id) AS alias FROM PRItab
LEFT JOIN SEKtab ON fk_SEK_id = PRI_id
GROUP BY PRI_id




all, distinct, distinctrow


allAlle forekomster af et søgeresultat medtages. Default og kan derfor udelades.
distinctselect distinct feltnavn, ..., feltnavnVed duplikate forekomster af et søgeresultat medtages kun et.
distinctrowselect distinctrow feltnavn, ..., feltnavnSamme resultat som ved distinct.




high_priority


high_priorityselect high_priority feltnavn, ..., feltnavnGiver SELECT kommandoenen højere prioritet end UPDATE kommandoen. (Sikrer at SELECT bliver udført hurtigere end den ellers ville blive - på UPDATEs bekostning).




straight_join


straight_joinselect straight_join feltnavn, ..., feltnavnStyrer at tabeller joines i den rækkefølge, hvori de er anført i FROM kommandoen.




sql_small_result, sql_big_result, sql_buffer_result


sql_small_resultselect sql_small_result feltnavn, ..., feltnavnHurtige midlertidige tabeller bruges til lagring af mellemresultater fra DISTINCT og GROUP BY.
sql_big_resultselect sql_big_result feltnavn, ..., feltnavnSortering foretrækkes fremfor at midlertidige tabeller ved behandling af resultater fra DISTINCT og GROUP BY.
sql_buffer_resultselect sql_buffer_result feltnavn, ..., feltnavnBrug af midlertidige tabeller ved behandling af resultater gennemtvinges. Låste tabeller frigives hurtigere.
Kan ikke anvendes sammen med queries indlejret i andre queries.




sql_cache, sql_no_cache, sql_calc_found_rows


sql_cacheselect sql_cache feltnavn, ..., feltnavnDefault. Udtrukket resultat lagres i cache. Derved hurtigere at genbruge frem for at genudtrække, hvis samme select bliver udført igen indenfor cache-tiden.
sql_no_cacheselect sql_no_cache feltnavn, ..., feltnavnUdtrukket resultat lagres ikke i cache.
sql_calc_found_rowsselect sql_calc_found_rows feltnavn, ..., feltnavnBeregner antallet af records i udtræk (ser bort fra limit). Resultatet kan udtrækkes med funktionen SELECT FOUND_ROWS().x




into


Udtræk af data til filer:


- outfile: Udtrækker selekterede records til en fil. Felt- og linie-separatorer kan angives svarende til det ønskede format af komma-separeret (csv) typen.
- dumpfile: Udtrækker til en enkelt streng uden formattering
- var_list: Udtrækker feltværdier og lagrer dem som variabler.


into outfileinto outfile '/sti og filnavn.csv'
fields terminated by ','
lines terminated by '\n';
Opbygning af 'kommasepareret' fil (.csv) til lagring indenfor eget LAN.

FIELDS TERMINATED BY ','. Separator mellem felter. Normalt ',' eller ';'. Escape-karakteren '\t' (tabulator) kan også anvendes. Vigtigst er, at det anvendte tegn ikke forekommer i datastrengene og at filen kan læses af det program, der skal bruge dataene.

LINES TERMINATED BY '\n'. Escape-karakteren '\n' (linieskift) anvendes oftest til at afslutte records.
into dumpfileinto dumpfile 'sti og filnavn.txt'Udtrækker kun 1 record.
into var_list




from


fromfrom tabelnavnIdent for (primær) tabel, der skal udtrækkes data fra. Obligatorisk i enhver SELECT. Skal der trækkes data fra flere tabeller tilknyttes disse med 'join'.




partition


Udtræk fra tabeller, der er opbygget (create) med partition.


partitionFROM information_schema.partitionsUdtræk fra tabel, der er partitioneret.
SELECT table_rows as 'count(*)' FROM information_schema.partitions WHERE table_schema = schema() and table_name ='employees' and partition_name = 'p0';




join


Inner joinFROM tabel01
INNER JOIN tabel02 ON tabel01.feltnavn01 = tabel02.feltnavn02
Etablerer en virtuel tabel som kopi af tabel01 (selekterede felter). Med feltnavn01 og feltnavn02 som bindeled tilknyttes så mange data som muligt fra tabel02 (selekterede felter) til den virtuelle tabel.
Records i den virtuelle tabel med tomme felter slettes.
Den virtuelle tabel bruges som grundlag for etablering af $row.
Left outer joinFROM tabel01
LEFT JOIN tabel02 ON tabel01.feltnavn01 = tabel02.feltnavn02
Etablerer en virtuel tabel som kopi af tabel01 (selekterede felter). Med feltnavn01 og feltnavn02 som bindeled tilknyttes så mange data som muligt fra tabel02 (selekterede felter) til den virtuelle tabel.
Eventuelle tomme 'tabel02-felter' i den virtuelle tabel får værdien NULL.
Den virtuelle tabel bruges som grundlag for etablering af $row.
Right outer joinFROM tabel01
RIGHT JOIN tabel02 ON tabel01.feltnavn01 = tabel02.feltnavn02
Etablerer en virtuel tabel som kopi af tabel02 (selekterede felter). Med feltnavn01 og feltnavn02 som bindeled tilknyttes så mange data som muligt fra tabel01 (selekterede felter) til den virtuelle tabel.
Eventuelle tomme 'tabel01-felter' i den virtuelle tabel får værdien NULL.
Den virtuelle tabel bruges som grundlag for etablering af $row.




where


Aggregate functions.


Filter bestående af feltnavn operator og værdi til at styre, at kun relevante feltværdier bliver udtrukket.


Værdierne kan være datastreng eller variabler.


Flere filtre kan anvendes samtidig separeret med:
AND
OR
og/eller
().


Der kan anvendes følgende 6 operatorer, der skal være TRUE for at udtræk foretages:

= TRUE når værdierne før og efter er ens.
!= TRUE når værdierne før og efter er forskellige.
> TRUE når værdien før er større end værdien efter.
< TRUE når værdien før er mindre end værdien efter.
>= TRUE når værdien før er større end eller lig værdien efter.
<= TRUE når værdien før er mindre end eller lig værdien efter.


where feltnavn01 = "a"strengx
where feltnavn01 = "a"strengx
wherewhere feltnavn01 = "a"streng
where feltnavn01 = $avariabel
where feltnavn01 = 1 AND feltnavn02 = $a;multi med AND separatorx
where feltnavn01 = 'a' OR feltnavn02 = 'b';multi med OR separatorx
where feltnavn01 = $a AND (feltnavn02 = 'a' OR feltnavn02 = 'b');multi med AND, OR og () separatorerx
where feltnavn01 like 'A%'Alle værdier, der begynder med A.x
where feltnavn01 like '%A'Alle værdier, der ender på A.
where feltnavn01 like '%A%'Alle værdier, der indeholder A.
where feltnavn01 BETWEEN 'talstreng01' and 'talstreng02'Betweenx
where feltnavn01 BETWEEN $variabel01 and $variabel02Between




group by


Kriterie (feltnavn) til opdeling af udtræk i grupper.


group bygroup by feltnavn01, feltnavn02, ... feltnavn0nOpdeling af udtræk i grupper baseret på anført feltnavn. Ved flere feltnavne foretages nestning.




having


Filter baseret på funktioner med parametre eller variabler (tal) som afgrænsning.

havinghaving count(tabelnavn.feltnavn) > 10;
having count(feltnavn) > 1 AND MAX(feltnavn) < $variabelTælling af antal felter
having sum(feltnavn) > 1000;Tælling af antal felter
having min(feltnavn) > 35000;
having max(feltnavn) < $variabel;
having max(feltnavn) = $variabel




order by


Kriterie (feltnavn) til styring af orden, hvori udtræk skal vises.

order byorder by feltnavn ascSorteringsorden A-Z
order by feltnavn01 asc, feltnavn02 desc , feltnavn03 ascBlandet sorteringsorden.
order by feltnavn01, ..., feltnavn0n descSorteringsorden Z-A
order by rand()Urtræk i tilfældig orden.




limit


Antal records, der skal indgå i uddata - i forlængelse af 'offset'.


limitlimit 5limit
limit 5, 10offset og limit
limit $offset, 10offset og limit
limit $offset,$limitoffset og limit
limit offsetlimit 5 offset 10offset og limit
limit 10 offset $offsetoffset og limit
limit $limit offset $offsetoffset og limit




procedure


!!!!!!




for update
og
lock in share mode


Relevante når mulighed for 'ophedede' opdateringssituationer som f.eks. ved auktioner, billetbestillinger, visse finansielle situationer. Forkert brug kan skabe 'deadlock'.


for updateSELECT feltnavn01 FROM tabelnavn01 FOR UPDATE;
UPDATE tabelnavn01 SET feltnavn01 = feltnavn01 + 1;
Låser selekterede records så der ikke kan foretages andre SELECT, UPDATE eller DELETE før frigivelse med en efterfølgende commit eller rollback.
lock in share modeSELECT * FROM tabelnavn WHERE feltnavn = værdi LOCK IN SHARE MODE;Låser selekterede records så der ikke kan foretages andre UPDATE eller DELETE før frigivelse med en efterfølgende commit eller rollback.




























































x
x