Esimerkkejä SQL-kyselyistä MariaDB:ssä (MySQL). Mikä on SQL? Yksinkertaiset UPDATE-kyselyt MySQL-tietokantaan

Kuinka saan selville tietyn toimittajan valmistamien PC-mallien lukumäärän? Kuinka määrittää tietokoneiden, joilla on samat tekniset ominaisuudet, keskihinta? Näihin ja moniin muihin joihinkin tilastotietoihin liittyviin kysymyksiin voidaan vastata käyttämällä lopulliset (aggregaatti) toiminnot. Standardi tarjoaa seuraavaa aggregaattifunktiot:

Kaikki nämä funktiot palauttavat yhden arvon. Samalla toiminnot COUNT, MIN Ja MAX soveltuu mihin tahansa tietotyyppiin, kun taas SUMMA Ja AVG käytetään vain numeerisissa kentissä. Ero toiminnon välillä LASKEA(*) Ja LASKEA(<имя поля>) on, että toinen ei ota huomioon NULL-arvoja laskettaessa.

Esimerkki. Etsi henkilökohtaisten tietokoneiden vähimmäis- ja enimmäishinta:

Esimerkki. Etsi valmistajan A valmistamien tietokoneiden käytettävissä oleva määrä:

Esimerkki. Jos olemme kiinnostuneita valmistajan A valmistamien eri mallien määrästä, kysely voidaan muotoilla seuraavasti (käyttämällä sitä tosiasiaa, että tuotetaulukkoon jokainen malli kirjataan kerran):

Esimerkki. Selvitä valmistajan A valmistamien eri mallien lukumäärä. Kysely on samanlainen kuin edellinen, jossa piti määrittää valmistajan A valmistamien mallien kokonaismäärä. Täältä tulee myös etsiä eri mallien lukumäärä PC-pöytä (eli ne, jotka ovat myynnissä).

Sen varmistamiseksi, että tilastollisia indikaattoreita hankittaessa käytetään vain yksilöllisiä arvoja, milloin aggregaattifunktioiden argumentti voidaan käyttää DISTINCT-parametri. Toinen parametri ALL on oletusarvo ja olettaa, että kaikki sarakkeen palautetut arvot lasketaan. Operaattori,

Jos meidän on saatava tuotettujen PC-mallien lukumäärä kaikille valmistaja, sinun on käytettävä GROUP BY lauseke, seuraavat syntaktisesti WHERE-lausekkeet.

GROUP BY lauseke

GROUP BY lauseke käytetään määrittämään tulosjonoryhmiä, joihin voidaan soveltaa koontifunktiot (COUNT, MIN, MAX, AVG ja SUM). Jos tämä lauseke puuttuu ja käytetään koostefunktioita, kaikki sarakkeet, joiden nimet on mainittu VALITSE, pitäisi olla mukana aggregaattifunktiot, ja näitä toimintoja käytetään koko rivijoukolle, joka täyttää kyselypredikaatin. Muussa tapauksessa kaikki SELECT-luettelon sarakkeet ei sisälly aggregaattifunktioissa on määritettävä GROUP BY -lauseessa. Tämän seurauksena kaikki tuloskyselyrivit on jaettu ryhmiin, joille on ominaista samat arvoyhdistelmät näissä sarakkeissa.
Tämän jälkeen kuhunkin ryhmään sovelletaan koostefunktioita. Huomaa, että GROUP BY:n kaikkia NULL-arvoja käsitellään samanarvoisina, ts. kun ryhmitellään kentällä, joka sisältää NULL-arvoja, kaikki tällaiset rivit kuuluvat yhteen ryhmään. Jos jos on GROUP BY -lauseke , SELECT-lauseessa ei aggregaattitoimintoja
, kysely palauttaa vain yhden rivin kustakin ryhmästä. Tätä ominaisuutta yhdessä DISTINCT-avainsanan kanssa voidaan käyttää poistamaan päällekkäiset rivit tulosjoukosta.
Katsotaanpa yksinkertaista esimerkkiä:
VALITSE malli, COUNT(malli) AS määrä_malli, AVG(hinta) AS keskihinta
PC:ltä

GROUP BY mallin mukaan; Tässä pyynnössä jokaiselle PC-mallille määritetään niiden lukumäärä ja keskimääräiset kustannukset
. Kaikki rivit, joilla on sama malliarvo, muodostavat ryhmän, ja SELECT-tulostus laskee kunkin ryhmän arvojen lukumäärän ja keskihinta-arvot. Kyselyn tulos on seuraava taulukko: malli Määrä_malli
1121 3 850.0
1232 4 425.0
1233 3 843.33333333333337
1260 1 350.0

Avg_price

Jos SELECT:ssä olisi päivämääräsarake, nämä indikaattorit olisi mahdollista laskea kullekin tietylle päivämäärälle. Tätä varten sinun on lisättävä päivämäärä ryhmittelysarakkeeksi, jonka jälkeen koontifunktiot lasketaan kullekin arvoyhdistelmälle (malli-päivämäärä). On olemassa useita erityisiä:

  • aggregaattitoimintojen suorittamista koskevat säännöt Jos pyynnön seurauksena rivejä ei vastaanotettu
  • (tai useamman kuin yhden rivin tietylle ryhmälle), silloin ei ole lähdetietoja minkään aggregaattifunktion laskemiseen. Tässä tapauksessa COUNT-funktioiden tulos on nolla ja kaikkien muiden funktioiden tulos on NULL. Argumentti aggregaattitoiminto itse ei voi sisältää aggregaattifunktioita
  • (funktio funktiosta). Ne. yhdellä kyselyllä on mahdotonta saada esimerkiksi keskiarvojen maksimi. COUNT-funktion suorittamisen tulos on kokonaisluku
  • (KOKONAISLUKU). Muut koontifunktiot perivät käsittelemiensä arvojen tietotyypit. Jos SUM-funktio tuottaa tuloksen, joka on suurempi kuin käytetyn tietotyypin maksimiarvo,.

virhe Joten jos pyyntö ei sisällä GROUP BY -lausekkeet aggregaattifunktiot, Tuo mukana SELECT-lauseke GROUP BY lauseke, jokainen rivijoukko, jolla on samat arvot sarakkeessa tai sarakeryhmässä määritellyllä sarakkeella GROUP BY lauseke, muodostaa ryhmän ja aggregaattifunktiot suoritetaan jokaiselle ryhmälle erikseen.

ON TARJOUS

Tämän jälkeen kuhunkin ryhmään sovelletaan koostefunktioita. Huomaa, että GROUP BY:n kaikkia NULL-arvoja käsitellään samanarvoisina, ts. kun ryhmitellään kentällä, joka sisältää NULL-arvoja, kaikki tällaiset rivit kuuluvat yhteen ryhmään. WHERE-lauseke määrittää sitten predikaatin rivien suodattamiseen ON TARJOUS pätee ryhmittelyn jälkeen määrittääksesi samanlaisen predikaatin, joka suodattaa ryhmät arvojen mukaan aggregaattifunktiot. Tätä lauseketta tarvitaan käyttämällä saatujen arvojen validointiin aggregaattitoiminto ei määritetyn tietuelähteen yksittäisiltä riveiltä FROM lausekkeesta, ja alkaen tällaisten linjojen ryhmiä. Siksi tällaista tarkistusta ei voida sisällyttää WHERE-lauseke.

TietotyypitSQL(Kutens, kuten standardissa)

Merkkijonotyypit

Numeeriset tietotyypit

Valuutta, merkki, binääritietotyypit

Boolen tyyppi. Siirrot

Esimerkkejä yksinkertaisista SQL-kyselyistä

Yksinkertaisimmat SELECT-kyselyt

SQL SELECT -lause on tärkein ja yleisimmin käytetty käsky. Se on suunniteltu hakemaan tietoa tietokantataulukoista.

SELECT-käskyn yksinkertaistettu syntaksi on seuraava.

VALITSE [ KAIKKI | DISTINCT ] select_item_commalist

FROM table_reference_commalist

[WHERE ehdollinen_lauseke]

[GROUP BY sarakkeen_nimi_commalist]

[ HAVING ehdollinen_lauseke ]

[ ORDER BY order_item_commalist ]

Hakasulkeet osoittavat elementtejä, joita ei välttämättä ole pyynnössä. SELECT-avainsana kertoo tietokannalle sen tämä ehdotus

on tiedonhakupyyntö.

Sanan SELECT jälkeen pilkuilla erotettuna luetellaan niiden kenttien nimet (määriteluettelo), joiden sisältöä pyydetään.

Vaadittu avainsana SELECT-kyselylauseessa on sana FROM. FROM-avainsanaa seuraa pilkuilla eroteltu luettelo taulukoiden nimistä, joista tiedot haetaan.

Valitse esimerkiksi elokuvasta nimi, kuvaus

Kaikkien SQL-kyselyiden tulee päättyä symboliin ";" (puolipiste). Tämän kyselyn tuloksena on taulukko...

Tämän taulukon sarakkeiden järjestys vastaa kyselyssä määritettyjen kenttien järjestystä

Jos haluat näyttää kaikkien taulukon sarakkeiden arvot, voit käyttää “*” (tähti) -symbolia sen sijaan, että luettelet niiden nimet.

VALITSE * elokuvasta;

Kiinnitetään vielä kerran huomiosi siihen, että SQL-kyselyn tuloksena saadut taulukot eivät täysin täytä relaatiosuhteen määritelmää. Erityisesti ne voivat sisältää monikoita (rivejä), joilla on identtiset attribuuttiarvot.

Esimerkiksi kysely "näyttelijöiden nimien luettelo" voidaan kirjoittaa seuraavasti.

valitse näyttelijän etunimi;

Sen tulos on taulukko, taulukko sisältää identtiset rivit. Jos haluat sulkea pois päällekkäiset tietueet SELECT-kyselyn tuloksesta, käytä DISTINCT-avainsanaa.

Jos VALITSE kysely hakee useita kenttiä, DISTINCT eliminoi päällekkäiset rivit, joissa kaikkien valittujen kenttien arvot ovat identtisiä.

Edellinen kysely voidaan kirjoittaa seuraavasti.

valitse näyttelijän eri etunimi;

Tämän seurauksena saamme taulukon, jossa päällekkäiset rivit jätetään pois.

ALL-avainsana toimii päinvastoin kuin DISTINCT, mikä tarkoittaa, että tulokseen sisällytetään päällekkäisiä rivejä.

ALL-avainsanan määrittelemä tila on oletusarvoinen, joten sitä ei käytännössä käytetä näihin tarkoituksiin todellisissa kyselyissä. Käytä sisään SELECT-lause

WHERE-lauseen avulla voit määrittää ehtolausekkeen (predikaatin), jonka arvo on tosi tai epätosi SELECT-käskyn käyttämille taulukon rivin kenttäarvoille.

WHERE-lause määrittää, mitkä rivit määritetyistä taulukoista tulee valita.

Kyselyn tuloksena oleva taulukko sisältää vain ne rivit, joille WHERE-lauseessa määritetty ehto (predikaatti) on tosi.

Esimerkki: Kirjoita kysely, joka hakee kaikkien toimijoiden sukunimet, joiden nimi on PENELOPE valitse näyttelijän sukunimi jossa etunimi="PENELOPE";< (меньше), >Lauseessa määritellyissä<- (меньше или равно), <>MISSÄ olosuhteet

Vertailuoperaatioita, jotka on määritelty operaattoreilla = (yhtä), > (suurempi kuin), voidaan käyttää.

= (suurempi tai yhtä suuri kuin),

(ei ole yhtä suuri), samoin kuin loogiset operaattorit AND, OR ja NOT.< 60 and rental_rate < 3

Esimerkiksi pyyntö saada nimet ja kuvaukset lyhytelokuville (lyhyt kuin 60 minuuttia), joiden vuokraus maksaa alle 3 dollaria, näyttää tältä:

valitse elokuvasta nimi, kuvaus

missä pituus

Tämän kyselyn tulos näyttää tältä:


vuokraus - vuokraus
1. inventaario - varasto, varastot
2. myymälä - varasto, kauppa
3. Artikkelin sisältö
4. Yksinkertaiset UPDATE (korvaa, liitä) kyselyt
5. Yksinkertaiset DELETE (poista tietueet) -kyselyt
6. Yksinkertaiset DROP (delete table) -kyselyt
7. Monimutkaiset MySQL-kyselyt
8. MySQL-kyselyt ja PHP-muuttujat

1. Yksinkertaisimmat SQL-kyselyt

1. Näyttää luettelon KAIKISTA tietokannoista.

SHOW-tietokannat;
2. Luetteloi KAIKKI taulukot tietokannassa base_name.

NÄYTÄ taulukot kohdassa kantanimi;

2. Yksinkertaiset SELECT-kyselyt MySQL-tietokantaan

VALITSE– kysely, joka valitsee tietokannasta olemassa olevat tiedot. Voit määrittää valintaa varten tietyt valintaparametrit. Esimerkiksi venäjänkielisen pyynnön olemus kuulostaa tältä: SELECT sellaiset ja sellaiset sarakkeet FROM sellaisesta ja sellaisesta taulukosta WHERE tämän ja sellaisen sarakkeen parametri on yhtä suuri kuin arvo.

1. Valitsee KAIKKI tiedot taulukosta tbl_name.

SELECT * FROM tbl_name;
2. Näyttää tietueiden määrän taulukossa tbl_name.

SELECT count(*) FROM tbl_name;
3. Valitsee (SELECT) taulukosta (FROM) tbl_name limit (LIMIT) 3 tietuetta alkaen 2:sta.

SELECT * FROM tbl_name RAJA 2,3;
4. Valitsee (VALITSE) KAIKKI (*) tietueet (FROM) taulukosta tbl_name ja lajittelee ne (ORDER BY) id-kentän mukaan järjestykseen.

SELECT * FROM tbl_nimi ORDER BY id;
5. Valitsee (VALITSE) KAIKKI tietueet (FROM) tbl_name-taulukosta ja lajittelee ne (ORDER BY) id-kentän mukaan KÄÄNTEISESSÄ järjestyksessä.

SELECT * FROM tbl_nimi ORDER BY id DESC;
6. Valitsee ( VALITSE) KAIKKI (*) tietueet kohteesta ( FROM) taulukoita käyttäjiä ja lajittelee ne ( TILAA) kentän poikki id nousevassa järjestyksessä, raja ( RAJOITTAA) 5 ensimmäistä merkintää.

SELECT * FROM käyttäjiltä ORDER BY id LIMIT 5;
7. Valitsee kaikki tietueet taulukosta käyttäjiä, missä on kenttä fname vastaa arvoa Gena.

SELECT * FROM käyttäjät WHERE fname="Gena";
8. Valitsee kaikki tietueet taulukosta käyttäjiä, jossa kentän arvo fname alkaa kanssa Ge.

SELECT * FROM käyttäjiltä WHERE fname LIKE "Ge%";
9. Valitsee kaikki tietueet taulukosta käyttäjiä, Missä fname päättyy na ja lajittelee tietueet arvon nousevaan järjestykseen id.

SELECT * FROM käyttäjiltä WHERE fname LIKE "%na" ORDER BY id;
10. Valitsee kaikki tiedot sarakkeista fname, nimi pöydältä käyttäjiä.

SELECT fname, lname FROM käyttäjiltä;

11. Oletetaan, että käyttäjätietotaulukossasi on maa. Joten jos haluat näyttää VAIN luettelon esiintyvistä arvoista (joten esimerkiksi Venäjää ei näytetä 20 kertaa, vaan vain kerran), käytämme DISTINCT. Se tuo Venäjän, Ukrainan ja Valko-Venäjän pois toistuvien arvojen joukosta. Pöydästä siis käyttäjiä kaiuttimet maassa KAIKKI YKSILÖISET arvot tulostetaan

VALITSE ERI maa käyttäjiltä;
12. Valitsee KAIKKI rivitiedot taulukosta käyttäjiä Jossa ikä on arvot 18,19 ja 21.

SELECT * FROM käyttäjiltä WHERE ikä IN (18,19,21);
13. Valitsee MAXIMUM-arvon ikä taulukossa käyttäjiä. Eli jos sinulla on suurin arvo taulukossasi ikä(englanninkielisestä iästä) on 55, niin kyselyn tulos on 55.

SELECT max(ikä) käyttäjiltä;
14. Valitse tiedot taulukosta käyttäjiä kenttien mukaan nimi Ja ikä JOSSA ikä ottaa pienimmän arvon.

VALITSE nimi, min(ikä) käyttäjiltä;
15. Valitse tiedot taulukosta käyttäjiä kentän poikki nimi JOSSA id EI YHTÄÄN 2.

SELECT nimi FROM users WHERE id!="2";

3. Yksinkertaiset INSERT (uusi merkintä) -kyselyt

LISÄÄ– kysely, jonka avulla voit ALKUUN lisätä tietueen tietokantaan. Eli se luo UUDEN tietueen (rivin) tietokantaan.

1. Tekee uuden merkinnän taulukkoon käyttäjiä, kentällä nimi lisää Sergey, ja kentällä ikä lisää 25. Siten taulukkoon lisätään uusi rivi näillä arvoilla. Jos sarakkeita on enemmän, loput jäävät joko tyhjiksi tai oletusarvoin.

INSERT INTO käyttäjiin (nimi, ikä) ARVOT ("Sergey", "25");

4. Yksinkertaiset UPDATE-kyselyt MySQL-tietokantaan

PÄIVITTÄÄ– kysely, jonka avulla voit VARAA kenttäarvoja tai LISÄÄ jotain jo olemassa olevaan tietokannan riviin. Esimerkiksi siellä on valmis rivi, mutta ikäparametri on kirjoitettava siihen uudelleen, koska se on muuttunut ajan myötä.

1. Taulukossa käyttäjiä ikä tulee 18.

UPDATE käyttäjät SET ikä = "18" WHERE id = "3";
2. Kaikki on sama kuin ensimmäisessä pyynnössä, se näyttää vain pyynnön syntaksin, jossa kaksi tai useampi kenttää korvataan.
Taulukossa käyttäjiä WHERE-tunnus on 3 kentän arvoa ikä täyttää 18 ja maassa Venäjä.

UPDATE käyttäjät SET ikä = "18", maa = "Venäjä" WHERE id = "3";

5. Yksinkertaiset DELETE (delete record) -kyselyt MySQL-tietokantaan

POISTAA– kysely, joka poistaa rivin taulukosta.

1. Poistaa rivin taulukosta käyttäjiä JOSSA id vastaa 10.

POISTA käyttäjiltä WHERE id = "10";

6. Yksinkertaiset DROP (delete table) -kyselyt MySQL-tietokantaan

PUDOTA– kysely, joka poistaa taulukon.

1. Poistaa koko taulukon tbl_name.

DROP TABLE tbl_name;

7. Monimutkaiset kyselyt MySQL-tietokantaan

Mielenkiintoisia kyselyitä, joista voi olla hyötyä kokeneillekin käyttäjille

VALITSE tunnus, nimi, maa FROM käyttäjiltä, ​​järjestelmänvalvojilta WHERE TO_DAYS(NOW()) - TO_DAYS(rekisteröintipäivä)<= 14 AND activation != "0" ORDER BY registration_date DESC;
Tämä monimutkainen kysely SELECTS saraketta id, nimi, maa TAULUKKOISSA käyttäjät, ylläpitäjät JOSSA rekisteröintipäivä(päivämäärä) ei vanhempi 14 päivää I aktivointi EI TASUTA 0 , LAJITTELU rekisteröintipäivä käänteisessä järjestyksessä (uusi ensin).

PÄIVITYS käyttäjät SET ikä = "18+" WHERE ikä = (VALITSE ikä FROM käyttäjistä WHERE mies = "mies");
Yllä on esimerkki ns pyyntö pyynnön sisällä SQL:ssä. Päivitä käyttäjien ikä yli 18-vuotiaaksi, jossa sukupuoli on mies. En suosittele tällaisia ​​pyyntövaihtoehtoja. Henkilökohtaisesta kokemuksesta sanon, että on parempi luoda useita erillisiä - ne käsitellään nopeammin.

8. MySQL- ja PHP-tietokantakyselyt

PHP-sivun MySQL-kyselyissä voit lisätä muuttujia vertailuarvoiksi jne. Pari esimerkkiä

1. Valitsee kaikki tietueet taulukosta käyttäjiä, missä on kenttä fname vastaa muuttujan arvoa $nimi.

SELECT * FROM käyttäjät WHERE fname="$nimi";
2. Taulukossa käyttäjiä WHERE-tunnus on 3 kentän arvoa ikä muuttuu $age-muuttujan arvoksi.

PÄIVITYS käyttäjät SET ikä = "$ikä" WHERE id = "3";

Huomio! Jos olet kiinnostunut jostain muusta esimerkistä, kirjoita kysymys kommentteihin!

Tämä liite sisältää tiiviimmän kuvauksen erilaisista SQL-komennoista. Tavoitteena on antaa sinulle nopea ja tarkka viittaus ja määritelmä SQL:stä. Tämän sovelluksen ensimmäisessä osassa määritellään elementit, joita käytetään SQL-komentojen luomiseen. toiseksi yksityiskohdat syntaksista ja lauseista sekä lyhyt kuvaus itse komennoista. Seuraavassa näkyvät vakiosopimukset (kutsutaan BNF-ehdoksi):

  • Avainsanat kirjoitetaan isoilla kirjaimilla.
  • SQL ja muut erikoistermit on suljettu kulmasuluissa ja kirjoitettu kursiivilla.(< ja >)
  • Komentojen valinnaiset osat on suljettu hakasulkeisiin ().
  • Ellipsi (....) osoittaa, että komennon edellinen osa voidaan toistaa kuinka monta kertaa tahansa.
  • Pystypalkki (|) tarkoittaa, että sitä edeltävä voidaan korvata sitä seuraavalla.
  • Kaarevat hakasulkeet ((ja)) osoittavat, että kaikkea niiden sisällä on käsiteltävä kokonaislukuna muiden merkkien (kuten pystypalkkien tai ellipsien) arvioimiseksi.
  • Kaksoispiste ja yhtäläisyys (:: =) tarkoittavat, että niitä seuraava on niitä edeltävän määritelmä.

    Lisäksi käytämme seuraavaa sekvenssiä (.,..) osoittamaan, että sitä edeltävä voi toistua kuinka monta kertaa tahansa, yksittäiset tapahtumat erotellaan pilkuilla. Attribuutit, jotka eivät ole osa virallista standardia, merkitään kuvaukseen (*epästandardi*).

    HUOMAA: Tässä käyttämämme terminologia ei ole virallista ANSI-terminologiaa. Virallinen terminologia voi olla hyvin hämmentävää, joten olemme yksinkertaistaneet sitä jonkin verran.

    Tästä syystä käytämme joskus muita ehtoja kuin ANSI tai samoja ehtoja, mutta hieman eri tavalla. Esimerkiksi määritelmämme on< predicate >eroaa ANSI-standardin määritelmäyhdistelmästä< predicate >Kanssa< search condition >.

    SQL-ELEMENTIT

    Tässä osassa määritellään SQL-komentojen elementit. Ne on jaettu kahteen luokkaan: Kielen peruselementit, Ja Kielen toiminnalliset elementit.

    Peruselementit- Tämä luotuja lohkoja kieli; Kun SQL tutkii komentoa, se arvioi ensin jokaisen komentotekstin merkin näiden elementtien suhteen. Erottimet< separator >erottaa yksi osa ryhmästä toisesta; kaikki, mikä on erottimien välissä< separator >käsitellään moduulina. Tämän jaon perusteella SQL tulkitsee komennon.

    Toiminnalliset elementit ovat monia muita asioita kuin avainsanoja, jotka voidaan tulkita moduuleiksi. Nämä ovat komennon osia, jotka on erotettu erottimilla< separator >, joilla on erityinen merkitys SQL:ssä. Jotkut niistä ovat erityisiä tiettyjä komentoja ja kuvataan yhdessä näiden komentojen kanssa myöhemmin tässä liitteessä. Tässä on listattu yhteisiä elementtejä kaikille kuvatuille komennoille. Toiminnalliset elementit voidaan määritellä keskenään tai jopa omin ehdoin. Esimerkiksi predikaatti< predicate >, viimeinen ja vaikein tapauksemme, sisältää predikaatin omassa määritelmässään. Tämä johtuu predikaatista< predicate >AND:n tai OR:n käyttö voi sisältää minkä tahansa määrän predikaatteja< predicate >joka voi toimia itsenäisesti. Esitimme sinulle predikaatin< predicate >tämän liitteen erillisessä osiossa tämän kielen toiminnallisen elementin monimuotoisuuden ja monimutkaisuuden vuoksi. Hän on jatkuvasti läsnä keskusteltaessa ryhmien muista toiminnallisista osista.

    PERUSKIELEN OSAT

    ELEMENTIN MÄÄRITELMÄ< separator > < comment > | < space > | < newline > < comment > --< string > < newline > < space >tilaa< newline >toteutuksen määrittelemä loppu merkkijono < identifier > < letter >[{< letter or digit > | < underscore}... ] < ИМЕЙТЕ ВВИДУ: Следу строгому стандарту ANSI, символы должны быть набраны в isot kirjaimet, ja tunniste< identifier >ei saa olla pidempi kuin 18 merkkiä. ELEMENTIN MÄÄRITELMÄ< underscore > - < percent sign > % < delimiter >jokin seuraavista: , ()< > . : = + " - | <> > = < = или < string > < string >[kaikki kirjoitetut tekstit lainausmerkeissä] Huomautus: In< string >, kaksi peräkkäistä lainausmerkkiä (" ") tulkitaan yhdeksi (").< SQL term >päättyy pääkielestä riippuen. (*vain sisäkkäinen*)

    TOIMINNALLISET ELEMENTIT

    Seuraava taulukko näyttää toiminnallisia elementtejä SQL-komennot ja niiden määritelmät: ELEMENT DEFINITION< query >SELECT-lauseke< subquery >SELECT-lause, joka on suljettu sulkeisiin toisen lauseen sisällä, joka itse asiassa arvioidaan erikseen kunkin toisen lauseen ehdokasriville.< value expression > < primary > | < primary > < operator > < primary > | < primary > < operator > < value expression > < operator >jokin seuraavista: + - / *< primary > < column name > | < literal > | < aggregate function > | < built-in constant > | < nonstandard function > < literal > < string > | < mathematical expressio ЭЛЕМЕНТ ОПРЕДЕЛЕНИЕ < built-in constant >KÄYTTÄJÄ |< implementation-dehned constant > < table name > < identifier > < column spec > [< table name > | < alias >.]< column name > < grouping column > < column spec > | < integer > < ordering column > < column spec > | < integer > < colconstraint >EI NULL | AINUTLAATUINEN | TARKISTA (< predicate >) | ENSISIJAINEN AVAIN | VIITTEET< table name >[(< column name >)] < tabconstraint >UNIQUE (< column list >) | TARKISTA (< predicate >) | ENSISIJAINEN AVAIN (< column list >) | ULKOINEN AVAIN (< column list >) VIITTEET< table name >[(< column list >)] < defvalue >OLETUSARVO =< value expression > < data type >Kelvollinen tietotyyppi (katso liite B, jos haluat kuvauksen ANSI:n tarjoamista tyypeistä, tai liite C muista yleisistä tyypeistä.)< size >Arvo riippuu< data type >(Katso liite B.)< cursor name > < identifier > < index name > < identifier > < synonym > < identifier >(*epästandardi*)< owner > < Authorization ID > < column list > < column spec > .,.. < value list > < value expression > .,.. < table reference > { < table name > [< alias >] } .,..

    PREDIKAATIT

    Seuraavassa on luettelo eri predikaattityypeistä< predicate >kuvattu seuraavilla sivuilla:

    < predicate > ::=

    { < comparison predicate > | < in predicate > | < null predicate > | < between predicate > | < like predicate > | < quantified predicate > | < exists predicate > } < predicate >on lauseke, joka voi olla tosi, epätosi tai tuntematon, paitsi< exists predicate >Ja< null predicate >, joka voi olla vain totta tai tarua.

    Tuntematon vastaanotetaan, jos NULL-arvot estävät vastaanotetun vastauksen tulostuksen. Tämä tapahtuu milloin tahansa NULL arvo vertaa mihin tahansa arvoon. Vakiooperaattorit Boolen arvoa - AND, OR ja NOT - voidaan käyttää predikaatin kanssa. EI tosi = epätosi, EI epätosi = tosi ja EI tuntematon = tuntematon. AND- ja OR-tulokset yhdessä predikaattien kanssa on esitetty seuraavissa taulukoissa:

    JA JA tosi Väärin Tuntematon Tosi tosi väärä tuntematon Väärä väärä väärä väärä Tuntematon tuntematon epätosi tuntematon TAI tosi Väärä Tuntematon Todella totta totta totta Väärä totta tuntematon Tuntematon tosi tuntematon tuntematon

    Nämä taulukot luetaan samalla tavalla kuin kertotaulukko: yhdistät rivien tosi, väärät tai tuntemattomat arvot niiden sarakkeisiin saadaksesi tuloksen hiusristikkoon. Esimerkiksi JA-taulukossa kolmas sarake (Tuntematon) ja ensimmäinen rivi (True) risteyksessä oikeassa yläkulmassa antavat tuloksen - tuntematon, toisin sanoen: True AND Tuntematon = tuntematon. Laskujen järjestys määräytyy suluissa. He eivät esittele itseään joka kerta. EI arvioidaan ensin, sen jälkeen AND ja OR. Erilaisia ​​tyyppejä predikaatit< predicate >käsitellään erikseen seuraavassa jaksossa.

    < comparison predicate >(vertailupredikaatti)

    Syntaksi

    < value expresslon > < relational op > < value expresslon > |
    < subquery >
    < relatlonal op > :: =
    =
    | <
    | >
    | <
    | >=
    | < >

    Jos jompikumpi< value expression >= NULL, tai< comparison predicate >= tuntematon; toisin sanoen se on totta, jos vertailu on tosi tai epätosi, jos vertailu on epätosi.
    < relational op >on vakiomatemaattiset arvot numeerisia arvoja; muille arvotyypeille nämä arvot ovat toteutuskohtaisia.
    Molemmat< value expression >on oltava vertailukelpoisia tietotyyppejä. Jos alikysely< subquery >käytetään, sen tulee sisältää yksi lauseke< value expression >SELECT-lauseessa, jonka arvo korvaa toisen lausekkeen< value expression >vertailupredikaatissa< comparision predicate >, joka kerta< subquery >todella täyttynyt.

    < between predicate >

    Syntaksi

    < value expression >VÄLILLÄ< value expression >
    JA< value expression >

    < between predicate >- A B:N JA C:N VÄLILLÄ on sama merkitys kuin< predicate >- (A >= B JA< = C). < between predicate >jolle A EI B:N JA C:N VÄLILLÄ on sama merkitys kuin EI (B:N JA C:N VÄLILLÄ).< value expression >voidaan päätellä käyttämällä epätyypillistä kyselyä< subquery >(*epästandardi*).

    < in prediicate >

    Syntaksi

    < value expression >IN< value list > | < subquery >

    Luettelo arvoista< value list >koostuu yhdestä tai useammasta suluissa olevasta arvosta, jotka erotetaan pilkuilla, joilla on vertailukelpoisia< value expression >tietotyyppi. Jos käytetään alikyselyä< subquery >, sen tulee sisältää vain yksi lauseke< value expression >SELECT-lauseessa (mahdollisesti enemmän, mutta tämä on ANSI-standardin ulkopuolella). Alakysely< subquery >itse asiassa se suoritetaan erikseen jokaiselle pääkyselyn ehdokasriville, ja sen antamat arvot muodostavat arvoluettelon< value list >tälle riville. Joka tapauksessa predikaatti< in predicate >on totta, jos ilmaus< value expression >esitetään arvoluettelossa< value list >, jos EI on määritetty. Lause A NOT IN (B, C) vastaa lausetta EI (A IN (B, C)).

    < like predicate >

    Syntaksi

    < charvalue >PITÄÄ< pattern >

    < charvalue >on mikä tahansa *epästandardi* lauseke< value expression >aakkosnumeerinen tyyppi.< charvalue >ehkä standardin mukaan vain tietty sarake< column spec >. Näyte< pattern >koostuu merkkijonosta, jonka kanssa tarkistetaan vastaavuus< charvalue >. Loppusymboli< escapechar >on yksi aakkosnumeerinen merkki. Ottelu tapahtuu, jos seuraavat ehdot täyttyvät:

  • Jokaiselle alaviivalle< underscore >näytteessä< pattern >jota ei edeltä lopetusmerkki< escapechar >, on yksi vastaava symboli< charvalue >.
  • Kaikille< percent sign >näytteessä< pattern >, joka ei edellytä< escapechar >, siinä on nollia tai useampia vastaavia merkkejä< charvalue >.
  • Kaikille< escapechar >V< pattern >joka ei edeltä toista< escapechar >, siinä ei ole vastaavaa merkkiä< charvalue >.
  • Jokaiselle toiselle hahmolle< pattern >, sama symboli on asetettu vastaavaan merkkiin< charvalue >.

    Jos ottelu tapahtuu,< like predicate >- tosi, jos EI määritetty. Ilmaus NOT LIKE "teksti" vastaa sanaa EI (A LIKE "teksti").

    < null predicate >

    Syntaksi

    < column spec >ON NULL

    < column spec >= ON NULL, jos tässä sarakkeessa on NULL-arvo. Se onnistuu< null predicate >tosi, jos NULL-arvoa ei ole määritetty. Lause< column spec >IS NOT NULL, sillä on sama tulos kuin NOT (< column spec >ON NULL).

    < quantified predicate >

    Syntaksi

    < value expression > < relational op >
    < quantifier > < subquery >
    < quantifier >::= KAIKKI | KAIKKI | JOITAKIN

    Alikyselyn SELECT-lauseke< subquery >tulee sisältää yksi ja vain yksi arvolauseke< value expression >. Kaikki alikyselyn palauttamat arvot< subquery >muodostaa joukko tuloksia< result set >. < value expression >verrattuna operaattoriin< relational operator >, jokaisella tulosjoukon jäsenellä< result set >. Tätä vertailua arvioidaan seuraavasti:

  • Tämän jälkeen kuhunkin ryhmään sovelletaan koostefunktioita. Huomaa, että GROUP BY:n kaikkia NULL-arvoja käsitellään samanarvoisina, ts. kun ryhmitellään kentällä, joka sisältää NULL-arvoja, kaikki tällaiset rivit kuuluvat yhteen ryhmään.< quantifier >= KAIKKI ja jokainen tulosjoukon jäsen< result set >tekee tästä vertailusta totta,< quantified predicate >- totta.
  • Tämän jälkeen kuhunkin ryhmään sovelletaan koostefunktioita. Huomaa, että GROUP BY:n kaikkia NULL-arvoja käsitellään samanarvoisina, ts. kun ryhmitellään kentällä, joka sisältää NULL-arvoja, kaikki tällaiset rivit kuuluvat yhteen ryhmään.< quantifier >= KAIKKI ja tulosjoukossa on vähintään yksi jäsen< result set >, mikä tekee tästä vertailusta totta< quantified predicate >on oikein.
  • Jos tulos asetettu< result set >tyhjää siis< quantified predicate >totta jos< quantifier >= KAIKKI ja epätosi, jos toisin.
  • Tämän jälkeen kuhunkin ryhmään sovelletaan koostefunktioita. Huomaa, että GROUP BY:n kaikkia NULL-arvoja käsitellään samanarvoisina, ts. kun ryhmitellään kentällä, joka sisältää NULL-arvoja, kaikki tällaiset rivit kuuluvat yhteen ryhmään.< quantifier >= SOME, vaikutus on sama kuin KAIKKI.
  • Tämän jälkeen kuhunkin ryhmään sovelletaan koostefunktioita. Huomaa, että GROUP BY:n kaikkia NULL-arvoja käsitellään samanarvoisina, ts. kun ryhmitellään kentällä, joka sisältää NULL-arvoja, kaikki tällaiset rivit kuuluvat yhteen ryhmään.< quantified predicate >ei totta eikä uskoton, hän on tuntematon.

    < exists predicate >

    Syntaksi:

    OLEMASSA (< subquery >)

    Jos alikysely< subquery >tulostaa yhden tai useamman rivin tulosteita,< exists predicate >- uskollinen; ja väärin jos toisin.

    SQL-KOMENNOT

    Tässä osassa kerrotaan eri SQL-komentojen syntaksista. Tämä antaa sinulle mahdollisuuden etsiä komentoa nopeasti, löytää sen syntaksi ja lyhyt kuvaus sen toiminnasta.

    MUISTA: Sanalla alkavia komentoja - EXEC SQL sekä sanaan päättyviä komentoja tai lauseita - voidaan käyttää vain sisäkkäisissä SQL:issä.

    ALOITA ILMOITUSOSIO

    Syntaksi

    EXEC SQL BEGIN DECLARE SECTION< SQL term > < host-language variable declarations >EXEC SQL END DECLARE SECTION< SQL term >

    Tämä komento luo pääkieliohjelmasta osan, joka ilmoittaa sisäkkäisissä SQL-käskyissä käytettävät päämuuttujat. SQLCODE-muuttuja on sisällytettävä yhtenä ilmoitetuista isäntäkielen muuttujista.

    SULJE KUORSIN

    Syntaksi

    SUORITA SQL CLOSE CURSOR< cursor name > < SQL term >;

    Tämä komento käskee kohdistimen sulkeutumaan, minkä jälkeen siitä ei voi hakea arvoa ennen kuin se avataan uudelleen.

    SITOA (TYÖTÄ)

    Syntaksi

    Tämä komento jättää ennalleen kaikki tietokantaan tehdyt muutokset, kunnes nykyinen tapahtuma päättyy ja uusi tapahtuma alkaa.

    LUO HAKEMISTO

    (*EI STANDARDI*)

    Syntaksi

    LUO HAKEMISTO< Index name >
    PÄÄLLÄ< table name > (< column list >);

    Tämä komento luo tehokkaan reitin kanssa nopea pääsy etsiäksesi rivejä, jotka sisältävät määritetyt sarakkeet. Jos määritetään UNIQUE, taulukko ei voi sisältää päällekkäisiä arvoja näissä sarakkeissa.

    LUO SYNONYMI (*EI STANDARDI*)
    (LUO SYNONYMI) (*EI STANDARDI*)

    Syntaksi

    LUO JULKINEN SYNONYMI< synonym >FOR
    < owner >.< table name >;

    Tämä komento luo taulukolle vaihtoehdon (synonyymin). Synonyymi kuuluu sen luojalle ja itse taulukko yleensä toiselle käyttäjälle. Käyttämällä synonyymiä sen omistajan ei tarvitse viitata taulukkoon sen koko nimellä (mukaan lukien sen omistaja). Jos JULKINEN on määritetty, synonyymi kuuluu JÄRJESTELMÄ-hakemistoon ja on siksi kaikkien käyttäjien käytettävissä.

    LUO TAULU

    Syntaksi

    LUO TAULU< table name >
    ({< column name > < data type >[< size >]
    [< colconstralnt > . . .]
    [< defvalue >]} . , . . < tabconstraint > . , . .);

    Komento luo taulukon tietokantaan. Tämän taulukon omistaa sen luoja. Sarakkeet käsitellään nimijärjestyksessä.< data type >- määrittää tietotyypin, jonka sarake sisältää. Vakio< data type >kuvattu lisäyksessä B; kaikki muut käytetyt tietotyypit< data type >, käsitellään liitteessä C . Koko arvo< size >riippuu tietotyypistä< data type >.
    < colconstraint >Ja< tabconstraint >asettaa rajoituksia arvoille, jotka voidaan syöttää sarakkeeseen.
    < defvalue >määrittää (oletus) arvon, joka lisätään automaattisesti, jos tälle riville ei ole määritetty muuta arvoa. (Katso luvusta 17 lisätietoja itse CREATE TABLE -komennosta ja luvusta 18 JA lisätietoja rajoituksista ja< defvalue >).

    LUO NÄKYMÄ

    Syntaksi

    LUO NÄKYMÄ< table name >
    AS< query >
    ;

    Näkymää käsitellään kuten mitä tahansa taulukkoa SQL-komennot. Kun komento viittaa taulukon nimeen< table name >, pyyntö< query >suoritetaan, ja sen tulos vastaa tässä komennossa määritetyn taulukon sisältöä.
    Joitakin näkymiä voidaan muokata, mikä tarkoittaa, että muokkauskomennot voidaan suorittaa näille näkymille ja välittää taulukkoon, johon kyselyssä viitattiin< query >. Jos WITH CHECK OPTION on määritetty, tämän muutoksen on myös täytettävä predikaattiehto< predicate >pyynnössä< query >.

    ILMOITTAA KOHDISTIN

    Syntaksi

    EXEC SQL DECLARE< cursor name >KURSORI FOR
    < query >< SQL term >

    Tämä komento sitoo ne kohdistimeen< cursor name >, pyynnöstä< query >. Kun kohdistin on auki (katso OPEN CURSOR), pyyntö< query >suoritetaan, ja sen tulos voidaan hakea (FETCH-komennolla) ulostuloa varten. Jos kursori on muokattavissa, kysely viittaa taulukkoon< query >, voi saada muutoksen sisältöön käyttämällä kohdistimen muokkaustoimintoa (katso luku 25 muokattavista kohdistimista).

    POISTAA

    Syntaksi

    POISTA LÄHTEESTÄ< table name >
    { ; }
    | MISSÄ NYKYINEN< cursorname >< SQL term >

    Jos WHERE-lause puuttuu, KAIKKI rivit taulukosta poistetaan. Jos WHERE-lause käyttää predikaattia< predicate >, rivit, jotka täyttävät tämän predikaatin ehdon< predicate >poistetaan. Jos WHERE-lauseessa on CURRENT OF -argumentti kohdistimen nimessä< cursor name >, rivi taulukosta< table name >johon tällä hetkellä viitataan kohdistimen nimellä< cursor name >poistetaan. WHERE CURRENT -lomaketta voidaan käyttää vain sisäkkäisissä SQL:issä ja vain muokattavilla kohdistimilla.

    EXEC SQL

    Syntaksi

    EXEC SQL< embedded SQL command > < SQL term >

    EXEC SQL:ää käytetään osoittamaan kaikkien toisella kielellä sisäkkäisten SQL-komentojen alku.

    FETCH

    Syntaksi

    EXEC SQL FETCH< cursorname >
    INTO< host-varlable llst >< SQL term >

    FETCH hyväksyy lähdön kohteesta nykyinen linja pyytää< query >, lisää sen päämuuttujien luetteloon< host-variable list >, ja siirtää kohdistimen kohtaan seuraava rivi. Lista< host-variable list >voi sisältää indikaattorimuuttujan kohdemuuttujana (katso luku 25.)

    MYÖNTÄ (SIIRTOOIKEUDET)

    Syntaksi (vakio)

    MYÖNTÄ KAIKKI
    | (VALITSE
    | LISÄÄ
    | POISTAA
    | PÄIVITYS [(< column llst >)]
    | VIITTEET [(< column llst >)l) . , . .
    PÄÄLLÄ< table name > . , . .
    YLEISÖLLE |< Authorization ID > . , . .
    ;

    ALL-argumentti, joko etuoikeuksilla tai ilman, sisältää jokaisen oikeudet luettelossa. JULKINEN sisältää kaikki nykyiset käyttäjät ja kaikki tulevaisuudessa luodut käyttäjät. Tämän komennon avulla voit siirtää oikeuksia suorittaa toimintoja määritetyn nimen taulukossa. REFERENCES antaa sinun antaa käyttöoikeudet sarakeluettelon sarakkeiden käyttöön< column list >emoavaimena vieraalle avaimelle. Muut oikeudet koostuvat oikeudesta suorittaa komentoja, joiden oikeudet on merkitty niiden nimillä taulukossa. UPDATE on samanlainen kuin REFERENCES ja voi asettaa rajoituksia tietyille sarakkeille. GRANT OPTION mahdollistaa näiden oikeuksien siirtämisen muille käyttäjille.

    Syntaksi (ei-standardi)

    GRANT DBA
    | RESURSSI
    | YHTEYS... .
    TO< Authorization ID > . , . .
    | < privilege > . , . . }
    LÄHETTÄJÄ ( JULKINEN
    | < Authorization ID > . , . . };

    Etuoikeus< privelege >voi olla mikä tahansa GRANT-komennossa määritellyistä. REVOKE:n antavalla käyttäjällä on oltava samat oikeudet kuin GRANT:in antavalla käyttäjällä. ON-lausetta voidaan käyttää, kun tietyntyyppistä etuoikeutta käytetään erikoisobjektissa.

    PALAUTUS (TYÖ)
    (PALAUTUS) (TAPAHTUMAT)

    Syntaksi

    Komento kumoaa kaikki nykyisen tapahtuman aikana tietokantaan tehdyt muutokset. Se myös lopettaa nykyisen tapahtuman ja aloittaa uuden tapahtuman.

    VALITSE

    Syntaksi

    VALITSE ( ERI | KAIKKI]< value expression > . , . . } / *
    FROM< table reference > . , . .

    . , . . ];

    Tämä lauseke järjestää kyselyn ja hakee arvot tietokannasta (katso Luku 3 - Luku 14). Seuraavat säännöt ovat voimassa:

  • Jos ALL tai DISTINCT ei ole määritetty, oletetaan KAIKKI.
  • Ilmaisu< value expression >koostuu< column spec >, aggregaattifunktio< aggregate funct >, ei-standardi toiminto< nonstandard fu nction >, vakio< constant >, tai mikä tahansa niiden yhdistelmä operaattorien kanssa kelvollisissa lausekkeissa.
  • Viitetaulukko< table reference >, koostuu taulukon nimestä, mukaan lukien omistajan etuliitteestä, jos nykyinen käyttäjä ei ole omistaja, tai taulukon (epätyypillisestä) synonyymistä. Pöytä voi olla joko pohjapöytä tai näkymä. Periaatteessa alias voi osoittaa, mitä aliasta käytetään taulukossa vain nykyisen komennon ajan. Taulukon nimi tai synonyymi on erotettava aliaksesta yhdellä tai useammalla erottimella< separator >.
  • Jos GROUP BY on käytössä, kaikki sarakkeet< column spec >SELECT-lauseessa käytettyjä sarakkeita on käytettävä sarakkeiden ryhmänä< grouping column >, jos ne eivät sisälly aggregaattifunktioon< aggregate funct >. Koko sarakeryhmä< grouping column >on esitettävä ilmaisujen joukossa< value expressions >määritelty SELECT-lauseessa. Jokaiselle erilliselle sarakeryhmän arvojen yhdistelmälle< grouping column >, tulosteita on yksi ja vain yksi rivi.
  • Jos HAVING on käytössä, predikaatti< predicate >käytetään jokaiselle GROUP BY -lauseen tuottamille riville, ja ne rivit, jotka tekevät tästä predikaatista tosi, tulostetaan.
  • Jos ORDER BY on käytössä, lähdöllä on tietty järjestys. Jokaisen sarakkeen tunnus< column identifer >viittaa määriteltyyn< value expression >SELECT-lauseessa. Jos tämä< value expression >on määritetty sarake< column spec >, < co lumn identifier >voisi olla sama kuin< column spec >. Muuten< co lumn identifier >voi olla positiivinen kokonaisluku, joka osoittaa paikan missä< value expression >SELECT-lauseen järjestyksessä. Tulos luodaan sopimaan sisältämiin arvoihin< column identifier >nousevassa järjestyksessä, jos DESC:tä ei ole määritetty. Sarakkeen tunnus nimi< column identifier > tulee ensin ORDER BY -lauseessa edeltää myöhemmin arvokkaita nimiä lähtösekvenssin määrittämisessä.

    SELECT-lause arvioi jokaisen ehdokasrivin taulukossa, jossa rivit näytetään itsenäisesti. Ehdokasmerkkijono määritellään seuraavasti:

  • Jos on vain yksi viitattu taulukko< table reference >on mukana, jokainen tämän taulukon rivi on puolestaan ​​ehdokasrivi.
  • Jos useampi kuin yksi viitattu taulukko< table reference >käytössä, jokaisen taulukon jokainen rivi on yhdistettävä vuorotellen kaikkien muiden taulukoiden riviyhdistelmiin. Jokainen tällainen yhdistelmä on puolestaan ​​ehdokasmerkkijono.

    Jokainen ehdokasrivi tuottaa arvoja, jotka muodostavat predikaatin< predicate >WHERE-lauseessa on tosi, epätosi tai tuntematon. Jos GROUP BY:tä ei käytetä, kukin< value expression >sovelletaan vuorotellen jokaiseen ehdokasmerkkijonoon, jonka arvo tekee predikaatista tosi, ja tämän toiminnon tulos on tulos.
    Jos GROUP BY on käytössä, ehdokasrivit yhdistetään käyttämällä koontifunktioita. Jos predikaattia ei ole< predicate >ei asetettu, jokainen lauseke< value expression >koskee jokaista ehdokasriviä tai ryhmää. Jos DISTINCT on määritetty, kaksoisrivit poistetaan tulosteesta.

    UNIONIN

    Syntaksi

    < query >(UNITO< query > } . . . ;

    Kahden tai useamman kyselyn tulostaminen< query >yhdistetään. Jokainen pyyntö< query >tulee sisältää sama numero< value expression >SELECT-lauseeseen ja siinä järjestyksessä, että 1...n jokaisesta on tietotyyppiyhteensopiva< data type >ja koko< size >1.. n kanssa kaikki muut.

    PÄIVITTÄÄ

    Syntaksi

    PÄIVITTÄÄ< table name >
    SET (< column name > = < value expression > } . , . .
    ([ MISSÄ< predlcate >]; }
    | {
    < SQL term >]}

    UPDATE muuttaa arvoja jokaisessa nimetyssä sarakkeessa< column name >vastaavaan arvoon< value expression >. Jos WHERE-lause käyttää predikaattia< predicate >, sitten vain taulukon rivit, joiden nykyiset arvot muodostavat kyseisen predikaatin< predicate >oikein, muutoksiin pidätetään. Jos WHERE käyttää CURRENT OF -lausetta, arvot taulukon rivillä nimeltä< table name >sijaitsee kursorissa nimen kanssa< cursor name >ovat muuttumassa. WHERE CURRENT OF sopii käytettäväksi vain sisäkkäisissä SQL:issä ja vain muokattavissa olevien kohdistimien kanssa. Jos WHERE-lausetta ei ole, kaikki rivit muutetaan.

    AINA (JOKA KERTA AS)

    Syntaksi

    SUORITA SQL AINA< SQLcond > < actlon > < SQL term >
    < SQLcond >::=SQLERROR | EI LÖYTY | SQLVAROITUS
    (viimeinen on epästandardi)
    < action >::=JATKA | GOTO< target >| GOTO< target >
    < target >:: = riippuu isäntäkielestä

  • Syntaksi:

    * Missä kentät1— valintakentät pilkuilla erotettuina, voit myös määrittää kaikki kentät *-merkillä; taulukko— sen taulukon nimi, josta poimimme tiedot; ehdot— näytteenottoolosuhteet; kentät2— kenttä tai kentät, jotka on erotettu pilkuilla lajittelua varten; laskea— ladattavien rivien määrä.
    * Hakasulkeissa olevaa kyselyä ei vaadita tietojen hakemiseen.

    Yksinkertaisia ​​esimerkkejä selectin käytöstä

    1. Normaali datanäytteenotto:

    > SELECT * FROM käyttäjiltä

    2. Tietojen otos yhdistämällä kaksi taulukkoa (JOIN):

    SELECT u.name, r.* FROM käyttäjiltä u LIITY user_rights r PÄÄLLÄ r.user_id=u.id

    *V tässä esimerkissä tiedoista otetaan näytteitä ja taulukoita yhdistetään käyttäjiä Ja user_rights. Heitä yhdistävät kentät user_id(käyttäjien_oikeudet-taulukossa) ja id(käyttäjät). Nimikenttä haetaan ensimmäisestä taulukosta ja kaikki kentät toisesta.

    3. Näytteenotto aika- ja/tai päivämäärävälein

    a) aloituspiste ja tietty aikaväli tunnetaan:

    * viimeisen tunnin tiedot valitaan (kenttä päivämäärä).

    b) aloituspäivä ja lopetuspäivä ovat tiedossa:

    25.10.2017 Ja 25.11.2017 .

    c) alkamis- ja lopetuspäivät + kellonaika ovat tiedossa:

    * Valitse data väliltä 25.03.2018 0 tuntia 15 minuuttia Ja 25.4.2018 15 tuntia 33 minuuttia ja 9 sekuntia.

    d) vedä tiedot tietyltä kuukaudelta ja vuodelta:

    * Poimi tiedot missä kentässä päivämäärä niille on arvoja Huhtikuu 2018 vuosi.

    4. Maksimi-, minimi- ja keskiarvojen näytteenotto:

    > VALITSE max(ala), min(ala), keskim(pinta-ala) maasta

    * max— enimmäisarvo; min- minimaalinen; keskim- keskimäärin.

    5. Merkkijonon pituuden käyttäminen:

    * Tämän kyselyn pitäisi näyttää kaikki käyttäjät, joiden nimessä on 5 merkkiä.

    Esimerkkejä monimutkaisemmista tai harvoin käytetyistä kyselyistä

    1. Yhdistäminen valittujen tietojen ryhmittelyllä yhdeksi riviksi (GROUP_CONCAT):

    *pöydästä käyttäjiä kenttätiedot haetaan id, ne kaikki on sijoitettu yhdelle riville, arvot erotetaan toisistaan pilkkuja.

    2. Tietojen ryhmittely kahden tai useamman kentän mukaan:

    > SELECT * FROM käyttäjiltä GROUP BY CONCAT(nimi, "::", syntymä)

    * Yhteenvetona voidaan todeta, että tässä esimerkissä lataamme tiedot käyttäjätaulukosta ja ryhmittelemme ne kenttien mukaan otsikko Ja syntymästä. Ennen ryhmittelyä yhdistämme kentät yhdeksi riviksi erottimella :: .

    3. Kahden taulukon tulosten yhdistäminen (UNION):

    > (VALITSE id, fio, osoite, "Käyttäjät" tyypiksi FROM users)
    UNIONIN
    (VALITSE id, fio, osoite, "Asiakkaat" tyypiksi FROM asiakkaat)

    * Tässä esimerkissä tiedot otetaan taulukoista käyttäjiä Ja Asiakkaat.

    4. Esimerkki keskiarvoista ryhmiteltynä jokaiselle tunnille:

    VALITSE keskiarvo(lämpötila), DATE_FORMAT(päivämääräajan päivitys, "%Y-%m-%d %H") tunniksi_päivämääräksi arkistosta GROUP BY DATE_FORMAT(päivämääräajan päivitys, "%Y-%m-%d %H")

    *tästä poimitaan kentän keskiarvo lämpötila pöydältä arkisto ja ryhmittele kenttien mukaan päivämääräaika päivitys(aikajaolla jokaiselle tunnille).

    LISÄÄ

    Syntaksi 1:

    > INSERT INTO

    () ARVOT ( )

    Syntaksi 2:

    > INSERT INTO

    ARVOT ( )

    * Missä taulukko— sen taulukon nimi, johon syötämme tiedot; kentät— luettelokentät pilkuilla erotettuina;arvot- arvot luetellaan pilkuilla erotettuina.
    * Ensimmäinen vaihtoehto antaa sinun lisätä vain luetellut kentät - loput saavat oletusarvot. Toinen vaihtoehto vaatii lisäyksen kaikkiin kenttiin.

    Esimerkkejä insertin käytöstä

    1. Useiden rivien lisääminen yhdellä kyselyllä:

    > LISÄÄ kaupunkeihin ("nimi", "maa") ARVOT ("Moskova", "Venäjä"), ("Pariisi", "Ranska"), ("Funafuti" , "Tuvalu");

    * Tässä esimerkissä lisäämme 3 tietuetta yhteen SQL-kyselyyn.

    2. Lisäys toisesta taulukosta (rivien kopiointi, INSERT + SELECT):

    * Pura kaikki tietueet taulukosta kaupungit, joiden nimet alkavat kirjaimella M ja kirjoita ne taulukkoon kaupungit-uudet.

    Päivitys (PÄIVITYS)

    Syntaksi:

    * Missä taulukko- taulukon nimi; ala— kenttä, jonka arvoa muutetaan; arvo- uusi merkitys; ehdot— kunto (ilman sitä päivityksen tekeminen on vaarallista - voit korvata kaikki tiedot koko taulukosta).

    Päivitä korvaamalla (REPLACE):

    PÄIVITTÄÄ

    SARJA = VAIHDA( , "<что меняем>", "<на что>");

    PÄIVITYS kaupungit SET nimi = REPLACE(nimi, "Maskva", "Moskova");

    Jos haluamme pelata varman päälle, vaihdon tulos voidaan ensin tarkistaa käyttämällä SELECT:

    Poista (DELETE)

    Syntaksi:

    * Missä taulukko- taulukon nimi; ehdot— kunto (kuten PÄIVITYKSEN tapauksessa, DELETE:n käyttö ilman ehtoa on vaarallista - DBMS ei kysy vahvistusta, vaan yksinkertaisesti poistaa kaikki tiedot).

    Taulukon luominen

    Syntaksi:

    > LUO TAULUKKO

    ( , )

    > LUO TAULUKO, JOS EI OLE `users_rights` (
    `id` int(10) unsigned EI NULL,
    `user_id` int(10) allekirjoittamaton EI NULL,
    `oikeudet` int(10) allekirjoittamaton EI NULL
    ) ENGINE=InnoDB OLETUSMERKKI=utf8;

    * Missä taulukko- taulukon nimi (esimerkissä user_rights); kenttä1, kenttä2— kenttien nimet (esimerkissä luodaan 3 kenttää — id, user_id, oikeudet); vaihtoehdot1, vaihtoehdot2— kenttäparametrit (esimerkissä int(10) unsigned NOT NULL); pöytävaihtoehdot— yleiset taulukon parametrit (esimerkissä ENGINE=InnoDB DEFAULT CHARSET=utf8).

    Pyyntöjen käyttäminen PHP:ssä

    Yhteyden muodostaminen tietokantaan:

    mysql_connect("localhost", "login", "salasana") or die("MySQL yhteysvirhe");
    mysql_select_db("db_name");
    mysql_query("SET NIMET "utf8");

    * jossa yhteys muodostetaan paikallisen palvelimen tietokantaan ( paikallinen isäntä); yhteystiedot - kirjaudu sisään Ja salasana(vastaavasti kirjautumistunnus ja salasana); käytetään pohjana db_nimi; koodausta käytetty UTF-8.

    Voit myös luoda pysyvän yhteyden:

    mysql_pconnect("localhost", "login", "salasana") or die("MySQL-yhteysvirhe");

    * Suurin sallittu hosting-raja on kuitenkin mahdollista saavuttaa. Tätä menetelmää tulisi käyttää omia palvelimia, jossa voimme itse hallita tilannetta.

    Täydellinen yhteys:

    * PHP:ssä suoritetaan automaattisesti, paitsi pysyviä yhteyksiä(mysql_pconnect).

    PHP:n MySQL-kysely (Mariadb) tehdään mysql_query()-funktiolla ja tietojen haku kyselystä tehdään mysql_fetch_array():

    $tulos = mysql_query("SELECT * FROM käyttäjiltä");
    while ($massa = mysql_fetch_array($result)) (
    echo $massa . "
    ";
    }

    * Tässä esimerkissä taulukkoon tehtiin kysely käyttäjiä. Kyselyn tulos sijoitetaan muuttujaan $tulos. Seuraavaksi käytetään silmukkaa samalla kun, jonka jokainen iteraatio hakee datajoukon ja sijoittaa sen muuttujaan $massa— jokaisessa iteraatiossa työskentelemme yhden tietokannan rivin kanssa.

    Käytetty mysql_fetch_array()-funktio palauttaa assosiatiivisen taulukon, jonka kanssa on kätevä työskennellä, mutta on myös vaihtoehto - mysql_fetch_row(), joka palauttaa tavallisen numeroidun taulukon.

    Suojaus

    Jos haluat sisällyttää kyselyn merkkijonoon erikoismerkin, esimerkiksi %, sinun on käytettävä escaping-merkkiä kenoviivalla - \

    Esimerkiksi:

    * jos suoritat tällaisen kyselyn ilman pakottavaa merkkiä, %-merkki tulkitaan minkä tahansa merkkimääränä 100:n jälkeen.

    Siinä kaikki. Jos tarvitset apua pyynnön täyttämisessä, lähetä minulle sähköpostia