Query (čteno „kvery", česky dotaz) je příkaz, kterým aplikace požádá databázi o data nebo jí je předá k uložení. Je to věta v dorozumívacím jazyce SQL, tedy pokyn ve smyslu vypiš mi deset nejnovějších článků.

Představte si databázi jako archiv plný šanonů a query jako lísteček, který podáte archiváři u okénka. Čím přesněji na lístku napíšete, co chcete, tím rychleji Vám archivář donese přesně to a nic navíc. Když napíšete jen „přineste všechno", bude chvíli trvat, než se s tím vrátí – a Vy pak stejně devadesát procent zahodíte.

Dotazy se dělí podle toho, co s daty dělají:

  • Čtení – vytažení záznamů, které odpovídají zadaným podmínkám. Tohle je naprostá většina provozu běžného webu.
  • Zápis – vložení nového záznamu, třeba objednávky nebo komentáře.
  • Úprava a mazání – změna nebo odstranění existujících záznamů.
  • Správa struktury – zakládání tabulek a sloupců; to řeší programátor nebo instalátor aplikace, ne Vy.

Proč Vás to má zajímat: počet a rychlost dotazů přímo určuje, jak rychle se web načte. Jedna stránka ve WordPressu se databáze zeptá klidně několikasetkrát. Dokud jsou dotazy rychlé, nikdo si toho nevšimne. Jakmile ale tabulka naroste a chybí v ní rejstřík (odborně index), musí databázový server projít řádek po řádku celý archiv – a z tisíciny sekundy jsou najednou vteřiny. Pomoci umí object cache, která si odpovědi na opakující se dotazy podrží v paměti, takže se do databáze vůbec nemusí chodit. Souvislosti popisuje heslo optimalizace webu.

Pozor na záměnu s pojmem query string. Ten označuje úplně jinou věc – část webové adresy za otazníkem, kterou se stránce předávají parametry, třeba hledaný výraz. Query je dotaz mířící do databáze na serveru, query string je kus adresy v prohlížeči. Spojuje je jen podobné slovo.

Ještě jedna věc k bezpečnosti. Když aplikace vloží do dotazu neprověřený text od návštěvníka, může mu útočník podstrčit vlastní příkaz a databázi vyčíst nebo poškodit. Tomu se říká SQL injection a brání se proti němu správným zápisem dotazů, aktualizovanými aplikacemi a zabezpečením webu.