Näited SQL-päringutest MariaDB-s (MySQL). Mis on SQL? Lihtsad UPDATE päringud MySQL-i andmebaasi

Kuidas ma saan teada konkreetse tarnija toodetud arvutimudelite arvu? Kuidas määrata samade tehniliste omadustega arvutite keskmist hinda? Nendele ja paljudele teistele mõne statistilise teabega seotud küsimustele saab vastata kasutades lõplikud (koond)funktsioonid. Standard näeb ette järgmist koondfunktsioonid:

Kõik need funktsioonid tagastavad ühe väärtuse. Samas funktsioonid COUNT, MIN Ja MAX kohaldatav mis tahes andmetüübile, samas SUMMA Ja AVG kasutatakse ainult numbriväljade jaoks. Funktsioonide erinevus COUNT(*) Ja COUNT(<имя поля>) on see, et teine ​​ei võta arvutamisel arvesse NULL väärtusi.

Näide. Leia personaalarvutite minimaalne ja maksimaalne hind:

Näide. Leidke saadaolev tootja A toodetud arvutite arv:

Näide. Kui meid huvitab tootja A toodetud erinevate mudelite arv, siis saab päringu vormistada järgmiselt (kasutades seda, et tabelis Toode on iga mudel üks kord kirjas):

Näide. Leidke saadaolevate erinevate tootja A toodetud mudelite arv. Päring sarnaneb eelmisele päringule, kus tuli määrata tootja A toodetud mudelite koguarv. Siit tuleb leida ka erinevate mudelite arv arvutilaud (st need, mis on müügil).

Tagamaks, et statistiliste näitajate hankimisel kasutatakse ainult kordumatuid väärtusi, kui koondfunktsioonide argument saab kasutada DISTINCT parameeter. Teine parameeter KÕIK on vaikeväärtus ja eeldab, et loendatakse kõik veerus tagastatud väärtused. operaator,

Kui meil on vaja saada toodetud arvutimudelite arv kõik tootja, peate kasutama GROUP BY klausel, järgneb süntaktiliselt KUS klauslid.

GROUP BY klausel

GROUP BY klausel kasutatakse väljundstringide rühmade määratlemiseks, millele saab rakendada koondfunktsioonid (COUNT, MIN, MAX, AVG ja SUM). Kui see klausel puudub ja kasutatakse koondfunktsioone, siis kõik veerud, mille nimed on mainitud VALI, tuleb lisada koondfunktsioonid, ja neid funktsioone rakendatakse kogu ridade komplektile, mis vastavad päringu predikaadile. Vastasel juhul kõik loendi SELECT veerud ei kuulu koondfunktsioonides tuleb täpsustada klauslis GROUP BY. Selle tulemusena jagatakse kõik väljundpäringu read rühmadesse, mida iseloomustavad nendes veergudes samad väärtuste kombinatsioonid.
Pärast seda rakendatakse igale rühmale koondfunktsioone. Pange tähele, et GROUP BY puhul käsitletakse kõiki NULL väärtusi võrdsetena, st. NULL-väärtusi sisaldava välja järgi rühmitamisel langevad kõik sellised read ühte rühma. Kui kui on olemas klausel GROUP BY , SELECT-klauslis puuduvad koondfunktsioonid
, tagastab päring igast rühmast lihtsalt ühe rea. Seda funktsiooni koos märksõnaga DISTINCT saab kasutada tulemusekomplektist dubleerivate ridade kõrvaldamiseks.
Vaatame lihtsat näidet:
VALI mudel, COUNT(mudel) AS Kogus_mudel, AVG(hind) AS Avg_price
ARVUTIST

GROUP BY mudeli järgi; Selles taotluses määratakse iga arvutimudeli jaoks nende arv ja keskmine kulu
. Kõik sama mudeli väärtusega read moodustavad rühma ja SELECT väljund arvutab iga rühma väärtuste arvu ja keskmise hinna väärtused. Päringu tulemuseks on järgmine tabel: mudel Kogus_mudel
1121 3 850.0
1232 4 425.0
1233 3 843.33333333333337
1260 1 350.0

Keskmine_hind

Kui SELECT oleks kuupäeva veerg, siis oleks võimalik need näitajad välja arvutada iga konkreetse kuupäeva kohta. Selleks tuleb rühmitusveeruna lisada kuupäev ja seejärel arvutatakse koondfunktsioonid iga väärtuste kombinatsiooni jaoks (mudel-kuupäev). On mitmeid spetsiifilisi:

  • koondfunktsioonide täitmise reeglid Kui taotluse tulemusenaühtegi rida ei saadud
  • (või rohkem kui üks rida antud rühma jaoks), siis puuduvad lähteandmed ühegi koondfunktsiooni arvutamiseks. Sel juhul on funktsioonide COUNT tulemus null ja kõigi teiste funktsioonide tulemus NULL. Argument koondfunktsioon ise ei saa sisaldada koondfunktsioone
  • (funktsioon funktsioonist). Need. ühes päringus on võimatu näiteks saada keskmiste väärtuste maksimumi. Funktsiooni COUNT täitmise tulemus on täisarv
  • (TÄISARV). Teised koondfunktsioonid pärivad nende töödeldavate väärtuste andmetüübid. Kui funktsioon SUM annab tulemuse, mis on suurem kui kasutatud andmetüübi maksimaalne väärtus,.

viga Seega, kui taotlus ei sisalda GROUP BY klauslid koondfunktsioonid, See hulka arvatud SELECT klausel GROUP BY klausel, iga ridade komplekt, millel on punktis määratletud veeru või veergude rühma samad väärtused GROUP BY klausel, moodustab rühma ja koondfunktsioonid tehakse igale rühmale eraldi.

ON pakkumine

Pärast seda rakendatakse igale rühmale koondfunktsioone. Pange tähele, et GROUP BY puhul käsitletakse kõiki NULL väärtusi võrdsetena, st. NULL-väärtusi sisaldava välja järgi rühmitamisel langevad kõik sellised read ühte rühma. KUS klausel defineerib ridade filtreerimiseks predikaadi, siis ON pakkumine kehtib pärast rühmitamist defineerida sarnane predikaat, mis filtreerib rühmi väärtuste järgi koondfunktsioonid. See klausel on vajalik väärtuste kinnitamiseks, mis on saadud kasutades koondfunktsioon mitte punktis määratletud kirjeallika üksikutelt ridadelt FROM klausli, ja alates selliste joonte rühmad. Seetõttu ei saa sellist tšekki sisaldada KUS klausel.

AndmetüübidSQL(naguLk, nagu standardis)

Stringi tüübid

Numbrilised andmetüübid

Valuuta, märgid, binaarsed andmetüübid

Boole'i ​​tüüp. Ülekanded

Näited lihtsatest SQL-päringutest

Lihtsamad SELECT päringud

SQL SELECT-lause on kõige olulisem ja kõige sagedamini kasutatav avaldus. See on loodud teabe hankimiseks andmebaasi tabelitest.

SELECT-lause lihtsustatud süntaks on järgmine.

VALI [ KÕIK | DISTINCT ] select_item_commalist

FROM table_reference_commalist

[WHERE tingimusavaldis]

[GROUP BY veeru_nimi_komalist]

[ ON tingimusavaldis ]

[ ORDER BY order_item_commalist ]

Ruudusulud tähistavad elemente, mida taotluses ei pruugi olla. Märksõna SELECT ütleb andmebaasile, et see ettepanek

on taotlus teabe hankimiseks.

Pärast sõna SELECT on komadega eraldatud väljade nimed (atribuutide loend), mille sisu küsitakse.

Nõutav märksõna SELECT päringuklauslis on sõna FROM. Märksõnale FROM järgneb komadega eraldatud tabelinimede loend, millest teave hangitakse.

Näiteks valige filmist pealkiri, kirjeldus

Iga SQL-päring peab lõppema sümboliga ";" (semikoolon). Selle päringu tulemuseks on tabel...

Selle tabeli veergude järjekord vastab päringus määratud väljade järjestusele

Kui teil on vaja kuvada kõigi tabeli veergude väärtused, võite nende nimede loetlemise asemel kasutada sümbolit “*” (tärni).

VALI * filmist;

Pöörame veel kord tähelepanu asjaolule, et SQL-päringu tulemusel saadud tabelid ei vasta täielikult relatsiooniseose definitsioonile. Eelkõige võivad need sisaldada identsete atribuutide väärtustega kortereid (ridu).

Näiteks päringu “näitlejate nimede loend” saab kirjutada järgmiselt.

vali näitlejalt eesnimi;

Selle tulemuseks on tabel, tabel sisaldab identseid ridu. Duplikaatkirjete välistamiseks SELECT päringu tulemusest kasutage märksõna DISTINCT.

Kui VALI päring hangib mitu välja, DISTINCT kõrvaldab dubleerivad read, milles kõigi valitud väljade väärtused on identsed.

Eelmise päringu saab kirjutada järgmiselt.

vali näitlejalt erinev eesnimi;

Selle tulemusena saame tabeli, milles dubleerivad read on välistatud.

Märksõna ALL toimib vastupidiselt DISTINCT-ile, mis tähendab, et väljundisse kaasatakse dubleeritud read.

Märksõna KÕIK määratud režiim on vaikimisi, seega reaalsetes päringutes seda nendel eesmärkidel praktiliselt ei kasutata. Kasutage sisse SELECT avaldus

WHERE-klausel võimaldab teil määrata tingimusavaldise (predikaadi), mille väärtus on tõene või väär tabelirea välja väärtuste jaoks, millele SELECT-lause pääseb juurde.

WHERE-klausel määrab, millised määratud tabelite read tuleb valida.

Päringust tulenev tabel sisaldab ainult neid ridu, mille puhul WHERE-klauslis määratud tingimus (predikaat) on tõene.

Näide: kirjutage päring, mis otsib kõigi PENELOPE nimega näitlejate perekonnanimed vali näitlejalt perekonnanimi kus ees_nimi = "PENELOPE";< (меньше), >Lauses täpsustatutes<- (меньше или равно), <>KUS tingimused

saab kasutada tehtetega = (võrdne), > (suurem kui), määratletud võrdlustehteid

= (suurem või võrdne sellega),

(mitte võrdne), samuti loogilisi operaatoreid AND, OR ja NOT.< 60 and rental_rate < 3

Näiteks taotlus saada lühifilmide nimesid ja kirjeldusi (lühem kui 60 minutit), mille laenutus maksab alla 3 dollari, näeb välja järgmine:

vali filmist pealkiri, kirjeldus

kus pikkus

Selle päringu tulemus näeb välja selline:


rent - rent
1. inventar - inventar, varud
2. kauplus - laos, kauplus
3. Artikli sisu
4. Lihtsad UPDATE (üle kirjutamise, lisamise) päringud
5. Lihtsad DELETE (kirje kustutamise) päringud
6. Lihtsad DROP (tabeli kustutamise) päringud
7. Keerulised MySQL-päringud
8. MySQL päringud ja PHP muutujad

1. Lihtsamad SQL-päringud

1. Kuvab KÕIKIDE andmebaaside loendi.

SHOW andmebaasid;
2. Loetleb KÕIK tabelid andmebaasis base_name.

NÄITA tabeleid aluse_nimi;

2. Lihtsad SELECT päringud MySQL andmebaasi

VALI– päring, mis valib andmebaasist olemasolevad andmed. Valimiseks saate määrata konkreetsed valikuparameetrid. Näiteks venekeelse päringu olemus kõlab järgmiselt: SELECT sellised ja sellised veerud FROM sellisest ja sellisest tabelist KUS sellise ja sellise veeru parameeter on võrdne väärtusega.

1. Valib tabelis tbl_name KÕIK andmed.

SELECT * FROM tbl_name;
2. Kuvab kirjete arvu tabelis tbl_name.

SELECT count(*) FROM tbl_name;
3. Valib (SELECT) tabelist (FROM) tbl_name limit (LIMIT) 3 kirjet, alates 2-st.

SELECT * FROM tbl_name LIMIT 2,3;
4. Valib (SELECT) KÕIK (*) kirjed (FROM) tabelist tbl_name ja sorteerib need (ORDER BY) id välja järgi järjekorras.

SELECT * FROM tbl_name ORDER BY id;
5. Valib (SELECT) KÕIK kirjed (FROM) tabelist tbl_name ja sorteerib need (ORDER BY) ID-välja järgi PÖÖRDSES järjekorras.

SELECT * FROM tbl_name ORDER BY id DESC;
6. Valib ( VALI) KÕIK (*) kirjed alates ( FROM) tabelid kasutajad ja sorteerib need ( TELLI) üle põllu id kasvavas järjekorras, limiit ( LIIT) esimesed 5 sissekannet.

SELECT * FROM kasutajatelt ORDER BY id LIMIT 5;
7. Valib tabelist kõik kirjed kasutajad, kus on põld fname vastab väärtusele Gena.

SELECT * FROM kasutajad WHERE fname="Gena";
8. Valib tabelist kõik kirjed kasutajad, kus välja väärtus fname algab Ge.

SELECT * FROM kasutajad WHERE fname LIKE "Ge%";
9. Valib tabelist kõik kirjed kasutajad, Kus fname lõpeb ei ja sorteerib kirjed väärtuste kasvavas järjekorras id.

SELECT * FROM kasutajad WHERE fname LIKE "%na" ORDER BY id;
10. Valib veergudest kõik andmed fname, nimi laualt kasutajad.

SELECT fname, lname FROM users;

11. Oletame, et teie kasutajaandmete tabelis on riik. Seega, kui soovite kuvada AINULT esinevate väärtuste loendit (nii et Venemaad ei kuvataks näiteks 20 korda, vaid ainult üks kord), siis kasutame DISTINCT. See toob Venemaa, Ukraina, Valgevene välja korduvate väärtuste massist. Seega tabelist kasutajad kõlarid riik Väljastatakse KÕIK UNIKAALSED väärtused

VALI kasutajatest ERINEV riik;
12. Valib tabelist KÕIK reaandmed kasutajad Kus vanus on väärtused 18, 19 ja 21.

SELECT * FROM kasutajad WHERE vanus IN (18,19,21);
13. Valib MAXIMUM väärtuse vanus tabelis kasutajad. See tähendab, kui teie tabelis on suurim väärtus vanus(inglise vanusest) on 55, siis on päringu tulemus 55.

SELECT max(vanus) FROM kasutajatest;
14. Valige tabelist andmed kasutajad põldude kaupa nimi Ja vanus KUS vanus võtab väikseima väärtuse.

VALI kasutajate nimi, min(vanus);
15. Valige tabelist andmed kasutajadüle põllu nimi KUS id EI VÕRD 2.

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

3. Lihtsad INSERT (uus kirje) päringud

LISA– päring, mis võimaldab ESALGES kirje andmebaasi sisestada. See tähendab, et see loob andmebaasis UUE kirje (rea).

1. Teeb tabelisse uue kirje kasutajad, põllul nimi lisab Sergei ja põllul vanus lisab 25. Seega lisatakse tabelisse uus rida nende väärtustega. Kui veerge on rohkem, jäävad ülejäänud kas tühjaks või vaikeväärtustega.

INSERT INTO kasutajad (nimi, vanus) VÄÄRTUSED ("Sergei", "25");

4. Lihtsad UPDATE päringud MySQL andmebaasi

VÄRSKENDAMINE– päring, mis võimaldab RESERVEERIDA välja väärtusi või LISADA midagi juba olemasolevale reale andmebaasis. Näiteks on olemas valmis rida, kuid vanuse parameeter tuleb selles ümber kirjutada, kuna see on aja jooksul muutunud.

1. Tabelis kasutajad vanus saab 18.

UPDATE kasutajad SET vanus = "18" WHERE id = "3";
2. Kõik on sama, mis esimeses päringus, see näitab lihtsalt päringu süntaksit, kus kaks või enam välja kirjutatakse üle.
Tabelis kasutajad WHERE id võrdub 3 välja väärtusega vanus saab 18 ja riik Venemaa.

UPDATE kasutajad SET vanus = "18", riik = "Venemaa" WHERE id = "3";

5. Lihtsad DELETE (kirje kustutamise) päringud MySQL andmebaasi

KUSTUTA– päring, mis kustutab tabelist rea.

1. Eemaldab tabelist rea kasutajad KUS id võrdub 10-ga.

DELETE FROM kasutajatest WHERE id = "10";

6. Lihtsad DROP (tabeli kustutamise) päringud MySQL-i andmebaasi

TULLA– päring, mis kustutab tabeli.

1. Kustutab kogu tabeli tbl_name.

Drop TABLE tbl_name;

7. Keerulised päringud MySQL andmebaasi

Huvitavad päringud, mis võivad olla kasulikud ka kogenud kasutajatele

VALI ID, nimi, riik kasutajatelt, administraatoritelt WHERE TO_DAYS(NOW()) – TO_DAYS(registreerimiskuupäev)<= 14 AND activation != "0" ORDER BY registration_date DESC;
See keeruline päring SELECTS veergu id, nimi, riik TABELITES kasutajad, administraatorid KUS registreerimise_kuupäev(kuupäev) mitte vanem 14 päevad I aktiveerimine EI VÕRDSED 0 , SORTEERI ALUS registreerimise_kuupäev vastupidises järjekorras (uus enne).

UPDATE kasutajad SET vanus = "18+" WHERE vanus = (VALI vanus kasutajatest WHERE mees = "mees");
Eespool on näide nn taotlus päringu sees SQL-is. Värskendage kasutajate vanus vanusele 18+, kus sooks on mees. Ma ei soovita selliseid päringuvõimalusi. Isikliku kogemuse põhjal ütlen, et parem on luua mitu eraldi - neid töödeldakse kiiremini.

8. MySQL ja PHP andmebaasi päringud

PHP-lehe MySQL-päringutes saate sisestada muutujaid võrreldavate väärtustena jne. Paar näidet

1. Valib tabelist kõik kirjed kasutajad, kus on põld fname vastab muutuja väärtusele $nimi.

SELECT * FROM kasutajad WHERE fname="$nimi";
2. Tabelis kasutajad WHERE id võrdub 3 välja väärtusega vanus muutub muutuja $age väärtuseks.

UPDATE kasutajad SET vanus = "$vanus" WHERE id = "3";

Tähelepanu! Kui olete huvitatud mõnest muust näitest, kirjutage kommentaaridesse küsimus!

See lisa annab erinevate SQL-käskude täpsema kirjelduse. Eesmärk on anda teile kiire ja täpne viide ja SQL-i määratlus. Selle rakenduse esimene jaotis määratleb SQL-käskude loomiseks kasutatavad elemendid; teiseks süntaksi ja lausete üksikasjad koos käskude endi lühikirjeldusega. Järgnevalt on näidatud standardsed kokkulepped (nimetatakse BNF tingimusteks):

  • Märksõnad kirjutatakse suurtähtedega.
  • SQL ja muud eriterminid on nurksulgudes ja kaldkirjas.(< ja >)
  • Käskude valikulised osad on nurksulgudes ().
  • Ellips (....) näitab, et käsu eelnevat osa saab korrata suvalise arvu kordi.
  • Vertikaalne riba (|) tähendab, et sellele eelnevat saab asendada sellele järgnevaga.
  • Lokkis sulud ((ja)) näitavad, et kõike nende sees tuleb käsitleda täisarvuna, et hinnata teisi märke (nt vertikaalseid ribasid või ellipse).
  • Topeltkoolonid ja võrdumised (:: =) tähendavad, et neile järgnev on neile eelneva määratlus.

    Lisaks kasutame järgmist järjestust (.,..), et näidata, et sellele eelnevat saab korrata suvalise arvu kordi, kusjuures üksikud sündmused eraldatakse komadega. Atribuudid, mis ei kuulu ametliku standardi alla, märgitakse kirjelduses kui (*mittestandardne*).

    MÄRKUS. Siin kasutatav terminoloogia ei ole ametlik ANSI terminoloogia. Ametlik terminoloogia võib olla väga segane, seetõttu oleme seda mõnevõrra lihtsustanud.

    Sel põhjusel kasutame mõnikord muid tingimusi peale ANSI või kasutame samu tingimusi, kuid veidi erineval viisil. Näiteks meie määratlus on< predicate >erineb ANSI standardlahutuse kombinatsioonist< predicate >Koos< search condition >.

    SQL ELEMENTID

    Selles jaotises määratletakse SQL-käskude elemendid. Need on jagatud kahte kategooriasse: Keele põhielemendid, Ja Keele funktsionaalsed elemendid.

    Põhielemendid- See loodud plokid keel; Kui SQL uurib käsku, hindab see esmalt iga märki käsutekstis nende elementide järgi. Eraldajad< separator >eraldada üks osa meeskonnast teisest; kõik, mis on eraldajate vahel< separator >töödeldakse moodulina. Selle jaotuse põhjal tõlgendab SQL käsku.

    Funktsionaalsed elemendid on erinevad asjad peale märksõnade, mida saab tõlgendada moodulitena. Need on käsu osad, mis on eraldatud eraldajatega< separator >, millel on SQL-is eriline tähendus. Mõned neist on spetsiaalsed teatud käsud ja seda kirjeldatakse koos nende käskudega hiljem selles lisas. Siin on loetletud ühised elemendid kõigi kirjeldatud käskude jaoks. Funktsionaalseid elemente saab määratleda üksteise või isegi oma terminite järgi. Näiteks predikaat< predicate >, meie viimane ja kõige raskem juhtum, sisaldab predikaati oma määratluse piires. Seda seetõttu, et predikaat< predicate >AND või OR kasutamine võib sisaldada suvalist arvu predikaate< predicate >mis võib töötada iseseisvalt. Esitasime teile predikaadi< predicate >selle lisa eraldi jaotises keele selle funktsionaalse elemendi mitmekesisuse ja keerukuse tõttu. Ta on pidevalt kohal meeskondade muude funktsionaalsete osade arutamisel.

    PÕHIKEELE ELEMENTID

    ELEMENDI MÄÄRATLUS< separator > < comment > | < space > | < newline > < comment > --< string > < newline > < space >ruumi< newline >rakendamisega määratletud lõpp märgistring < identifier > < letter >[{< letter or digit > | < underscore}... ] < ИМЕЙТЕ ВВИДУ: Следу строгому стандарту ANSI, символы должны быть набраны в suurtähtedega, ja identifikaator< identifier >ei tohi olla pikem kui 18 tähemärki. ELEMENDI MÄÄRATLUS< underscore > - < percent sign > % < delimiter >mis tahes järgmistest: , ()< > . : = + " - | <> > = < = или < string > < string >[üksik jutumärkides trükitud tekst] Märkus: sisse< string >, tõlgendatakse kahte järjestikust üksikut jutumärki (" ") ühena (").< SQL term >lõpetades olenevalt põhikeelest. (*ainult pesastatud*)

    FUNKTSIONAALSED ELEMENDID

    Järgmine tabel näitab funktsionaalsed elemendid SQL-käsud ja nende definitsioonid: ELEMENT DEFINITION< query >SELECT klausel< subquery >SELECT-klausel, mis on sulgudes teises klauslis, mida tegelikult hinnatakse teise klausli iga kandidaatrea jaoks eraldi.< value expression > < primary > | < primary > < operator > < primary > | < primary > < operator > < value expression > < operator >mis tahes järgmistest: + - / *< primary > < column name > | < literal > | < aggregate function > | < built-in constant > | < nonstandard function > < literal > < string > | < mathematical expressio ЭЛЕМЕНТ ОПРЕДЕЛЕНИЕ < built-in constant >KASUTAJA |< 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 | UNIKAALNE | KONTROLL (< predicate >) | ESMAVÕTI | VIITED< table name >[(< column name >)] < tabconstraint >UNIQUE (< column list >) | KONTROLL (< predicate >) | ESMANE VÕTI (< column list >) | VÄLISVÕTI (< column list >) VIITED< table name >[(< column list >)] < defvalue >VAIKEVÄÄRTUS =< value expression > < data type >Kehtiv andmetüüp (ANSI pakutavate tüüpide kirjeldust vaadake lisast B või muude levinud tüüpide kohta C lisast.)< size >Väärtus sõltub< data type >(Vt lisa B.)< cursor name > < identifier > < index name > < identifier > < synonym > < identifier >(*mittestandardne*)< owner > < Authorization ID > < column list > < column spec > .,.. < value list > < value expression > .,.. < table reference > { < table name > [< alias >] } .,..

    PREDIKAADID

    Järgnev defineerib erinevate predikaaditüüpide loendi< predicate >kirjeldatud järgmistel lehekülgedel:

    < predicate > ::=

    { < comparison predicate > | < in predicate > | < null predicate > | < between predicate > | < like predicate > | < quantified predicate > | < exists predicate > } < predicate >on avaldis, mis võib olla tõene, vale või tundmatu, välja arvatud< exists predicate >Ja< null predicate >, mis võib olla ainult tõene või vale.

    Tundmatu võetakse vastu, kui NULL väärtused takistavad saadud vastuse väljundit. See juhtub igal ajal NULL väärtus võrrelda mis tahes väärtusega. Tavalised operaatorid Boolean - AND, OR ja NOT - saab kasutada predikaadiga. NOT true = vale, NOT false = tõene ja NOT unknown = tundmatu. AND ja OR tulemused kombinatsioonis predikaatidega on näidatud järgmistes tabelites:

    JA JA Tõene Väär Tundmatu Tõene tõene vale teadmata Väär vale vale vale teadmata teadmata vale teadmata VÕI tõene Väär Teadmata Tõene tõene tõene Väär tõene vale teadmata Teadmata tõsi teadmata teadmata

    Neid tabeleid loetakse sarnaselt korrutustabeliga: kombineerite ridade tõesed, valed või tundmatud väärtused nende veergudega, et saada tulemus ristis. Näiteks AND-tabelis annavad kolmas veerg (Unknown) ja esimene rida (True) ristumiskohas paremas ülanurgas tulemuse – teadmata ehk teisisõnu: Tõene JA Tundmatu = tundmatu. Arvutuste järjekord määratakse sulgudes. Nad ei tutvusta end iga kord. Kõigepealt hinnatakse EI, seejärel AND ja OR. Erinevat tüüpi predikaadid< predicate >käsitletakse eraldi järgmises osas.

    < comparison predicate >(võrdluspredikaat)

    Süntaks

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

    Kui kumbki< value expression >= NULL või< comparison predicate >= teadmata; teisisõnu, see on tõene, kui võrdlus on tõene, või väär, kui võrdlus on väär.
    < relational op >on standardsed matemaatilised väärtused arvväärtusi; muude väärtustüüpide puhul on need väärtused rakendusepõhised.
    Mõlemad< value expression >peavad olema võrreldavad andmetüübid. Kui alampäring< subquery >kasutatakse, peab see sisaldama üht väljendit< value expression >SELECT-klauslis, mille väärtus asendab teise avaldise< value expression >võrdluspredikaadis< comparision predicate >, iga kord< subquery >tegelikult täidetud.

    < between predicate >

    Süntaks

    < value expression >VAHEL< value expression >
    JA< value expression >

    < between predicate >- A B- JA C VAHEL on sama tähendus kui< predicate >- (A >= B JA< = C). < between predicate >mille puhul A MITTE B JA C VAHEL on sama tähendusega kui EI (B JA C VAHEL).< value expression >saab järeldada mittestandardse päringu abil< subquery >(*mittestandardne*).

    < in prediicate >

    Süntaks

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

    Väärtuste loetelu< value list >koosneb ühest või mitmest sulgudes loetletud väärtusest, mis on eraldatud komadega, millel on võrreldav väärtus< value expression >andmetüüp. Kui kasutatakse alampäringut< subquery >, peab see sisaldama ainult ühte väljendit< value expression >SELECT-klauslis (võib-olla rohkemgi, kuid see jääb ANSI standardist väljapoole). Alampäring< subquery >tegelikult käivitatakse see põhipäringu iga kandidaatrea jaoks eraldi ja selle väljastatavad väärtused moodustavad väärtuste loendi< value list >selle rea jaoks. Igal juhul predikaat< in predicate >on tõene, kui väljend< value expression >väärtuste loendis< value list >, kui on määratud EI. Fraas A EI IN (B, C) on samaväärne fraasiga EI (A IN (B, C)).

    < like predicate >

    Süntaks

    < charvalue >LIKE< pattern >

    < charvalue >on mis tahes *mittestandardne* avaldis< value expression >tähtnumbriline tüüp.< charvalue >võib-olla vastavalt standardile ainult teatud veerg< column spec >. Näidis< pattern >koosneb stringist, mille vastet kontrollitakse< charvalue >. Lõpu sümbol< escapechar >on üks tähtnumbriline märk. Vaste tekib, kui on täidetud järgmised tingimused:

  • Iga alakriipsu kohta< underscore >proovis< pattern >millele ei eelne lõpumärki< escapechar >, on üks vastav sümbol< charvalue >.
  • Kõigile< percent sign >proovis< pattern >, millele ei eelne< escapechar >, selles on nulle või rohkem sobivaid märke< charvalue >.
  • Kõigile< escapechar >V< pattern >mis ei eelne teisele< escapechar >, selles pole vastavat tähemärki< charvalue >.
  • Iga teise tegelase jaoks< pattern >, on sama sümbol seatud vastava märgi juurde< charvalue >.

    Kui tekib vaste,< like predicate >- tõene, kui EI oli määratud. Fraas NOT LIKE "tekst" on samaväärne EI (A LIKE "tekst").

    < null predicate >

    Süntaks

    < column spec >ON NULL

    < column spec >= ON NULL, kui selles veerus on NULL väärtus. Saab hakkama< null predicate >tõene, kui NULL pole määratud. Fraas< column spec >IS NOT NULL, sellel on sama tulemus kui NOT (< column spec >ON NULL).

    < quantified predicate >

    Süntaks

    < value expression > < relational op >
    < quantifier > < subquery >
    < quantifier >::= KÕIK | KÕIK | MÕNED

    Alampäringu SELECT klausel< subquery >peab sisaldama ühte ja ainult ühte väärtusavaldist< value expression >. Kõik alampäringu tagastatud väärtused< subquery >koostage tulemuste kogum< result set >. < value expression >võrreldi kandjaga< relational operator >, tulemuskomplekti iga liikmega< result set >. Seda võrdlust hinnatakse järgmiselt:

  • Pärast seda rakendatakse igale rühmale koondfunktsioone. Pange tähele, et GROUP BY puhul käsitletakse kõiki NULL väärtusi võrdsetena, st. NULL-väärtusi sisaldava välja järgi rühmitamisel langevad kõik sellised read ühte rühma.< quantifier >= KÕIK ja tulemushulga iga liige< result set >muudab selle võrdluse tõeks,< quantified predicate >- tõsi.
  • Pärast seda rakendatakse igale rühmale koondfunktsioone. Pange tähele, et GROUP BY puhul käsitletakse kõiki NULL väärtusi võrdsetena, st. NULL-väärtusi sisaldava välja järgi rühmitamisel langevad kõik sellised read ühte rühma.< quantifier >= ANY ja tulemuste hulgas on vähemalt üks liige< result set >, mis muudab selle võrdluse tõeseks< quantified predicate >on õige.
  • Kui tulemus seatud< result set >tühi siis< quantified predicate >tõsi, kui< quantifier >= KÕIK ja vale, kui see on vastupidine.
  • Pärast seda rakendatakse igale rühmale koondfunktsioone. Pange tähele, et GROUP BY puhul käsitletakse kõiki NULL väärtusi võrdsetena, st. NULL-väärtusi sisaldava välja järgi rühmitamisel langevad kõik sellised read ühte rühma.< quantifier >= MÕNED, efekt on sama, mis ANY puhul.
  • Pärast seda rakendatakse igale rühmale koondfunktsioone. Pange tähele, et GROUP BY puhul käsitletakse kõiki NULL väärtusi võrdsetena, st. NULL-väärtusi sisaldava välja järgi rühmitamisel langevad kõik sellised read ühte rühma.< quantified predicate >ei ole tõsi ega truudusetu, ta on tundmatu.

    < exists predicate >

    Süntaks:

    OLEMAS (< subquery >)

    Kui alampäring< subquery >prindib ühe või mitu väljundrida,< exists predicate >- ustav; ja vale, kui muidu.

    SQL-KÄSUD

    Selles jaotises kirjeldatakse üksikasjalikult erinevate SQL-käskude süntaksit. See annab teile võimaluse kiiresti otsida käsku, leida selle süntaksit ja lühidalt selle toimimist.

    pidage meeles Sõnaga algavaid käske – EXEC SQL, aga ka sõnaga lõppevaid käske või lauseid – saab kasutada ainult pesastatud SQL-is.

    ALUSTAGE DEKLARERIMISE JAOTIS

    Süntaks

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

    See käsk loob peamise keeleprogrammi jaotise, et deklareerida peamised muutujad, mida kasutatakse pesastatud SQL-lausetes. Muutuja SQLCODE tuleb lisada ühe deklareeritud hostkeele muutujana.

    SULGE KURSOR

    Süntaks

    EXEC SQL SULE KURSORI< cursor name > < SQL term >;

    See käsk käsib kursoril sulgeda, pärast mida ei saa sealt väärtust hankida enne, kui see uuesti avatakse.

    PÜHENDA (TÖÖTA)

    Süntaks

    See käsk jätab muutmata kõik andmebaasis tehtud muudatused kuni praeguse tehingu lõppemiseni ja uue tehingu alguseni.

    LOO INDEX

    (*MITTESTANDARDNE*)

    Süntaks

    LOO INDEX< Index name >
    SEES< table name > (< column list >);

    See käsk loob tõhusa marsruudi koos kiire juurdepääs määratud veerge sisaldavate ridade otsimiseks. Kui on määratud UNIQUE, ei saa tabel nendes veergudes sisaldada dubleerivaid väärtusi.

    LOO SÜNONÜÜM (*MITTESTANDARDNE*)
    (LOO SÜNONÜÜM) (*MITTESTANDARDNE*)

    Süntaks

    LOO PUBLICL SÜNONÜÜM< synonym >FOR
    < owner >.< table name >;

    See käsk loob tabelile alternatiivi (sünonüümi). Sünonüüm kuulub selle loojale ja tabel ise, tavaliselt teisele kasutajale. Sünonüümi kasutades ei pea selle omanik tabelile viitama täisnimega (kaasa arvatud omanik). Kui on määratud AVALIK, kuulub sünonüüm kataloogi SÜSTEEM ja on seega kõigile kasutajatele kättesaadav.

    LOO TABEL

    Süntaks

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

    Käsk loob andmebaasis tabeli. See tabel kuulub selle loojale. Veerge käsitletakse nimede järjekorras.< data type >- määrab veerus sisalduva andmetüübi. Standardne< data type >kirjeldatud lisas B; kõik muud kasutatud andmetüübid< data type >, mida arutatakse lisas C. Suuruse väärtus< size >oleneb andmetüübist< data type >.
    < colconstraint >Ja< tabconstraint >kehtestada piirangud väärtustele, mida saab veergu sisestada.
    < defvalue >määrab (vaike)väärtuse, mis lisatakse automaatselt, kui sellele reale pole määratud muud väärtust. (Käsu CREATE TABLE enda kohta vt 17. peatükki ja piirangute ja piirangute kohta 18. peatükki JA< defvalue >).

    LOO VAADE

    Süntaks

    LOO VAADE< table name >
    AS< query >
    ;

    Vaadet käsitletakse nagu iga tabelit SQL-käsud. Kui käsk viitab tabeli nimele< table name >, taotlus< query >käivitatakse ja selle väljund ühtib selles käsus määratud tabeli sisuga.
    Mõnda vaadet saab muuta, mis tähendab, et nendes vaadetes saab käivitada muutmiskäsud ja edastada need tabelisse, millele päringus viidati< query >. Kui on määratud WITH CHECK OPTION, peab see modifikatsioon vastama ka predikaadi tingimusele< predicate >taotluses< query >.

    KULUSTA KURSOR

    Süntaks

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

    See käsk seob need kursoriga< cursor name >, palvega< query >. Kui kursor on avatud (vt OPEN CURSOR), päring< query >käivitatakse ja selle tulemust saab väljundiks tuua (käsuga FETCH). Kui kursor on muudetav, siis päringuga viidatud tabel< query >, saab muuta sisu, kasutades kursori muutmistoimingut (vt peatükki 25 muudetavate kursorite kohta).

    KUSTUTA

    Süntaks

    KUSTUTA FROM< table name >
    { ; }
    | KUS HETKES< cursorname >< SQL term >

    Kui klausel WHERE puudub, kustutatakse tabeli KÕIK read. Kui WHERE-klausel kasutab predikaati< predicate >, read, mis vastavad selle predikaadi tingimusele< predicate >kustutatakse. Kui WHERE-klauslis on kursori nimes argument CURRENT OF< cursor name >, rida tabelist< table name >millele praegu kursori nimi viitab< cursor name >kustutatakse. Vormi WHERE CURRENT saab kasutada ainult pesastatud SQL-is ja ainult muudetavate kursoritega.

    EXEC SQL

    Süntaks

    EXEC SQL< embedded SQL command > < SQL term >

    EXEC SQL-i kasutatakse kõigi teises keeles pesastatud SQL-käskude alguse tähistamiseks.

    TOO

    Süntaks

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

    FETCH aktsepteerib väljundit praegune rida nõuda< query >, lisab selle peamiste muutujate loendisse< host-variable list >ja liigutab kursori asukohta järgmine rida. Nimekiri< host-variable list >võib sihtmuutujana sisaldada indikaatormuutujat (vt peatükk 25.)

    ANDMINE (ÜLEANDMISÕIGUSED)

    Süntaks (standardne)

    ANNA KÕIK
    | (VALI
    | LISA
    | KUSTUTA
    | VÄRSKENDA [(< column llst >)]
    | VIITED [(< column llst >)l) . , . .
    SEES< table name > . , . .
    AVALIKKU |< Authorization ID > . , . .
    ;

    Argument KÕIK, PRIVILEEGIDEGA või ilma, sisaldab kõiki privileege õiguste loendis. AVALIK hõlmab kõiki olemasolevaid ja kõiki tulevikus loodavaid kasutajaid. See käsk võimaldab teil üle anda õigused teatud nimega tabelis toimingute tegemiseks. VIITED võimaldab anda luba veergude kasutamiseks veergude loendis< column list >võõrvõtme vanemvõtmena. Muud õigused koosnevad õigusest täita käske, mille õigused on tabelis märgitud nende nimedega. UPDATE sarnaneb funktsiooniga VIITED ja võib teatud veergudele seada piiranguid. GRANT OPTION võimaldab need õigused teistele kasutajatele üle kanda.

    Süntaks (mittestandardne)

    GRANT DBA
    | RESSURS
    | ÜHENDA... .
    TO< Authorization ID > . , . .
    | < privilege > . , . . }
    KÄTTE ( AVALIK
    | < Authorization ID > . , . . };

    Privileeg< privelege >võib olla üks neist, mis on määratud käsus GRANT. REVOKE'i andval kasutajal peavad olema samad õigused kui GRANT-i andval kasutajal. ON-klauslit saab kasutada siis, kui eriobjektil kasutatakse eritüüpi privileegi.

    TAGASI (TÖÖ)
    (TAGASI) (TEHINGUD)

    Süntaks

    Käsk tühistab kõik praeguse tehingu ajal andmebaasis tehtud muudatused. Samuti lõpetab see praeguse tehingu ja alustab uut tehingut.

    VALI

    Süntaks

    VALI (ERINEV | KÕIK]< value expression > . , . . } / *
    FROM< table reference > . , . .

    . , . . ];

    See avaldus korraldab päringu ja hangib väärtused andmebaasist (vt 3. peatükk – 14. peatükk). Kehtivad järgmised reeglid:

  • Kui ei ole määratud ei ALL ega DISTINCT, eeldatakse KÕIK.
  • Väljendus< value expression >koosneb< column spec >, koondfunktsioon< aggregate funct >, mittestandardne funktsioon< nonstandard fu nction >, pidev< constant >, või nende mis tahes kombinatsiooni operaatoritega kehtivates avaldistes.
  • Viitetabel< table reference >, koosneb tabeli nimest, sealhulgas omaniku eesliitest, kui praegune kasutaja ei ole omanik, või tabeli (mittestandardsest) sünonüümist. Tabel võib olla kas aluslaud või vaade. Põhimõtteliselt võib alias näidata, millist varjunime tabeli jaoks kasutatakse ainult praeguse käsu kehtivuse ajal. Tabeli nimi või sünonüüm peab olema varjunimest eraldatud ühe või mitme eraldajaga< separator >.
  • Kui kasutatakse GROUP BY, siis kõik veerud< column spec >mida kasutatakse klauslis SELECT, tuleb kasutada veergude rühmana< grouping column >, kui need ei sisaldu koondfunktsioonis< aggregate funct >. Terve veerurühm< grouping column >peab olema esindatud väljendite hulgas< value expressions >SELECT klauslis täpsustatud. Iga erineva veerurühma väärtuste kombinatsiooni jaoks< grouping column >, on üks ja ainult üks väljundi rida.
  • Kui kasutatakse HAVING, siis predikaat< predicate >rakendatakse igale klausli GROUP BY loodud reale ja need read, mis muudavad selle predikaadi tõeseks, prinditakse.
  • Kui kasutatakse ORDER BY, on väljundil kindel järjestus. Iga veeru ID< column identifer >viitab täpsustatule< value expression >SELECT-klauslis. Kui see< value expression >on määratud veerg< column spec >, < co lumn identifier >võiks olla sama mis< column spec >. Muidu< co lumn identifier >võib olla positiivne täisarv, mis näitab asukohta, kus< value expression >SELECT-klausli järjestuses. Väljund genereeritakse nii, et see sobiks sisalduvate väärtustega< column identifier >kasvavas järjekorras, kui DESC pole määratud. Veeru ID nimi< column identifier > tuleb esimesena punktis ORDER BY eelneb hilisem väärt nimed väljundjärjestuse määramisel.

    SELECT-klausel hindab iga tabeli kandidaatrida, milles read on näidatud eraldi. Kandidaadistring on määratletud järgmiselt:

  • Kui on ainult üks viidatud tabel< table reference >on lisatud, on selle tabeli iga rida omakorda kandidaadirida.
  • Kui viidatud tabel on rohkem kui üks< table reference >lubatud, tuleb iga tabeli iga rida kombineerida kordamööda kõigi teiste tabelite ridade kombinatsioonidega. Iga selline kombinatsioon on omakorda kandidaatstring.

    Iga kandidaatrida loob väärtused, mis moodustavad predikaadi< predicate >klauslis WHERE on tõene, väär või tundmatu. Kui GROUP BY-d ei kasutata, siis iga< value expression >rakendatakse kordamööda igale kandidaatstringile, mille väärtus muudab predikaadi tõeseks, ja selle toimingu tulemuseks on väljund.
    Kui kasutatakse GROUP BY, kombineeritakse kandidaatread koondfunktsioonide abil. Kui predikaat puudub< predicate >pole määratud, iga väljend< value expression >kehtib iga kandidaatrea või rühma kohta. Kui on määratud DISTINCT, eemaldatakse väljundist topeltread.

    LIIT

    Süntaks

    < query >(LIIT< query > } . . . ;

    Kahe või enama päringu väljastamine< query >liidetakse. Iga palve< query >peab sisaldama sama numbrit< value expression >SELECT-klauslisse ja sellises järjekorras, et 1.. n igast on andmetüübiga ühilduv< data type >ja suurus< size >koos 1.. n kõigi teistega.

    VÄRSKENDAMINE

    Süntaks

    VÄRSKENDAMINE< table name >
    SET (< column name > = < value expression > } . , . .
    ([ KUS< predlcate >]; }
    | {
    < SQL term >]}

    UPDATE muudab väärtusi igas nimetatud veerus< column name >vastavale väärtusele< value expression >. Kui WHERE-klausel kasutab predikaati< predicate >, siis ainult need tabeliread, mille praegused väärtused moodustavad selle predikaadi< predicate >õige, võib muutuda. Kui WHERE kasutab klauslit CURRENT OF, siis väärtused tabelireal nimega< table name >asub nimega kursoris< cursor name >muutuvad. WHERE CURRENT OF sobib kasutamiseks ainult pesastatud SQL-is ja ainult muudetavate kursoritega. Kui WHERE-klauslit pole, muudetakse kõiki ridu.

    KUNAGI (IGA KORD AS)

    Süntaks

    TÄIUSTAGE SQL-i IGAL KORDA< SQLcond > < actlon > < SQL term >
    < SQLcond >::=SQLERROR | EI LEIDA | SQLHOIATUS
    (viimane on mittestandardne)
    < action >::=JÄTKA | MINNA< target >| MINNA< target >
    < target >:: = oleneb hostkeelest

  • Süntaks:

    * Kus väljad1— komadega eraldatud väljad valimiseks, kõik väljad saab määrata ka *-ga; laud— tabeli nimi, millest andmeid eraldame; tingimused— proovivõtutingimused; väljad2— sortimiseks komadega eraldatud väli või väljad; loendama— üleslaaditavate ridade arv.
    * Nurksulgudes olev päring pole andmete toomiseks vajalik.

    Lihtsad näited selecti kasutamisest

    1. Tavaline andmete valim:

    > VALI * kasutajatelt

    2. Andmeproovide võtmine kahe tabeli ühendamisega (JOIN):

    VALI u.nimi, r.* kasutajatelt u LIITU kasutajate_õigused r ON r.user_id=u.id

    *V selles näites andmetest võetakse proovid ja tabelid ühendatakse kasutajad Ja user_rights. Neid ühendavad väljad kasutaja_id(tabeli kasutajate_õigused) ja id(kasutajad). Nimeväli hangitakse esimesest tabelist ja kõik väljad teisest.

    3. Proovide võtmine aja- ja/või kuupäevaintervallidega

    a) on teada alguspunkt ja teatud ajavahemik:

    * Valitakse viimase tunni andmed (väli kuupäeva).

    b) algus- ja lõppkuupäev on teada:

    25.10.2017 Ja 25.11.2017 .

    c) algus- ja lõppkuupäevad + kellaaeg on teada:

    * valige andmed vahel 25.03.2018 0 tundi 15 minutit Ja 25.04.2018 15 tundi 33 minutit ja 9 sekundit.

    d) eemaldage andmed teatud kuu ja aasta kohta:

    * eraldage andmed väljal kuupäeva jaoks on väärtused aprill 2018 aastal.

    4. Maksimaalsete, minimaalsete ja keskmiste väärtuste valimi võtmine:

    > VALI max(pindala), min(pindala), keskmine(pindala) riigist

    * max— maksimaalne väärtus; min- minimaalne; keskm- keskmine.

    5. Stringi pikkuse kasutamine:

    * see päring peaks näitama kõiki kasutajaid, kelle nimi koosneb 5 tähemärgist.

    Näited keerukamatest või harva kasutatavatest päringutest

    1. Konkatenatsioon valitud andmete rühmitamisega ühte ritta (GROUP_CONCAT):

    * laualt kasutajad välja andmed id, need on kõik paigutatud ühele reale, väärtused on eraldatud komad.

    2. Andmete rühmitamine kahe või enama välja järgi:

    > SELECT * FROM kasutajad GROUP BY CONCAT(pealkiri, "::", sünd)

    * Kokkuvõttes laadime selles näites andmed üles kasutajate tabelist ja grupeerime need väljade kaupa pealkiri Ja sündi. Enne rühmitamist ühendame väljad eraldajaga üheks reale :: .

    3. Kahe tabeli tulemuste liitmine (LIIT):

    > (VALI ID, fio, aadress, "Kasutajad" tüübina FROM users)
    LIIT
    (VALI ID, fio, aadress, "Kliendid" tüübina FROM clients)

    * selles näites valitakse andmed tabelitest kasutajad Ja klientidele.

    4. Iga tunni kohta rühmitatud keskmiste valim:

    SELECT avg(temperatuur), DATE_FORMAT(kuupäeva ja kellaaja värskendus, "%Y-%m-%d %H") kui tunni_kuupäevaaeg Arhiivist GROUP BY DATE_FORMAT(kuupäeva ja kellaaja värskendus, "%Y-%m-%d %H")

    *siin eraldame välja keskmise väärtuse temperatuuri laualt arhiiv ja rühmitada valdkondade kaupa datetime update(iga tunni ajajaotusega).

    LISA

    Süntaks 1:

    > INSERT INTO

    () VÄÄRTUSED ( )

    Süntaks 2:

    > INSERT INTO

    VÄÄRTUSED ( )

    * Kus laud— tabeli nimi, kuhu andmed sisestame; väljad— komadega eraldatud väljade loetelu;väärtusi- väärtuste loetlemine komadega eraldatuna.
    * esimene valik võimaldab teil sisestada ainult loetletud väljad - ülejäänud saavad vaikeväärtused. Teine võimalus nõuab kõikide väljade sisestamist.

    Näited insertide kasutamise kohta

    1. Mitme rea lisamine ühe päringuga:

    > INSERT INTO linnad ("nimi", "riik") VÄÄRTUSED ("Moskva", "Venemaa"), ("Pariis", "Prantsusmaa"), ("Funafuti" , "Tuvalu");

    * selles näites lisame ühte SQL-päringusse 3 kirjet.

    2. Sisestamine teisest tabelist (ridade kopeerimine, INSERT + SELECT):

    * ekstraktida tabelist kõik kirjed linnad, mille nimed algavad tähega M ja sisestage need tabelisse linnad-uus.

    Värskendus (UPDATE)

    Süntaks:

    * Kus laud— tabeli nimi; valdkonnas— väli, mille väärtust muudame; väärtus- uus tähendus; tingimused— seisund (ilma selleta on värskenduse tegemine ohtlik – saate asendada kõik andmed kogu tabelis).

    Värskenda asendamise abil (REPLACE):

    VÄRSKENDAMINE

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

    UPDATE linnad SET nimi = REPLACE(nimi, "Maskva", "Moskva");

    Kui tahame turvaliselt mängida, saab esmalt vahetuse tulemust kontrollida kasutades SELECT:

    Kustuta (DELETE)

    Süntaks:

    * Kus laud— tabeli nimi; tingimused— tingimus (nagu UPDATE puhul, on DELETE kasutamine ilma tingimuseta ohtlik – DBMS ei küsi kinnitust, vaid lihtsalt kustutab kõik andmed).

    Tabeli koostamine

    Süntaks:

    > LOO TABEL

    ( , )

    > LOO TABEL, KUI EI OLEMAS „users_rights” (
    `id` int(10) unsigned NOT NULL,
    `user_id` int(10) allkirjastamata EI NULL,
    `rights` int(10) allkirjastamata EI NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    * Kus laud- tabeli nimi (näites user_rights); väli1, väli2— väljade nimed (näites luuakse 3 välja — id, kasutaja_id, õigused); valikud1, valikud2— välja parameetrid (näites int(10) allkirjastamata EI NULL); tabeli valikud— üldised tabeliparameetrid (näites ENGINE=InnoDB DEFAULT CHARSET=utf8).

    Päringute kasutamine PHP-s

    Ühenduse loomine andmebaasiga:

    mysql_connect("localhost", "login", "password") või die("MySQL ühendamise viga");
    mysql_select_db("db_nimi");
    mysql_query("SET NIMED "utf8"");

    * kus ühendus luuakse kohaliku serveri andmebaasiga ( kohalik host); ühenduse mandaadid - sisse logida Ja parool(vastavalt sisselogimine ja parool); kasutatakse alusena db_nimi; kasutatud kodeeringut UTF-8.

    Samuti saate luua püsiva ühenduse:

    mysql_pconnect("localhost", "login", "password") or die("MySQL ühenduse viga");

    * siiski on võimalus saavutada maksimaalne lubatud hostimislimiit. Seda meetodit tuleks kasutada enda serverid, kus me ise saame olukorda kontrollida.

    Täielik ühendus:

    * PHP-s käivitatakse automaatselt, v.a püsiühendused(mysql_pconnect).

    Päring PHP-s MySQL-i (Mariadb) tehakse funktsiooniga mysql_query() ja päringust andmete väljatoomine toimub funktsiooniga mysql_fetch_array():

    $result = mysql_query("SELECT * FROM kasutajad");
    while ($mass = mysql_fetch_array($result)) (
    kaja $mass . "
    ";
    }

    * selles näites tehti tabelile päring kasutajad. Päringu tulemus paigutatakse muutujasse $tulemus. Järgmisena kasutatakse silmust samal ajal, mille iga iteratsioon hangib andmete massiivi ja asetab need muutujasse $mass— igas iteratsioonis töötame ühe andmebaasi reaga.

    Kasutatav funktsioon mysql_fetch_array() tagastab assotsiatiivse massiivi, millega on mugav töötada, kuid on ka alternatiiv - mysql_fetch_row(), mis tagastab tavalise nummerdatud massiivi.

    Varjestus

    Kui teil on vaja päringu stringi lisada erimärk, näiteks %, peate kasutama paoklahvi, kasutades kaldkriipsu - \

    Näiteks:

    * Kui käivitate sellise päringu ilma paoguta, tõlgendatakse % märki kui suvalist arvu märke pärast 100.

    See on kõik. Kui vajate abi taotluse täitmisel, saatke mulle e-kiri