# Kuinka käyttää SQL:n `NOT`-operaattoria

SQL `NOT` on looginen operaattori, joka mahdollistaa **hakutulosten tehokkaan ja tarkan suodattamisen poissulkemisen avulla**. Voit käyttää `NOT` jättääksesi pois tiedot, jotka eivät täytä tiettyä ehtoa, ja rajoittaaksesi tulokset vain olennaisiin tietoihin.

## Mikä on SQL `NOT` -operaattori?

SQL-kielessä operaattorit [ `OR`](https://www.ionos.com/fi-fi/digitalguide/palvelin/asetukset/sql-tai/), `AND` ja `NOT` kuuluvat niihin loogisiin operaattoreihin, joita voidaan käyttää tietokyselyjen ehtojen ja kriteerien muotoiluun. Kun operaattorit `AND` ja `OR` palauttavat tietojoukoista ne kohteet, jotka täyttävät kaikki tai yhden ehdon, **`NOT` perustuu poissulkemiseen**. Se jättää hakutuloksista pois kaikki tiedot, jotka *eivät* täytä tiettyä ehtoa.

SQL `NOT` käytetään usein yhdessä SELECT, WHERE ja SQL `HAVING` kanssa. Voit **yhdistää `NOT` `AND` ja `OR` kanssa**, jotta hakusi olisi vielä tarkempi. Näin suodatat pois epäolennaiset tulokset.

### Mitä eroa on SQL `NOT`:llä, `AND` llä ja `OR`?

SQL-versioiden `NOT`, `AND` ja `OR` tärkeimmät erot voidaan tiivistää seuraavasti:

<table>
  <thead>
    <tr>
      <th>SQL `NOT`</th>
      <th>SQL `AND`</th>
      <th>SQL `OR`</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Palauttaa vain kohteet, jotka eivät täytä määritettyä ehtoa</td>
      <td>Palauttaa kohteet, jotka täyttävät kaikki määritetyt ehdot</td>
      <td>Palauttaa kohteet, jotka täyttävät vähintään yhden määritellyistä ehdoista</td>
    </tr>
    <tr>
      <td>Kumoaa ehdon, joka ei ole merkityksellinen haulle</td>
      <td>Yhdistää ehdot, jotta haku rajataan kohteisiin, jotka vastaavat useita hakuehtoja</td>
      <td>Rajoittaa hakutulokset kohteisiin, jotka täyttävät vähintään yhden useista kriteereistä</td>
    </tr>
  </tbody>
</table>

Vinkki Haluatko perehtyä [SQL:](https://www.ionos.com/fi-fi/digitalguide/palvelin/osaaminen/mikae-on-sql/) ään tarkemmin, mutta olet vielä aloittelija? Tutustu sitten [esimerkkejä sisältävään SQL-esittelyymme](https://www.ionos.com/fi-fi/digitalguide/palvelin/asetukset/sqln-esittely-esimerkkien-kera/).

## Mikä on SQL-lauseen `NOT` syntaksi?

SQL `NOT`:n perusrakenteet ovat seuraavat:

```sql
SELECT  *
FROM table
WHERE  NOT  (searchcriteria)
```

Seuraavia parametreja voidaan käyttää komennon `NOT` kanssa:

- `SELECT`: Määrittää, mitkä sarakkeet sisällytetään hakuun. Voit käyttää tähteä `*` koko taulukon hakemiseen. Voit myös määrittää yksittäisiä sarakkeita niiden ensisijaisten ja viiteavainten avulla.
- `FROM`: Määrittää taulukon, josta haluat tehdä haun.
- `WHERE`: Määrittää ehdot, joita haluat käyttää haun rajaamiseen. Tässä voit käyttää `NOT`.
- `NOT`: Yhdessä `WHERE` kanssa määritetään, mitkä hakutulokset eivät kuulu hakutuloksiin.

Jos haluat tarkentaa hakutuloksia entisestään, voit käyttää myös `AND` ja `OR`.

### SQL `NOT` yhdistettynä versioon `AND`

Voit yhdistää `NOT` ja `AND` sulkeaksesi pois tulokset, jotka täyttävät kaksi tai useampia ehtoja.

```sql
SELECT  *
FROM  table
WHERE  NOT  (condition1  AND  condition2)
```

### SQL `NOT` yhdistettynä `OR`een

Voit yhdistää `NOT` ja `OR` sulkeaksesi pois tulokset, jotka täyttävät **vähintään yhden ehdon**.

```sql
SELECT  *
FROM  table
WHERE  NOT  (condition1  OR  condition2)
```

## Mihin SQL `NOT` käytetään?

SQL `NOT`:llä on **lukemattomia käyttötarkoituksia** kyselyissä ja hauissa. Niitä ovat muun muassa:

- Asiakkaihin, tilauksiin tai tuotteisiin liittyvien tietojen suodattaminen alueen, vuoden, luokan, hinnan tai muun ominaisuuden perusteella
- Ohitetaan tiedot, jotka sisältävät virheellisiä tai puuttuvia arvoja
- Suodatetaan talousdata, joka ei täytä tiettyjä transaktiokriteerejä
- Tiettyyn osastoon kuulumattomien työntekijöiden tietojen poissulkeminen
- Suodatetaan pois hakijat, joilla ei ole tiettyjä pätevyyksiä

### Esimerkkejä SQL `NOT`:stä

SQL `NOT` lla tehtävät haut voivat vaihdella huomattavasti käyttötarkoituksesta riippuen. Ratkaisevia tekijöitä ovat se, miten ehto määritellään `WHERE` ella, `NOT` ja muilla valinnaisilla operaattoreilla. Seuraavassa esitellään **kolme esimerkkiä**.

### Työntekijöiden poissulkeminen alueen perusteella

Oletetaan, että työskentelet taulukossa nimeltä ”Employees” ja haluat nähdä vain ne työntekijät, jotka **eivät asu Isossa-Britanniassa**. Tätä varten käytä ”Country”-saraketta, lauseketta `WHERE`, operaattoria `NOT` ja vertailuoperaattoria `=`.

```sql
SELECT  *
FROM  Customers
WHERE  NOT  (Country  =  'UK')
```

Tai jos haluaisit nähdä, mitkä **tuotteet ovat loppu varastosta**, se näyttäisi tältä:

```sql
SELECT  *
FROM  Products
WHERE  NOT  (Inventory  >  0)
```

### Asiakkaiden suodattaminen

Tässä esimerkissä etsimme asiakasryhmää, joka **ei täytä tiettyjä ehtoja**. Oletetaan, että et halua nähdä asiakkaita, jotka ovat alle 30-vuotiaita ja asuvat Cardiffissa. Hakuehto näyttäisi seuraavalta:

```sql
SELECT  *
FROM  Customers
WHERE  NOT  (Age  <  30  AND  City  =  'Cardiff')
```

### Epäpätevien hakijoiden karsiminen

Oletetaan, että haluat sulkea pois kaikki hakijat, joilla ei ole kandidaatin tutkintoa tai vähintään kolmen vuoden työkokemusta. Hakukriteerit näyttäisivät seuraavalta:

```sql
SELECT  *
FROM  Applicants
WHERE  NOT  (Degree  =  ´Bachelor´  OR  Experience  <  3)
```

## Mitä vaihtoehtoja SQL `NOT`:lle on?

SQL `NOT` on ainoa operaattori, joka käyttää negaatiota hakuehtojen suodattamiseen. Mutta koska SQL `NOT` on monipuolinen SQL-operaattori, se voidaan yhdistää erilaisiin SQL-komentoihin **tarkkojen kyselyjen** suorittamiseksi. Näitä komentoja ovat muun muassa SQL JOIN ja SQL `HAVING`, kuten [SQL SUM](https://www.ionos.com/fi-fi/digitalguide/palvelin/asetukset/sql-sum/) ja `AVG`. Se voidaan yhdistää myös vertailuoperaattoreihin, kuten `=`, `>` ja SQL LIKE, sekä loogisiin operaattoreihin `AND` ja `OR`.


This is a markdown version of: [https://www.ionos.com/fi-fi/digitalguide/palvelin/asetukset/sql-not/](https://www.ionos.com/fi-fi/digitalguide/palvelin/asetukset/sql-not/) for AI/LLM consumption.