**Tietokannan peruskyselyt** ovat kyselyitä, joilla voidaan hoitaa tietokantaan kohdistuvat *haku-*, *lisäys-* ja poistotoimenpiteet.

Kyselyille tyypilliset osa-alueet
---------------------------------

1. Kentät
	* Käytössä vain hakukyselyssä, määrittelee mitkä kentät palautetaan tuloksen mukana
2. Taulu
	* Taulu johon kysely vaikuttaa
3. Arvot
	* Lisäys- ja muokkauskyselyssä tuotavat arvot sarakkeisiin
4. Liitokset
	* Kyselyn palauttamien kenttien, ehdon tai järjestyslauseen vaatimat liitostaulut. Välillä liitos tarvitsee myös oman, erillisen ehdon
5. Ehto
	* Ehto jolla rajataan kyselyn vaikutusta
6. Järjestys
	* Järjestys mitä käytetään määrittämään tulosjoukon järjestys
7. Rajoitus
	* Rajoituksella rajoitetaan tulosjoukon maksimikokoa

Hakukysely
----------

Hakukysely on ainoa kysely joka ei vaikuta tietokannan taulun sisältöön, vaan ainoastaan hakee tietoja taulusta sekä sen mahdollisista liitoksista. Hakukysely tarvitsee yleensä vähintään 1. ja 2. osa-alueen, ja monesti käyttää tehokkaasti hyväksi myös muita osa-alueita.

**Esimerkki hakukyselystä SQL-kielellä:**

```
SELECT a.name, b.city
FROM users AS a
LEFT JOIN cities AS b ON (a.cityId = b.id)
WHERE a.name LIKE 'a%'
ORDER BY a.name ASC;

```

Tämä esimerkin mukainen yksinkertainen hakukysely hakisi taulusta *users* kaikki a:lla alkavat nimet sekä relaatioavaimen mukaisen kaupungin järjestäen tuloksen nimen mukaan laskevaan järjestykseen.

Lisäys- ja muokkauskysely
-------------------------

Lisäys- ja muokkauskyselyllä vaikutetaan tietokannan taulun sisältöön nimensä mukaisesti lisäävästi tai muokkaavasti. Kysely tarvitsee yleensä vähintään 2. ja 3. osa-alueen, ja muokkaustilanteessa myös ehdon sekä mahdollisen rajoituksen mikäli ei haluta vaikuttaa muokkauksella kaikkiin taulun tietueisiin.

**Esimerkki lisäys- ja muokkauskyselystä SQL-kielellä:**

```
# Lisäyskysely
INSERT INTO users (name, cityID)
VALUES ('Antonio Banderas', 1234);

# Muokkauskysely
UPDATE users
SET name = 'José Antonio Domínguez Bandera'
WHERE name = 'Antonio Banderas'
LIMIT 1;

```

Ensimmäisessä esimerkissä lisäsimme tauluun *users* Antonio Banderasin kaupunkitunnuksella 1234 joka vastaa Málagaa *cities* taulussa. Toisessa esimerkissä muokkasimme nimen oikeaksi nimeksi rajoittaen vaikutuksen mahdollisesti vain ensimmäiseen vastaantulevaan Antonio Banderakseen.

Poistokysely
------------

Poistokysely toimii periaatteessa aivan samoin kuin muokkauskysely, sillä erotuksella että tietojen muokkaamisen sijaan tiedot poistetaan taulusta. Kysely tarvitsee vähintään 2. osa-alueen, ja mikäli ei haluta poistaa kaikkia tietueita valitusta taulusta, myös ehdon sekä mahdollisen rajoituksen.

**Esimerkki poistokyselystä SQL-kielellä:**

```
DELETE FROM users
WHERE name = 'José Antonio Domínguez Bandera'
LIMIT 1;

```

Esimerkissä poistetaan tietokannan taulusta *users* ensimmäinen vastaantuleva tietue jonka *name*-kenttä sisältää arvon *José Antonio Domínguez Bandera*.

Näiden lisäksi monilla kyselykielillä on omia, erikoispiirteiden omaavia kyselyitä kuten yhdistämis- ja tyhjennyskysely. Näitä kyselytyyppejä ei kuitenkaan voi pitää tietokannan peruskyselyinä koska aivan kaikki tietokantakielet eivät näitä kyselytyyppejä tue.

Katso myös
----------

* Tietokanta
* SQL