Mifano ya maswali ya SQL katika MariaDB (MySQL). SQL ni nini? Maswali rahisi ya KUSASISHA kwa hifadhidata ya MySQL

Ninawezaje kujua idadi ya mifano ya PC inayotolewa na muuzaji fulani? Jinsi ya kuamua bei ya wastani ya kompyuta na sifa sawa za kiufundi? Maswali haya na mengine mengi yanayohusiana na habari fulani ya takwimu yanaweza kujibiwa kwa kutumia kazi za mwisho (jumla).. Kiwango hutoa kazi zifuatazo za jumla:

Vitendaji hivi vyote vinarudisha thamani moja. Wakati huo huo, kazi COUNT, MIN Na MAX inatumika kwa aina yoyote ya data, wakati SUM Na AVG hutumiwa tu kwa sehemu za nambari. Tofauti kati ya utendaji COUNT(*) Na COUNT(<имя поля>) ni kwamba ya pili haizingatii maadili NULL wakati wa kuhesabu.

Mfano. Pata bei ya chini na ya juu zaidi kwa kompyuta za kibinafsi:

Mfano. Pata nambari inayopatikana ya kompyuta zinazozalishwa na mtengenezaji A:

Mfano. Ikiwa tunavutiwa na idadi ya aina tofauti zinazozalishwa na mtengenezaji A, basi swali linaweza kutengenezwa kama ifuatavyo (kwa kutumia ukweli kwamba katika jedwali la Bidhaa kila modeli imerekodiwa mara moja):

Mfano. Pata idadi ya mifano tofauti inayopatikana inayozalishwa na mtengenezaji A. Swala ni sawa na ya awali, ambayo ilihitajika kuamua jumla ya mifano zinazozalishwa na mtengenezaji A. Hapa unahitaji pia kupata idadi ya mifano tofauti katika meza ya PC (yaani, zile zinazopatikana kwa kuuza).

Ili kuhakikisha kuwa tu maadili ya kipekee hutumiwa wakati wa kupata viashiria vya takwimu, lini hoja ya jumla ya kazi inaweza kutumika DISTINCT kigezo. Mwingine kigezo YOTE ni chaguo-msingi na kuchukulia kuwa thamani zote zilizorejeshwa kwenye safu wima zinahesabiwa. Opereta,

Ikiwa tunahitaji kupata idadi ya mifano ya PC zinazozalishwa kila mtu mtengenezaji, utahitaji kutumia KUNDI KWA kifungu, kufuata kisintaksia WAPI vifungu.

KUNDI KWA kifungu

KUNDI KWA kifungu hutumika kufafanua vikundi vya mistari ya pato inayoweza kutumika jumla ya utendaji (COUNT, MIN, MAX, AVG na SUM). Iwapo kifungu hiki hakipo na vipengele vya kukokotoa vinatumika, basi safu wima zote zilizo na majina yaliyotajwa ndani CHAGUA, inapaswa kujumuishwa katika kazi za jumla, na chaguo hizi za kukokotoa zitatumika kwa seti nzima ya safu mlalo zinazokidhi kihusishi cha hoja. Vinginevyo, safu wima zote za orodha SELECT haijajumuishwa katika jumla ya vitendakazi lazima ibainishwe katika KUNDI KWA kifungu. Kama matokeo, safu zote za hoja za pato zimegawanywa katika vikundi vilivyo na mchanganyiko sawa wa maadili katika safu wima hizi. Baada ya hayo, majukumu ya jumla yatatumika kwa kila kikundi. Tafadhali kumbuka kuwa kwa GROUP BY maadili yote NULL yanachukuliwa kuwa sawa, i.e. wakati wa kupanga kwa uga iliyo na thamani NULL, safu mlalo zote kama hizo zitaanguka katika kundi moja.
Kama ikiwa kuna GROUP BY kifungu, katika kifungu cha CHAGUA hakuna utendaji wa jumla, basi swala litarudisha safu mlalo moja kutoka kwa kila kikundi. Kipengele hiki, pamoja na neno kuu la DISTINCT, vinaweza kutumiwa kuondoa nakala za safu mlalo katika seti ya matokeo.
Hebu tuangalie mfano rahisi:
CHAGUA muundo, COUNT(mfano) AS Qty_model, AVG(bei) AS Avg_bei
KUTOKA kwa PC
KUNDI KWA mfano;

Katika ombi hili, kwa kila mfano wa PC, idadi yao na gharama ya wastani imedhamiriwa. Safu mlalo zote zilizo na thamani sawa ya muundo huunda kikundi, na matokeo ya SELECT huhesabu idadi ya thamani na wastani wa bei kwa kila kikundi. Matokeo ya swali yatakuwa jedwali lifuatalo:
mfano Qty_model Bei_wastani
1121 3 850.0
1232 4 425.0
1233 3 843.33333333333337
1260 1 350.0

Ikiwa SELECT ilikuwa na safu ya tarehe, basi ingewezekana kuhesabu viashiria hivi kwa kila tarehe maalum. Ili kufanya hivyo, unahitaji kuongeza tarehe kama safu ya kikundi, na kisha kazi za jumla zitahesabiwa kwa kila mchanganyiko wa maadili (mfano-tarehe).

Kuna kadhaa maalum sheria za kufanya kazi za jumla:

  • Ikiwa kama matokeo ya ombi hakuna safu zilizopokelewa(au zaidi ya safu mlalo moja kwa kikundi fulani), basi hakuna data ya chanzo ya kukokotoa utendaji wowote wa jumla. Katika kesi hii, matokeo ya kazi COUNT yatakuwa sifuri, na matokeo ya kazi zingine zote zitakuwa NULL.
  • Hoja kazi ya jumla yenyewe haiwezi kuwa na vitendaji vya jumla(kazi kutoka kwa kazi). Wale. katika swala moja haiwezekani, sema, kupata kiwango cha juu cha maadili ya wastani.
  • Matokeo ya kutekeleza kitendakazi COUNT ni nambari kamili(INTEGER). Utendakazi mwingine wa jumla hurithi aina za data za thamani wanazochakata.
  • Ikiwa chaguo za kukokotoa za SUM zitatoa matokeo ambayo ni makubwa kuliko kiwango cha juu cha thamani ya aina ya data iliyotumiwa, kosa.

Kwa hivyo, ikiwa ombi halina KUNDI KWA vifungu, Hiyo kazi za jumla imejumuishwa katika CHAGUA kifungu, hutekelezwa kwenye safu mlalo zote zinazotokana na hoja. Ikiwa ombi lina KUNDI KWA kifungu, kila seti ya safu mlalo ambayo ina thamani sawa za safu au kikundi cha safu wima zilizobainishwa ndani KUNDI KWA kifungu, huunda kikundi, na kazi za jumla hufanywa kwa kila kikundi kivyake.

KUWA na ofa

Kama WAPI kifungu inafafanua kihusishi cha kuchuja safu, basi KUWA na ofa inatumika baada ya kuweka vikundi kufafanua kihusishi sawa ambacho huchuja vikundi kwa maadili kazi za jumla. Kifungu hiki kinahitajika ili kuthibitisha maadili yanayopatikana kwa kutumia kazi ya jumla si kutoka kwa safu mlalo mahususi za chanzo cha rekodi kilichofafanuliwa ndani KUTOKA kifungu, na kutoka vikundi vya mistari kama hiyo. Kwa hivyo, hundi kama hiyo haiwezi kuwa ndani WAPI kifungu.

Aina za dataSQL(Jinsi katikaUk, kama katika kiwango)

Aina za kamba

Aina za data za nambari

Sarafu, Tabia, Aina za data za binary

Aina ya Boolean. Uhamisho

Mifano ya maswali rahisi ya SQL

Maswali rahisi zaidi CHAGUA

Taarifa ya SQL SELECT ndiyo taarifa muhimu zaidi na inayotumiwa sana. Imeundwa kupata habari kutoka kwa meza za hifadhidata. Sintaksia iliyorahisishwa ya kauli SELECT ni kama ifuatavyo.

CHAGUA [ ZOTE | DISTINCT ] select_item_commalist

KUTOKA kwa mkomisti_wa_marejeleo

[WHERE masharti_masharti]

[ GROUP BY column_name_commalist ]

[ KUWA na maelezo_ya_masharti]

[ AGIZA KWA order_item_commalist ]

Mabano ya mraba yanaonyesha vipengele ambavyo huenda visiwepo katika ombi.

Neno kuu la SELECT huambia hifadhidata kwamba taarifa hii ni ombi la kupata habari.

Baada ya neno SELECT, ikitenganishwa na koma, majina ya uwanja (orodha ya sifa) ambayo yaliyomo yao yameombwa yameorodheshwa.

Neno kuu linalohitajika katika kifungu cha hoja cha CHAGUA ni neno KUTOKA. Neno kuu la FROM linafuatwa na orodha iliyotenganishwa kwa koma ya majina ya jedwali ambapo taarifa hutolewa tena.

Kwa mfano, chagua kichwa, maelezo kutoka kwa filamu

Swali lolote la SQL lazima limalizike na alama ";" (semicolon). Matokeo ya swali hili yatakuwa jedwali ...

Mpangilio wa safu wima katika jedwali hili unalingana na mpangilio wa sehemu zilizoainishwa kwenye hoja

Ikiwa unahitaji kuonyesha maadili ya safu wima zote za jedwali, unaweza kutumia alama ya "*" (asteriski) badala ya kuorodhesha majina yao.

CHAGUA * KUTOKA filamu;

Katika kesi hii, matokeo ya swala yatakuwa meza nzima ya filamu.

Hebu kwa mara nyingine tena tuelekeze mawazo yako kwa ukweli kwamba majedwali yaliyopatikana kutokana na swali la SQL hayafikii kikamilifu ufafanuzi wa uhusiano wa uhusiano. Hasa, zinaweza kuwa na nakala (safu) zilizo na maadili ya sifa zinazofanana.

Kwa mfano, swali "orodha ya majina ya waigizaji" inaweza kuandikwa kama ifuatavyo.

chagua first_name kutoka kwa mwigizaji;

Matokeo yake yatakuwa meza, meza ina safu zinazofanana. Ili kuwatenga nakala za rekodi kwenye matokeo ya hoja CHAGUA, tumia neno kuu la DISTINCT.

Ikiwa hoja ya SELECT itapata sehemu nyingi, DISTINCT huondoa safu mlalo nakala ambazo thamani za sehemu zote zilizochaguliwa zinafanana.

Swali la awali linaweza kuandikwa kama ifuatavyo.

chagua first_name tofauti kutoka kwa mwigizaji;

Kama matokeo, tunapata jedwali ambalo safu mbili za safu hazijumuishwa.

Neno kuu ZOTE hufanya kinyume cha DISTINCT, kumaanisha kuwa safu mlalo rudufu zimejumuishwa kwenye matokeo. Hali iliyobainishwa na neno muhimu YOTE ndiyo chaguo-msingi, kwa hivyo haitumiki kwa madhumuni haya katika maswali halisi.

Kutumia kifungu cha WHERE katika taarifa SELECT hukuruhusu kubainisha usemi wa hali (kihusishi) ambacho hutathmini kuwa kweli au sivyo kwa thamani za sehemu ya safu mlalo ya jedwali inayorejelewa na taarifa SELECT. Kifungu cha WHERE huamua ni safu zipi za majedwali maalum zinapaswa kuchaguliwa. Jedwali linalotokana na swali linajumuisha safu mlalo zile tu ambazo hali (kihusishi) iliyobainishwa katika kifungu cha WHERE hutathmini kuwa kweli.

Mfano: Andika swali ambalo linatoa majina ya mwisho ya waigizaji wote kwa jina PENELOPE

chagua jina la mwisho kutoka kwa mwigizaji

ambapo first_name="PENELOPE";

Masharti yaliyoainishwa katika kifungu cha WAPI yanaweza kutumia shughuli za ulinganishi zinazofafanuliwa na waendeshaji = (sawa), > (kubwa kuliko),< (меньше), >= (kubwa kuliko au sawa na),<- (меньше или равно), <>(sio sawa), pamoja na waendeshaji kimantiki NA, AU, na SIO.

Kwa mfano, ombi la kupata majina na maelezo ya filamu fupi (fupi kuliko dakika 60), ukodishaji ambao unagharimu chini ya $3, utaonekana kama hii:

chagua kichwa, maelezo kutoka kwa filamu

urefu wa wapi< 60 and rental_rate < 3

Matokeo ya swali hili yanaonekana kama:

kukodisha - kukodisha

hesabu - hesabu, hifadhi

duka - hisa, duka


Maudhui ya makala
1. Maswali rahisi zaidi ya MySQL
2. Maswali rahisi CHAGUA
3. Hoja rahisi za Ingiza (ingizo jipya).
4. Maswali rahisi ya KUSASISHA (batilisha, ongeza).
5. Maswali rahisi ya KUFUTA (futa rekodi).
6. Maswali rahisi ya DROP (futa jedwali).
7. Maswali tata ya MySQL
8. Maswali ya MySQL na vigezo vya PHP

1. Maswali rahisi zaidi ya SQL

1. Huonyesha orodha ya hifadhidata ZOTE.

SHOW hifadhidata;
2. Huorodhesha majedwali YOTE katika Hifadhidata ya jina_la msingi.

ONYESHA jedwali katika jina_la_msingi;

2. Maswali rahisi CHAGUA kwenye hifadhidata ya MySQL

CHAGUA- swali linalochagua data iliyopo kutoka kwa hifadhidata. Unaweza kutaja vigezo maalum vya uteuzi kwa uteuzi. Kwa mfano, kiini cha ombi katika Kirusi kinasikika kama hii: CHAGUA vile na vile safu kutoka kwa vile na vile meza AMBAPO parameter ya vile na vile safu ni sawa na thamani.

1. Huchagua data ZOTE kwenye jedwali la tbl_name.

CHAGUA * KUTOKA tbl_name;
2. Huonyesha idadi ya rekodi kwenye jedwali la tbl_name.

CHAGUA hesabu(*) KUTOKA tbl_name;
3. Huchagua (CHAGUA) kutoka (KUTOKA) jedwali la tbl_name kikomo (LIMIT) rekodi 3, kuanzia 2.

CHAGUA * KUTOKA tbl_name LIMIT 2,3;
4. Huchagua (CHAGUA) rekodi ZOTE (*) kutoka (KUTOKA) jedwali tbl_name na kuzipanga (ORDER BY) kwa uga wa kitambulisho kwa mpangilio.

CHAGUA * KUTOKA tbl_name ORDER BY id;
5. Huchagua (CHAGUA) rekodi ZOTE kutoka (KUTOKA) jedwali la tbl_name na kuzipanga (ORDER BY) kwa uga wa kitambulisho kwa mpangilio wa REVERSE.

CHAGUA * KUTOKA tbl_name ORDER BY id DESC;
6. Inachagua ( CHAGUA) rekodi ZOTE (*) kutoka ( KUTOKA) meza watumiaji na kuzipanga ( AGIZA KWA) uwanjani kitambulisho kwa mpangilio wa kupanda, kikomo ( KIKOMO) maingizo 5 ya kwanza.

CHAGUA *KUTOKA KWA watumiaji AGIZA KWA id LIMIT 5;
7. Huchagua rekodi zote kutoka kwenye jedwali watumiaji, shamba liko wapi jina inalingana na thamani Gena.

CHAGUA * KUTOKA KWA watumiaji WAPI fname="Gena";
8. Huchagua rekodi zote kutoka kwa jedwali watumiaji, ambapo thamani ya shamba jina kuanza na Ge.

CHAGUA * KUTOKA KWA watumiaji AMBAPO fname KAMA "Ge%";
9. Huchagua rekodi zote kutoka kwa jedwali watumiaji, Wapi jina inaisha na na, na kupanga rekodi kwa mpangilio wa kupanda wa thamani kitambulisho.

CHAGUA *KUTOKA KWA watumiaji AMBAPO fname KAMA "%na" AGIZA KWA id;
10. Huchagua data zote kutoka kwa safuwima jina, jina l kutoka kwa meza watumiaji.

CHAGUA fname, lname KUTOKA kwa watumiaji;

11. Hebu tuseme una nchi katika jedwali lako la data ya mtumiaji. Kwa hivyo, ikiwa unataka kuonyesha TU orodha ya maadili yanayotokea (ili, kwa mfano, Urusi haionyeshwa mara 20, lakini mara moja tu), basi tunatumia DISTINCT. Italeta Urusi, Ukraine, Belarus kutoka kwa wingi wa maadili ya kurudia. Kwa hivyo, kutoka kwa meza watumiaji wasemaji nchi Thamani ZOTE ZA KIPEKEE zitatolewa

CHAGUA nchi DISTINCT KUTOKA kwa watumiaji;
12. Huchagua data ZOTE za safu mlalo kutoka kwenye jedwali watumiaji Wapi umri ina maadili 18, 19 na 21.

CHAGUA * KUTOKA KWA watumiaji WAPI umri KATIKA (18,19,21);
13. Huchagua thamani MAXIMUM umri katika meza watumiaji. Hiyo ni, ikiwa una thamani kubwa zaidi kwenye meza yako umri(kutoka umri wa Kiingereza) ni 55, basi matokeo ya swali yatakuwa 55.

CHAGUA upeo(umri) KUTOKA kwa watumiaji;
14. Chagua data kutoka kwa jedwali watumiaji kwa mashamba jina Na umri WAPI umri inachukua thamani ndogo zaidi.

CHAGUA jina, min(umri) KUTOKA kwa watumiaji;
15. Chagua data kutoka kwa jedwali watumiaji uwanjani jina WAPI kitambulisho SI SAWA NA 2.

CHAGUA jina KUTOKA kwa watumiaji WHERE id!="2";

3. Maswali rahisi ya Ingiza (ingizo jipya).

INGIZA- swala linalokuruhusu AWALI kuingiza rekodi kwenye hifadhidata. Hiyo ni, inaunda rekodi MPYA (mstari) kwenye hifadhidata.

1. Hufanya ingizo jipya kwenye jedwali watumiaji, shambani jina inaingiza Sergey, na kwenye shamba umri ingiza 25. Kwa hivyo, safu mpya iliyo na maadili haya huongezwa kwenye jedwali. Ikiwa kuna safu wima zaidi, basi zilizobaki zitabaki tupu au na maadili chaguo-msingi.

Ingiza NDANI ya watumiaji (jina, umri) THAMANI ("Sergey", "25");

4. Maswali rahisi ya USASISHAJI kwa hifadhidata ya MySQL

UPDATE- swali ambalo hukuruhusu KUHIFADHI maadili ya uga au KUONGEZA kitu kwenye safu mlalo iliyopo tayari kwenye hifadhidata. Kwa mfano, kuna mstari uliofanywa tayari, lakini parameter ya umri inahitaji kuandikwa tena ndani yake, kwa kuwa imebadilika kwa muda.

1. Katika meza watumiaji umri inakuwa 18.

SASISHA watumiaji WEKA umri = "18" WHERE id = "3";
2. Kila kitu ni sawa na katika ombi la kwanza, inaonyesha tu syntax ya ombi, ambapo sehemu mbili au zaidi zimeandikwa.
Katika meza watumiaji WHERE kitambulisho ni sawa na thamani ya sehemu 3 umri anatimiza miaka 18 na nchi Urusi.

SASISHA watumiaji WEKA umri = "18", nchi = "Urusi" WHERE id = "3";

5. Rahisi KUFUTA (kufuta rekodi) maswali kwenye hifadhidata ya MySQL

FUTA- swali linalofuta safu kutoka kwa jedwali.

1. Huondoa safu kutoka kwa meza watumiaji WAPI kitambulisho sawa na 10.

FUTA KUTOKA KWA watumiaji WAPI id = "10";

6. Rahisi DROP (futa jedwali) maswali kwa hifadhidata ya MySQL

DONDOSHA- swali ambalo linafuta meza.

1. Inafuta meza nzima tbl_jina.

DROP TABLE tbl_name;

7. Maswali tata kwa hifadhidata ya MySQL

Maswali ya kuvutia ambayo yanaweza kuwa muhimu hata kwa watumiaji wenye uzoefu

CHAGUA kitambulisho, jina, nchi KUTOKA kwa watumiaji, wasimamizi WAPI TO_DAYS(SASA()) - TO_DAYS(registration_tarehe)<= 14 AND activation != "0" ORDER BY registration_date DESC;
Hoja hii changamano SELECTS safu wima kitambulisho, jina, nchi KATIKA MAJEDWALI watumiaji, wasimamizi WAPI tarehe_ya_kusajili(tarehe) sio mzee 14 siku I uanzishaji SI SAWA 0 , Panga kwa tarehe_ya_kusajili kwa mpangilio wa nyuma (mpya kwanza).

SASISHA watumiaji WEKA umri = "18+" WAPI umri = (CHAGUA umri KUTOKA kwa watumiaji WHERE mwanaume = "mwanaume");
Hapo juu ni mfano wa kinachojulikana ombi ndani ya ombi katika SQL. Sasisha umri kati ya watumiaji hadi 18+, ambapo jinsia ni wanaume. Sipendekezi chaguzi kama hizo za ombi. Kutoka kwa uzoefu wa kibinafsi nitasema kuwa ni bora kuunda kadhaa tofauti - zitashughulikiwa haraka.

8. Maswali ya hifadhidata ya MySQL na PHP

Katika maswali ya MySQL kwenye ukurasa wa PHP, unaweza kuingiza vigeu kama viwango vya kulinganisha, nk. Mifano michache

1. Huchagua rekodi zote kutoka kwa jedwali watumiaji, shamba liko wapi jina inalingana na thamani ya kutofautisha $jina.

CHAGUA * KUTOKA KWA watumiaji WAPI fname="$name";
2. Katika meza watumiaji WHERE kitambulisho ni sawa na thamani ya sehemu 3 umri mabadiliko kwa thamani ya tofauti ya $age.

SASISHA watumiaji WEKA umri = "$age" WHERE id = "3";

Makini! Ikiwa una nia ya mfano mwingine wowote, basi andika swali katika maoni!

Kiambatisho hiki kinatoa maelezo mafupi zaidi ya amri mbalimbali za SQL. Lengo ni kukupa rejeleo la haraka na sahihi na ufafanuzi wa SQL. Sehemu ya kwanza ya programu hii inafafanua vipengele vinavyotumiwa kuunda amri za SQL; pili, maelezo ya sintaksia na sentensi zenye maelezo mafupi ya amri zenyewe. Ifuatayo inaonyesha kanuni za kawaida (zinazoitwa masharti ya BNF):

  • Maneno muhimu yameandikwa kwa herufi kubwa.
  • SQL na masharti mengine maalum yameambatanishwa katika mabano ya pembe na kuandikwa kwa herufi za italiki.(< na >)
  • Sehemu za hiari za amri zimefungwa kwenye mabano ya mraba ().
  • Ellipsis (....) inaonyesha kuwa sehemu iliyotangulia ya amri inaweza kurudiwa idadi yoyote ya nyakati.
  • Upau wa wima (|) unamaanisha kuwa kile kinachoitangulia kinaweza kubadilishwa na kinachoifuata.
  • Mabano yaliyopinda ((na)) yanaonyesha kuwa kila kitu kilicho ndani yake lazima kichukuliwe kama nambari kamili ili kutathmini wahusika wengine (kama vile pau wima au duaradufu).
  • Makoloni mawili na sawa (:: =) inamaanisha kuwa kinachofuata ni ufafanuzi wa kile kinachotangulia.

    Zaidi ya hayo, tutatumia mfuatano ufuatao (.,..) ili kuonyesha kwamba kinachotangulia kinaweza kurudiwa idadi yoyote ya nyakati, na matukio mahususi yakitenganishwa na koma. Sifa ambazo si sehemu ya kiwango rasmi zitatiwa alama kuwa (*zisizo za kawaida*) katika maelezo.

    TAFADHALI KUMBUKA: Istilahi tunayotumia hapa si istilahi rasmi ya ANSI. Istilahi rasmi inaweza kutatanisha sana, kwa hivyo tumeirahisisha kwa kiasi fulani.

    Kwa sababu hii, wakati mwingine sisi hutumia hali zingine isipokuwa ANSI, au tunatumia hali sawa lakini kwa njia tofauti kidogo. Kwa mfano, ufafanuzi wetu ni< predicate >hutofautiana na mchanganyiko wa ufafanuzi wa kiwango cha ANSI< predicate >Na< search condition >.

    VIPENGELE VYA SQL

    Sehemu hii inafafanua vipengele vya amri za SQL. Wamegawanywa katika vikundi viwili: Vipengele vya msingi vya lugha, Na Vipengele vya utendaji vya lugha.

    Vipengele muhimu- hizi ni vitalu vya lugha vilivyoundwa; SQL inapochunguza amri, kwanza hutathmini kila herufi katika maandishi ya amri kulingana na vipengele hivyo. Vitenganishi< separator >kutenganisha sehemu moja ya timu kutoka kwa nyingine; kila kitu kilicho kati ya watenganishaji< separator >kuchakatwa kama moduli. Kulingana na mgawanyiko huu, SQL inatafsiri amri.

    Vipengele vya kazi ni vitu tofauti tofauti na maneno muhimu ambayo yanaweza kufasiriwa kama moduli. Hizi ni sehemu za amri zilizotenganishwa na viweka mipaka< separator >, ambazo zina maana maalum katika SQL. Baadhi yao ni maalum kwa amri fulani na zitaelezewa pamoja na amri hizi baadaye katika kiambatisho hiki. Vipengee vilivyoorodheshwa hapa ni vya kawaida kwa amri zote zilizoelezwa. Vipengele vya kazi vinaweza kufafanuliwa kwa masharti ya kila mmoja au hata kwa maneno yao wenyewe. Kwa mfano, kiima< predicate >, kesi yetu ya mwisho na ngumu zaidi, ina kiima ndani ya ufafanuzi wake yenyewe. Hii ni kwa sababu kiima< predicate >kutumia NA au AU inaweza kuwa na idadi yoyote ya vihusishi< predicate >ambayo inaweza kufanya kazi kwa uhuru. Tulikuletea kiima< predicate >katika sehemu tofauti katika kiambatisho hiki, kutokana na aina mbalimbali na utata wa kipengele hiki cha kazi cha lugha. Atakuwapo kila wakati wakati wa kujadili sehemu zingine za kazi za timu.

    VIPENGELE VYA LUGHA YA MSINGI

    UFAFANUZI WA KIPINDI< separator > < comment > | < space > | < newline > < comment > --< string > < newline > < space >nafasi< newline >mwisho-uliobainishwa wa utekelezaji wa mfuatano wa herufi< identifier > < letter >[{< letter or digit > | < underscore}... ] < ИМЕЙТЕ ВВИДУ: Следу строгому стандарту ANSI, символы должны быть набраны в верхнем регистра, а идентификатор < identifier >lazima isizidi herufi 18. UFAFANUZI WA KIPINDI< underscore > - < percent sign > % < delimiter >yoyote kati ya yafuatayo: , ()< > . : = + " - | <> > = < = или < string > < string >[maandishi yoyote yaliyochapwa katika nukuu moja] Kumbuka: In< string >, nukuu mbili mfululizo (" ") zinafasiriwa kuwa moja (").< SQL term >kuishia kutegemea lugha kuu. (*kiota pekee*)

    VIPENGELE VYA KAZI

    Jedwali lifuatalo linaonyesha vipengele vya utendaji vya amri za SQL na ufafanuzi wake: UFAFANUZI WA KIELELE< query >CHAGUA kifungu< subquery >Kifungu CHAGUA kilichoambatanishwa katika mabano ndani ya kifungu kingine ambacho, kwa hakika, kimetathminiwa kando kwa kila safu mlalo ya mteule wa kifungu kingine.< value expression > < primary > | < primary > < operator > < primary > | < primary > < operator > < value expression > < operator >yoyote kati ya yafuatayo: + - / *< primary > < column name > | < literal > | < aggregate function > | < built-in constant > | < nonstandard function > < literal > < string > | < mathematical expressio ЭЛЕМЕНТ ОПРЕДЕЛЕНИЕ < built-in constant >MTUMIAJI |< implementation-dehned constant > < table name > < identifier > < column spec > [< table name > | < alias >.]< column name > < grouping column > < column spec > | < integer > < ordering column > < column spec > | < integer > < colconstraint >SI UTUPU | KIPEKEE | ANGALIA (< predicate >) | UFUNGUO WA MSINGI | MAREJEO< table name >[(< column name >)] < tabconstraint >KIPEKEE (< column list >) | ANGALIA (< predicate >) | UFUNGUO WA MSINGI (< column list >) | UFUNGUO WA NJE (< column list >) MAREJEO< table name >[(< column list >)] < defvalue >THAMANI CHAGUO =< value expression > < data type >Aina halali ya data (Angalia Kiambatisho B kwa maelezo ya aina zinazotolewa na ANSI au Kiambatisho C kwa aina zingine za kawaida.)< size >Thamani inategemea< data type >(Ona Kiambatisho B.)< cursor name > < identifier > < index name > < identifier > < synonym > < identifier >(*isiyo ya kawaida*)< owner > < Authorization ID > < column list > < column spec > .,.. < value list > < value expression > .,.. < table reference > { < table name > [< alias >] } .,..

    UTABIRI

    Ifuatayo inafafanua orodha ya aina tofauti za kiima< predicate >ilivyoelezwa kwenye kurasa zifuatazo:

    < predicate > ::=

    { < comparison predicate > | < in predicate > | < null predicate > | < between predicate > | < like predicate > | < quantified predicate > | < exists predicate > } < predicate >ni usemi ambao unaweza kuwa kweli, uongo, au haijulikani, isipokuwa< exists predicate >Na< null predicate >, ambayo inaweza tu kuwa kweli au uwongo.

    Isiyojulikana itapokelewa ikiwa maadili NULL yatazuia matokeo ya jibu lililopokelewa. Hii itafanyika wakati wowote thamani NULL inalinganishwa na thamani yoyote. Viendeshaji vya kawaida vya Boolean - NA, AU, na NOT - vinaweza kutumika pamoja na kiima. SI kweli = uongo, SI uwongo = kweli, na SIYO haijulikani = haijulikani. Matokeo ya NA na AU pamoja na vihusishi yanaonyeshwa katika jedwali lifuatalo:

    NA NA Uongo wa kweli haujulikani Uongo wa kweli haujulikani Uwongo wa uwongo haujulikani uwongo haujulikani uwongo haujulikani haujulikani uwongo haujulikani AU AU Uongo wa kweli haujulikani Uongo kweli ukweli haujulikani uwongo haujulikani haujulikani haujulikani haujulikani.

    Majedwali haya yanasomwa kwa njia inayofanana na jedwali la kuzidisha: unachanganya thamani za kweli, za uwongo au zisizojulikana kutoka kwa safu mlalo na safuwima zao ili kupata matokeo kwenye viunga. Katika NA meza, kwa mfano, safu ya tatu (Haijulikani) na safu ya kwanza (Kweli) kwenye makutano kwenye kona ya juu ya kulia hutoa matokeo - haijulikani, kwa maneno mengine: Kweli NA Haijulikani = haijulikani. Mpangilio wa mahesabu umewekwa na mabano. Hawatajitambulisha kila wakati. NOT hutathminiwa kwanza, ikifuatiwa na NA na AU. Aina tofauti za vihusishi< predicate >yanajadiliwa tofauti katika sehemu inayofuata.

    < comparison predicate >(kihusishi cha kulinganisha)

    Sintaksia

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

    Ikiwa ama< value expression >= NULL, au< comparison predicate >= haijulikani; kwa maneno mengine, ni kweli ikiwa kulinganisha ni kweli au si kweli ikiwa ulinganisho ni wa uwongo.
    < relational op >ina maana za kawaida za hisabati kwa maadili ya nambari; kwa aina zingine za thamani, maadili hayo ni mahususi ya utekelezaji.
    Zote mbili< value expression >lazima iwe na aina za data zinazolingana. Ikiwa subquery< subquery >inatumika, lazima iwe na usemi mmoja< value expression >katika kifungu cha CHAGUA ambacho thamani yake itachukua nafasi ya usemi wa pili< value expression >katika kihusishi cha kulinganisha< comparision predicate >, kila wakati< subquery >kweli imetimia.

    < between predicate >

    Sintaksia

    < value expression >KATI YA< value expression >
    NA< value expression >

    < between predicate >- A KATI YA B NA C , ina maana sawa na< predicate >- (A >= B NA< = C). < between predicate >ambayo A SI KATI YA B NA C ina maana sawa na SI (KATI YA B NA C).< value expression >inaweza kudhaniwa kwa kutumia swali lisilo la kawaida< subquery >(*isiyo ya kawaida*).

    < in prediicate >

    Sintaksia

    < value expression >KATIKA< value list > | < subquery >

    Orodha ya maadili< value list >itakuwa na thamani moja au zaidi zilizoorodheshwa kwenye mabano na kutengwa na koma ambazo zina kulinganishwa.< value expression >aina ya data. Ikiwa subquery inatumiwa< subquery >, lazima iwe na usemi mmoja tu< value expression >katika kifungu cha SELECT (ikiwezekana zaidi, lakini hii itakuwa nje ya kiwango cha ANSI). Subquery< subquery >kwa hakika, inatekelezwa kando kwa kila safu mlalo ya mteuliwa wa hoja kuu, na thamani itakayotolewa itaunda orodha ya thamani.< value list >kwa mstari huu. Kwa hali yoyote, kihusishi< in predicate >itakuwa kweli ikiwa usemi huo< value expression >kuwakilishwa katika orodha ya maadili< value list >, kama SI imebainishwa. Kishazi A NOT IN (B, C) ni sawa na maneno NOT (A IN (B, C)).

    < like predicate >

    Sintaksia

    < charvalue >KAMA< pattern >

    < charvalue >ni usemi wowote *usio wa kawaida*< value expression >aina ya alphanumeric.< charvalue >labda, kulingana na kiwango, safu fulani tu< column spec >. Sampuli< pattern >lina mfuatano ambao utakaguliwa kwa inayolingana nayo< charvalue >. Alama ya mwisho< escapechar >ni mhusika mmoja wa alphanumeric. Mechi itatokea ikiwa hali zifuatazo ni kweli:

  • Kwa kila kistari< underscore >katika sampuli< pattern >ambayo haijatanguliwa na tabia ya kukomesha< escapechar >, kuna ishara moja inayolingana< charvalue >.
  • Kwa kila< percent sign >katika sampuli< pattern >, ambayo haijatangulia< escapechar >, kuna sufuri au herufi zaidi zinazolingana< charvalue >.
  • Kwa kila< escapechar >V< pattern >ambayo haimtangulii mwingine< escapechar >, hakuna mhusika sambamba katika< charvalue >.
  • Kwa kila mhusika mwingine< pattern >, ishara hiyo hiyo imewekwa kwenye alama inayolingana ndani< charvalue >.

    Ikiwa mechi itatokea,< like predicate >- kweli ikiwa HAIJAbainishwa. Kifungu cha maneno SI KUPENDA "maandishi" ni sawa na NOT ("maandishi" KAMA KAMA).

    < null predicate >

    Sintaksia

    < column spec >NI NULL

    < column spec >= NI NULL ikiwa thamani NULL ipo kwenye safu wima hii. Itafanya< null predicate >kweli ikiwa NULL haijabainishwa. Maneno< column spec >IS NOT NULL, ina matokeo sawa na NOT (< column spec >NI UTUPU).

    < quantified predicate >

    Sintaksia

    < value expression > < relational op >
    < quantifier > < subquery >
    < quantifier >::= YOYOTE | YOTE | BAADHI

    Subquery CHAGUA kifungu< subquery >lazima iwe na usemi mmoja wa thamani< value expression >. Thamani zote zimerejeshwa na hoja ndogo< subquery >tengeneza seti ya matokeo< result set >. < value expression >ikilinganishwa na kutumia carrier< relational operator >, na kila mwanachama wa seti ya matokeo< result set >. Ulinganisho huu unatathminiwa kama ifuatavyo:

  • Kama< quantifier >= YOTE, na kila mwanachama wa seti ya matokeo< result set >hufanya ulinganisho huu kuwa kweli,< quantified predicate >- kweli.
  • Kama< quantifier >= YOYOTE na kuna angalau mwanachama mmoja kutoka kwa seti ya matokeo< result set >, ambayo inafanya ulinganisho huu kuwa kweli, basi< quantified predicate >ni sahihi.
  • Ikiwa matokeo yamewekwa< result set >tupu, basi< quantified predicate >kweli kama< quantifier >= ALL , na false ikiwa sivyo.
  • Kama< quantifier >= BAADHI, athari ni sawa na kwa YOYOTE.
  • Kama< quantified predicate >si kweli wala si mwaminifu, hajulikani.

    < exists predicate >

    Sintaksia:

    IPO (< subquery >)

    Ikiwa subquery< subquery >huchapisha mstari mmoja au zaidi wa pato,< exists predicate >- mwaminifu; na sio sahihi ikiwa sivyo.

    AMRI ZA SQL

    Sehemu hii inafafanua sintaksia ya amri mbalimbali za SQL. Hii itakupa uwezo wa kutafuta haraka amri, kupata syntax yake, na maelezo mafupi ya jinsi inavyofanya kazi.

    ZINGATIA Amri zinazoanza na neno - EXEC SQL, pamoja na amri au sentensi zinazoishia na neno - zinaweza kutumika tu katika SQL iliyowekwa.

    ANZA SEHEMU YA KUTANGAZA

    Sintaksia

    EXEC SQL ANZA KUTANGAZA SEHEMU< SQL term > < host-language variable declarations >EXEC SQL END TANGAZA SEHEMU< SQL term >

    Amri hii huunda sehemu ya programu ya lugha mwenyeji ili kutangaza viambajengo vikuu ambavyo vitatumika katika taarifa za SQL zilizowekwa. Tofauti ya SQLCODE lazima ijumuishwe kama mojawapo ya vibadala vya lugha ya seva pangishi vilivyotangazwa.

    FUNGA MSHALE

    Sintaksia

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

    Amri hii inaambia mshale kufunga, baada ya hapo hakuna thamani inayoweza kupatikana kutoka kwake hadi itafunguliwa tena.

    JITOE (KAZI)

    Sintaksia

    Amri hii huacha bila kubadilika mabadiliko yote yaliyofanywa kwenye hifadhidata hadi muamala wa sasa utakapomalizika na shughuli mpya kuanza.

    TUNZA INDEX

    (*isiyo ya kawaida*)

    Sintaksia

    TUNZA INDEX< Index name >
    WASHA< table name > (< column list >);

    Amri hii huunda njia bora, ya ufikiaji wa haraka ili kupata safu zilizo na safu wima zilizoteuliwa. Ikiwa UNIQUE imebainishwa, jedwali haliwezi kuwa na thamani rudufu katika safu wima hizi.

    UTENGENEZA MSWANO (*ISIO SIMULIZI*)
    (UNDA USAWA) (*ISIYO SANIFU*)

    Sintaksia

    TENGENEZA USAWA WA IPUBLICl< synonym >KWA
    < owner >.< table name >;

    Amri hii inaunda mbadala (kisawe) kwa jedwali. Sawe ni mali ya muumbaji wake, na meza yenyewe, kwa kawaida kwa mtumiaji mwingine. Kwa kutumia kisawe, mmiliki wake hahitaji kurejelea jedwali kwa jina lake kamili (pamoja na mmiliki wake). Iwapo UMMA umebainishwa, kisawe ni cha saraka ya SYSTEM na kwa hivyo inapatikana kwa watumiaji wote.

    TENGENEZA JEDWALI

    Sintaksia

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

    Amri huunda jedwali kwenye hifadhidata. Jedwali hili litamilikiwa na muundaji wake. Safu wima zitazingatiwa kwa mpangilio wa majina.< data type >- huamua aina ya data ambayo safu itakuwa na. Kawaida< data type >ilivyoelezwa katika Kiambatisho B; aina zingine zote za data zinazotumika< data type >, iliyojadiliwa katika Kiambatisho C. Thamani ya ukubwa< size >inategemea aina ya data< data type >.
    < colconstraint >Na< tabconstraint >kuweka vizuizi kwa maadili ambayo yanaweza kuingizwa kwenye safu.
    < defvalue >inabainisha thamani (chaguo-msingi) ambayo itawekwa kiotomatiki ikiwa hakuna thamani nyingine iliyobainishwa kwa safu mlalo hii. (Angalia Sura ya 17 kwa maelezo juu ya amri yenyewe ya CREATE TABLE na Sura ya 18 NA kwa maelezo juu ya mapungufu na< defvalue >).

    TENGENEZA TAZAMA

    Sintaksia

    TENGENEZA TAZAMA< table name >
    AS< query >
    ;

    Mtazamo unachukuliwa kama jedwali lolote katika amri za SQL. Wakati amri inarejelea jina la jedwali< table name >, ombi< query >inatekelezwa, na matokeo yake yanalingana na yaliyomo kwenye jedwali iliyoainishwa katika amri hii.
    Baadhi ya maoni yanaweza kurekebishwa, ambayo ina maana kwamba amri za urekebishaji zinaweza kutekelezwa kwenye maoni hayo na kupitishwa kwenye jedwali ambalo lilirejelewa katika hoja.< query >. Iwapo CHAGUO LA KUTIA HIKI limebainishwa, urekebishaji huu lazima pia ukidhi hali ya kihusishi< predicate >katika ombi< query >.

    TANGAZA MSHALE

    Sintaksia

    TANGAZA EXEC SQL< cursor name >MSHALE KWA
    < query >< SQL term >

    Amri hii inawafunga kwa mshale< cursor name >, na ombi< query >. Wakati kielekezi kimefunguliwa (tazama OPEN CURSOR), ombi< query >inatekelezwa, na matokeo yake yanaweza kuchukuliwa (kwa amri ya FETCH) kwa pato. Ikiwa kielekezi kinaweza kurekebishwa, jedwali linalorejelewa na swali< query >, inaweza kupata mabadiliko katika maudhui kwa kutumia operesheni ya kurekebisha kwenye kielekezi (Angalia Sura ya 25 kuhusu vielekezi vinavyoweza kubadilishwa).

    FUTA

    Sintaksia

    FUTA KUTOKA< table name >
    { ; }
    | WAPI SASA< cursorname >< SQL term >

    Ikiwa kifungu cha WAPI hakipo, safu mlalo ZOTE kwenye jedwali zitafutwa. Ikiwa kifungu cha WHERE kinatumia kiima< predicate >, safu mlalo zinazokidhi hali ya kihusishi hiki< predicate >zimefutwa. Ikiwa kifungu cha WAPI kina hoja ya SASA katika jina la kishale< cursor name >, safu kutoka kwa meza< table name >kwa sasa inarejelewa na jina la kishale< cursor name >itafutwa. Fomu ya WHERE CURRENT inaweza kutumika tu katika SQL iliyoorodheshwa, na kwa viala vinavyoweza kurekebishwa pekee.

    EXEC SQL

    Sintaksia

    EXEC SQL< embedded SQL command > < SQL term >

    EXEC SQL hutumiwa kuonyesha mwanzo wa amri zote za SQL zilizowekwa katika lugha nyingine.

    CHUKUA

    Sintaksia

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

    FETCH inachukua pato kutoka kwa mfuatano wa hoja wa sasa< query >, huiingiza kwenye orodha ya vigeu kuu< host-variable list >, na kusogeza mshale kwenye mstari unaofuata. Orodha< host-variable list >inaweza kujumuisha kigezo cha kiashirio kama kigezo kinacholengwa (Angalia Sura ya 25.)

    RUZUKU (HAKI ZA KUHAMISHA)

    Sintaksia (kawaida)

    TUPE YOTE
    | (CHAGUA
    | INGIZA
    | FUTA
    | SASISHA [(< column llst >)]
    | MAREJEO [(< column llst >) l). , . .
    WASHA< table name > . , . .
    KWA UMMA |< Authorization ID > . , . .
    ;

    Hoja YOTE, pamoja na au bila PRIVILEGES, inajumuisha kila upendeleo katika orodha ya marupurupu. UMMA inajumuisha watumiaji wote waliopo na wale wote watakaoundwa katika siku zijazo. Amri hii inakuwezesha kuhamisha haki za kufanya vitendo kwenye meza yenye jina maalum. MAREJELEO hukuruhusu kutoa ruhusa za kutumia safu wima katika orodha ya safu wima< column list >kama ufunguo wa mzazi kwa ufunguo wa kigeni. Mapendeleo mengine yanajumuisha haki ya kutekeleza amri ambazo marupurupu yanaonyeshwa kwa majina yao kwenye jedwali. UPDATE ni sawa na MAREJELEO na inaweza kuweka vizuizi kwenye safu wima fulani. CHAGUO LA KUPEWA huwezesha kuhamisha haki hizi kwa watumiaji wengine.

    Sintaksia (isiyo ya kawaida)

    RUZUKU DBA
    | RASILIMALI
    | UNGANISHA... .
    KWA< Authorization ID > . , . .
    | < privilege > . , . . }
    KUTOKA ( UMMA
    | < Authorization ID > . , . . };

    Upendeleo< privelege >inaweza kuwa yoyote kati ya zile zilizoainishwa katika amri ya GRANT. Mtumiaji anayetoa KUBATILISHA lazima awe na mapendeleo sawa na mtumiaji anayetoa RUZUKU. Kifungu cha ON kinaweza kutumika wakati upendeleo wa aina maalum unatumiwa kwenye kitu maalum.

    ROLLBACK (KAZI)
    (ROLLBACK) (SHUGHULI)

    Sintaksia

    Amri hutengua mabadiliko yote kwenye hifadhidata yaliyofanywa wakati wa shughuli ya sasa. Pia humaliza ule wa sasa na kuanzisha shughuli mpya.

    CHAGUA

    Sintaksia

    CHAGUA ( IDISTINCT | WOTE]< value expression > . , . . } / *
    KUTOKA< table reference > . , . .

    . , . . ];

    Taarifa hii hupanga hoja na kurejesha thamani kutoka kwa hifadhidata (angalia Sura ya 3 - Sura ya 14). Sheria zifuatazo zinatumika:

  • Ikiwa sio YOTE au DISTINCT imebainishwa, YOTE inachukuliwa.
  • Kujieleza< value expression >inajumuisha< column spec >, kazi ya kujumlisha< aggregate funct >, utendaji usio wa kawaida< nonstandard fu nction >, mara kwa mara< constant >, au mchanganyiko wake wowote na waendeshaji katika misemo halali.
  • Jedwali la marejeleo< table reference >, lina jina la jedwali, ikijumuisha kiambishi awali cha mmiliki ikiwa mtumiaji wa sasa si mmiliki, au kisawe (kisicho cha kawaida) cha jedwali. Jedwali linaweza kuwa jedwali la msingi au mwonekano. Kimsingi, pak inaweza kuonyesha ni jina gani linalotumika kwa jedwali kwa muda wa amri ya sasa. Jina la jedwali au kisawe lazima kitenganishwe na lakabu na kikomo kimoja au zaidi< separator >.
  • Ikiwa GROUP BY inatumiwa, safu wima zote< column spec >iliyotumika katika kifungu cha CHAGUA itabidi itumike kama kikundi cha safu wima< grouping column >, ikiwa hazimo katika kitendakazi cha jumla< aggregate funct >. Kundi zima la safu wima< grouping column >lazima iwakilishwe miongoni mwa misemo< value expressions >iliyoainishwa katika kifungu cha CHAGUA. Kwa kila mchanganyiko tofauti wa maadili ya kikundi cha safu wima< grouping column >, kutakuwa na mstari mmoja tu wa pato.
  • Ikiwa HAVING itatumika, kiima< predicate >inatumika kwa kila safu mlalo inayotolewa na kifungu cha GROUP BY, na safu mlalo zinazofanya kiima hiki kuwa kweli zitachapishwa.
  • Ikiwa ORDER BY inatumiwa, matokeo yana mlolongo maalum. Kila kitambulisho cha safu wima< column identifer >inahusu maalum< value expression >katika kifungu cha CHAGUA. Kama hii< value expression >ni safu maalum< column spec >, < co lumn identifier >inaweza kuwa sawa na< column spec >. Vinginevyo< co lumn identifier >inaweza kuwa nambari kamili inayoonyesha eneo lilipo< value expression >katika mlolongo wa kifungu cha CHAGUA. Toleo litatolewa ili kutoshea thamani zilizomo< column identifier >kwa mpangilio wa kupanda ikiwa DESC haijabainishwa. Jina la kitambulisho cha safu wima< column identifier >kinachokuja kwanza katika kifungu cha ORDER BY kitatangulia majina ya baadaye katika ufafanuzi wa mfuatano wa pato.

    Kifungu cha SELECT hutathmini kila safu mlalo ya jedwali ambamo safu mlalo zinaonyeshwa kwa kujitegemea. Mfuatano wa mgombea umefafanuliwa kama ifuatavyo:

  • Ikiwa kuna jedwali moja tu lililorejelewa< table reference >imejumuishwa, kila safu katika jedwali hili ni safu mlalo ya mgombea.
  • Ikiwa zaidi ya jedwali moja lililorejelewa< table reference >ikiwashwa, kila safu mlalo ya kila jedwali lazima iunganishwe kwa zamu na kila mseto wa safu mlalo kutoka kwa majedwali mengine yote. Kila mchanganyiko kama huo kwa upande wake utakuwa mfuatano wa mgombea.

    Kila safu mlalo ya mgombea hutoa maadili ambayo hufanya kiima< predicate >katika kifungu cha WAPI ni kweli, uongo, au haijulikani. Ikiwa GROUP BY haitumiki, kila moja< value expression >inatumika kwa zamu kwa kila mfuatano wa kiteuliwa ambao thamani yake hufanya kihusishi kuwa kweli, na matokeo ya operesheni hii ni matokeo.
    Ikiwa GROUP BY inatumiwa, safu mlalo za wagombea huunganishwa kwa kutumia vipengele vya jumla. Ikiwa hakuna kiima< predicate >haijawekwa, kila usemi< value expression >inatumika kwa kila safu mlalo au kikundi cha mgombea. Ikiwa DISTINCT imebainishwa, nakala za safu mlalo zitaondolewa kwenye pato.

    MUUNGANO

    Sintaksia

    < query >(MUUNGANO< query > } . . . ;

    Inatoa hoja mbili au zaidi< query >itaunganishwa. Kila ombi< query >lazima iwe na nambari sawa< value expression >kwenye kifungu cha CHAGUA na kwa mpangilio kwamba 1.. n ya kila aina inaendana na aina ya data< data type >na ukubwa< size >na 1.. n wengine wote.

    UPDATE

    Sintaksia

    UPDATE< table name >
    WEKA (< column name > = < value expression > } . , . .
    ([WAPI< predlcate >]; }
    | {
    < SQL term >]}

    UPDATE hubadilisha maadili katika kila safu iliyotajwa< column name >kwa thamani inayolingana< value expression >. Ikiwa kifungu cha WHERE kinatumia kiima< predicate >, basi safu mlalo za jedwali pekee ambazo thamani zake za sasa hufanya kiashirio hicho< predicate >sahihi, inaweza kubadilika. Ikiwa WHERE hutumia CURRENT OF clause, basi maadili katika safu ya jedwali iliyopewa jina< table name >iko kwenye kielekezi chenye jina< cursor name >yanabadilika. AMBAPO CURRENT OF inafaa tu kwa matumizi katika SQL iliyoorodheshwa, na kwa viala vinavyoweza kubadilishwa pekee. Ikiwa hakuna kifungu cha WAPI, safu mlalo zote hubadilishwa.

    WAKATI WOWOTE (KILA WAKATI)

    Sintaksia

    EXEC SQL WAKATI WOTE< SQLcond > < actlon > < SQL term >
    < SQLcond >::=SQLERROR | HAIJAPATIKANA | ONYO LA SQL
    (ya mwisho sio ya kawaida)
    < action >::=ENDELEA | ENDA KWA< target >| ENDA KWA< target >
    < target >:: = inategemea lugha mwenyeji

  • Sintaksia:

    * Wapi mashamba1- sehemu za uteuzi zilizotenganishwa na koma, unaweza pia kutaja sehemu zote na *; meza- jina la jedwali ambalo tunatoa data; masharti- masharti ya sampuli; mashamba2- uwanja au sehemu zilizotenganishwa na koma ambazo zitapangwa; hesabu- idadi ya mistari ya kupakia.
    * Hoja katika mabano ya mraba haihitajiki ili kurejesha data.

    Mifano rahisi ya kutumia chagua

    1. Sampuli za data za kawaida:

    > CHAGUA * KUTOKA KWA watumiaji

    2. Sampuli za data kwa kuunganisha majedwali mawili (JIUNGE):

    CHAGUA u.jina, r.* KUTOKA kwa watumiaji UNAUNGANA na users_rights r KWA r.user_id=u.id

    * katika mfano huu, data ni sampuli na jedwali zilizounganishwa watumiaji Na haki_za_watumiaji. Wanaunganishwa na mashamba kitambulisho_cha_mtumiaji(katika jedwali la haki za watumiaji) na kitambulisho(watumiaji). Sehemu ya jina inarejeshwa kutoka kwa jedwali la kwanza na nyanja zote kutoka kwa pili.

    3. Kuchukua sampuli kwa muda na/au vipindi vya tarehe

    a) mahali pa kuanzia na muda fulani hujulikana:

    * data ya saa ya mwisho itachaguliwa (uwanja tarehe).

    b) tarehe ya kuanza na tarehe ya mwisho inajulikana:

    25.10.2017 Na 25.11.2017 .

    c) tarehe za kuanza na mwisho + wakati zinajulikana:

    * chagua data kati ya 03/25/2018 Saa 0 dakika 15 Na 04/25/2018 Saa 15 dakika 33 na sekunde 9.

    d) kutoa data kwa mwezi na mwaka fulani:

    * toa data mahali kwenye uwanja tarehe kuna maadili ya Aprili 2018 ya mwaka.

    4. Sampuli ya maadili ya juu zaidi, ya chini na ya wastani:

    > CHAGUA upeo(eneo), min(eneo), wastani(eneo) KUTOKA nchini

    * max- thamani ya juu; min- Ndogo; wastani- wastani.

    5. Kutumia Urefu wa Kamba:

    * swali hili linapaswa kuonyesha watumiaji wote ambao majina yao yana vibambo 5.

    Mifano ya maswali ambayo ni changamano zaidi au ambayo hayatumiki sana

    1. Kuunganishwa na kupanga data iliyochaguliwa katika safu mlalo moja (GROUP_CONCAT):

    * kutoka kwa meza watumiaji data ya shamba inarejeshwa kitambulisho, zote zimewekwa kwenye mstari mmoja, maadili yanatenganishwa koma.

    2. Kupanga data katika sehemu mbili au zaidi:

    > CHAGUA *KUTOKA KWA watumiaji KUNDI KWA CONCAT(kichwa, "::", kuzaliwa)

    * kwa muhtasari, katika mfano huu tutapakia data kutoka kwa jedwali la watumiaji na kuipanga kulingana na sehemu kichwa Na kuzaliwa. Kabla ya kuweka kikundi, tunachanganya mashamba kwenye mstari mmoja na delimiter :: .

    3. Kuunganisha matokeo kutoka kwa majedwali mawili (MUUNGANO):

    > (CHAGUA kitambulisho, fio, anwani, "Watumiaji" kama aina ya FROM watumiaji)
    MUUNGANO
    (CHAGUA kitambulisho, fio, anwani, "Wateja" kama aina ya KUTOKA kwa wateja)

    * katika mfano huu, data ni sampuli kutoka kwa jedwali watumiaji Na wateja.

    4. Sampuli ya thamani za wastani zilizopangwa kwa kila saa:

    CHAGUA wastani(joto), DATE_FORMAT(sasisho la wakati, "%Y-%m-%d %H") kama saa_tarehe KUTOKA kwenye kumbukumbu GROUP BY DATE_FORMAT(sasisho la wakati, "%Y-%m-%d %H")

    *hapa tunatoa thamani ya wastani ya sehemu joto kutoka kwa meza kumbukumbu na kundi kwa shamba sasisho la wakati(na mgawanyiko wa wakati kwa kila saa).

    INGIZA

    Sintaksia ya 1:

    > Ingiza NDANI

    () THAMANI ( )

    Sintaksia ya 2:

    > Ingiza NDANI

    THAMANI ( )

    * Wapi meza- jina la meza ambayo tunaingiza data; mashamba- kuorodhesha mashamba yaliyotenganishwa na koma;maadili- maadili ya kuorodhesha yaliyotenganishwa na koma.
    * chaguo la kwanza litakuwezesha kuingiza sehemu zilizoorodheshwa pekee - zilizosalia zitapokea maadili chaguo-msingi. Chaguo la pili litahitaji kuingizwa kwa nyanja zote.

    Mifano ya kutumia kuingiza

    1. Kuingiza safu mlalo nyingi kwa hoja moja:

    > WEKA NDANI ya miji ("jina", "nchi") MAADILI ("Moscow", "Urusi"), ("Paris", "Ufaransa"), ("Funafuti" , "Tuvalu");

    * katika mfano huu tutaongeza rekodi 3 katika swali moja la SQL.

    2. Kuingiza kutoka kwa jedwali lingine (kunakili safu mlalo, INGIZA + CHAGUA):

    * toa rekodi zote kutoka kwa jedwali miji, ambao majina yao huanza na "M" na kuyaingiza kwenye meza miji-mpya.

    Sasisha (UPDATE)

    Sintaksia:

    * Wapi meza- jina la meza; shamba- uwanja ambao tutabadilisha thamani; thamani- maana mpya; masharti— hali (bila hiyo, kufanya sasisho ni hatari - unaweza kuchukua nafasi ya data yote kwenye jedwali zima).

    Sasisha kwa kutumia uingizwaji (REPLACE):

    UPDATE

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

    UPDATE miji SET jina = REPLACE(jina, "Maskva", "Moscow");

    Ikiwa tunataka kuicheza salama, tunaweza kwanza kuangalia matokeo ya uingizwaji kwa kutumia SELECT:

    Futa (FUTA)

    Sintaksia:

    * Wapi meza- jina la meza; masharti— hali (kama ilivyo kwa UPDATE, kutumia DELETE bila hali ni hatari - DBMS haitauliza uthibitisho, lakini itafuta data zote tu).

    Kuunda meza

    Sintaksia:

    > TENGENEZA JEDWALI

    ( , )

    > TUNZA JEDWALI KAMA HAIPO `haki_za_watumiaji` (
    `id` int(10) haijatiwa saini NOT NULL,
    `user_id` int(10) haijatiwa saini NOT NULL,
    `haki` int(10) haijatiwa saini SIYO BATILI
    ) INJINI=InnoDB DEFAULT CHARSET=utf8;

    * Wapi meza- jina la jedwali (katika mfano haki_za_watumiaji); shamba1, shamba2- jina la uwanja (kwa mfano, sehemu 3 zimeundwa - kitambulisho, kitambulisho_cha_mtumiaji, haki); chaguzi1, chaguzi2- vigezo vya shamba (katika mfano int(10) haijatiwa saini NOT NULL); chaguzi za meza- vigezo vya jumla vya jedwali (katika mfano ENGINE=InnoDB CHARSET DEFAULT=utf8).

    Kutumia maombi katika PHP

    Kuunganisha kwenye hifadhidata:

    mysql_connect("localhost", "ingia", "nenosiri") au kufa("Hitilafu ya kuunganisha MySQL");
    mysql_select_db("db_name");
    mysql_query("SET MAJINA "utf8"");

    * ambapo unganisho hufanywa kwa hifadhidata kwenye seva ya ndani ( mwenyeji); hati za uunganisho - Ingia Na nenosiri(kwa mtiririko huo, kuingia na nenosiri); kutumika kama msingi db_jina; usimbaji umetumika UTF-8.

    Unaweza pia kuunda muunganisho unaoendelea:

    mysql_pconnect("localhost", "ingia", "nenosiri") au kufa("Hitilafu ya kuunganisha MySQL");

    * hata hivyo, kuna uwezekano wa kufikia kikomo cha juu kinachoruhusiwa cha upangishaji. Njia hii inapaswa kutumika kwenye seva zetu wenyewe, ambapo sisi wenyewe tunaweza kudhibiti hali hiyo.

    Muunganisho kamili:

    * katika PHP inafanywa kiotomatiki, isipokuwa kwa miunganisho inayoendelea (mysql_pconnect).

    Hoja kwa MySQL (Mariadb) katika PHP inafanywa kwa kazi ya mysql_query(), na urejeshaji wa data kutoka kwa hoja hufanywa kwa mysql_fetch_array():

    $result = mysql_query("CHAGUA * KUTOKA KWA watumiaji");
    wakati ($mass = mysql_fetch_array($matokeo)) (
    echo $mass . "
    ";
    }

    * katika mfano huu swali lilifanywa kwa meza watumiaji. Matokeo ya swala yanawekwa katika hali tofauti Matokeo ya $. Ifuatayo, kitanzi kinatumika wakati, kila marudio ambayo hurejesha safu ya data na kuiweka katika tofauti Misa ya $- katika kila marudio tunafanya kazi na safu mlalo moja ya hifadhidata.

    Kazi ya mysql_fetch_array() iliyotumika inarudisha safu ya ushirika, ambayo ni rahisi kufanya kazi nayo, lakini pia kuna njia mbadala - mysql_fetch_row(), ambayo inarudisha safu ya kawaida ya nambari.

    Kinga

    Ikiwa unahitaji kujumuisha herufi maalum kwenye safu ya hoja, kwa mfano, %, lazima utumie kutoroka kwa kutumia herufi ya backslash - \

    Kwa mfano:

    * ukiendesha swali kama hilo bila kutoroka, ishara ya % itafasiriwa kama idadi yoyote ya herufi baada ya 100.

    Ni hayo tu. Ikiwa unahitaji usaidizi wa kukamilisha ombi, tafadhali nitumie barua pepe