close

Strukturoitu kyselykieli

Siirry navigointiin Siirry hakuun
SQL-
ohjelmointikieli
SQL ANATOMY wiki.svg
Ohjeen osat.
TekijäDonald Chamberlin
Alkuperäpäivä1974
Uusin versioSQL: 2016 (joulukuu 2016 )
Käyttöluominen, kyselyt, tietokannan hallinta
Paradigmatmoniparadigma
Kirjoittaminenstaattinen, vahva
Yleiset laajennukset.sql

Tietojenkäsittelytieteessä SQL ( Structured Query Language ) ( / skjuːˈɛl / "SQL") on standardoitu tietokantakieli , joka perustuu relaatiomalliin ( RDBMS ) , joka on suunniteltu seuraaviin toimintoihin:

Nimestään huolimatta se ei siis ole yksinkertainen kyselykieli : jotkin sen osajoukot antavat itse asiassa mahdollisuuden luoda, hallita ja hallita tietokantoja.

Historia

SQL:n syntyi vuonna 1974 Donald Chamberlin IBM :n laboratorioissa . Se syntyi työkaluksi työskennellä relaatiomallia noudattavien tietokantojen kanssa . Tuolloin sitä kuitenkin kutsuttiin SEQUELiksi (tästä syystä SQL:n oikea IPA -ääntäminen on [ˈɛsˈkjuˈɛl] ja epävirallinen [ˈsiːkwəl]). Vuonna 1975 kehitettiin prototyyppi nimeltä SEQUEL-XRM ; sen kanssa tehtiin kokeita, jotka johtivat vuonna 1977 kielen uuteen versioon, jonka olisi alunperin pitänyt olla nimeltään SEQUEL / 2, mutta josta tuli sitten oikeudellisista syistä (nimi SEQUEL oli jo käytetty ja ennen kaikkea rekisteröity). , toisessa lentoyhtiön laajuudessa), SQL. Sille kehitettiin System R -prototyyppi , jota IBM käytti sisäiseen käyttöön ja joihinkin asiakkaisiinsa. Mutta sen menestyksen vuoksi myös muut yritykset alkoivat nopeasti kehittää SQL-pohjaisia ​​tuotteita. Vuonna 1981 IBM aloitti joidenkin relaatiotuotteiden myynnin ja julkaisi vuonna 1983 DB2 :n, sen relaatiotietokantajärjestelmän , joka oli suosittu 1900-luvun viimeisinä vuosina . SQL:stä tuli nopeasti relaatiomallia käyttävien ohjelmistojen alan standardi.

ANSI otti sen käyttöön standardina vuodesta 1986 lähtien tekemättä merkittäviä muutoksia IBM:n alun perin kehittämään versioon. Vuonna 1987 ISO teki samoin. Tämä ensimmäinen standardiversio on nimeltään SQL / 86. Seuraavina vuosina tehtiin muita versioita, jotka olivat SQL / 89, SQL / 92 ja SQL / 2003. Tämän standardointiprosessin tarkoituksena oli luoda kieli, joka toimi kaikissa relaatiotietokantajärjestelmissä (Data Base Management Systems), mutta tätä tavoitetta ei saavutettu. Itse asiassa eri valmistajat ottivat kielen käyttöön useilla muunnelmilla ja käytännössä omaksuivat standardit tasolla, joka ei ylittänyt Ansin Entry Leveliksi määrittelemää minimiä.

Ominaisuudet

SQL on kieli tietokantojen kyselyyn ja hallintaan kyselyiksi kutsuttujen ohjelmointirakenteiden avulla . SQL:llä voit lukea, muokata, poistaa tietoja sekä harjoittaa tietokantajärjestelmän hallinta- ja hallintatoimintoja. Useimmissa toteutuksissa on komentorivikäyttöliittymä suoraa komentojen suorittamista varten vaihtoehtona vain GUI :lle .

Se suunniteltiin alun perin deklaratiivisen tyyppiseksi kieleksi , mutta se on sittemmin kehittynyt prosessirakenteiden , vuonhallintaohjeiden , käyttäjän määrittämien tietotyyppien ja useiden muiden kielilaajennusten myötä. SQL: 1999 -standardin määrittelystä lähtien monet näistä laajennuksista on otettu virallisesti osaksi SQL:ää standardin SQL/PSM-osassa.

Jotkut yleisimmistä SQL:lle kohdistetuista kritiikistä koskevat koodin siirrettävyyden puutetta eri toimittajien välillä, puuttuvien (nolla)tietojen sopimattomuutta ja toisinaan tarpeettoman monimutkaista semantiikkaa.

Rakenne

Koska SQL on deklaratiivinen kieli , se ei vaadi operaatiosarjojen (kuten pakollisten kielten ) kirjoittamista sen sijaan, että se määrittelee haetun tiedon loogiset ominaisuudet. Se on jaettu:

Operaattorit

Standardin SQL:n tarjoamat operaattorit on jaettu seitsemään luokkaan:

  • Tehtäväoperaattorit
  • Vertailuoperaattorit
  • Merkkijonooperaattorit
  • Aritmeettiset operaattorit
  • Ehdolliset operaattorit
  • Loogiset operaattorit
  • Bittibittioperaattorit

Tehtäväoperaattorit

Määritysoperaattorit antavat arvon muuttujalle tai kentälle.

  • =Ilmaisee tehtävän eikä palauta arvoa.
  • :=Se ilmaisee arvon määrittämisen muuttujalle, jota ei ole vielä muotoiltu, eikä palauta arvoa.

Vertailuoperaattorit

Vertailuoperaattoreita käytetään määrittämään arvojen yhtäläisyyksiä ja epätasa-arvoja sekä etsimään tiedoista. Alla on taulukkokaavio:

  • =Ilmaisee tasa-arvon kahden numeerisen arvon tai merkkijonon välillä (jos sitä ei käytetä määritysoperaattorina)
  • ISSitä käytetään tarkistamaan, onko arvo NULL vai vastaako se Boolen arvoa (TOSI, EPÄTOSI, TUNTEMATTOMA).
  • LIKEIlmaisee samankaltaisuuden kahden kirjaimellisen arvon välillä: LIKE-operaattorilla on mahdollista käyttää vertailuissa erikoismerkkejä% (korvaa mielivaltaisen määrän kirjaimia) ja _ (korvaa mielivaltaisen kirjaimen)
  • <Määrittää, onko yksi arvo pienempi kuin toinen
  • >Määrittää, onko yksi arvo suurempi kuin toinen
  • <=Määrittää, onko yksi arvo pienempi vai yhtä suuri kuin toinen
  • >=Määrittää, onko jokin arvo suurempi vai yhtä suuri kuin toinen
  • <>Määrittää, eroavatko kaksi arvoa toisistaan
  • !=vastaava<>
  • BETWEEN ... ANDHakee arvon kahden arvon väliltä
  • INMäärittää, sisältyykö arvo mahdollisten arvojen luetteloon
  • EXISTSMäärittää, palauttaako tietty alikysely arvon
  • ANYo SOMEMäärittää, palauttaako tietty alikysely vähintään yhden määritetyistä arvoista
  • ALLMäärittää, palauttaako tietty alikysely kaikki halutut arvot

Jotkut näistä operaattoreista vastaavat vastakkaista operaattoria käyttämällä termiä NOT:

  • IS NOT
  • NOT LIKE
  • NOT BETWEEN
  • NOT IN
  • NOT EXISTS

Merkkijonooperaattorit

Merkkijonooperaattorit ottavat kaksi merkkijonoa operandina ja palauttavat Boolen tai merkkijonoarvon.

LIKE-operaattori

Operaattori LIKE(käytetään myös MATCHES) on yleensä avainsana hakukriteereille ja hakukoneen tekemille kyselyille.

Alaviiva ( _) -merkki, jota kutsutaan wildchariksi , etsii yhtä mielivaltaista merkkiä; symbolia %kutsutaan jokerimerkkioperaattoriksi ja se etsii mielivaltaista merkkijonoa, toisin sanoen numeroarvoaluetta. Voit etsiä alaviivaa lausekkeesta käyttämällä syntaksia [_](katso myös alla).

Microsoft Accessin syntaksi eroaa hieman tästä kansainvälisestä standardista ja on täydellisempi. Alaviivasymbolin sijasta sitä käytetään ?yksittäisen merkin (sekä numeron että kirjaimen) etsimiseen; symbolin sijasta %jokerimerkki-operaattori antaa *. Accessin avulla voit etsiä yksittäistä numeerista arvoa käyttämällä tiivistenäppäintä (tai tiivistenäppäintä ) #ja etsiä merkkiä (kirjainta ja numeroa) arvojoukon sisältä tai ulkopuolelta syntaksilla []ja [!]. Väli voi olla täsmällinen tai kollektiivinen: esimerkiksi [AF] tarkoittaa kirjaimia A:n ja F:n välillä, kun taas [A, F] tarkoittaa vain näiden kahden kirjaimen etsintää. Esimerkiksi lause, kuten "LIKE P [! AF] C" etsii sanoja, jotka alkavat "P" ja päättyvät "C" ja toisessa kirjaimessa ei ole merkkejä kirjainten A ja F välillä. Tämä toteutuksen täydellisyys LIKE johtuu siitä, että Access ei ennakoi monimutkaisempia operaattoreita, kuten SAMANLAISET ja REGEXP.

Tästä täydellisyydestä huolimatta OLE DB -ohjaimessa Windowsille on tunnettu virhe: jokerimerkkioperaattoria *voidaan käyttää vain sovelluksessa, kun taas klassista symbolia on käytettävä OLE DB / ODBC:n kautta %.

SAMANLAISET JA REGEXP-operaattorit

SAMANLAISET - operaattori on osa SQL - standardia ja sen avulla voit tarkistaa , vastaako merkkijono annettua säännöllistä lauseketta . Käytetty syntaksi eroaa Perlin ja POSIXin perustamista de facto -standardeista, ja tästä syystä valmistajat ottavat tämän operaattorin käyttöön melko rajoitetusti.

REGEXP-operaattori on yleisempi ja sen avulla voit myös tarkistaa, vastaako merkkijono annettua säännöllistä lauseketta. Käytetty syntaksi vaihtelee SQL-toteutuksen mukaan, mutta yleensä se noudattaa Perlin tai POSIXin asettamia de facto -standardeja.

SQL sisältää myös täydentävät operaattorit, jotka EIVÄT samankaltaisia ​​kuin REGEXP ja NOT REGEXP .

BINARY

Tämän operaattorin tehtävänä on tehdä säännöllisten lausekkeiden käytöstä kirjainerottelua, eli varmistaa, että isot kirjaimet eroavat pienistä kirjaimista.

COLLATE

Tätä operaattoria käytetään määrittämään, mitä lajittelua (merkkijoukon lajittelun sääntöjoukkoa) käytetään nykyisessä lausekkeessa.

Aritmeettiset operaattorit

Aritmeettiset operaattorit hyväksyvät numeerisia operaattoreita (kokonaisluku tai desimaali) ja palauttavat vastaavan aritmeettisen operaation tuloksen. Alla on taulukkokaavio:

Käyttäjän kuvaus

  • +Tee lisäys tai jätä luvun etumerkki ennalleen
  • -Vähennä tai käännä luvun etumerkki
  • *Tee kertolasku
  • /Tee jako
  • MODPalauttaa jaon loppuosan
  • DIVPalauttaa jaon kokonaislukuosan

Ehdolliset operaattorit

SQL:n ainoa ehdollinen operaattori on WHERE (jos) ja sitä käytetään kohdistettujen hakuehtojen määrittämiseen.

Loogiset operaattorit

SQL:n loogiset operaattorit kuuluvat Boolen loogisiin operaattoreihin ja ovat AND (ja), OR (tai tai), NOT (ei), XOR (kutsutaan myös "exclusive OR").

  • Looginen AND -operaattori , joka sitoo kaksi ehtoa, palauttaa arvon TOSI, jos ja vain jos molemmat operandit ovat tosi.
  • Looginen TAI - operaattori , joka sitoo kaksi ehtoa, palauttaa arvon TRUE, jos ja vain jos ainakin yksi operandeista on tosi.
  • NOT - operaattori hyväksyy vain yhden operandin ja palauttaa käänteisen arvon: false, jos tämä on tosi, tosi, jos tämä on epätosi.
  • XOR - operaattori , joka hyväksyy kaksi ehtoa, palauttaa TRUE, jos ja vain jos vain yksi operandeista on tosi.

Bittioperaattorit

SQL-standardi ei tarjoa tätä operaattoriperhettä, mutta se on läsnä monissa toteutuksissa. Nämä operaattorit suorittavat AND-, OR-, NOT- ja XOR-operaatioita bittitasolla.

Yleiset säännöt operaattoreille

Lauseke koostuu arvosta tai operaatiosta, joka palauttaa arvon. Tämä määritelmä on rekursiivinen: lausekkeet voivat olla sisäkkäisiä. Koska operaattorit palauttavat aina arvon, on täysin laillista yhdistää ne yhteen muodostamaan yhä monimutkaisempia ehtoja.

Hakasulkujen () käyttö hakulausekkeiden sisällä mahdollistaa operaattoreiden tärkeysjärjestyksen muokkaamisen tai eksplisiittisen määrittämisen, eli niiden käsittelyjärjestyksen. Kun yhdistelmälauseke kirjoitetaan ilman hakasulkeita, sovelletaan kielen tarjoamien operaattoreiden välistä etusijaa.

DDL: Data Definition

DDL-kieltä ( Data Definition Language ) käytetään tietokannan objektien luomiseen, muokkaamiseen tai poistamiseen. DDL-komennot määrittelevät tietokannan ja siten sen sisältämän tiedon rakenteen, mutta ne eivät tarjoa työkaluja datan muokkaamiseen, jolle DML:ää ( Data Manipulation Language ) käytetään. Käyttäjällä on oltava tarvittavat oikeudet toimiakseen tietokantarakenteessa, ja nämä oikeudet määrätään DCL:n ( Data Control Language ) kautta.

Elementary Domains

SQL tarjoaa kuusi perhettä alkeistoimialueita, joista voidaan määrittää skeeman attribuutteihin yhdistettävät toimialueet.

DML: Data Manipulation

DML ( Data Manipulation Language ) tarjoaa komentoja tietojen lisäämiseen, muokkaamiseen ja poistamiseen tietokannan taulukoissa. Näiden tietojen rakenteen on oltava jo määritetty DDL:n kautta. Lisäksi käyttäjälle on etukäteen myönnettävä lupa käyttää tällaisia ​​tietoja DCL:n kautta.

Lisää

Komennon tehtävänä on lisätä tietoja taulukoihin .

Arvojen kohdesarakkeet (tai -kentät) voidaan ilmoittaa komennossa tai olla ilmoittamatta. Jos niitä ei ole ilmoitettu, arvo on välitettävä komennolle jokaiselle taulukon sarakkeelle noudattaen tiukasti itse sarakkeiden järjestystä. Jos taas kohdesarakkeet on ilmoitettu, on mahdollista ilmoittaa vain ne sarakkeet, joiden arvot välitetään, edellyttäen että taulukon kaikkien ei nollasarakkeiden arvot (jotka eivät voi olla nollia) syötetään joka tapauksessa.

Itse lisäyskomento toimii lisäämällä taulukkoon vain yhden rivin kerrallaan. On kuitenkin mahdollista lisätä useampi kuin yksi rivi "automaattisesti" välittämällä lisättävälle riville riviä (tai monikkoa), jotka ovat tuloksena valintakomennolla, kunhan nämä rivit ovat yhteensopivia taulukon sarakkeiden kanssa, joissa tiedot lisätään.

Komentosyntaksin lisäys

  • Yksinkertainen lisäys:
INSERT  INTO  taulukon_nimi 
ARVOT  ( arvoluettelo  , kaikki , taulukon kenttien järjestystä noudattaen , esim . " lahjoitettu " ) ; _ _          

tai

INSERT  INTO  taulukon_nimi  ( lisäykseen liittyvien kenttien luettelo  ) ARVOT ( arvoluettelo , kaikki , noudattaen yllä ilmoitettua kenttien järjestystä , esimerkki " lahjoitettu " ) ; _ _ _ _   
           
  • Lisää valitsemalla:
INSERT  INTO  taulukon_nimi  ( luettelo  lisäykseen liittyvistä  kentistä  , esim . " lahjoitettu " ) AS SELECT ... ;     
 

Päivitä

Päivityskomennolla on kolmoistoiminto, joka muuttaa taulukoiden tietoja .

Kunkin muokattavan kentän nimi tulee ilmoittaa SET - avainsanan jälkeen, ja sen jälkeen tulee olla (yhtä)-symboli =ja uusi arvo, joka sen on saatava.

Voit muuttaa useita kenttiä samalla rivillä yhdellä päivityskomennolla erottamalla ne toisistaan ​​symbolilla ,(pilkulla).

Yleinen komento päivittää kaikki taulukon rivit. Voit rajoittaa määrää käyttämällä lisäavainsanaa WHERE , jonka avulla voit tehdä laadullisen valinnan riveistä asettamalla ehtoja rivien tiedoille ennen päivitystä.

Komentosyntaksin päivitys

  • Yleinen päivitys:
PÄIVITYS  taulukon_nimi 
SET  kentän_nimi1  =  'arvo1_uusi' , 
    kentän_nimi2  =  'arvo2_uusi' , 
     ... 
;
  • Päivitys ehdolla:
PÄIVITYS  taulukon_nimi 
SET  kentän_nimi1  =  'arvo1_uusi' , 
    kentän_nimi2  =  'arvo2_uusi' 
WHERE  kentän_nimi3  =  'arvo' ;

Poista

Poista - komennon tehtävänä on tietojen poistaminen taulukoista.

Kuten päivityskomento, myös delete voi toimia yleisellä tavalla poistamalla kaikki taulukon rivit tai se voi tunnistaa poistettavat rivit käyttämällä lisäavainsanaa WHERE ja siihen liittyvää ehtoa (tai ehtoja).

Komentosyntaksi poista

  • Yleinen poisto:
POISTA  taulukon_nimi ; _ 
  • Poista ehdolla:
DELETE  FROM  taulukon_nimi 
WHERE  kentän_nimi  =  'arvo' ;

Katkaise taulukko

Kuten jo mainittiin, Delete ilman Where-lausetta poistaa kaikki rivit määritetystä taulukosta. On kuitenkin toinen tapa tyhjentää taulukko kokonaan: Katkaise taulukko -komento . Jotkut DBMS-järjestelmät toteuttavat tämän komennon (jota ei ole SQL-standardissa) nopeammin kuin Poista, esimerkiksi poistamalla datatiedoston lukematta sitä ja luomalla sen uudelleen tyhjäksi. Tämä kuitenkin yleensä estää joidenkin lisävarustetietojen, kuten poistettujen rivien määrän, palauttamisen.

Katkaise taulukkokomennon syntaksi

KATKANA  [ TABLE ]  taulukon_nimi

Tapahtuma

Tapahtuma on joukko ohjeita, jotka liittyvät läheisesti toisiinsa. Jos jostain syystä (tietokantajärjestelmän sisäinen virhe, SQL-lauseiden virhe, järjestelmävirhe) jokin käskyistä ei valmistu, koko tapahtuma peruutetaan. Transaktion sanotaan siksi olevan atomioperaatio , eli se ei ole jaettavissa: jos sitä ei suoriteta kokonaan, sitä ei suoriteta ollenkaan. Tämä on yksi eniten käytetyistä työkaluista tietojen eheyden varmistamiseksi.

Kunnes tapahtuma on onnistunut, sen tekemät muutokset näkyvät vain tapahtuman aloittaneelle istunnolle. Eristystasosta riippuen muut käyttäjät voivat käyttää vanhempaa versiota tiedoista tai heidät voidaan asettaa pitoon, kunnes tapahtuma on valmis.

Kaikki DBMS-järjestelmät eivät tue tapahtumia, kun taas toiset tukevat niitä vain tietyissä olosuhteissa (esimerkiksi MySQL :ssä niitä tuetaan vain tietyntyyppisissä taulukoissa). Lisäksi DBMS voi rajoittaa tapahtumat SQL:n osajoukkoon (esimerkiksi MySQL:ssä, jos DDL-komento annetaan, nykyinen tapahtuma päättyy).

Jotkut tietokantajärjestelmät sallivat myös sisäkkäiset tapahtumat. Yhden tapahtuman tekemät muutokset, jotka sisältyvät toiseen tapahtumaan, ovat tehottomia, kunnes uloin tapahtuma on suoritettu onnistuneesti.

Semanttisesti hyvin samanlainen vaihtoehto on tallennuspisteet. Niiden avulla voit tallentaa version tiedoista kesken tapahtuman. Tämän jälkeen on mahdollista peruuttaa koko tapahtuma tai palauttaa jokin aiemmin asetetuista tallennuspisteistä. Tämä tallennus voidaan tehdä ehdollisen koodin lohkossa, mikä tekee tästä ominaisuudesta paljon dynaamisemman kuin sisäkkäiset tapahtumat.

Aloita transaktio

Jos haluat nimenomaisesti aloittaa tapahtuman, käytä BEGIN TRANSACTION -komentoa . Tämän komennon puuttuminen aiheuttaa sen, että jokainen lause toimii erillisenä tapahtumana.

Komentosyntaksi aloita tapahtuma
BEGIN  TRANSACTION  [ tapahtuman_nimi ];

Sitoudu

COMMIT -komentoa käytetään tapahtuman vahvistamiseen . Sen avulla tallennetaan kaikki aiemmin tietoihin tehdyt muutokset.

Komennon syntaksi commit
SITO  [ TAPAHTUMA ]  [ tapahtuman_nimi ];

Palautus

ROLLBACK -komentoa käytetään tapahtuman peruuttamiseen . Sen avulla kaikki aiemmin tietoihin tehdyt muutokset (tapahtuman alusta alkaen) peruuntuvat.

Komentosyntaksin palautus
PALAUTUS  [ TAPAHTUMA ]  [ tapahtuman_nimi ];

DQL: Tietokysely

DQL (data query language) sisältää komennot tietokannan tietojen lukemiseen ja käsittelyyn. Nämä tiedot on syötetty DML:n kautta DDL:llä luotuihin rakenteisiin, kun taas DCL määrittää, voiko käyttäjä käyttää niitä.

Valitse

Select - komennolla meillä on mahdollisuus poimia tiedot kohdistetusti tietokannasta.

Valitse-komennon syntaksi

VALITSE  [  KAIKKI  |  ERILÄ  |  TOP  ] Selection_elements_list  FROM table_list_references 
[ WHERE ehdollinen_lauseke ] [ GROUP BY sarakeluettelo [ HAVING Condition ] ] [ ORDER BY sarakeluettelo ] ; 
   
      
    

missä se on:

  • list_elements_selection on luettelo purettavista kentistä (erotettu toisistaan ​​pilkulla);
  • reference_list_table on luettelo taulukoista, joista tiedot poimitaan;
  • ehdollinen_lauseke edustaa ehtojen luetteloa, eli vaatimuksia, jotka kentän on täytettävä, jotta se voidaan hakea kyselystä (ehdot määritetään käyttämällä vertailuoperaattoreita, loogisia liittimiä ja vertailevia, kuten välillä , in , kuten , on tyhjä );
  • sarakeluettelo on sarake tai sarakkeet, joita on käytettävä viitteenä tulostietojen lajittelussa.

Oletusarvoisesti SELECT -komento toimii ALL - menetelmällä , mutta määrittämällä DISTINCT (tai UNIQUE toteutuksista riippuen) on mahdollista poistaa päällekkäiset rivit tuloksista.

GROUP BY -lausetta käytetään ryhmittelemään tulokset monikon mukaan, kun taas suhteellista HAVING -ehtoa käytetään tulosten suodattamiseen.

 VALITSE  toimittaja ,  summa ( laskun_määrä )  
 laskuista GROUP BY toimittajan MUKAAN  HAVING summa ( laskun_määrä ) > 10 . 000
   
  

Tässä tapauksessa toimittajat, joiden kokonaisliikevaihto on yli 10 000, suodatetaan pois.

ORDER BY -lausetta käytetään lajittelemaan tulokset yhden tai useamman kentän perusteella.

LIMIT (tai TOP , toteutuksista riippuen) rajoittaa annettujen rivien määrää: LIMIT 10 ottaa taulukon ensimmäiset 10 riviä. On myös mahdollista hylätä useita rivejä tulosten alussa lisäämällä parametri LIMIT- tai OFFSET - lauseeseen .

Vakio-SQL:ssä ei ole lajittelua, jos et määritä ORDER BY -lausetta , joten ilman sitä LIMITilla on myös arvaamaton vaikutus.
Esimerkki on seuraava:

 SELECT  DISTINCT  sukunimi ,  etunimi ,  kaupunki_asunto 
 FROM  käyttäjiltä 
 WHERE  vuotta  >  =  18 
 ORDER  BY  sukunimi

Tämä kysely poimii luettelon kaikista aikuisista käyttäjistä lajittelemalla tulos sukunimen mukaan. GROUP BY - ja ORDER BY - lauseissa kenttien nimet voidaan korvata SELECT - toiminnon järjestystä vastaavalla numerolla : viimeisessä tapauksessa ORDER BY sukunimellä voidaan kirjoittaa ORDER BY 1 .

Valinnan määritelmä on kuitenkin paljon laajempi, se tarjoaa monia muita vaihtoehtoja , mutta periaatteessa suurin osa kyselyistä koostuu näistä vaihtoehdoista.

 SELECT  DISTINCT  * 
 käyttäjiltä _ 

tähdellä voit sisällyttää kaikki käyttäjätaulukon sarakkeet valintaan

Valinnan avulla on myös mahdollista suorittaa laskelmia:

Valitse  DISTINCT  cod_art ,  hinta yksikkö * varasto  AS  Yhteensä ,  varasto * rasitus AS TotIngombro  ; artikkeleista _ 
  

tämä tuottaa poimittua dataa, mutta myös laskettua tietoa. AS-lausetta käytetään antamaan nimi uudelle sarakkeelle, joka näytetään suoritetun valinnan tuloksessa.

Monet DBMS-järjestelmät tukevat epästandardia LIMIT-lauseketta, joka on sijoitettava viimeiseksi ja joka voi olla kolmea muotoa:

 LIMIT  < numero_tulokset >
 LIMIT  < sijainti_ensimmäinen_tulos > , < numero_tulokset > 
 RAJA  < numero_tulokset >  [ OFFSET  < position_ensimmäinen_tulos > ]

number_results on poimittavien rivien määrä. pos_first_result on ensimmäisen purettavan rivin indeksi. Yhdessä niillä voidaan jakaa tulokset lohkoiksi ja lukea niitä vähän kerrallaan (esimerkiksi DBA:n mukavuuden vuoksi tai web-sovelluksen näyttämien tulosten sivuttamiseen).

Liity

Valintamuoto, joka koostuu useista taulukoista, joissa on yksi tai useampi yhteinen kenttä, saadaan Join -lauseen kautta .

Alakysely

Alikyselyt voidaan lisätä minne tahansa SQL-kielen salliessa lausekkeen, joka palauttaa yhden arvon, ja FROM-lauseeseen. Tässä toisessa tapauksessa alikyselyjä kutsutaan myös johdetuiksi taulukoiksi.

Varsinaiset alikyselyt voivat palauttaa yksittäisen arvon tai joukon tuloksia, tapauksen mukaan. Melko yksinkertainen esimerkki on se, jossa haluat poimia taulukosta keskiarvon ylittävät numeeriset arvot. Yksi Select ei voi lukea keskiarvoa ja samalla sen ylittäviä arvoja. Tätä tarkoitusta varten meillä on valinta, joka lukee keskiarvon:

SELECT  AVG ( kenttä1 )  FROM  oma_taulukko ;

Tämä kysely sijoitetaan uloimman kyselyn WHERE-lauseeseen; alikysely suoritetaan ensin:

SELECT  *  FROM  oma_taulukko  WHERE  kenttä1  >  ( SELECT  AVG ( kenttä1 )  FROM  oma_taulukko );

Kuten näet, syntaktisesta näkökulmasta on välttämätöntä laittaa alikyselyt suluihin.

Johdetut taulukot

Johdetut taulukot ovat alikyselyn erikoistapaus: sisäinen Select poimii tiedot, jotka sitten ulkoinen valinta kysyy.

Seuraavaa esimerkkiä käytetään opetustarkoituksiin, mutta se ei ole optimaalinen lähestymistapa. Oletetaan kuitenkin, että haluat purkaa tietueet, joiden postikenttä ei ole tyhjä, ja valitse ne käyttäjien joukosta, joiden rekisteröinti on vahvistettu. Näin teet tämän johdetun taulukon kanssa:

SELECT  email  FROM  ( SELECT  sähköposti  FROM  käyttäjiltä  WHERE  vahvista  =  TOSI );

Todellisuudessa johdetut taulukot ovat hyödyllisiä silloin, kun muita mahdollisia lähestymistapoja ei ole, mikä tapahtuu, kun ulkoinen kysely sisältää JOIN.

DCL: Data Control

DCL:ää käytetään antamaan tai peruuttamaan käyttäjille tarvittavat käyttöoikeudet, jotta he voivat käyttää DML- ja DDL-komentoja sekä itse DCL-komentoja (jotka puolestaan ​​​​on voitava muuttaa joidenkin objektien käyttöoikeuksia).

Myönnä

Grant - komento antaa tai myöntää yhden tai useamman käyttöoikeuden tietylle käyttäjälle (esim. luvan lisätä taulukkoon, muokata sitä tai poistaa sitä) ja arvokkaalle järjestelmänvalvojalle.

Peruuta

Peruuta - komento peruuttaa yhden tai useamman käyttöoikeuden tietyltä käyttäjältä (esim. luvan poistaa taulukosta).

Tallennetut ohjelmat

Termi Stored Programs tai Business Logic viittaa rutiineihin, jotka on ohjelmoitu SQL:llä, ja niissä on proseduurilaajennukset, jotka mahdollistavat vuon ohjauksen, silmukat , kohdistimet ja virheiden käsittelyn. Täydellisimmissä SQL-toteutuksissa tallennetut ohjelmat voivat olla erityyppisiä:

Lisäksi jotkin DBMS-järjestelmät, kuten MySQL , antavat sinun luoda SQL-proseduureja, jotka suoritetaan tiettynä aikana vain kerran tai toistuvasti tietyllä aikavälillä, kuten Unix-järjestelmien Cron Jobs.

SQL:n kritiikki

SQL on kyselykieli, joka on suunniteltu vuorovaikutukseen relaatiotietokantojen kanssa. Teoreetikot huomauttavat kuitenkin, että SQL:n alkuperäiset ominaisuudet, jotka ovat inspiroituneet monikkolaskennasta , itse asiassa rikkovat sitä . Sen viimeisimmät laajennukset tukevat täysin relaatiomallia , mutta ovat pahentaneet edellä mainittuja rikkomuksia .

Lisäksi SQL:n käytännön käyttöä kohtaan on esitetty monia kritiikkiä:

  • se ei tarjoa standarditapaa jakaa pitkä komento lyhyemmiksi komentoiksi, joihin voidaan viitata nimellä (vaikka monet toteutukset todella tarjoavat tämän toiminnon);
  • eri toteutukset eivät yleensä ole yhteensopivia keskenään;
  • liian paljon luotetaan NULL -arvoihin , meta-arvoon, jonka joidenkin tutkijoiden mukaan pitäisi osoittaa arvon puuttumista, toisten mukaan sen pitäisi osoittaa tuntematonta arvoa, kun taas käytännössä sitä käytetään molempiin suuntiin tai vain toiseen. , mutta epäjohdonmukaisella tavalla .

Bibliografia

Aiheeseen liittyvät tuotteet

Muut projektit

Ulkoiset linkit