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.