Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ

Shprehjet e tabelës. Pyetje të thjeshta SQL - Referenca dhe shembuj të shpejtë

Kjo shtojcë përmban një përshkrim më konciz të komandave të ndryshme SQL. Qëllimi është t'ju japim një referencë dhe përkufizim të shpejtë dhe të saktë të SQL. Seksioni i parë i kësaj shtojce përcakton elementët e përdorur për të krijuar komanda SQL; së dyti, detaje sintaksore dhe fjali me një përshkrim të shkurtër të vetë komandave. Më poshtë janë konventat standarde (të quajtura terma BNF):

  • Fjalët kyçe shkruhen me shkronja të mëdha.
  • SQL dhe kushte të tjera të veçanta janë të mbyllura në kllapa këndore dhe me shkronja të pjerrëta.< dhe >)
  • Pjesët opsionale të komandave janë të mbyllura në kllapa katrore ().
  • Një elipsë (...) tregon se pjesa e mëparshme e një komande mund të përsëritet çdo numër herë.
  • Një shirit vertikal (|) do të thotë që ajo që vjen përpara mund të zëvendësohet nga ajo që vijon.
  • Kllapat kaçurrelë ((dhe)) tregojnë se gjithçka brenda tyre duhet të trajtohet si një e tërë për të vlerësuar karakteret e tjera (për shembull, vija vertikale ose elips).
  • Dy pika të dyfishta dhe të barabarta (:: =) do të thotë - ajo që vijon është një përkufizim i asaj që vjen përpara tyre.

    Përveç kësaj, ne do të përdorim sekuencën e mëposhtme (., ..) për të treguar se ajo e mëparshme mund të përsëritet çdo numër herë, me ngjarje individuale të ndara me presje. Atributet që nuk janë pjesë e standardit zyrtar do të shënohen si (* jo standarde *) në ​​përshkrim.

    JU LUTEM KUJDES: Terminologjia që përdorim këtu nuk është terminologji zyrtare ANSI. Terminologjia zyrtare mund të jetë shumë konfuze, ndaj e kemi thjeshtuar pak.

    Për këtë arsye, ne ndonjëherë përdorim terma të ndryshëm nga ANSI, ose përdorim të njëjtat terma në një mënyrë paksa të ndryshme. Për shembull, përkufizimi ynë është -< predicate >ndryshon nga kombinimi i përkufizimit standard ANSI< predicate >Me< search condition >.

    SQL ELEMENTET

    Ky seksion përcakton elementet e komandave SQL. Ato ndahen në dy kategori: Elementet bazë të gjuhës, dhe Elementet funksionale të gjuhës.

    Elementet thelbësore- këto janë blloqet e gjuhës që do të krijohen; kur SQL ekzaminon një komandë, së pari vlerëson çdo karakter në tekstin e komandës për sa i përket atyre elementeve. Ndarësit< separator >ndani një pjesë të ekipit nga një tjetër; çdo gjë ndërmjet kufijve< separator >trajtohet si modul. Bazuar në këtë ndarje, SQL interpreton komandën.

    Elementet funksionale janë gjëra të ndryshme përveç fjalëve kyçe që mund të interpretohen si module. Këto janë pjesët e komandës, të ndara me ndarës.< separator >që kanë kuptim të veçantë në SQL. Disa prej tyre janë specifike për komanda të caktuara dhe do të përshkruhen me këto komanda më vonë në këtë shtojcë. Këtu janë renditur elementë të zakonshëm për të gjitha komandat e përshkruara. Artikujt mund të përcaktohen në terma të njëri-tjetrit, apo edhe në termat e tyre. Për shembull, kallëzuesi< predicate >, rasti ynë i fundit dhe më i vështirë, përmban një kallëzues brenda përkufizimit të vet. Kjo për shkak se kallëzuesi< predicate >përdorimi i DHE ose OSE mund të përmbajë çdo numër kallëzuesish< predicate >të cilat mund të punojnë në mënyrë autonome. Ju kemi paraqitur kallëzuesin< predicate >në një pjesë të veçantë në këtë shtojcë, për shkak të shumëllojshmërisë dhe kompleksitetit të këtij elementi funksional të gjuhës. Ai do të jetë vazhdimisht i pranishëm kur diskuton pjesë të tjera funksionale të komandave.

    ELEMENTET E GJUHËS BAZË

    PËRKUFIZIMI I SENDIT< separator > < comment > | < space > | < newline > < comment > --< string > < newline > < space >hapësirë< newline >fundi i përcaktuar nga zbatimi i një vargu karakteresh< identifier > < letter >[{< letter or digit > | < underscore}... ] < ИМЕЙТЕ ВВИДУ: Следу строгому стандарту ANSI, символы должны быть набраны в верхнем регистра, а идентификатор < identifier >nuk duhet të jetë më i gjatë se 18 karaktere. PËRKUFIZIMI I SENDIT< underscore > - < percent sign > % < delimiter >ndonjë nga sa vijon:, ()< > . : = + " - | <> > = < = или < string > < string >[çdo tekst i printueshëm në thonjëza të vetme] Shënim: Në< string >, dy thonjëza të njëpasnjëshme të vetme ("") interpretohen si një (").< SQL term >mbaresa në varësi të gjuhës kryesore. (* vetëm me fole *)

    ELEMENTET FUNKSIONALE

    Tabela e mëposhtme tregon elementet funksionale të komandave SQL dhe përkufizimet e tyre: PËRKUFIZIMI I ITEM< query >Klauzola SELECT< subquery >Një klauzolë SELECT e mbyllur në kllapa brenda një klauzole tjetër, e cila, në fakt, vlerësohet veçmas për çdo rresht kandidat të klauzolës tjetër.< value expression > < primary > | < primary > < operator > < primary > | < primary > < operator > < value expression > < operator >ndonjë nga sa vijon: + - / *< primary > < column name > | < literal > | < aggregate function > | < built-in constant > | < nonstandard function > < literal > < string > | < mathematical expressio ЭЛЕМЕНТ ОПРЕДЕЛЕНИЕ < built-in constant >PËRDORIMI |< implementation-dehned constant > < table name > < identifier > < column spec > [< table name > | < alias >.]< column name > < grouping column > < column spec > | < integer > < ordering column > < column spec > | < integer > < colconstraint >JO NULL | UNIKE | KONTROLLO (< predicate >) | ÇELËSI PRIMAR | REFERENCAT< table name >[(< column name >)] < tabconstraint >UNIK (< column list >) | KONTROLLO (< predicate >) | ÇELESI PRIMAR (< column list >) | ÇELËSI I HUAJ (< column list >) REFERENCAT< table name >[(< column list >)] < defvalue >VLERA E PARAKTUAR =< value expression > < data type >Lloji i vlefshëm i të dhënave (Shih Shtojcën B për përshkrimet e llojeve të ofruara nga ANSI ose Shtojcën C për lloje të tjera gjenerike.)< size >Vlera varet nga< data type >(Shih Shtojcën B.)< cursor name > < identifier > < index name > < identifier > < synonym > < identifier >(* jostandarde *)< owner > < Authorization ID > < column list > < column spec > .,.. < value list > < value expression > .,.. < table reference > { < table name > [< alias >] } .,..

    PREDIKATET

    Më poshtë përcakton një listë të llojeve të ndryshme të kallëzuesit< predicate >përshkruar në faqet e mëposhtme:

    < predicate > ::=

    { < comparison predicate > | < in predicate > | < null predicate > | < between predicate > | < like predicate > | < quantified predicate > | < exists predicate > } < predicate >është një shprehje që mund të jetë e vërtetë, e rreme ose e panjohur, përveç< exists predicate >dhe< null predicate >që mund të jetë vetëm e vërtetë ose e rreme.

    Nuk do të dihet nëse vlerat NULL parandalojnë daljen e përgjigjes së kthyer. Kjo do të ndodhë sa herë që një vlerë NULL krahasohet me ndonjë vlerë. Operatorët standardë Boolean AND, OR, dhe NOT mund të përdoren me një kallëzues. JO e vërtetë = e rreme, JO e rreme = e vërtetë dhe JO e panjohur = e panjohur. Rezultatet e DHE dhe OR në kombinim me kallëzues janë paraqitur në tabelat e mëposhtme:

    DHE DHE E vërtetë E gabuar E panjohur E vërtetë E vërtetë E gabuar E panjohur E vërtetë E gabuar E panjohur E gabuar E panjohur E panjohur e panjohur e panjohur OSE E vërtetë e gabuar E panjohur E vërtetë e vërtetë e vërtetë E vërtetë e gabuar e vërtetë e pasaktë e panjohur e panjohur e vërtetë e panjohur e panjohur e panjohur

    Këto tabela lexohen në një mënyrë të ngjashme me një tabelë shumëzimi: ju bashkoni vlerat e vërteta, të pasakta ose të panjohura nga rreshtat me kolonat e tyre për të marrë rezultatin në vijën e tërthortë. Në një tabelë AND, për shembull, kolona e tretë (E panjohur) dhe rreshti i parë (E vërtetë) në kryqëzimin në këndin e sipërm djathtas japin rezultatin - të panjohur, me fjalë të tjera: E vërtetë DHE e panjohur = e panjohur. Rendi i llogaritjeve specifikohet në kllapa. Ata nuk prezantohen çdo herë. NUK vlerësohet së pari, e ndjekur nga DHE dhe OSE. Lloje të ndryshme kallëzuesish< predicate >diskutohen veçmas në pjesën tjetër.

    < comparison predicate >(kallëzues krahasues)

    Sintaksë

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

    Nëse ose< value expression >= NULL, ose< comparison predicate >= i panjohur; me fjalë të tjera, është e vërtetë nëse krahasimi është i vërtetë ose i gabuar nëse krahasimi është i rremë.
    < relational op >ka kuptime standarde matematikore për vlerat numerike; për llojet e tjera të vlerave, këto vlera janë specifike për zbatimin.
    te dyja< value expression >duhet të ketë lloje të krahasueshme të dhënash. Nëse nënpyetja< subquery >përdoret, duhet të përmbajë një shprehje< value expression >në klauzolën SELECT vlera e së cilës do të zëvendësojë shprehjen e dytë< value expression >në kallëzuesin krahasues< comparision predicate >, çdo herë kur< subquery >me të vërtetë është përmbushur.

    < between predicate >

    Sintaksë

    < value expression >NDËRMJET< value expression >
    DHE< value expression >

    < between predicate >- A MES B DHE C, ka të njëjtin kuptim si< predicate >- (A> = B DHE< = C). < between predicate >për të cilat A NOT BETWEEN B DHE C ka të njëjtin kuptim si NOT (MIJS B DHE C).< value expression >mund të dalë duke përdorur një pyetje jo standarde< subquery >(* jostandarde *).

    < in prediicate >

    Sintaksë

    < value expression >NË< value list > | < subquery >

    Lista e vlerave< value list >do të përbëhet nga një ose më shumë nga vlerat e listuara në kllapa dhe të ndara me presje që janë të krahasueshme me< value expression >lloji i të dhënave. Nëse përdoret një nënpyetje< subquery >, duhet të përmbajë vetëm një shprehje< value expression >në klauzolën SELECT (ndoshta më shumë, por kjo do të jetë jashtë standardit ANSI). Nënpyetje< subquery >në fakt, ai ekzekutohet veçmas për secilën rresht kandidat të pyetjes kryesore dhe vlerat që nxjerr do të formojnë një listë vlerash< value list >për këtë linjë. Në çdo rast, kallëzuesi< in predicate >do të jetë e vërtetë nëse shprehja< value expression >të përfaqësuar në një listë vlerash< value list >nëse NUK është specifikuar. Fraza A NOT IN (B, C) është ekuivalente me togfjalëshin NOT (A IN (B, C)).

    < like predicate >

    Sintaksë

    < charvalue >LIKE< pattern >

    < charvalue >është çdo shprehje * jo standarde *< value expression >lloji alfanumerik.< charvalue >ndoshta, sipas standardit, vetëm një kolonë specifike< column spec >... Mostra< pattern >përbëhet nga një varg që do të kontrollohet< charvalue >... Simboli i përfundimit< escapechar >është një karakter i vetëm alfanumerik. Një përputhje do të ndodhë nëse kushtet e mëposhtme janë të vërteta:

  • Për çdo nënvizim< underscore >në mostër< pattern >e cila nuk paraprihet nga një karakter fundor< escapechar >, ka një simbol përkatës< charvalue >.
  • Për të gjithë< percent sign >në mostër< pattern >që nuk paraprihet nga< escapechar >, ka zero ose më shumë karaktere që përputhen< charvalue >.
  • Për të gjithë< escapechar >v< pattern >që nuk i paraprin tjetrit< escapechar >, nuk ka asnjë karakter përkatës në< charvalue >.
  • Për çdo personazh tjetër në< pattern >, i njëjti simbol vendoset në shenjën përkatëse në< charvalue >.

    Nëse ndodh një ndeshje,< like predicate >- e vërtetë nëse JO nuk është specifikuar. Fraza NOT LIKE "tekst" është e barabartë me NOT (A LIKE "tekst").

    < null predicate >

    Sintaksë

    < column spec >ËSHTË NULL

    < column spec >= ËSHTË NULL nëse një vlerë NULL është e pranishme në këtë kolonë. Kjo do të bëjë< null predicate >e vlefshme nëse nuk është specifikuar NULL. Frazë< column spec >NUK ËSHTË NULL, ka të njëjtin efekt si NUK (< column spec >ËSHTË NULL).

    < quantified predicate >

    Sintaksë

    < value expression > < relational op >
    < quantifier > < subquery >
    < quantifier >:: = NDONJË | ALL | DISA

    SELECT klauzolë të një nënpyetjeje< subquery >duhet të përmbajë një dhe vetëm një shprehje me vlerë< value expression >... Të gjitha vlerat janë kthyer nga nënpyetje< subquery >përpiloni një grup rezultatesh< result set >. < value expression >krahasuar duke përdorur transportuesin< relational operator >, me secilin anëtar të grupit të rezultateve< result set >... Ky krahasim vlerësohet si më poshtë:

  • Nëse< quantifier >= ALL, dhe secili anëtar i grupit të rezultateve< result set >e bën të vërtetë këtë krahasim,< quantified predicate >- eshte e sakte.
  • Nëse< quantifier >= NDONJË dhe ka të paktën një anëtar nga grupi i rezultateve< result set >çka e bën të vërtetë këtë krahasim< quantified predicate >eshte e sakte.
  • Nëse rezultati është vendosur< result set >bosh atëherë< quantified predicate >e vërtetë nëse< quantifier >= TË GJITHA, dhe e pavlefshme nëse nuk është ndryshe.
  • Nëse< quantifier >= DISA, efekti është i njëjtë si për NDONJË.
  • Nëse< quantified predicate >jo besnik dhe jo i pasaktë, ai është i panjohur.

    < exists predicate >

    Sintaksë:

    EKZISTON (< subquery >)

    Nëse nënpyetja< subquery >printon një ose më shumë rreshta të prodhimit,< exists predicate >- eshte e sakte; dhe është e pasaktë nëse është ndryshe.

    KOMANDA SQL

    Ky seksion detajon sintaksën e komandave të ndryshme SQL. Kjo do t'ju japë mundësinë për të kërkuar shpejt një komandë, për të gjetur sintaksën e saj dhe një përshkrim të shkurtër se si funksionon.

    BE INSIGHT Komandat që fillojnë me fjalë - EXEC SQL, dhe komandat ose fjalitë që përfundojnë me një fjalë - mund të përdoren vetëm në SQL të mbivendosur.

    FILLO SEKSIONIN E DEKLARAVE

    Sintaksë

    EXEC SQL FILLO SEKSIONI DEKLAROJ< SQL term > < host-language variable declarations >EXEC SQL FUND SEKSIONI I DEKLARAVE< SQL term >

    Kjo komandë krijon një seksion të programit të gjuhës kryesore për të deklaruar variablat kryesore në të, të cilat do të përdoren në deklaratat e mbivendosura SQL. Ndryshorja SQLCODE duhet të përfshihet si një nga variablat e deklaruar të gjuhës pritës.

    MBYLL KURSORIN

    Sintaksë

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

    Kjo komandë i thotë kursorit të mbyllet, pas së cilës nuk mund të zgjidhet asnjë vlerë prej tij derisa të rihapet.

    ANGOSHUNI (PUNË)

    Sintaksë

    Kjo komandë lë të pandryshuara të gjitha ndryshimet e bëra në bazën e të dhënave derisa transaksioni i filluar të përfundojë dhe të fillojë një transaksion i ri.

    KRIJONI INDEKS

    (* JO STANDARD *) (JO STANDARD)

    Sintaksë

    KRIJONI INDEKS< Index name >
    AKTIV< table name > (< column list >);

    Kjo komandë krijon një rrugë efikase të aksesit të shpejtë për gjetjen e rreshtave që përmbajnë kolonat e përcaktuara. Nëse specifikohet UNIQUE, tabela nuk mund të përmbajë dublikatë (binjake) vlerash në këto kolona.

    KRIJO SINONIM (* JO STANDARD *)
    (KRIJO SINONIM) (* JO STANDARD *)

    Sintaksë

    KRIJO SINONIM IPUBLICl< synonym >PËR
    < owner >.< table name >;

    Kjo komandë krijon një alternativë (sinonim) ndaj tyre për tabelën. Sinonimi i përket krijuesit të tij, dhe vetë tabela, zakonisht një përdoruesi tjetër. Duke përdorur një sinonim, pronari i saj nuk duhet t'i referohet tabelës me emrin e plotë (përfshirë pronarin). Nëse specifikohet PUBLIC, sinonimi i përket drejtorisë SYSTEM dhe për këtë arsye është i disponueshëm për të gjithë përdoruesit.

    KRIJONI TABELA

    Sintaksë

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

    Komanda krijon një tabelë në bazën e të dhënave. Kjo tabelë do të jetë në pronësi të krijuesit të saj. Kolonat do të konsiderohen në një renditje sipas emrit.< data type >- përcakton llojin e të dhënave që do të përmbajë kolona. Standard< data type >përshkruar në Shtojcën B; të gjitha llojet e tjera të të dhënave të përdorura< data type >diskutuar në Shtojcën C. Vlera e madhësisë< size >varet nga lloji i të dhënave< data type >.
    < colconstraint >dhe< tabconstraint >vendos kufizime në vlerat që mund të futen në një kolonë.
    < defvalue >përcakton vlerën (e parazgjedhur) që do të futet automatikisht nëse nuk specifikohet asnjë vlerë tjetër për këtë rresht. (Shih Kapitullin 17 për detaje mbi vetë komandën CREATE TABLE dhe Kapitullin 18 DHE për detaje mbi kufizimet dhe< defvalue >).

    KRIJO PAMJE

    Sintaksë

    KRIJO PAMJE< table name >
    AS< query >
    ;

    Skanimi trajtohet si çdo tabelë në komandat SQL. Kur një komandë i referohet një emri tabele< table name >, hetim< query >ekzekutohet dhe dalja e saj përputhet me përmbajtjen e tabelës së specifikuar në këtë komandë.
    Disa pamje mund të modifikohen, që do të thotë se komandat e modifikimit mund të ekzekutohen në këto pamje dhe t'i kalohen tabelës që është referuar në pyetje< query >... Nëse specifikohet OPTION ME KONTROLLI, ky modifikim duhet të plotësojë gjithashtu kushtin e kallëzuesit< predicate >në kërkesë< query >.

    DEKLARONI KURSORIN

    Sintaksë

    EXEC SQL DEKLAROJ< cursor name >KURSOR PËR
    < query >< SQL term >

    Kjo komandë i lidh ato me kursorin< cursor name >, me kërkesën< query >... Kur kursori është i hapur (shih HAPUR KURSORIN), pyetja< query >ekzekutohet dhe rezultati i tij mund të zgjidhet (me komandën FETCH) për dalje. Nëse kursori është i modifikueshëm, tabela referohet nga pyetësori< query >, mund të marrë një ndryshim të përmbajtjes duke përdorur një operacion modifikimi në kursor (Shih Kapitullin 25 për kursorët e modifikueshëm).

    FSHIJE

    Sintaksë

    FSHIJE NGA< table name >
    { ; }
    | KU AKTUALE E< cursorname >< SQL term >

    Nëse nuk ka klauzolë WHERE, TË GJITHA rreshtat në tabelë fshihen. Nëse fjalia WHERE përdor kallëzuesin< predicate >, rreshta që plotësojnë kushtin e këtij kallëzuesi< predicate >hequr. Nëse klauzola WHERE ka AKTUALE E argumentit në emrin e kursorit< cursor name >, rresht nga tabela< table name >e cila aktualisht referohet duke përdorur emrin e kursorit< cursor name >do të fshihet. Formulari WHERE CURRENT mund të përdoret vetëm në SQL të mbivendosur dhe vetëm me kursorë të modifikueshëm.

    EXEC SQL

    Sintaksë

    EXEC SQL< embedded SQL command > < SQL term >

    EXEC SQL përdoret për të treguar fillimin e të gjitha komandave SQL të vendosura në një gjuhë tjetër.

    MARRE

    Sintaksë

    EXEC SQL FETCH< cursorname >
    NË< host-varlable llst >< SQL term >

    FETCH merr dalje nga vargu aktual i pyetjes< query >, e fut atë në listën e variablave kryesore< host-variable list >, dhe zhvendos kursorin në rreshtin tjetër. Listë< host-variable list >mund të përfshijë treguesin e ndryshores si një variabël objektiv (Shih Kapitullin 25.)

    GRANT

    Sintaksa (standarde)

    GRANTO TË GJITHA
    | (ZGJIDH
    | INSERT
    | FSHIJE
    | PËRDITËSO [(< column llst >)]
    | REFERENCAT [(< column llst >) l). ,. ...
    AKTIV< table name > . , . .
    NË PUBLIK |< Authorization ID > . , . .
    ;

    Argumenti ALL, me ose pa PRIVILEGJET, përfshin çdo privilegj në listën e privilegjeve. PUBLIC përfshin të gjithë përdoruesit ekzistues dhe të gjithë përdoruesit e ardhshëm. Kjo komandë bën të mundur transferimin e të drejtave për të kryer veprime në tabelë me emrin e specifikuar. REFERENCAT ju lejon të jepni të drejta për të përdorur kolonat në listën e kolonave< column list >si çelës prind për çelësin e huaj. Privilegjet e tjera përbëhen nga e drejta për të ekzekutuar komandat për të cilat privilegjet tregohen me emrat e tyre në tabelë. UPDATE është i ngjashëm me REFERENCAT dhe mund të zbatojë kufizime në kolona specifike. GRANT OPTION ju lejon t'i transferoni këto privilegje te përdoruesit e tjerë.

    Sintaksë (jo standarde)

    GRANT DBA
    | BURIM
    | LIDHUR ....
    TE< Authorization ID > . , . .
    | < privilege > . , . . }
    NGA (PUBLIKE
    | < Authorization ID > . , . . };

    Privilegj< privelege >mund të jetë ndonjë nga ato të specifikuara në komandën GRANT. Përdoruesi që jep REVOKE duhet të ketë të njëjtat privilegje si përdoruesi që ka dhënë GRANT. Klauzola ON mund të përdoret nëse përdoret një privilegj i tipit të veçantë për një objekt specifik.

    KTHIMI (PUNË)
    (RIKTHIM) (TRANSAKSIONET)

    Sintaksë

    Komanda anulon të gjitha ndryshimet e bëra në bazën e të dhënave gjatë transaksionit aktual. Ai gjithashtu përfundon atë aktual dhe fillon një transaksion të ri.

    ZGJIDH

    Sintaksë

    SELECT (IDISTINCT | TË GJITHA]< value expression > . , . . } / *
    NGA< table reference > . , . .

    . , . . ];

    Kjo klauzolë organizon pyetjen dhe nxjerr vlerat nga baza e të dhënave (shih Kapitullin 3 - Kapitulli 14). Zbatohen rregullat e mëposhtme:

  • Nëse nuk specifikohet as TË GJITHA as TË NDRYSHME, TË GJITHA pranohen.
  • Shprehje< value expression >përbëhet nga< column spec >, funksion agregat< aggregate funct >, funksion me porosi< nonstandard fu nction >konstante< constant >, ose ndonjë kombinim i tyre me operatorë në shprehje të vlefshme.
  • Tabela e referencës< table reference >, përbëhet nga emri i tabelës, duke përfshirë prefiksin e pronarit nëse përdoruesi aktual nuk është pronari, ose një sinonim (jo standard) për tabelën. Tabela mund të jetë ose një tabelë bazë ose një pamje. Në thelb, një pseudonim mund të tregojë se cili sinonim përdoret për një tabelë vetëm për kohëzgjatjen e komandës aktuale. Emri i tabelës ose sinonimi duhet të ndahet nga pseudonimi me një ose më shumë karaktere ndarëse< separator >.
  • Nëse përdoret GROUP BY, të gjitha kolonat< column spec >e përdorur në klauzolën SELECT do të duhet të përdoret si një grup kolonash< grouping column >nëse nuk përfshihen në funksionin agregat< aggregate funct >... Grupi i tërë kolonës< grouping column >duhet të përfaqësohet midis shprehjeve< value expressions >specifikuar në klauzolën SELECT. Për çdo kombinim të veçantë të vlerave të grupit të kolonave< grouping column >, do të ketë një dhe vetëm një linjë prodhimi.
  • Nëse përdoret HAVING, kallëzuesi< predicate >zbatohet për çdo rresht të prodhuar nga klauzola GROUP BY, dhe ato rreshta që e bëjnë këtë kallëzues të vërtetë do të printohen.
  • Nëse përdoret ORDER BY, dalja është në një sekuencë specifike. ID-ja e çdo kolone< column identifer >i referohet të specifikuarit< value expression >në klauzolën SELECT. Nëse kjo< value expression >është kolona e specifikuar< column spec >, < co lumn identifier >mund të jetë e njëjtë si< column spec >... Përndryshe< co lumn identifier >mund të jetë një numër i plotë pozitiv që tregon vendndodhjen ku< value expression >në sekuencën e klauzolës SELECT. Prodhimi do të formohet për t'iu përshtatur vlerave të përmbajtura< column identifier >në rend rritës nëse DESC nuk është specifikuar. Emri i ID-së së kolonës< column identifier >i pari në klauzolën ORDER BY do t'u paraprijë emrave të mëvonshëm në përkufizimin e sekuencës së daljes.

    Klauzola SELECT vlerëson çdo rresht kandidat të një tabele në të cilën rreshtat shfaqen në mënyrë të pavarur. Vargu i kandidatit përcaktohet si më poshtë:

  • Nëse ka vetëm një tabelë të referuar< table reference >aktivizuar, çdo rresht i kësaj tabele është nga ana tjetër një rresht kandidat.
  • Nëse referohen më shumë se një tabelë< table reference >aktivizuar, çdo rresht i çdo tabele duhet të kombinohet me radhë me çdo kombinim rreshtash nga të gjitha tabelat e tjera. Çdo kombinim i tillë nga ana e tij do të jetë një varg kandidat.

    Çdo rresht kandidat prodhon vlera që bëjnë kallëzuesin< predicate >në fjalinë WHERE e vërtetë, e pasaktë ose e panjohur. Nëse GROUP BY nuk përdoret, secili< value expression >aplikohet me radhë për çdo varg kandidat vlera e të cilit e bën kallëzuesin të vlefshëm dhe rezultati i këtij operacioni është dalja.
    Nëse përdoret GROUP BY, rreshtat kandidatë kombinohen duke përdorur funksionet agregate. Nëse nuk ka kallëzues< predicate >jo i vendosur, çdo shprehje< value expression >zbatohet për çdo linjë ose grup kandidat. Nëse specifikohet DISTINCT, linjat e kopjuara do të hiqen nga dalja.

    UNION

    Sintaksë

    < query >(UNION< query > } . . . ;

    Duke shfaqur dy ose më shumë pyetje< query >do të bashkohen. Çdo kërkesë< query >duhet të përmbajë të njëjtin numër< value expression >në klauzolën SELECT dhe në mënyrë të tillë që 1 .. n nga secila, lloji i të dhënave të përputhet< data type >dhe madhësisë< size >me 1 .. n gjithë të tjerët.

    PËRDITËSOJE

    Sintaksë

    PËRDITËSOJE< table name >
    SET (< column name > = < value expression > } . , . .
    ([KU< predlcate >]; }
    | {
    < SQL term >]}

    UPDATE ndryshon vlerat në secilën kolonë të emërtuar< column name >me vlerën përkatëse< value expression >... Nëse fjalia WHERE përdor kallëzuesin< predicate >, pastaj vetëm rreshtat e tabelës, vlerat aktuale të të cilave e bëjnë atë kallëzues< predicate >e saktë, mund të ndryshojë. Nëse WHERE përdor klauzolën CURRENT OF, atëherë vlerat në rreshtin e tabelës me emrin< table name >ndodhet në kursorin me emrin< cursor name >ndryshim. WHERE CURRENT OF është i përdorshëm vetëm në SQL të mbivendosur dhe vetëm me kursorë të modifikueshëm. Nëse nuk ka klauzolë WHERE, të gjitha rreshtat ndryshohen.

    kurdoherë

    Sintaksë

    EXEC SQL kurdoherë< SQLcond > < actlon > < SQL term >
    < SQLcond >:: = SQLERROR | NUK GJETUR | PARALAJMËRIM SQL
    (kjo e fundit është jo standarde)
    < action >:: = VAZHDIM | SHKO< target >| SHKO< target >
    < target >:: = varet nga gjuha kryesore

  • Secili prej nesh has dhe përdor rregullisht baza të të dhënave të ndryshme. Kur zgjedhim një adresë emaili, ne jemi duke punuar me një bazë të dhënash. Bazat e të dhënave përdorin motorë kërkimi, banka për të ruajtur të dhënat e klientëve, etj.

    Por, megjithë përdorimin e vazhdueshëm të bazave të të dhënave, edhe për shumë zhvillues të sistemeve softuerike ka shumë "pika boshe" për shkak të interpretimeve të ndryshme të të njëjtave terma. Ne do të japim një përkufizim të shkurtër të termave bazë të bazës së të dhënave përpara se të shikojmë gjuhën SQL. Kështu që.

    Baza e të dhënave - një skedar ose grup skedarësh për ruajtjen e strukturave të renditura të të dhënave dhe marrëdhëniet e tyre. Shumë shpesh një sistem kontrolli quhet një bazë të dhënash - është vetëm një ruajtje e informacionit në një format të caktuar dhe mund të funksionojë me DBMS të ndryshme.

    tabela - Imagjinoni një dosje që ruan dokumente të grupuara sipas një kriteri të caktuar, për shembull, një listë porosish për muajin e fundit. Kjo është tabela në kompjuter.Një tabelë e veçantë ka emrin e saj unik.

    Lloji i të dhënave - lloji i informacionit që lejohet të ruhet në një kolonë ose rresht të veçantë. Këto mund të jenë numra ose tekst në një format specifik.

    Kolona dhe rreshti- të gjithë kemi punuar me spreadsheets, të cilat gjithashtu kanë rreshta dhe kolona. Çdo bazë e të dhënave relacionale punon me tabela në një mënyrë të ngjashme. Linjat nganjëherë quhen rekorde.

    Çelesi primar- çdo rresht i tabelës mund të ketë një ose më shumë kolona për identifikimin e tij unik. Pa një çelës primar, është shumë e vështirë të përditësosh, modifikosh dhe fshish rreshtat e kërkuar.

    Çfarë është SQL?

    SQL(Anglisht - gjuhë e strukturuar e pyetjeve) u zhvillua vetëm për të punuar me bazat e të dhënave dhe aktualisht është standardi për të gjitha DBMS-të e njohura. Sintaksa e gjuhës përbëhet nga një numër i vogël operatorësh dhe është i lehtë për t'u mësuar. Por, megjithë thjeshtësinë e jashtme, ai lejon krijimin e pyetjeve sql për operacione komplekse me një bazë të dhënash të çdo madhësie.

    Që nga viti 1992, ekziston një standard i pranuar përgjithësisht i quajtur ANSI SQL. Ai përcakton sintaksën bazë dhe funksionet e operatorëve dhe mbështetet nga të gjithë liderët e tregut DBMS, si ORACLE. Është e pamundur të merren parasysh të gjitha tiparet e gjuhës në një artikull të vogël, kështu që do të shqyrtojmë shkurtimisht vetëm SQL-në bazë. pyetje. Shembujt tregojnë qartë thjeshtësinë dhe aftësitë e gjuhës:

    • krijimi i bazave të të dhënave dhe tabelave;
    • marrjen e të dhënave;
    • shtimi i të dhënave;
    • modifikimin dhe fshirjen e informacionit.

    Llojet e të dhënave SQL

    Të gjitha kolonat në një tabelë të bazës së të dhënave ruajnë të njëjtin lloj të dhënash. Llojet e të dhënave në SQL janë të njëjta si në gjuhët e tjera të programimit.

    Krijoni tabela dhe baza të të dhënave

    Ekzistojnë dy mënyra për të krijuar baza të dhënash të reja, tabela dhe pyetje të tjera në SQL:

    • Deklaratat SQL nëpërmjet konsolës DBMS
    • Përdorimi i mjeteve të administrimit në internet të përfshirë me serverin e bazës së të dhënave.

    Një bazë e re e të dhënave krijohet nga operatori KRIJON BAZA E TË DHËNAVE<наименование базы данных>; ... Siç mund ta shihni, sintaksa është e thjeshtë dhe koncize.

    Ne krijojmë tabela brenda bazës së të dhënave me deklaratën CREATE TABLE me parametrat e mëposhtëm:

    • emri i tabelës
    • emrat e kolonave dhe llojet e të dhënave

    Si shembull, le të krijojmë një tabelë Mallrash me kolonat e mëposhtme:

    Ne krijojmë një tabelë:

    KRIJO TABELA Mall

    (id_i_mallrave CHAR (15) JO NULL,

    shitës_id CHAR (15) JO NULL,

    emri i mallit CHAR (254) NULL,

    mall_çmimi DECIMAL (8,2) NULL,

    commodity_desc VARCHAR (1000) NULL);

    Tabela ka pesë kolona. Emri ndiqet nga lloji i të dhënave, kolonat ndahen me presje. Vlera e kolonës mund të jetë null (NULL) ose duhet të plotësohet (NOT NULL), dhe kjo përcaktohet kur krijohet tabela.

    Marrja e të dhënave nga një tabelë

    Operatori i përzgjedhjes së të dhënave është pyetësi SQL më i përdorur. Për të marrë informacion, është e nevojshme të tregojmë se çfarë duam të zgjedhim nga një tabelë e tillë. Le të fillojmë me një shembull të thjeshtë:

    ZGJIDHni emrin e mallit NGA Mall

    Pas deklaratës SELECT, ne specifikojmë emrin e kolonës për të marrë informacionin dhe FROM përcakton tabelën.

    Rezultati i ekzekutimit të pyetjes do të jenë të gjitha rreshtat e tabelës me vlerat e emrit të mallrave në rendin në të cilin janë futur në bazën e të dhënave, d.m.th. pa asnjë renditje. Një klauzolë shtesë ORDER BY përdoret për të renditur rezultatin.

    Për një pyetje në disa fusha, ne i rendisim ato të ndara me presje, si në shembullin e mëposhtëm:

    ZGJIDH ID_në e mallit, emri_mall, çmimi_mall NGA malli

    Është e mundur të merret vlera e të gjitha kolonave të një rreshti si rezultat i një pyetjeje. Për ta bërë këtë, përdorni shenjën "*":

    ZGJIDH * NGA Mallrat

    • Për më tepër, SELECT mbështet:
    • Renditja e të dhënave (ORDER SIPAS operatorit)
    • Përzgjedhja sipas kushteve (KU)
    • Termi i grupimit (GROUP BY)

    Shtoni rreshtin

    Për të shtuar një rresht në tabelë, përdoren pyetjet SQL me deklaratën INSERT. Shtimi mund të bëhet në tre mënyra:

    • shtoni një linjë të re të tërë;
    • pjesë e një vargu;
    • rezultatet e pyetjes.

    Për të shtuar një rresht të plotë, duhet të specifikoni emrin e tabelës dhe vlerat e kolonave (fushave) të rreshtit të ri. Le të japim një shembull:

    INSERT NË VLERAT E Mallrave ("106", "50", "Coca-Cola", "1.68", "Pa Alkogol,)

    Shembulli shton një produkt të ri në tabelë. Vlerat përcaktohen pas VALUES për secilën kolonë. Nëse nuk ka vlerë përkatëse për kolonën, atëherë duhet të specifikohet NULL. Kolonat janë të mbushura me vlera në rendin e specifikuar kur është krijuar tabela.

    Nëse shtoni vetëm një pjesë të një rreshti, duhet të specifikoni në mënyrë eksplicite emrat e kolonave, si në shembullin:

    INSERT INTO Commodity (id_i_mallrit, shitësi_id, emri_mallrit)

    VLERAT ("106", '50 "," Coca-Cola ",)

    Ne kemi futur vetëm identifikuesit e produktit, furnizuesin dhe emrin e tij, dhe pjesa tjetër e fushave i kemi lënë bosh.

    Shtimi i rezultateve të pyetjeve

    INSERT përdoret kryesisht për të shtuar rreshta, por mund të përdoret gjithashtu për të shtuar rezultatet e një deklarate SELECT.

    Ndryshimi i të dhënave

    Për të ndryshuar informacionin në fushat e tabelës së bazës së të dhënave, duhet të përdorni deklaratën UPDATE. Operatori mund të përdoret në dy mënyra:

    • Të gjitha rreshtat në tabelë janë përditësuar.
    • Vetëm për një linjë specifike.

    UPDATE ka tre elementë kryesorë:

    • tabelën në të cilën duhet të bëni ndryshime;
    • emrat e fushave dhe vlerat e tyre të reja;
    • kushtet për zgjedhjen e rreshtave për të ndryshuar.

    Le të shohim një shembull. Le të themi se kostoja e një artikulli me ID = 106 ka ndryshuar, kështu që kjo linjë duhet të përditësohet. Ne shkruajmë operatorin e mëposhtëm:

    PËRDITËSONI SETin e mallit commodity_price = "3.2" WHERE commodity_id = "106"

    Ne treguam emrin e tabelës, në rastin tonë Commodity, ku do të kryhet përditësimi, pastaj pas SET - vlerën e re të kolonës dhe gjetëm rekordin e kërkuar duke specifikuar vlerën e kërkuar ID në WHERE.

    Për të modifikuar kolona të shumta, çifte të shumta kolone-vlera specifikohen pas deklaratës SET, të ndara me presje. Le të shohim një shembull që përditëson emrin dhe çmimin e një produkti:

    PËRDITËZO SET-in e mallit emri_commodity = 'Fanta', commodity_price = "3.2" WHERE commodity_id = "106"

    Për të hequr informacionin në një kolonë, mund ta vendosni atë në NULL nëse struktura e tabelës e lejon atë. Duhet mbajtur mend se NULL është saktësisht vlera "jo" dhe jo zero në formën e tekstit ose numrave. Le të fshijmë përshkrimin e produktit:

    PËRDITËSO KOSOVËN e mallrave commodity_desc = NULL WHERE commodity_id = "106"

    Fshirja e rreshtave

    Pyetjet SQL për të fshirë rreshtat në një tabelë ekzekutohen nga deklarata DELETE. Ka dy raste përdorimi:

    • disa rreshta fshihen në tabelë;
    • të gjitha rreshtat në tabelë janë fshirë.

    Një shembull i fshirjes së një rreshti nga një tabelë:

    FSHI NGA malli WHERE commodity_id = "106"

    Pas DELETE FROM ne specifikojmë emrin e tabelës në të cilën do të fshihen rreshtat. Klauzola WHERE përmban një kusht me të cilin do të zgjidhen rreshtat për fshirje. Në shembull, ne po fshijmë rreshtin për produktin me ID = 106. Është shumë e rëndësishme të specifikoni KU. Heqja e kësaj deklarate do të fshijë të gjitha rreshtat në tabelë. Kjo vlen edhe për ndryshimin e vlerës së fushave.

    Deklarata DELETE nuk përfshin emrat e kolonave ose metakarakteret. Ai fshin rreshtat tërësisht, por nuk mund të fshijë një kolonë të vetme.

    Përdorimi i SQL në Microsoft Access

    Zakonisht përdoret në mënyrë interaktive për të krijuar tabela, baza të të dhënave, për të menaxhuar, modifikuar, analizuar të dhënat në një bazë të dhënash dhe për të futur pyetjet e SQL Access përmes një projektuesi të përshtatshëm interaktiv të pyetjeve (Query Designer), duke përdorur të cilin mund të ndërtoni dhe ekzekutoni menjëherë deklaratat SQL të çdo kompleksiteti...

    Mbështetet gjithashtu mënyra e aksesit në server, në të cilën Access DBMS mund të përdoret si gjenerues i pyetjeve SQL për çdo burim të dhënash ODBC. Kjo aftësi lejon që aplikacionet Access të ndërveprojnë me çdo format.

    Shtesat SQL

    Meqenëse pyetjet SQL nuk i kanë të gjitha aftësitë e gjuhëve të programimit procedural, të tilla si unazat, degët, etj., shitësit e bazës së të dhënave zhvillojnë versionin e tyre të SQL me aftësi të avancuara. Para së gjithash, kjo është mbështetje për procedurat e ruajtura dhe operatorët standardë të gjuhëve procedurale.

    Dialektet më të zakonshme të gjuhës:

    • Baza e të dhënave Oracle - PL / SQL
    • Interbase, Firebird - PSQL
    • Microsoft SQL Server - Transact-SQL
    • PostgreSQL - PL / pgSQL.

    SQL në internet

    MySQL shpërndahet nën Licencën e Përgjithshme Publike GNU. Ekziston një licencë tregtare me aftësinë për të zhvilluar module me porosi. Si pjesë integrale, ai përfshihet në asambletë më të njohura të serverëve të internetit, si XAMPP, WAMP dhe LAMP, dhe është DBMS më i njohur për zhvillimin e aplikacioneve në internet.

    Ai u zhvillua nga Sun Microsystems dhe aktualisht mbështetet nga Oracle Corporation. Mbështetet bazat e të dhënave deri në 64 terabajt, standardi sintaksor SQL: 2003, riprodhimi i bazës së të dhënave dhe shërbimet cloud.

    Si mund të zbuloj numrin e modeleve të PC-ve të prodhuara nga një shitës i caktuar? Si të përcaktohet çmimi mesatar për kompjuterët me të njëjtat specifika? Këto dhe shumë pyetje të tjera që lidhen me disa informacione statistikore mund të përgjigjen duke përdorur funksionet përmbledhëse (agregate).... Standardi parashikon funksionet e mëposhtme agregate:

    Të gjitha këto funksione kthejnë një vlerë të vetme. Në këtë rast, funksionet COUNT, MIN dhe MAX janë të zbatueshme për çdo lloj të dhënash, ndërsa SHUMË dhe AVG përdoren vetëm për fushat numerike. Dallimi midis funksionit COUNT (*) dhe COUNT (<имя поля>) është se e dyta nuk merr parasysh vlerat NULL gjatë llogaritjes.

    Shembull. Gjeni çmimin minimal dhe maksimal për kompjuterët personalë:

    Shembull. Gjeni numrin e kompjuterëve të disponueshëm nga prodhuesi A:

    Shembull. Nëse jemi të interesuar për numrin e modeleve të ndryshme të prodhuara nga prodhuesi A, atëherë pyetja mund të formulohet si më poshtë (duke përdorur faktin se në tabelën e produktit çdo model regjistrohet një herë):

    Shembull. Gjeni numrin e modeleve të ndryshme të disponueshme nga prodhuesi A. Pyetja është e ngjashme me atë të mëparshme, në të cilën kërkohej të përcaktohej numri total i modeleve të prodhuara nga prodhuesi A. Këtu duhet të gjeni edhe numrin e modeleve të ndryshme në Tavolinë PC (dmth në dispozicion për shitje).

    Për të siguruar që përdoren vetëm vlera unike kur merren tregues statistikorë, kur argumenti i funksioneve agregate mund të përdoret Parametri DISTINCT... Një tjetër parametri ALLështë parazgjedhja dhe supozon që të gjitha vlerat e kthyera në kolonë janë numëruar. Operator,

    Nëse duhet të marrim numrin e modeleve të PC-ve të prodhuara çdo prodhuesi, do t'ju duhet të përdorni GRUPI PËR klauzolë në vijim sintaksor KU klauzolat.

    GRUPI PËR klauzolë

    GRUPI PËR klauzolë përdoret për të përcaktuar grupet e linjave të daljes në të cilat mund të aplikohen funksionet e përgjithshme (COUNT, MIN, MAX, AVG dhe SUM)... Nëse kjo klauzolë mungon dhe përdoren funksionet e përgjithshme, atëherë të gjitha kolonat me emrat e përmendur në ZGJIDH duhet të përfshihen në funksionet agregate, dhe këto funksione do të aplikohen në të gjithë grupin e rreshtave që plotësojnë kallëzuesin e pyetjes. Përndryshe, të gjitha kolonat e listës SELECT, nuk përfshihen në funksionet agregate, duhet të specifikohet në klauzolë GRUPI SIPAS... Si rezultat, të gjitha linjat e daljes së pyetjes ndahen në grupe të karakterizuara nga të njëjtat kombinime vlerash në këto kolona. Pas kësaj, funksionet agregate do të aplikohen për secilin grup. Vini re se për GROUP BY të gjitha vlerat NULL trajtohen si të barabarta, d.m.th. kur grupohen nga një fushë që përmban vlera NULL, të gjitha rreshtat e tillë do të bien në një grup.
    Nëse nëse ka një klauzolë GROUP BY, në klauzolën SELECT nuk ka funksione agregate, atëherë pyetja thjesht do të kthejë një rresht nga secili grup. Kjo veçori, së bashku me fjalën kyçe DISTINCT, mund të përdoret për të eliminuar rreshtat e dyfishta në grupin e rezultateve.
    Le të hedhim një vështrim në një shembull të thjeshtë:
    SELECT model, COUNT (modeli) AS Qty_model, AVG (çmimi) AS çmimi mesatar
    NGA PC
    GRUPI SIPAS modelit;

    Në këtë kërkesë, për çdo model PC, përcaktohet numri i tyre dhe kostoja mesatare. Të gjitha rreshtat me të njëjtat vlera modeli formojnë një grup, dhe dalja SELECT llogarit numrin e vlerave dhe vlerat mesatare të çmimeve për secilin grup. Kërkesa do të rezultojë në tabelën e mëposhtme:
    model Sasia_model Çmimi_mesatar
    1121 3 850.0
    1232 4 425.0
    1233 3 843.33333333333337
    1260 1 350.0

    Nëse SELECT kishte një kolonë me një datë, atëherë do të ishte e mundur të llogariteshin këta tregues për çdo datë specifike. Për ta bërë këtë, duhet të shtoni një datë si një kolonë grupimi, dhe më pas do të llogariten funksionet e përmbledhura për çdo kombinim vlerash (model-datë).

    Ka disa specifike rregullat për kryerjen e funksioneve agregate:

    • Nëse si rezultat i pyetjes asnjë rresht nuk është marrë(ose më shumë se një rresht për një grup të caktuar), atëherë mungojnë të dhënat fillestare për llogaritjen e ndonjë prej funksioneve agregate. Në këtë rast, rezultati i ekzekutimit të funksioneve COUNT do të jetë zero, dhe rezultati i të gjitha funksioneve të tjera do të jetë NULL.
    • Argumenti funksioni agregat vetë nuk mund të përmbajë funksione agregate(funksioni nga funksioni). ato. në një pyetje, ju nuk mund të merrni, të themi, vlerat mesatare maksimale.
    • Rezultati i ekzekutimit të funksionit COUNT është numër i plotë(SHUMË I PLOTË). Funksionet e tjera agregate trashëgojnë llojet e të dhënave të vlerave që përpunohen.
    • Nëse, gjatë ekzekutimit të funksionit SUM, është marrë një rezultat që tejkalon vlerën maksimale të llojit të të dhënave të përdorur, gabim.

    Pra, nëse kërkesa nuk përmban GRUP SIPAS klauzolave, pastaj funksionet agregate të përfshira në Klauzola SELECT, ekzekutohen në të gjitha linjat e pyetjeve që rezultojnë. Nëse kërkesa përmban GRUPI PËR klauzolë, çdo grup rreshtash që ka të njëjtat vlera të grupit të kolonave ose kolonave të specifikuara në GRUPI PËR klauzolë, përbën një grup, dhe funksionet agregate kryhen për secilin grup veç e veç.

    Klauzola e PASJES

    Nëse Klauzola WHERE përcakton një kallëzues për filtrimin e rreshtave, më pas Duke pasur ofertë aplikuar pas grupimit për të përcaktuar një grup të ngjashëm filtrues kallëzues sipas vlerave funksionet agregate... Kjo klauzolë është e nevojshme për të testuar vlerat që janë marrë duke përdorur funksioni agregat jo nga linja të veçanta të burimit të regjistrimit të përcaktuar në Klauzola NGA, dhe nga grupe të linjave të tilla... Prandaj, një kontroll i tillë nuk mund të përfshihet Klauzola WHERE.

    Sintaksë:

    * ku fushat 1- fushat për përzgjedhje, të ndara me presje, gjithashtu mund të specifikoni të gjitha fushat me një *; tabela- emri i tabelës nga e cila nxjerrim të dhënat; kushtet- kushtet e kampionimit; fushat2- fushë ose fusha të ndara me presje, sipas të cilave do të renditet; numëroj- numri i rreshtave për të shkarkuar.
    * pyetja në kllapa katrore është opsionale për përzgjedhjen e të dhënave.

    Shembuj të thjeshtë të përdorimit të selektimit

    1. Mostra normale e të dhënave:

    > ZGJIDH * NGA përdoruesit

    2. Marrja e të dhënave me bashkimin e dy tabelave (JOIN):

    ZGJIDHni emrin, r. * NGA përdoruesit u BASHKOHUni të drejtat_përdoruesit r ON r.user_id = u.id

    * në këtë shembull ne po marrim të dhëna me bashkim të tabelave përdoruesit dhe të drejtat_përdoruesit... Ata janë të bashkuar nga fushat user_id(në tabelën e të drejtave të përdoruesve) dhe id(përdoruesit). Merr fushën e emrit nga tabela e parë dhe të gjitha fushat nga e dyta.

    3. Marrja e mostrave me një interval kohe dhe/ose datë

    a) dihet pika e fillimit dhe një interval i caktuar kohor:

    * Do të zgjidhen të dhënat për orën e fundit (fusha datë).

    b) data e fillimit dhe data e përfundimit janë të njohura:

    25.10.2017 dhe 25.11.2017 .

    c) dihen datat e fillimit dhe mbarimit + ora:

    * zgjidhni të dhënat ndërmjet 25.03.2018 0 orë 15 minuta dhe 25.04.2018 15 orë 33 minuta e 9 sekonda.

    d) nxjerrim të dhëna për një muaj dhe vit të caktuar:

    * nxjerr të dhënat, ku në fushë datë ka vlera për Prill 2018 i vitit.

    4. Marrja e mostrave të vlerave maksimale, minimale dhe mesatare:

    > SELECT max (zona), min (zona), mesatare (zona) NGA vendi

    * maksimumi- vlera maksimale; min- minimale; mesatare- mesatar.

    5. Përdorimi i gjatësisë së linjës:

    * Kjo pyetje duhet të tregojë të gjithë përdoruesit, emri i të cilëve përbëhet nga 5 karaktere.

    Shembuj të pyetjeve më komplekse ose të përdorura rrallë

    1. Kombinoje me grupimin e të dhënave të përzgjedhura në një rresht (GROUP_CONCAT):

    * nga tabela përdoruesit merr të dhëna sipas fushës id, të gjitha përshtaten në një rresht, vlerat janë të ndara presje.

    2. Grupimi i të dhënave sipas dy ose më shumë fushave:

    > ZGJIDH * NGA përdoruesit GRUPI SIPAS CONCAT (titulli, "::", lindja)

    * total, në këtë shembull ne do të shkarkojmë të dhënat nga tabela e përdoruesve dhe do t'i grupojmë ato sipas fushave titullin dhe lindjen... Para grupimit, ne bëjmë bashkimin e fushave në një rresht me një ndarës :: .

    3. Kombinimi i rezultateve nga dy tabela (UNION):

    > (ZGJIDH ID-në, fio, adresën, "Përdoruesit" si lloji i përdoruesve FROM)
    UNION
    (ZGJIDH ID-në, fio, adresën, "Klientë" sipas llojit FROM klientët)

    * në këtë shembull, të dhënat merren nga tabelat përdoruesit dhe klientët.

    4. Mostra e mesatareve, të grupuara për çdo orë:

    ZGJIDH mesataren (temperaturën), DATE_FORMAT (përditësimi i datës, "% Y-% m-% d% H") si ora_datë nga arkivi GROUP BY DATE_FORMAT (përditësimi i datës, "% Y-% m-% d% H")

    * këtu nxjerrim mesataren e fushës temperatura nga tavolina Arkivi dhe grup sipas fushës përditësimi i datës(me ndarjen e kohës për çdo orë).

    Fut (INSERT)

    Sintaksa 1:

    > INSERT INTO

    () VLERAT ( )

    Sintaksa 2:

    > INSERT INTO

    VLERAT ( )

    * ku tabela- emri i tabelës në të cilën futim të dhënat; fusha- numërimi i fushave të ndara me presje;vlerat- numërimi i vlerave të ndara me presje.
    * Opsioni i parë do të lejojë futjen e vetëm fushave të listuara - pjesa tjetër do të marrë vlerat e paracaktuara. Opsioni i dytë do të kërkojë futje për të gjitha fushat.

    Shembuj të përdorimit të insertit

    1. Fut shumë rreshta në një pyetje:

    > INSERT NË qytete ("emri", "vendi") VLERA ("Moskë", "Rusi"), ("Paris", "Francë"), ("Funafuti", "Tuvalu");

    * në këtë shembull, ne do të shtojmë 3 regjistrime me një pyetje SQL.

    2. Ngjitni nga një tabelë tjetër (duke kopjuar rreshtat, INSERT + SELECT):

    * nxirrni të gjitha të dhënat nga tabela qytetet, emrat e të cilave fillojnë me "M" dhe futen në tabelë qytete-të reja.

    Përditëso (UPDATE)

    Sintaksë:

    * ku tabela- emri i tabelës; fushë- fusha për të cilën do të ndryshojmë vlerën; vlerë- vlerë e re; kushtet- kusht (është e rrezikshme të bësh përditësim pa të - mund të zëvendësosh të gjitha të dhënat në të gjithë tabelën).

    Përditësimi duke përdorur zëvendësimin (REPLACE):

    PËRDITËSOJE

    SET = ZËVENDËso ( , "<что меняем>", "<на что>");

    PËRDITËSIM qytetet SET emri = REPLACE (emri, "Maskva", "Moscow");

    Nëse duam ta luajmë të sigurt, rezultati i zëvendësimit mund të kontrollohet fillimisht duke përdorur SELECT:

    Po fshihet (DELETE)

    Sintaksë:

    * ku tabela- emri i tabelës; kushtet- kusht (si në rastin e UPDATE, është e rrezikshme të përdoret DELETE pa kusht - DBMS nuk do të kërkojë konfirmim, por thjesht do të fshijë të gjitha të dhënat).

    Krijimi i një tabele

    Sintaksë:

    > KRIJO TABELE

    ( , )

    > KRIJO TABELE NËSE NUK EKZISTON `të drejtat_përdoruesit` (
    `id` int (10) i panënshkruar JO NULL,
    `user_id` int (10) i panënshkruar JO NULL,
    `të drejtat` int (10) të panënshkruara JO NULL
    ) MOTORI = SEKTORI I PARAKTUAR I PARAKTUAR I InnoDB = utf8;

    * ku tabela- emri i tabelës (në shembull të drejtat_përdoruesit); fusha 1, fusha 2- emri i fushave (në shembull, krijohen 3 fusha - id, user_id, të drejtat); opsionet 1, opsionet 2- parametrat e fushës (në shembull int (10) i panënshkruar JO NULL); opsionet e tavolinës- parametrat e përgjithshëm të tabelës (në shembull MOTORI = SEKTORI I PARAKTUAR I PARAKTUAR I InnoDB = utf8).

    Përdorimi i pyetjeve në PHP

    Ne lidhemi me bazën e të dhënave:

    mysql_connect ("localhost", "login", "password") ose die ("Gabim i lidhjes MySQL");
    mysql_select_db ("emri_db");
    mysql_query ("SET EMRAVE" utf8 "");

    * ku lidhja bëhet me bazën në serverin lokal ( localhost); kredencialet e lidhjes - identifikimi dhe fjalëkalimin(përkatësisht, login dhe fjalëkalimin); përdoret si bazë db_emri; kodimi i përdorur UTF-8.

    Ju gjithashtu mund të krijoni një lidhje të vazhdueshme:

    mysql_pconnect ("localhost", "login", "password") ose die ("Gabim i lidhjes MySQL");

    * megjithatë, është e mundur të arrihet kufiri maksimal i lejuar i pritjes. Kjo metodë duhet të përdoret në serverët tanë, ku ne vetë mund të kontrollojmë situatën.

    Përfundoni lidhjen:

    * në PHP bëhet automatikisht, përveç lidhjeve të vazhdueshme (mysql_pconnect).

    Një pyetje në MySQL (Mariadb) në PHP bëhet nga funksioni mysql_query () dhe marrja e të dhënave nga një pyetje bëhet nga mysql_fetch_array ():

    $ result = mysql_query ("SELECT * FROM përdoruesit");
    ndërsa ($ masë = mysql_fetch_array ($ rezultat)) (
    jehonë $ masë. "
    ";
    }

    * në këtë shembull, një pyetje bëhet në tabelë përdoruesit... Rezultati i pyetjes vendoset në një variabël $ rezultat... Më pas, përdoret lak derisa, çdo përsëritje e të cilit merr një grup të dhënash dhe e vendos atë në një ndryshore masë $- në çdo përsëritje punojmë me një rresht të bazës së të dhënave.

    Funksioni mysql_fetch_array () i përdorur kthen një grup shoqërues, me të cilin është i përshtatshëm për të punuar, por ekziston një alternativë tjetër - mysql_fetch_row (), e cila kthen një grup të rregullt të numëruar.

    Mbrojtja

    Nëse duhet të përfshini një karakter të veçantë në vargun e pyetjes, për shembull,%, duhet të përdorni ikjen duke përdorur karakterin e prapme - \

    Për shembull:

    * nëse e ekzekutoni një pyetje të tillë pa ikur, shenja % do të interpretohet si çdo numër karakteresh pas 100.

    Kjo eshte e gjitha. Nëse keni nevojë për ndihmë për përmbushjen e kërkesës tuaj, ju lutemi më shkruani me postë

    Gjuha SQL përdoret për të marrë të dhëna nga baza e të dhënave. SQL është një gjuhë programimi që i ngjan shumë anglishtes, por e krijuar për programet e menaxhimit të bazës së të dhënave. SQL përdoret në çdo pyetje në Access.

    Të kuptuarit se si funksionon SQL ju ndihmon të krijoni pyetje më të sakta dhe e bën më të lehtë rregullimin e pyetjeve që japin rezultate të pasakta.

    Ky artikull është pjesë e një serie për SQL për Access. Ai përshkruan bazat e përdorimit të SQL për të marrë të dhëna dhe jep shembuj të sintaksës SQL.

    Në këtë artikull

    Çfarë është SQL?

    SQL është një gjuhë programimi për të punuar me grupe faktesh dhe marrëdhënie midis tyre. Programet e menaxhimit të bazës së të dhënave relacionale si Microsoft Office Access përdorin SQL për të manipuluar të dhënat. Ndryshe nga shumë gjuhë programimi, SQL është i lexueshëm dhe i kuptueshëm edhe për fillestarët. Ashtu si shumë gjuhë programimi, SQL është një standard ndërkombëtar i njohur nga organet standarde si ISO dhe ANSI.

    Grupet e të dhënave përshkruhen në SQL për të ndihmuar në përgjigjen e pyetjeve. Duhet të përdoret sintaksa e saktë kur përdoret SQL. Sintaksa është një grup rregullash që ju lejojnë të kombinoni saktë elementët e një gjuhe. Sintaksa SQL bazohet në sintaksën angleze dhe ndan shumë elementë me sintaksën e Visual Basic for Applications (VBA).

    Për shembull, një deklaratë e thjeshtë SQL që merr një listë të mbiemrave të kontakteve me emrin Mary mund të duket kështu:

    ZGJIDH mbiemrin
    NGA Kontaktet
    WHERE Emri_Emri = "Maria";

    Shënim: Gjuha SQL përdoret jo vetëm për të kryer operacione mbi të dhënat, por edhe për të krijuar dhe modifikuar strukturën e objekteve të bazës së të dhënave, siç janë tabelat. Pjesa e SQL që përdoret për të krijuar dhe modifikuar objektet e bazës së të dhënave quhet Gjuha e përshkrimit të të dhënave DDL. DDL nuk mbulohet në këtë artikull. Për më shumë informacion, shihni artikullin Krijoni dhe modifikoni tabelat ose indekset duke përdorur një pyetje për përkufizimin e të dhënave.

    ZGJIDHni deklaratat

    Deklarata SELECT përdoret për të përshkruar një grup të dhënash në SQL. Ai përmban një përshkrim të plotë të të dhënave që do të merret nga baza e të dhënave, duke përfshirë sa vijon:

      tabelat që përmbajnë të dhëna;

      lidhjet ndërmjet të dhënave nga burime të ndryshme;

      fushat ose llogaritjet në bazë të të cilave përzgjidhen të dhënat;

      kushtet e përzgjedhjes që duhet të plotësojnë të dhënat e përfshira në rezultatin e pyetjes;

      nevoja dhe mënyra e renditjes.

    fjali SQL

    Një deklaratë SQL përbëhet nga disa pjesë të quajtura klauzola. Çdo klauzolë në një deklaratë SQL ka një qëllim të ndryshëm. Kërkohen disa sugjerime. Tabela e mëposhtme liston deklaratat SQL që përdoren më shpesh.

    Klauzola SQL

    Përshkrim

    E detyrueshme

    Përcakton fushat që përmbajnë të dhënat që dëshironi.

    Përcakton tabelat që përmbajnë fushat e specifikuara në klauzolën SELECT.

    Përcakton kriteret për zgjedhjen e fushave që duhet të plotësohen nga të gjitha të dhënat e përfshira në rezultate.

    Përcakton rendin e renditjes së rezultateve.

    Në një deklaratë SQL që përmban funksione agregate, identifikon fushat për të cilat klauzola SELECT nuk llogarit një vlerë përmbledhëse.

    Vetëm nëse ka fusha të tilla

    Në një deklaratë SQL që përmban funksione agregate, përcakton kushtet që zbatohen për fushat për të cilat klauzola SELECT llogarit një vlerë përmbledhëse.

    Kushtet SQL

    Çdo deklaratë SQL përbëhet nga terma që mund të krahasohen me pjesë të të folurit. Tabela e mëposhtme liston llojet e termave SQL.

    Termi SQL

    Pjesë e krahasueshme e të folurit

    Përkufizimi

    Shembull

    identifikues

    emër

    Emri i përdorur për të identifikuar objektin e bazës së të dhënave, siç është emri i një fushe.

    Klientët. [Numri i telefonit]

    operatori

    folje ose ndajfolje

    Një fjalë kyçe që përfaqëson ose modifikon një veprim.

    konstante

    emër

    Një vlerë që nuk ndryshon, si një numër ose NULL.

    shprehje

    mbiemër

    Një kombinim i identifikuesve, operatorëve, konstanteve dhe funksioneve të krijuara për të llogaritur një vlerë të vetme.

    > = Mallrat. [Çmimi]

    Klauzolat bazë SQL: SELECT, FROM dhe WHERE

    Formati i përgjithshëm i deklaratave SQL:

    ZGJIDH fushën_1
    NGA tabela_1
    WHERE kriteri_1
    ;

    Shënime:

      Access injoron ndërprerjet e linjës në deklaratat SQL. Pavarësisht, rekomandohet që të filloni çdo fjali në një rresht të ri në mënyrë që deklarata SQL të jetë e lehtë për t'u lexuar, si për personin që e ka shkruar atë ashtu edhe për të gjithë të tjerët.

      Çdo deklaratë SELECT përfundon me një pikëpresje (;). Pikëpresja mund të shfaqet ose në fund të fjalisë së fundit ose në një rresht të veçantë në fund të deklaratës SQL.

    Shembull në Access

    Shembulli i mëposhtëm tregon se si mund të duket një deklaratë SQL në Access për një pyetje të thjeshtë përzgjedhjeje.

    1. Klauzola SELECT

    2. Klauzola NGA

    3. Klauzola WHERE

    Le të ecim përmes shembullit fjali për fjali për të kuptuar se si funksionon sintaksa SQL.

    Klauzola SELECT

    SELECT, kompani

    Kjo është një klauzolë SELECT. Ai përmban një deklaratë (SELECT) e ndjekur nga dy identifikues ("[Adresa e-mail]" dhe "Kompania").

    Nëse identifikuesi përmban hapësira ose karaktere të veçanta (për shembull, "Adresa e emailit"), ai duhet të vendoset në kllapa katrore.

    Në klauzolën SELECT, nuk keni nevojë të specifikoni tabelat që përmbajnë fushat dhe nuk mund të specifikoni kriteret e përzgjedhjes që duhet të plotësohen nga të dhënat e përfshira në rezultate.

    Në një deklaratë SELECT, klauzola SELECT gjithmonë vjen përpara klauzolës FROM.

    Klauzola NGA

    NGA Kontaktet

    Kjo është një klauzolë FROM. Ai përmban një operator (FROM) i ndjekur nga një identifikues (Kontaktet).

    Fushat për përzgjedhje nuk janë të specifikuara në klauzolën FROM.

    Klauzola WHERE

    WHERE City = "Seattle"

    Kjo është një klauzolë WHERE. Ai përmban operatorin (KU) i ndjekur nga shprehja (Qyteti = "Rostov").

    Ka shumë gjëra që mund të bëni me klauzolat SELECT, FROM dhe WHERE. Për më shumë informacion mbi përdorimin e këtyre sugjerimeve, shihni artikujt e mëposhtëm:

    Renditja e rezultateve: ORDER BY

    Ashtu si me Microsoft Excel, Access mund të rendit rezultatet e pyetjeve në një tabelë. Duke përdorur klauzolën ORDER BY, mund të specifikoni gjithashtu se si renditen rezultatet kur pyetja ekzekutohet. Nëse përdoret një klauzolë ORDER BY, ajo duhet të shfaqet në fund të deklaratës SQL.

    Klauzola ORDER BY përmban një listë fushash për të renditur, në të njëjtin rend në të cilin do të aplikohet renditja.

    Për shembull, supozoni se fillimisht dëshironi të renditni rezultatet sipas fushës së Kompanisë në rend zbritës dhe më pas, nëse ka regjistrime me të njëjtën vlerë të fushës së Kompanisë, renditini ato sipas fushës Adresa e E-mail në rend rritës. Klauzola ORDER BY do të duket kështu:

    POROSIT NGA Kompania DESC,

    Shënim: Si parazgjedhje, Access i rendit vlerat në rend rritës (A në Z, nga më i vogli në më i madhi). Për të renditur vlerat në rend zbritës, duhet të specifikoni fjalën kyçe DESC.

    Për më shumë informacion mbi klauzolën ORDER SIPAS klauzolës, shihni artikullin ORDER BY Klauzole.

    Puna me të dhënat kryesore: GROUP BY dhe HAVING Klauzola

    Ndonjëherë ju duhet të punoni me të dhëna të përgjithshme, të tilla si shitjet totale mujore ose artikujt më të shtrenjtë në magazinë. Për ta bërë këtë, një funksion agregat zbatohet në fushën në klauzolën SELECT. Për shembull, nëse pyetja rezulton në numrin e adresave të emailit për secilën kompani, klauzola SELECT mund të duket si kjo:

    Aftësia për të përdorur një funksion të caktuar agregat varet nga lloji i të dhënave në fushë dhe shprehja e dëshiruar. Për më shumë informacion mbi funksionet e përgjithshme të disponueshme, shihni artikullin Funksionet e agregatit SQL.

    Specifikimi i fushave që nuk përdoren në një funksion agregat: Klauzola GROUP BY

    Kur përdorni funksione agregate, zakonisht duhet të krijoni një klauzolë GROUP BY. Klauzola GROUP BY specifikon të gjitha fushat që nuk kanë një funksion agregat të aplikuar. Nëse funksionet agregate aplikohen në të gjitha fushat në një pyetës, atëherë nuk keni nevojë të krijoni një klauzolë GROUP BY.

    Klauzola GROUP BY duhet të ndjekë menjëherë klauzolën WHERE ose FROM nëse nuk ka klauzolë WHERE. Në klauzolën GROUP BY, fushat janë të specifikuara në të njëjtin rend si në klauzolën SELECT.

    Le të vazhdojmë me shembullin e mëparshëm. Nëse klauzola SELECT zbaton funksionin agregat vetëm në fushën [Adresa Email], atëherë klauzola GROUP BY do të duket kështu:

    GRUPI SIPAS Kompanisë

    Për më shumë informacion rreth klauzolës GROUP BY, shihni artikullin GROUP BY Klauzole.

    Kufizimi i vlerave të përmbledhura duke përdorur kushtet e grupimit: klauzola HAVING

    Nëse ju duhet të specifikoni kushtet për të kufizuar rezultatet, por fusha në të cilën dëshironi të aplikoni përdoret në një funksion të grumbulluar, nuk mund të përdorni klauzolën WHERE. Përdorni klauzolën HAVING në vend të kësaj. Klauzola HAVING funksionon njësoj si klauzola WHERE, por përdoret për të dhënat e grumbulluara.

    Për shembull, supozoni se aplikoni një funksion AVG (i cili llogarit mesataren) në fushën e parë në një klauzolë SELECT:

    SELECT COUNT (), Kompani

    Nëse dëshironi të kufizoni rezultatet e pyetjes bazuar në vlerën e funksionit COUNT, nuk mund të aplikoni një kusht filtri në atë fushë në klauzolën WHERE. Në vend të kësaj, kushti duhet të vendoset në klauzolën HAVING. Për shembull, nëse dëshironi që pyetja të kthejë rreshtat vetëm nëse kompania ka shumë adresa emaili, mund të përdorni klauzolën e mëposhtme HAVING:

    KANE NUMËR ()> 1

    Shënim: Një pyetje mund të përfshijë një klauzolë WHERE dhe një klauzolë HAVING, me kriteret për fushat që nuk përdoren në funksionet agregate të specifikuara në klauzolën WHERE dhe kushtet për fushat që përdoren në funksionet agregate në klauzolën HAVING.

    Për më shumë informacion mbi klauzolën HAVING, shihni artikullin HAVING Klause.

    Kombinimi i rezultateve të pyetjeve: Operatori UNION

    Operatori UNION përdoret për të parë të gjitha të dhënat e kthyera nga pyetje të përzgjedhura të shumta, të ngjashme në të njëjtën kohë si një grup i bashkuar.

    Operatori UNION ju lejon të kombinoni dy deklarata SELECT në një. Deklaratat SELECT që do të bashkohen duhet të kenë të njëjtin numër dhe rend të fushave të daljes me të njëjtat ose të përputhshme lloje të dhënash. Kur kryeni një pyetje, të dhënat nga çdo grup fushash që përputhen kombinohen në një fushë të vetme daljeje, kështu që dalja e pyetjes ka të njëjtin numër fushash si çdo deklaratë SELECT individualisht.

    Shënim: Në pyetjet e bashkimit, llojet e të dhënave numerike dhe tekstuale janë të pajtueshme.

    Duke përdorur operatorin UNION, mund të specifikoni nëse rreshtat e kopjuar, nëse ka, duhet të përfshihen në rezultatet e pyetjes. Për ta bërë këtë, përdorni fjalën kyçe ALL.

    Një pyetje për të kombinuar dy deklarata SELECT ka sintaksën bazë të mëposhtme:

    ZGJIDH fushën_1
    NGA tabela_1
    UNION
    ZGJIDH fushën_a
    NGA tabela_a
    ;

    Për shembull, supozoni se keni dy tabela të quajtura "Produkte" dhe "Shërbime". Të dyja tabelat përmbajnë fusha me emrin e produktit ose shërbimit, çmimin dhe informacionin e garancisë, si dhe një fushë që tregon ekskluzivitetin e produktit ose shërbimit të ofruar. Megjithëse ka lloje të ndryshme garancish në tabelat e Produkteve dhe Shërbimeve, informacioni bazë është i njëjtë (a ka një garanci të cilësisë për produkte ose shërbime individuale). Ju mund të përdorni pyetjen e mëposhtme të bashkimit për të kombinuar katër fusha nga dy tabela:

    ZGJIDH emrin, çmimin, garancinë_e disponueshme, ofertën_ekskluzive
    NGA Produktet
    UNION TË GJITHA
    ZGJIDH emrin, çmimin, garancinë_e disponueshme, ofertën_ekskluzive
    NGA Shërbimet
    ;

    Për më shumë informacion mbi kombinimin e deklaratave SELECT duke përdorur operatorin UNION, shihni artikullin

    Artikujt kryesorë të lidhur