# Kako uporabljati SQL `NOT`

SQL `NOT` je logični operator, ki omogoča **učinkovito in natančno filtriranje rezultatov iskanja z izključitvijo**. Z operatorjem `NOT` lahko izključite podatke, ki ne izpolnjujejo določenega pogoja, in tako omejite rezultate na relevantne informacije.

## Kaj je operator SQL `NOT`?

Poleg [operatorjev `OR`](https://www.ionos.com/sl-si/digitalguide/streznik/nastavitve/sql-ali/) in `AND` je tudi operator `NOT` eden od logičnih operatorjev v jeziku SQL, ki se lahko uporablja za oblikovanje pogojev in meril za poizvedbe podatkov. Medtem ko operatorja `AND` in `OR` vrneta elemente iz podatkovnih nizov, ki izpolnjujejo vse ali enega od pogojev, **`NOT` temelji na izključitvi**. Iz rezultatov iskanja izloči vse informacije, ki *ne izpolnjujejo* določenega pogoja.

SQL `NOT` se pogosto uporablja skupaj z SELECT, WHERE in SQL `HAVING`. Za še natančnejše iskanje lahko **združite `NOT` z `AND` in `OR`**. Na ta način boste izločili nepomembne rezultate.

### Kakšna je razlika med standardi SQL `NOT`, `AND` in `OR`?

Glavne razlike med SQL `NOT`, `AND` in `OR` lahko povzamemo takole:

<table>
  <thead>
    <tr>
      <th>SQL `NOT`</th>
      <th>SQL `AND`</th>
      <th>SQL `OR`</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Vrne samo elemente, ki ne izpolnjujejo navedenega pogoja</td>
      <td>Vrne elemente, ki izpolnjujejo vse navedene pogoje</td>
      <td>Vrne elemente, ki izpolnjujejo vsaj enega od navedenih pogojev</td>
    </tr>
    <tr>
      <td>Negira pogoj, ki ni relevanten za iskanje</td>
      <td>Združi pogoje, da se iskanje omeji na elemente, ki ustrezajo več iskalnim merilom</td>
      <td>Omeji rezultate iskanja na elemente, ki izpolnjujejo vsaj eno od več meril</td>
    </tr>
  </tbody>
</table>

Tip Želite se poglobiti v [SQL](https://www.ionos.com/sl-si/digitalguide/streznik/znanje/kaj-je-sql/), a ste še vedno začetnik? Oglejte si naš [uvod v SQL s primeri](https://www.ionos.com/sl-si/digitalguide/streznik/nastavitve/uvod-v-sql-s-primeri/).

## Kakšna je sintaksa SQL-ja `NOT`?

Osnovna sintaksa SQL `NOT` je naslednja:

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

Z `NOT` se lahko uporabljajo naslednji parametri:

- `SELECT`: Določa, katere stolpce naj se vključijo v iskanje. Z zvezdico `*` lahko iščete po celotni tabeli. Posamezne stolpce lahko določite tudi s pomočjo njihovih primarnih in tujih ključev.
- `FROM`: Določa tabelo, v kateri želite iskati.
- `WHERE`: Določa pogoje, ki jih želite uporabiti za zožitev iskanja. Tukaj lahko uporabite `NOT`.
- `NOT`: V kombinaciji s `WHERE` določite, kateri rezultati iskanja naj ne bodo vključeni.

Če želite, da so vaši rezultati iskanja še natančnejši, lahko uporabite tudi `AND` in `OR`.

### SQL `NOT` v kombinaciji s `AND`

Številki `NOT` in `AND` lahko združite, da izločite rezultate, ki izpolnjujejo dva ali več pogojev.

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

### SQL `NOT` v kombinaciji s `OR`

Številki `NOT` in `OR` lahko združite, da izločite rezultate, ki izpolnjujejo **vsaj en pogoj**.

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

## Za kaj se uporablja SQL `NOT`?

SQL `NOT` ima v poizvedbah in iskanjih **nešteto uporabnih možnosti**. Mednje spadajo:

- Izključitev podatkov o strankah, naročilih ali izdelkih na podlagi regije, leta, kategorije, cene ali druge značilnosti
- Ignoriranje podatkov, ki vsebujejo neveljavne ali manjkajoče vrednosti
- Filtriranje finančnih podatkov, ki ne izpolnjujejo določenih transakcijskih meril
- Izključitev podatkov za zaposlene, ki niso v določenem oddelku
- Izločanje kandidatov, ki nimajo določenih kvalifikacij

### Primeri SQL `NOT`

Iskanja s pomočjo SQL `NOT` se lahko zelo razlikujejo glede na konkretni primer uporabe. Odločilni dejavniki so način opredelitve pogoja s klavzulo `WHERE`, operatorjem `NOT` in drugimi neobveznimi operatorji. V nadaljevanju vam bomo predstavili **tri primere**.

### Izključitev zaposlenih po regijah

Recimo, da delate v tabeli z imenom »Zaposleni« in želite prikazati le tiste zaposlene, ki **ne živijo v Združenem kraljestvu**. Za to uporabite stolpec »Država«, klavzulo `WHERE`, operator `NOT` in primerjalni operator `=`.

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

Ali pa če bi želeli videti, kateri **izdelki so razprodani**, bi to izgledalo podobno:

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

### Filtriranje strank

V tem primeru bomo poiskali skupino strank, ki **ne izpolnjujejo določenih meril**. Recimo, da ne želite videti strank, ki so mlajše od 30 let in živijo v Cardiffu. To bi izgledalo takole:

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

### Izločanje premalo usposobljenih kandidatov

Recimo, da želite izločiti vse kandidate, ki nimajo niti diplome niti vsaj treh let delovnih izkušenj. Iskanje bi izgledalo takole:

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

## Katere so nekatere alternative za SQL `NOT`?

SQL `NOT` je edini operator, ki za filtriranje iskalnih meril uporablja negacijo. Ker pa je SQL `NOT` vsestranski SQL-operator, ga je mogoče kombinirati z različnimi SQL-ukazi za izvajanje **natančnih poizvedb**. Ti ukazi vključujejo SQL JOIN in `HAVING` funkcije SQL `HAVING`, kot sta [SQL SUM](https://www.ionos.com/sl-si/digitalguide/streznik/nastavitve/sql-sum/) in `AVG`. Kombinirati ga je mogoče tudi s primerjalnimi operaterji, kot so `=`, `>` in SQL LIKE, ter logičnimi operaterji `AND` in `OR`.


This is a markdown version of: [https://www.ionos.com/sl-si/digitalguide/streznik/nastavitve/sql-ne/](https://www.ionos.com/sl-si/digitalguide/streznik/nastavitve/sql-ne/) for AI/LLM consumption.