Missä (SQL) - Where (SQL)

WHERE Lauseke SQL määrätään, että SQL Data Manipulation Language (DML) selvitys olisi vain vaikuttaa rivit tietyt kriteerit täyttäviä. Kriteerit ilmaistaan ​​predikaattien muodossa. WHERE lausekkeet eivät ole pakollisia lausekkeita SQL DML -lausekkeista, mutta niitä voidaan käyttää rajoittamaan rivien määrää, joihin SQL DML -käsky vaikuttaa tai kyselyn palauttama. Lyhyesti sanottuna SQL WHERE -lauseketta käytetään vain niiden tulosten poimimiseen SQL-käskystä, kuten: SELECT, INSERT, UPDATE tai DELETE.

Yleiskatsaus

WHERE on SQL- varattu sana.

WHERE Lauseketta käytetään yhdessä SQL DML lausunnot, ja ottaa seuraava yleinen muoto:

SQL-DML-Statement
FROM table_name 
WHERE predicate

WHERE SQL DML -käsky tai -kysely vaikuttaa (tai palauttaa) kaikkiin riveihin, joiden lausekkeen predikaatti on tosi. DML-käsky tai kysely ei vaikuta riveihin, joiden predikaatti arvioi arvon False tai Unknown ( NULL ).

Seuraava kysely palauttaa vain taulukon mytable rivit, joissa sarakkeen mycol arvo on suurempi kuin 100.

SELECT *
FROM   mytable
WHERE  mycol > 100

Seuraava DELETE lause poistaa taulukon mytable- taulukosta vain ne rivit, joissa sarake mycol on joko NULL tai sen arvo on 100.

DELETE
FROM   mytable
WHERE  mycol IS NULL OR mycol = 100

Predikaatit

Yksinkertainen predikaatteja käyttää yhden operaattorin = , <> , > , >= , < , <= , IN , BETWEEN , LIKE , IS NULL tai IS NOT NULL .

Predikaatit voidaan haluttaessa sulkea sulkeisiin. Avainsanat AND ja OR niitä voidaan käyttää yhdistämään kaksi predikaattia uuteen. Jos käytetään useita yhdistelmiä, sulkeita voidaan käyttää yhdistelmien ryhmittelemiseen osoittamaan arvioinnin järjestys. Ilman sulkeita AND operaattorilla on vahvempi sidonta kuin OR .

Seuraavassa esimerkissä poistetaan rivejä Oma Tauluni , joiden arvo Mycol on suurempi kuin 100, ja arvo tuote on sama kuin merkkijono kirjaimellisesti 'Hammer':

DELETE
FROM   mytable
WHERE  mycol > 100 AND item = 'Hammer'

SISÄÄN

IN löytää joukon ehdokkaiden arvoja.

SELECT ename WHERE ename IN ('Montreal', 'Quebec')

Kaikki rivit vastaavat predikaattia, jos niiden arvo on yksi ehdokasarvoista. Tämä on sama käytös kuin

SELECT ename WHERE ename='value1' OR ename='value2'

paitsi että jälkimmäinen voisi sallia useiden sarakkeiden vertailun, mitä kukin IN lauseke ei tee. Suuremmalle joukolle ehdokkaita IN on vähemmän sanallinen.

VÄLILLÄ

BETWEEN löytää kaikki arvot alueelta.

SELECT ename WHERE ename BETWEEN 'value1' AND 'value2'
SELECT salary from emp WHERE salary BETWEEN 5000 AND 10000

Kaikki rivit vastaavat predikaattia, jos niiden arvo on arvojen1 ja2 välillä.

KUTEN

LIKE löytää merkkijonon, joka sopii tiettyyn kuvaukseen.

  • päättyy wildcard
    • Etsi mikä tahansa merkkijono, joka alkaa S-kirjaimella
      SELECT ename FROM emp WHERE ename LIKE 'S%';
      
  • Johtava yleismerkki
    • Etsi mikä tahansa merkkijono, joka päättyy S-kirjaimella
      SELECT ename FROM emp WHERE ename LIKE '%S';
      
  • Useita yleismerkkejä
    • Etsi mikä tahansa merkkijono, joka sisältää missä tahansa S-kirjaimen
      SELECT ename FROM emp WHERE ename LIKE '%S%';
      
  • Yksimerkkinen jokerimerkki
    • Etsi mikä tahansa merkkijono, joka sisältää A-kirjaimen ja minkä tahansa yksittäisen merkin, jota seuraa E-kirjain
      SELECT ename FROM emp WHERE ename LIKE '%A_E%';
      
  • Hahmoluokat
    • Etsi mikä tahansa merkkijono, joka alkaa kirjaimella tai numerolla tai symbolilla '_'
      SELECT ename FROM emp WHERE ename LIKE '[a-zA-Z0-9_]%';
      

LIKE-predikaatti suorittaa tyypillisesti haun ilman indeksien normaalia suorituskykyetua. '=', '<>' Jne. Käyttäminen sen sijaan lisää suorituskykyä. Kirjainkoko (esim. 'S' vs. 's') voi olla erilainen tietokantatuotteen tai kokoonpanon mukaan.

Viitteet

  1. ^ "SQL WHERE -lauseke - aloittelijoiden on tiedettävä" .
  2. ^ Microsoft Technet Haettu 21. marraskuuta 2013.

Ulkoiset linkit