SQL-ի հիմունքները դասերով սկսնակների համար: SQL ծրագրավորման լեզու այն, ինչ ձեզ հարկավոր է

Հեղինակից.Քեզ թեյա՞ն էին ասում։ Դե, սա կարելի է ուղղել: Ամեն սամովար ժամանակին թեյնիկ էր։ Թե՞ յուրաքանչյուր պրոֆեսիոնալ ժամանակին սամովար է եղել: Ոչ, նորից ինչ-որ բան այն չէ: Ընդհանուր առմամբ, MySQL-ը սկսնակների համար է:

Ինչու՞ են կեղծանուններին անհրաժեշտ MySQL:

Եթե ​​դուք լրջորեն պլանավորում եք ձեր կյանքը կապել ինտերնետի հետ, ապա «վեբ»-ում հենց առաջին քայլերից դուք կհանդիպեք այս DBMS-ին: MySQL-ը հեշտությամբ կարելի է անվանել «ամբողջ ինտերնետ» տվյալների բազայի կառավարման համակարգ: Ոչ մի քիչ թե շատ լուրջ ռեսուրս չի կարող անել առանց դրա, այն առկա է յուրաքանչյուր հոսթինգի ադմինիստրատորի վահանակում: Եվ ամենից շատ հայտնի CMS և նույնիսկ «տնական» շարժիչները կառուցվում են նրա մասնակցությամբ:

Ընդհանուր առմամբ, դուք չեք կարող անել առանց այս հարթակի: Բայց այն ուսումնասիրելու համար անհրաժեշտ կլինի նաև ճիշտ մոտեցում, ճիշտ գործիքներ, և ամենակարևորը ցանկություն և համբերություն։ Հուսով եմ, որ դուք բավականաչափ ունեք վերջին բաղադրիչները: Եվ պատրաստ եղեք, որ ձեր ուղեղը եռա և գոլորշի թափվի ձեր գլխից, ինչպես իսկական թեյնիկից

Բայց MySQL-ն այդքան դժվար է կեղծիքների համար միայն այն դեպքում, եթե դուք սկսեք այն սխալ սովորել: Ես և դու նման սխալ չենք անի, և մենք կսկսենք մեր ծանոթությունը այս տեխնոլոգիայի հետ հենց սկզբից։

Հիմնական հասկացություններ

Նախ, եկեք անցնենք այն հիմնական հասկացություններին, որոնք մենք կնշենք այս հրապարակման մեջ.

Տվյալների բազան (DB) DBMS-ի հիմնական բաղադրիչ միավորն է: Տվյալների բազան ներառում է աղյուսակներ, որոնք բաղկացած են սյուներից և գրառումներից (տողերից): Խաչմերուկում ձևավորված բջիջները պարունակում են որոշակի տեսակի կառուցվածքային տվյալներ:

DBMS (տվյալների բազայի կառավարման համակարգ) տվյալների բազայի կառավարման բոլոր ծրագրային մոդուլների մի շարք է:

SQL-ը հարցումների կառուցվածքային լեզու է, որի հետ մշակողը «շփվում է» DBMS միջուկի (սերվերի) հետ: Ինչպես ցանկացած ծրագրավորման լեզու, SQL-ն ունի իր շարահյուսությունը, հրամանների և օպերատորների հավաքածուն և աջակցվող տվյալների տեսակները:

Կարծում եմ, որ տեսական գիտելիքները բավական են, որպեսզի սկսենք։ Տեսականորեն բացակայող բացերը գործնականում «կգունավորենք»։ Այժմ մնում է ընտրել ճիշտ ծրագրային գործիքը:

Ընտրելով ճիշտ գործիքը

Փորփրելով սկսնակների համար նախատեսված MySQL պատյանների ողջ տեսականին, ես հասկացա, որ դրանք պարզապես գոյություն չունեն: DBMS կառավարման համար նախատեսված բոլոր ծրագրային արտադրանքները պահանջում են արդեն տեղադրված տվյալների բազայի սերվեր: Ընդհանուր առմամբ, ես ևս մեկ անգամ որոշեցի չհայտնագործել «սկուտերը» և ընտրեցի հայրենական Denwer փաթեթը: Դուք կարող եք ներբեռնել այն պաշտոնական կայքում:

Այն արդեն ներառում է DBMS-ի բոլոր բաղադրիչները, ինչը թույլ է տալիս սկսնակին սկսել գործնական ծանոթություն MySQL-ի հետ պարզ և պարզ տեղադրումից անմիջապես հետո: Բացի այդ, Denwer-ը ներառում է ևս մի քանի գործիքներ, որոնք անհրաժեշտ են սկսնակ ծրագրավորողի համար՝ տեղական սերվեր, PHP:

Առաջին քայլերը

Ես չեմ նկարագրի «ջենթլմենական» հավաքածուի տեղադրման գործընթացը, քանի որ այնտեղ ամեն ինչ ինքնաբերաբար տեղի է ունենում: Տեղադրումը սկսելուց հետո ժամանակ ունեք միայն անհրաժեշտ ստեղները սեղմելու համար: Պարզապես այն, ինչ ձեզ հարկավոր է «MySQL for dummies» տարբերակում:

Երբ տեղադրման գործընթացը ավարտված է, գործարկեք տեղական սերվերը, սպասեք մի քանի վայրկյան: Դրանից հետո ձեր բրաուզերի հասցեի տողում մուտքագրեք localhost:

«Hurray, այն աշխատում է» էջում: հետևեք նկարում նշված հղումներից մեկին: Որից հետո ձեզ կտեղափոխեն phpMyAdmin՝ տվյալների շտեմարանների կառավարման վահանակ:

Հետևելով http://downloads.mysql.com/docs/world.sql.zip հղմանը, դուք կներբեռնեք փորձնական տվյալների բազայի օրինակ MySQL պաշտոնական կայքից: Կրկին գնացեք phpMyAdmin, վերևի գլխավոր ընտրացանկում անցեք «Ներմուծում» ներդիր: Ներմուծում դեպի ընթացիկ պատուհանում, առաջին բաժնում (File to Import) արժեքը սահմանեք «Browse your computer»:

Explorer-ի պատուհանում ընտրեք արխիվը ներբեռնված օրինակի տվյալների բազայով: Մի մոռացեք սեղմել «Ok» հիմնական պատուհանի ներքևում:

Խորհուրդ եմ տալիս առայժմ չփոխել նշված պարամետրի արժեքները: Սա կարող է հանգեցնել ներմուծված աղբյուրի տվյալների սխալ ցուցադրմանը: Եթե ​​phpMyAdmin համակարգը սխալ է առաջացնում, որ չի կարող ճանաչել տվյալների բազայի սեղմման ալգորիթմը, ապա ապափաթեթավորեք այն և սկզբից կրկնեք ներմուծման ամբողջ գործընթացը:

Եթե ​​ամեն ինչ լավ է անցել, ապա վերևում կհայտնվի ծրագրային հաղորդագրություն, որ ներմուծումը հաջող է եղել, իսկ ձախ կողմում տվյալների բազաների ցանկում կլինի ևս մեկը (բառ):

Եկեք նայենք դրա կառուցվածքին ներսից, որպեսզի ավելի պարզ պատկերացնեք, թե ինչի հետ պետք է գործ ունենաք։

Կտտացրեք սկսնակների համար MySQL տվյալների բազայի անվանմանը: Աղյուսակների ցանկը, որոնցից այն բաղկացած է, կցուցադրվի դրա տակ: Սեղմեք դրանցից մեկի վրա: Այնուհետև անցեք «Կառուցվածք» ընտրացանկի վերին կետին: Հիմնական աշխատանքային տարածքը կցուցադրի աղյուսակի կառուցվածքը՝ բոլոր սյունակների անունները, տվյալների տեսակները և բոլոր հատկանիշները:

Բարի գալուստ տվյալների բազայի մշակում՝ օգտագործելով ստանդարտ SQL հարցումների լեզուն: Տվյալների բազայի կառավարման համակարգերը (DBMS) ունեն բազմաթիվ գործիքներ, որոնք աշխատում են ապարատային հարթակների լայն տեսականիով:

  • Հարաբերական տվյալների բազայի հիմունքներ

    Այս գլխում... | Տեղեկատվության կազմակերպում | Ինչ է տվյալների բազան | Ինչ է DBMS | Տվյալների բազայի մոդելների համեմատություն | Ինչ է հարաբերական տվյալների բազան

  • SQL հիմունքներ

    Այս գլխում... | Ինչ է SQL | SQL սխալ պատկերացումներ | Հայացք SQL-ի տարբեր ստանդարտներին | Ստանդարտ SQL հրամանների և վերապահված բառերի ներածություն | Թվեր, նշաններ, ամսաթվեր, ժամեր և այլ տեսակի տվյալներ ներկայացնելու | Չսահմանված արժեքներ և սահմանափակումներ

  • SQL բաղադրիչներ

    Այս գլխում... | Տվյալների բազաների ստեղծում | Տվյալների մշակում | Տվյալների բազայի պաշտպանություն | SQL-ը լեզու է, որը հատուկ նախագծված է հարաբերությունների տվյալների բազաներում տվյալների ստեղծման և պահպանման համար: Եվ չնայած ընկերությունները, որոնք մատակարարում են համակարգեր նման շտեմարանների կառավարման համար, առաջարկում են SQL-ի իրենց ներդրումը, լեզվի զարգացումն ինքնին որոշվում և վերահսկվում է ISO/ANSI ստանդարտով:

  • Պարզ տվյալների բազայի ստեղծում և պահպանում

    Այս գլխում... | Ստեղծեք, փոփոխեք և ջնջեք աղյուսակը տվյալների բազայից՝ օգտագործելով RAD գործիքը: | Ստեղծեք, փոփոխեք և ջնջեք աղյուսակը տվյալների բազայից՝ օգտագործելով SQL: | Տվյալների բազայի փոխանցում մեկ այլ DBMS:

  • Բազմասեղանի հարաբերական տվյալների բազայի ստեղծում

    Այս գլխում... | Ինչ պետք է լինի տվյալների բազայում | Տվյալների բազայի տարրերի միջև հարաբերությունների սահմանում | Սեղանների կապակցում բանալիների միջոցով | Տվյալների ամբողջականության ձևավորում | Տվյալների բազայի նորմալացում | Այս գլխում կներկայացվի բազմասեղանի տվյալների բազա ստեղծելու օրինակ:

  • Տվյալների բազայի մանիպուլյացիա

    Այս գլխում... | Տվյալների հետ աշխատանք | Աղյուսակից անհրաժեշտ տվյալների ստացում | Մեկ կամ մի քանի աղյուսակներից ընտրված տեղեկատվության ցուցադրում | Աղյուսակներում և դիտումներում տեղեկատվության թարմացում | Աղյուսակում նոր տող ավելացնելը

  • Արժեքների սահմանում

    Այս գլխում... | Օգտագործելով փոփոխականներ՝ ավելորդ կոդավորումը նվազեցնելու համար | Տվյալների բազայի աղյուսակի դաշտում գտնվող հաճախակի պահանջվող տեղեկատվության առբերում | Պարզ արժեքների համադրում բարդ արտահայտություններ ստեղծելու համար | Այս գիրքը անընդհատ շեշտում է, թե որքան կարևոր է տվյալների բազայի կառուցվածքը տվյալների բազայի ամբողջականությունը պահպանելու համար:

  • Բարդ արտահայտություններ իմաստով

    Այս գլխում... | Օգտագործելով պայմանական դեպքերի հայտարարություններ | Տվյալների տարրը մեկ տվյալների տեսակից մյուսի փոխակերպում | Խնայեք տվյալների մուտքագրման ժամանակը ռեկորդային արժեք ունեցող արտահայտություններով | 2-րդ գլխում SQL-ը կոչվում էր տվյալների ենթալեզու:

  • «Թիրախավորում» պահանջվող տվյալներին

    Այս գլխում... | Պահանջվող աղյուսակների նշում | Առանձնացնելով անհրաժեշտ տողերը բոլոր մյուսներից | Արդյունավետ որտեղ դրույթների ստեղծում | Ինչպես աշխատել զրոյական արժեքների հետ | Տրամաբանական միացություններով բարդ արտահայտությունների ստեղծում | Հարցման արդյունքների խմբավորում ըստ սյունակների

  • Հարաբերական օպերատորներ

    Այս գլխում... | Նմանատիպ կառուցվածք ունեցող աղյուսակների միացում | Միաձուլվող աղյուսակներ, որոնք ունեն տարբեր կառուցվածքներ | Ձեզ անհրաժեշտ տվյալների ստացում մի քանի աղյուսակներից | SQL-ը հարցումների լեզու է, որն օգտագործվում է հարաբերական տվյալների բազաներում:

  • Ներդրված հարցումների օգտագործումը

    Այս գլխում... | Տվյալների առբերում մի քանի աղյուսակներից մեկ SQL հայտարարությամբ | Տվյալների տարրերի որոնում` համեմատելով արժեքը մեկ աղյուսակից մյուսի արժեքների շարքին | Տվյալների տարրերի հայտնաբերում` համեմատելով մեկ աղյուսակի արժեքը մեկ այլ արժեքի հետ ընտրված մեկ այլ արժեքի միջոցով

  • Ռեկուրսիվ հարցումներ

  • Տվյալների բազայի ապահովում

    Այս գլխում... | Տվյալների բազայի աղյուսակների հասանելիության վերահսկում | Մուտք տրամադրելու որոշում | Մուտքի թույլտվությունների տրամադրում | Մուտքի մարմնի չեղարկում | Չլիազորված մուտքի փորձերի կանխարգելում

  • Տվյալների պաշտպանություն

    Այս գլխում... | Ինչպես խուսափել տվյալների բազայի կոռուպցիայից | Միաժամանակյա գործողությունների հետևանքով առաջացած խնդիրներ | Այս խնդիրների լուծումը SQL շարժիչների միջոցով | Անվտանգության պահանջվող մակարդակի սահմանում` օգտագործելով սահմանված գործարքի հրամանը

  • SQL-ի օգտագործումը հավելվածներում

    Այս գլխում... | SQL հավելվածում | SQL-ի փոխանակում ընթացակարգային լեզուներով | Ինչպես խուսափել անհամատեղելիություններից | SQL կոդը ներկառուցված ընթացակարգային օրենսգրքում | SQL մոդուլների կանչում ընթացակարգային օրենսգրքից | SQL-ի կանչ RAD գործիքից | Նախորդ գլուխներում մենք հիմնականում դիտարկել ենք SQL հրամանները առանձին-առանձին, այսինքն. Ձևակերպվեց տվյալների մշակման առաջադրանքը, և դրա համար ստեղծվեց SQL հարցում:

  • ODBC և JDBC

    Այս գլխում... | ODBC սահմանում | ODBC մասերի նկարագրություն | ODBC-ի օգտագործումը հաճախորդի/սերվերի միջավայրում | Օգտագործելով ODBC ինտերնետում | ODBC-ի օգտագործումը տեղական ցանցերում | Օգտագործելով JDBC | Ամեն տարի մեկ կազմակերպության կամ մի քանի տարբեր կազմակերպությունների համակարգիչներն ավելի ու ավելի են միանում միմյանց: Հետևաբար, անհրաժեշտություն կա ցանցի միջոցով ստեղծել տվյալների բազաների ընդհանուր հասանելիություն:

  • SQL:2003 և XML

    Այս գլխում... | Օգտագործելով SQL XML-ով | XML, տվյալների բազաներ և ինտերնետ | SQL:2003-ի ամենակարևոր նոր առանձնահատկություններից մեկը նրա աջակցությունն է ընդարձակվող նշման լեզվի (XML) ֆայլերին, որոնք գնալով դառնում են տարբեր հարթակների միջև տվյալների փոխանակման ունիվերսալ ստանդարտ:

  • Կուրսորներ

    Այս գլխում... | Հայտարարագրման հայտարարության մեջ կուրսորի շրջանակի սահմանում | Բացել կուրսորը | Տող առ տող տվյալների նմուշառում | Կուրսորը փակելը | SQL-ը տարբերվում է ծրագրավորման ամենատարածված լեզուներից շատերից նրանով, որ այն միաժամանակ գործողություններ է կատարում աղյուսակի բոլոր տողերի տվյալների վրա, մինչդեռ ընթացակարգային լեզուները մշակում են տվյալները տող առ տող:

  • Այսօր SQL դասընթացները «կեղծիքների համար» գնալով ավելի տարածված են դառնում: Սա կարելի է շատ պարզ բացատրել, քանի որ ժամանակակից աշխարհում գնալով ավելի շատ կարելի է գտնել, այսպես կոչված, «դինամիկ» վեբ ծառայություններ։ Նրանք առանձնանում են բավականին ճկուն կեղևով և հիմնված են բոլոր սկսնակ ծրագրավորողների վրա, ովքեր որոշում են կայքէջեր նվիրել, առաջին հերթին գրանցվել SQL դասընթացների «դյումիների համար»:

    Ինչու՞ սովորել այս լեզուն:

    Նախևառաջ, SQL-ն ուսուցանվում է, որպեսզի հետագայում ստեղծենք հավելվածների լայն տեսականի այսօր ամենահայտնի բլոգային շարժիչներից մեկի՝ WordPress-ի համար: Մի քանի պարզ դասեր ավարտելուց հետո դուք կկարողանաք ստեղծել ցանկացած բարդության հարցումներ, ինչը միայն հաստատում է այս լեզվի պարզությունը:

    Ի՞նչ է SQL-ը:

    Կամ հարցումների կառուցվածքային լեզու, որը ստեղծվել է մեկ նպատակի համար՝ դրանք որոշելու, հասանելի դարձնելու և մշակելու բավականին կարճ ժամանակահատվածում: Եթե ​​դուք գիտեք SQL-ի իմաստը, ապա կհասկանաք, որ այս սերվերը դասակարգվում է որպես այսպես կոչված «ոչ ընթացակարգային» լեզու։ Այսինքն, նրա հնարավորությունները ներառում են միայն ցանկացած բաղադրիչի կամ արդյունքի նկարագրություն, որոնք դուք ցանկանում եք տեսնել ապագայում կայքում: Բայց երբ չի նշվում, թե կոնկրետ ինչ արդյունքներ են ստանալու: Այս լեզվով յուրաքանչյուր նոր խնդրանք նման է լրացուցիչ «վերնաշենքի»: Հենց այն հերթականությամբ, որով դրանք մուտքագրվում են տվյալների բազա, հարցումները կկատարվեն:

    Ի՞նչ ընթացակարգեր կարող են իրականացվել այս լեզվով:

    Չնայած իր պարզությանը, SQL տվյալների բազան թույլ է տալիս ստեղծել հարցումների լայն տեսականի: Այսպիսով, ի՞նչ կարող եք անել, եթե սովորեք այս կարևոր ծրագրավորման լեզուն:

    • ստեղծել աղյուսակների լայն տեսականի;
    • ստանալ, պահպանել և փոփոխել ստացված տվյալները.
    • փոխել սեղանի կառուցվածքները ձեր հայեցողությամբ.
    • ստացված տեղեկատվությունը միավորել առանձին բլոկների մեջ.
    • հաշվարկել ստացված տվյալները;
    • ապահովել տեղեկատվության ամբողջական պաշտպանությունը.

    Ո՞ր հրամաններն են ամենատարածվածն այս լեզվով:

    Եթե ​​որոշեք մասնակցել SQL for Dummies դասընթացին, ապա դուք մանրամասն տեղեկատվություն կստանաք այն հրամանների մասին, որոնք օգտագործվում են դրա միջոցով հարցումներ ստեղծելիս: Այսօր ամենատարածվածներն են.

    1. DDL-ը տվյալներ սահմանող հրաման է: Այն օգտագործվում է տվյալների բազայում բազմաթիվ օբյեկտներ ստեղծելու, փոփոխելու և ջնջելու համար:
    2. DCL-ը հրաման է, որը շահարկում է տվյալները: Այն օգտագործվում է տարբեր օգտվողների տվյալների բազայում տեղեկատվության հասանելիություն ապահովելու, ինչպես նաև աղյուսակներ կամ դիտումներ օգտագործելու համար:
    3. TCL-ը թիմ է, որը կառավարում է մի շարք գործարքներ: Դրա հիմնական նպատակն է որոշել գործարքի առաջընթացը:
    4. DML - շահարկում է ստացված տվյալները: Նրա խնդիրն է թույլ տալ օգտվողին տեղափոխել տարբեր տեղեկություններ տվյալների բազայից կամ մուտքագրել այնտեղ:

    Այս սերվերում գոյություն ունեցող արտոնությունների տեսակները

    Արտոնությունները վերաբերում են այն գործողություններին, որոնք որոշակի օգտվող կարող է կատարել իր կարգավիճակին համապատասխան: Առավել նվազագույնը, իհարկե, սովորական մուտքն է: Իհարկե, արտոնությունները ժամանակի ընթացքում կարող են փոխվել։ Հները կջնջվեն, իսկ նորերը կավելացվեն։ Այսօր բոլոր նրանք, ովքեր մասնակցում են SQL Server-ի «կեղծիքների համար» դասընթացներին, գիտեն, որ կան թույլատրված գործողությունների մի քանի տեսակներ.

    1. Օբյեկտի տեսակ - օգտագործողին թույլատրվում է կատարել ցանկացած հրաման միայն տվյալների բազայում գտնվող կոնկրետ օբյեկտի հետ կապված: Միևնույն ժամանակ, տարբեր օբյեկտների համար արտոնությունները տարբերվում են: Նրանք նաև կապված են ոչ միայն որոշակի օգտագործողի, այլև սեղանների հետ: Եթե ​​ինչ-որ մեկը, օգտագործելով իր հնարավորությունները, ստեղծել է աղյուսակ, ապա նա համարվում է դրա սեփականատերը։ Ուստի նա իրավունք ունի նոր արտոնություններ տալ այլ օգտատերերին՝ կապված դրանում առկա տեղեկատվության հետ։
    2. Համակարգի տեսակը այսպես կոչված տվյալների հեղինակային իրավունքն է: Նման արտոնություններ ստացած օգտատերերը կարող են տվյալների բազայում ստեղծել տարբեր օբյեկտներ։

    SQL-ի պատմություն

    Այս լեզուն ստեղծվել է IBM Research Laboratory-ի կողմից 1970 թվականին։ Այն ժամանակ նրա անունը մի փոքր այլ էր (SEQUEL), բայց մի քանի տարի օգտագործելուց հետո փոխվեց՝ մի փոքր կրճատելով։ Չնայած դրան, այսօր էլ ծրագրավորման աշխարհահռչակ շատ փորձագետներ դեռևս հնաոճ են արտասանում անվանումը։ SQL-ը ստեղծվել է մեկ նպատակով՝ հորինել այնպիսի լեզու, որն այնքան պարզ կլինի, որ նույնիսկ սովորական ինտերնետ օգտագործողները կարողանան սովորել այն առանց որևէ խնդիրների: Հետաքրքիր փաստ է, որ այն ժամանակ SQL-ը միակ նման լեզուն չէր։ Կալիֆոռնիայում մասնագետների մեկ այլ խումբ մշակել է նմանատիպ «Էնգրես», սակայն այն այդպես էլ լայն տարածում չի գտել։ Մինչև 1980 թվականը կային SQL-ի մի քանի տարբերակներ, որոնք մի փոքր տարբերվում էին միմյանցից: Շփոթմունքը կանխելու համար 1983 թվականին ստեղծվել է ստանդարտ տարբերակ, որն այսօր էլ հայտնի է: SQL դասընթացները «կեղծիքների համար» թույլ են տալիս շատ ավելին իմանալ ծառայության մասին և ամբողջությամբ ուսումնասիրել այն մի քանի շաբաթվա ընթացքում:

    Structured Query Language կամ SQLԴեկլարատիվ ծրագրավորման լեզու է, որն օգտագործվում է քվազի-հարաբերական տվյալների բազաներում: SQL-ի սկզբնական հատկանիշներից շատերը վերցվել են բազմակի հաշվարկից, սակայն SQL-ի վերջին ընդլայնումները ներառում են ավելի ու ավելի հարաբերական հանրահաշիվ:
    SQL-ն ի սկզբանե ստեղծվել է IBM-ի կողմից, սակայն շատ վաճառողներ մշակել են իրենց բարբառները: Այն որպես ստանդարտ ընդունվել է Ամերիկյան ստանդարտների ազգային ինստիտուտի (ANSI) կողմից 1986 թվականին և ISO-ի կողմից 1987 թվականին։ SQL ծրագրավորման լեզվի ստանդարտում ANSI-ն նշել է, որ SQL-ի պաշտոնական արտասանությունը «es q el» է։ Այնուամենայնիվ, տվյալների բազայի շատ մասնագետներ օգտագործել են «ժարգոնային» արտասանությունը «Sequel», որն արտացոլում է լեզվի սկզբնական անվանումը՝ Sequel, որը հետագայում փոխվել է IBM-ի հետ ապրանքանիշի և անվան հակասության պատճառով։ Ծրագրավորում սկսնակների համար.
    SQL ծրագրավորման լեզուվերանայվել է 1992 թվականին և այս տարբերակը հայտնի է որպես SQL-92: Այնուհետև 1999 թվականը նորից վերանայվեց և դարձավ SQL:1999 (AKA SQL3): Ծրագրավորում խաբեբաների համար. SQL 1999-ն աջակցում է այն օբյեկտներին, որոնք նախկինում չէին աջակցվում այլ տարբերակներում, սակայն 2001 թվականի վերջի դրությամբ տվյալների բազայի կառավարման միայն մի քանի համակարգեր աջակցում էին SQL ներդրումներին՝ SQL 1999:
    SQL-ը, թեև սահմանվում է որպես ANSI և ISO, ունի բազմաթիվ տատանումներ և ընդարձակումներ, որոնցից շատերն ունեն իրենց առանձնահատկությունները, ինչպիսիք են Oracle Corporation-ի «PL/SQL» իրականացումը կամ Sybase-ը և Microsoft-ի իրականացումը, որը կոչվում է «Transact-SQL», ինչը կարող է շփոթեցնել: նրանք, ովքեր ծանոթ են ծրագրավորման հիմունքներին: Հազվադեպ չէ նաև, երբ առևտրային իրականացումները բաց թողնում են ստանդարտի հիմնական հատկանիշների աջակցությունը, ինչպիսիք են տվյալների տեսակները, ինչպիսիք են ամսաթիվը և ժամը, նախընտրելով իրենց սեփական տարբերակներից մի քանիսը: Արդյունքում, ի տարբերություն ANSI C-ի կամ ANSI Fortran-ի, որոնք սովորաբար կարող են փոխադրվել հարթակից հարթակ առանց հիմնական կառուցվածքային փոփոխությունների, SQL ծրագրավորման լեզվի հարցումները հազվադեպ են կարող տեղափոխվել տվյալների բազայի տարբեր համակարգերի միջև՝ առանց էական փոփոխությունների: Տվյալների բազայի արդյունաբերության մարդկանց մեծ մասը կարծում է, որ համատեղելիության այս բացակայությունը միտումնավոր է, որպեսզի յուրաքանչյուր մշակողին տրամադրի տվյալների բազայի կառավարման սեփական համակարգը և գնորդին կապի հատուկ տվյալների բազայի հետ:
    Ինչպես ցույց է տալիս նրա անունը, SQL ծրագրավորման լեզուն նախատեսված է հատուկ, սահմանափակ նպատակների համար՝ հարաբերական տվյալների բազայում պարունակվող տվյալների հարցումների համար: Որպես այդպիսին, դա ծրագրավորման լեզվի հրահանգների մի շարք է տվյալների նմուշներ ստեղծելու համար, այլ ոչ թե ընթացակարգային լեզու, ինչպիսին է C-ն կամ BASIC-ը, որոնք նախատեսված են խնդիրների շատ ավելի լայն շրջանակ լուծելու համար: Լեզուների ընդլայնումները, ինչպիսիք են «PL/SQL»-ը, նախագծված են լուծելու այս սահմանափակումը՝ SQL-ում ընթացակարգային տարրեր ավելացնելով՝ միաժամանակ պահպանելով SQL-ի առավելությունները: Մեկ այլ մոտեցում է SQL հարցումների մեջ ներդնել ընթացակարգային ծրագրավորման լեզվի հրամաններ և փոխազդել տվյալների բազայի հետ: Օրինակ, Oracle-ը և մյուսները աջակցում են Java-ին տվյալների բազայում, մինչդեռ PostgreSQL-ն թույլ է տալիս ֆունկցիաները գրել Perl, Tcl կամ C-ով:
    Մեկ կատակ SQL-ի մասին. «SQL-ը ոչ կառուցվածքային է, ոչ էլ լեզու»: Կատակի իմաստն այն է, որ SQL-ը Թյուրինգի լեզու չէ։ .

    Ընտրեք * T-ից
    C1 C2
    1 ա
    2 բ
    C1 C2
    1 ա
    2 բ
    Ընտրեք C1-ը T-ից
    C1
    1
    2
    C1 C2
    1 ա
    2 բ
    Ընտրեք * T-ից, որտեղ C1=1
    C1 C2
    1 ա

    Հաշվի առնելով T աղյուսակը, Select * from T հարցումը կցուցադրի աղյուսակի բոլոր տողերի բոլոր տարրերը:
    Նույն աղյուսակից Ընտրել C1 հարցումը T-ից կցուցադրի աղյուսակի բոլոր տողերի C1 սյունակի տարրերը:
    Նույն աղյուսակից Select * հարցումը T-ից, որտեղ C1=1 կցուցադրի բոլոր տողերի բոլոր տարրերը, որտեղ C1 սյունակի արժեքը «1» է։

    SQL հիմնաբառեր

    SQL բառերը բաժանված են մի շարք խմբերի.

    Առաջինն է Տվյալների մանիպուլյացիայի լեզու կամ DML(տվյալների կառավարման լեզու): DML-ը լեզվի ենթաբազմություն է, որն օգտագործվում է տվյալների բազաների հարցումների և տվյալների ավելացման, թարմացման և ջնջման համար:

    • SELECT-ը ամենատարածված DML հրամաններից մեկն է և թույլ է տալիս օգտվողին նշել հարցումը որպես ցանկալի արդյունքի նկարագրություն: Հարցումը չի նշում, թե ինչպես պետք է դասավորվեն արդյունքները. հարցումը տվյալների բազայում կատարվող ձևի թարգմանելը տվյալների բազայի համակարգի գործն է, ավելի կոնկրետ՝ հարցումների օպտիմիզատորը:
    • INSERT-ն օգտագործվում է գոյություն ունեցող աղյուսակում տողեր (ֆորմալ հավաքածու) ավելացնելու համար:
    • UPDATE-ն օգտագործվում է առկա աղյուսակի տողում տվյալների արժեքները փոխելու համար:
    • DELETE-ը նշում է գոյություն ունեցող տողերը, որոնք կջնջվեն աղյուսակից:

    Կարելի է ասել, որ երեք այլ հիմնաբառեր մտնում են DML խմբի մեջ.

    • ՍԿՍԵԼ ԱՇԽԱՏԱՆՔԸ (կամ ՍԿՍԵԼ ԳՈՐԾԱՐՔԸ՝ կախված SQL բարբառից) կարող է օգտագործվել տվյալների բազայի գործարքի մեկնարկը նշելու համար, որը կամ կավարտի բոլորը, կամ ընդհանրապես չի կատարվի:
    • COMMIT-ը նշում է, որ գործողությունների կատարումից հետո կատարված տվյալների բոլոր փոփոխությունները պահվում են:
    • ROLLBACK-ը սահմանում է, որ բոլոր տվյալները փոխվում են վերջին հանձնումից կամ հետադարձումից հետո, մինչև այն կետը, որը գրանցվել է տվյալների բազայում որպես «վերադարձ»:

    COMMIT-ը և ROLLBACK-ը օգտագործվում են այնպիսի ոլորտներում, ինչպիսիք են գործարքների վերահսկումը և կողպումը: Երկու հրահանգներն էլ ավարտում են բոլոր ընթացիկ գործարքները (գործառնությունների հավաքածուն տվյալների բազայում) և հեռացնում են աղյուսակների տվյալների փոփոխման բոլոր կողպեքները: BEGIN WORK-ի կամ նմանատիպ հայտարարության առկայությունը կամ բացակայությունը կախված է կոնկրետ SQL իրականացումից:

    Բանալի բառերի երկրորդ խումբը պատկանում է խմբին Տվյալների սահմանման լեզու կամ DDL (Տվյալների սահմանման լեզու). DDLթույլ է տալիս օգտվողին սահմանել նոր աղյուսակներ և դրանց հետ կապված տարրեր: Առևտրային SQL տվյալների բազաներից շատերն ունեն իրենց DDL ընդլայնումները, որոնք թույլ են տալիս վերահսկել որոշակի համակարգի ոչ ստանդարտ, բայց սովորաբար կենսական տարրերը:
    DDL-ի հիմնական կետերը ստեղծման և ջնջման հրամաններն են:

    • CREATE-ը նշում է այն օբյեկտները (օրինակ՝ աղյուսակները), որոնք կստեղծվեն տվյալների բազայում:
    • DROP-ը նշում է, թե տվյալների բազայում որ օբյեկտները կջնջվեն, սովորաբար ընդմիշտ:
    • Տվյալների բազայի որոշ համակարգեր աջակցում են նաև ALTER հրամանը, որը թույլ է տալիս օգտվողին փոփոխել գոյություն ունեցող օբյեկտը տարբեր ձևերով, օրինակ՝ սյունակներ ավելացնելով գոյություն ունեցող աղյուսակին:

    SQL հիմնաբառերի երրորդ խումբն է Տվյալների կառավարման լեզու կամ DCL (Տվյալների կառավարման լեզու). DCLպատասխանատու է տվյալների հասանելիության իրավունքների համար և թույլ է տալիս օգտվողին վերահսկել, թե ով ունի տվյալների բազայում տվյալների դիտման կամ մանիպուլյացիայի հասանելիություն: Այստեղ կան երկու հիմնական հիմնաբառեր.

    Այս նյութում ես փորձեցի համատեղել բոլոր հիմնական կետերը Transact-SQL, որը կօգնի տվյալների բազայի սկսնակ ծրագրավորողներին տիրապետել այս լեզվին և հարցումներ և հավելվածներ գրել Transact-SQL լեզվով:

    Տվյալների բազայի ծրագրավորումը, իսկ ավելի կոնկրետ՝ Microsoft SQL Server-ով աշխատող տվյալների բազաները դարձել են շատ տարածված, այդ իսկ պատճառով ես որոշեցի պատրաստել մի տեսակ մինի տեղեկատու գիրք, որտեղ կարող եք գտնել բոլոր հիմնական կետերը բացատրություններով և, իհարկե, օրինակներով:

    SQL հարցումներ գրելու կամ տվյալների բազայի օբյեկտներ ստեղծելու համար կարող եք օգտագործել SQL Server Express-ի անվճար հրատարակությունը, տեղեկագիրքը կազմելու պահին վերջին տարբերակը Microsoft SQL Server 2014 Express-ն է:

    Transact-SQL տեղեկանք սկսնակների համար - տեղեկանքի նկարագրություն

    Այս տեղեկագիրքը կունենա այսպիսի տեսք, սկզբում ես կտամ նավարկությամբ բովանդակության փոքր աղյուսակ, այնուհետև կսկսվի հենց տեղեկագիրքը, յուրաքանչյուր կետի համար կլինեն մեկնաբանություններ, բացատրություններ և օրինակներ: Նաև, եթե մենք արդեն մանրամասն ուսումնասիրել կամ ինչ-որ տեղ օգտագործել ենք մեր կայքի նյութերում այս կամ այն ​​առարկան կամ գործողությունը, ես, իհարկե, կտրամադրեմ հղումներ, որպեսզի կարողանաք տեսնել մանրամասն օրինակներ կամ գործնականում օգտագործել այս կամ այն ​​գործողությունը: .

    Քանի որ բացարձակապես ամեն ինչ ծածկելն ուղղակի անհնար է, ուստի մի զարմացեք, եթե այստեղ ինչ-որ բան չեք գտել։ Կրկնում եմ ևս մեկ անգամ, որ այս տեղեկատու գիրքը ստեղծվել է սկսնակ Transact-SQL ծրագրավորողների, ինչպես նաև պարզ ադմինիստրատորների համար, ովքեր պարբերաբար կարիք ունեն ներբեռնելու որոշ տվյալներ SQL սերվերից:

    T-SQL լեզվի մանրամասն ուսումնասիրության համար խորհուրդ եմ տալիս կարդալ իմ «The T-SQL Programmer’s Way» գիրքը: Tutorial on the Transact-SQL language», որում ես հնարավորինս մանրամասնորեն խոսում եմ T-SQL լեզվի մասին՝ մեծ թվով օրինակներով։

    Տվյալների բազա

    Նույնիսկ սկսնակ Transact-SQL ծրագրավորողը պետք է իմանա, թե ինչպես ստեղծել տվյալների բազա կամ փոխել դրա հատկությունները, ուստի նախքան աղյուսակները, դիտումները, գործառույթները և մնացած ամեն ինչ նայելը, եկեք նայենք Transact-SQL տվյալների բազայի ստեղծման, փոփոխման և ջնջման գործընթացին:

    Ստեղծագործություն

    Տվյալների բազա ստեղծելու համար անհրաժեշտ է կատարել հետևյալ հարցումը.

    ՍՏԵՂԾԵԼ ՏՎՅԱԼՆԵՐԻ ԲԱԶԱ թեստ

    որտեղ թեստը տվյալների բազայի անվանումն է:

    Մենք ավելի շատ խոսեցինք SQL սերվերի վրա տվյալների բազա ստեղծելու մասին նյութում Ինչպես ստեղծել տվյալների բազա MS Sql 2008-ում:

    Հեռացում

    Եթե ​​Ձեզ անհրաժեշտ է ջնջել տվյալների բազան, կարող եք օգտագործել հարցումը.

    DROP DATABASE թեստ

    Փոփոխություն

    Տվյալների բազայի պարամետրերը փոխելու համար կարող եք օգտագործել Management Studio-ի գրաֆիկական ինտերֆեյսը, որում մանրամասն նկարագրված են բոլոր պարամետրերը, կամ կարող եք ուղարկել ALTER DATABASE հարցումներ, օրինակ՝ թեստային տվյալների բազայի ավտոմատ սեղմումը միացնելու համար, օգտագործել հետևյալ հարցումը։

    ALTER DATABASE test SET AUTO_SHRINK ON; --Եվ անջատելու ALTER DATABASE test SET AUTO_SHRINK OFF;

    Հուսով եմ, որ պարզ է, ALTER DATABASE-ը փոխելու հրաման է, test-ը փոփոխվող տվյալների բազայի անվանումն է, SET-ը հրաման է, որը ցույց է տալիս, որ մենք կփոխենք տվյալների բազայի պարամետրերը, AUTO_SHRINK պարամետրը ինքնին, ON/OFF պարամետրի արժեքը:

    Տվյալների տեսակները

    Ամենատարածված և հաճախ օգտագործվողը

    Ճշգրիտ թվեր

    • tinyint - 1 բայթ
    • smallint - 2 բայթ
    • int - 4 բայթ
    • bigint - 8 բայթ
    • թվային և տասնորդական ( տեսակը ֆիքսված ճշգրտությամբ և մասշտաբով)
    • փող - 8 բայթ
    • smallmoney - 4 բայթ

    Մոտավոր թվեր

    • float [ (n) ] – չափը կախված է n-ից (n-ը կարող է լինել 1-ից մինչև 53, լռելյայն 53)
    • իրական - 4 բայթ

    ամսաթիվը և ժամը

    • ամսաթիվ - ամսաթիվ
    • ժամանակ - ժամանակ
    • datetime - ամսաթիվ, որը ներառում է օրվա ժամը վայրկյանի կոտորակներով 24-ժամյա ձևաչափով:

    Նիշերի տողեր

    • char [ (n) ] – ֆիքսված երկարությամբ տող, որտեղ n-ը տողի երկարությունն է (1-ից մինչև 8000): Պահպանման չափը n բայթ է:
    • varchar [ (n | max) ] ֆիքսված երկարությամբ տող է, որտեղ n-ը տողի երկարությունն է (1-ից մինչև 8000): Եթե ​​նշեք max, ապա պահպանման առավելագույն չափը կլինի 2^31-1 բայթ (2 ԳԲ), իսկ եթե նշեք n, ապա մուտքագրված տվյալների իրական երկարությունը գումարած 2 բայթ:
    • տեքստ – փոփոխական երկարությամբ տողերի տվյալներ, առավելագույն չափը՝ 2,147,483,647 բայթ (2 ԳԲ):
    • nchar[(n)]-ը ֆիքսված երկարությամբ Unicode տող է, որտեղ n-ը տողի երկարությունն է (1-ից մինչև 4000): Պահպանման չափը երկու անգամ մեծ է n-ի արժեքը բայթերով
    • nvarchar [ (n | max) ] ֆիքսված երկարությամբ Unicode տող է, որտեղ n-ը տողի երկարությունն է (1-ից մինչև 4000): Եթե ​​նշեք առավելագույնը, պահեստավորման առավելագույն չափը կկազմի 2^31-1 բայթ (2 ԳԲ), իսկ եթե n, ապա մուտքագրված տվյալների իրական երկարությունը երկու անգամ ավել է գումարած 2 բայթ:
    • ntext-ը փոփոխական երկարության տողերի տվյալ է՝ 1,073,741,823 բայթ տողի առավելագույն երկարությամբ:

    Երկուական տվյալներ

    • երկուական [ (n) ] - երկուական տվյալներ ֆիքսված երկարությամբ, չափը n բայթ, որտեղ n-ը արժեք է 1-ից մինչև 8000: Պահպանման չափը n բայթ է:
    • varbinary [ (n | max) ] - փոփոխական երկարությամբ երկուական տվյալներ, որտեղ n-ը կարող է արժեք ունենալ 1-ից մինչև 8000: Եթե նշեք max, պահեստավորման առավելագույն չափը կլինի 2^31-1 բայթ (2 ԳԲ): Երբ n-ը նշված է, պահեստի չափը մուտքագրված տվյալների իրական երկարությունն է՝ գումարած 2 բայթ:
    • պատկեր - փոփոխական երկարությամբ երկուական տվյալներ, որոնց չափերը տատանվում են 0-ից մինչև 2^31 - 1 (2,147,483,647) բայթ:

    Այլ

    • xml - xml տվյալների պահպանում: Մենք մանրամասն քննարկեցինք Transact-sql նյութում - xml-ի հետ աշխատելը, և եթե ընդհանրապես չգիտեք, թե ինչ է XML-ը, ապա դրա մասին խոսեցինք XML հիմունքները սկսնակների համար հոդվածում:
    • աղյուսակ - արդյունքում ստացված շարքերի պահեստավորում:

    Սեղաններ

    Այս կայքում աղյուսակների ստեղծման բավական օրինակներ կան, քանի որ SQL-ի հետ կապված գրեթե յուրաքանչյուր հոդվածում ես տալիս եմ թեստային աղյուսակ ստեղծելու օրինակ, բայց գիտելիքները համախմբելու համար եկեք ստեղծենք, փոփոխենք և ջնջենք թեստային աղյուսակ: Եկեք միայն տեսնենք, թե ինչպես են տվյալների տեսակների դաշտերը սահմանվում Transact-SQL աղյուսակներում:

    Ստեղծագործություն

    CREATE TABLE test_table(IDENTITY(1,1) NOT NULL, --identifier, int int number, no NULL արժեքներ թույլատրված (50) NULL, --լրիվ անուն, 50 նիշանոց տող, NULL արժեքներ թույլատրված NULL, -- գումար, մոտավոր թվային արժեք, NULL արժեքները թույլատրվում են NULL, - ամսաթիվը և ժամը, NULL արժեքները թույլատրվում են (100) NULL - 100 նիշ երկարությամբ տող, NULL արժեքները թույլատրվում են) ON GO

    Սյունակի ավելացում

    ALTER TABLE test_table ADD prosto_pole numeric(18, 0) NULL
    • test_table-ը աղյուսակի անվանումն է.
    • ավելացնել - ավելացնելու հրաման;
    • prosto_pole – սյունակի անվանումը;
    • pole numeric(18, 0) – նոր սյունակի տվյալների տեսակը;
    • NULL – պարամետր, որը նշանակում է, որ NULL արժեքը կարող է պահվել այս դաշտում:

    Փոխելով տվյալների տեսակը

    Եկեք նոր դաշտի (prosto_pole) տվյալների տեսակը փոխենք numeric(18, 0)-ից bigint-ի և մեկնաբանությունների դաշտի երկարությունը հասցնենք մինչև 300 նիշ:

    ALTER TABLE test_table ALTER COLUMN prosto_pole bigint; ALTER TABLE test_table ALTER COLUMN մեկնաբանություն varchar(300);

    Նշում! SQL սերվերը չի կարողանա փոխել տվյալների տեսակը, եթե այս դաշտերի արժեքները չեն կարող փոխակերպվել, որի դեպքում դուք պետք է ջնջեք սյունակը բոլոր տվյալների հետ և նորից ավելացնեք կամ մաքրեք այս դաշտի բոլոր տվյալները:

    Սյունակի հեռացում

    Հատուկ սյունակ ջնջելու համար օգտագործեք drop հրամանը, օրինակ՝ prosto_pole դաշտը ջնջելու համար օգտագործեք հետևյալ հարցումը.

    ALTER TABLE test_table DROP COLUMN prosto_pole

    Աղյուսակի ջնջում

    Աղյուսակը ջնջելու համար եկեք գրենք այս պարզ հարցումը, որտեղ test_table-ը ջնջվող աղյուսակն է

    DROP TABLE test_table-ը

    Ներկայացուցչություն

    Տվյալների բազայում շատ օգտակար օբյեկտ է դիտումը (VIEW) կամ, մեր կարծիքով, պարզապես դիտումը: Եթե ​​որևէ մեկը չգիտի, ապա դիտումը պահված հարցման տեսակ է, որին կարելի է մուտք գործել նույն ձևով, ինչ աղյուսակը: Եկեք ստեղծենք տեսք՝ հիմնվելով test_table թեստային աղյուսակի վրա և ենթադրենք, որ շատ հաճախ մեզ անհրաժեշտ է հարցում գրել, օրինակ՝ ըստ պայմանի, գումարը 1000-ից մեծ է, այնպես որ ամեն անգամ այս հարցումը չգրելու համար, տեսակետը մեկ անգամ կգրենք, իսկ հետո կանդրադառնանք նրան։

    Ստեղծագործություն

    ՍՏԵՂԾԵԼ ԴԻՏՈՒՄ test_view AS SELECT ID, fio, comment FROM test_table WHERE summa > 1000 GO

    Տեսարան մուտք գործելու օրինակ:

    SELECT * FROM test_view-ից

    Փոփոխություն

    ALTER VIEW test_view AS SELECT id, fio, comment FROM test_table WHERE summa > 1500 GO

    Հեռացում

    DROP VIEW test_view

    Համակարգի դիտումներ

    MS SQL Server DBMS-ն իսկապես ունի համակարգի օբյեկտներ, որոնք երբեմն կարող են բավականին օգտակար տեղեկատվություն տրամադրել, օրինակ՝ համակարգի դիտումները: Այժմ մենք կվերլուծենք մի քանի նման ներկայացում: Դուք կարող եք մուտք գործել դրանք այնպես, ինչպես սովորական դիտումները ( օրինակ վերնագրի տեսքից ընտրեք *)

    • sys.all_objects – պարունակում է տվյալների բազայի բոլոր օբյեկտները, ներառյալ այնպիսի պարամետրեր, ինչպիսիք են՝ անունը, տեսակը, ստեղծման ամսաթիվը և այլն:
    • sys.all_columns – վերադարձնում է աղյուսակների բոլոր սյունակները իրենց մանրամասն բնութագրերով:
    • sys.all_views – Վերադարձնում է տվյալների բազայի բոլոր դիտումները:
    • sys.tables – տվյալների բազայի բոլոր աղյուսակները:
    • sys.triggers – տվյալների բազայի բոլոր գործարկիչները:
    • sys.databases – բոլոր տվյալների բազաները սերվերի վրա:
    • sys.sysprocesses – ակտիվ գործընթացներ, նիստեր տվյալների բազայում:

    Իրականում դրանք շատ են, ուստի անհնար է դրանք բոլորին դասավորել: Եթե ​​ցանկանում եք տեսնել, թե ինչպես դրանք կարող են օգտագործվել գործնականում, մենք դա արդեն արել ենք, օրինակ, նյութերում

    Գործառույթներ

    MS SQL սերվերը թույլ է տալիս ստեղծել գործառույթներ, որոնք կվերադարձնեն կոնկրետ տվյալներ, այլ կերպ ասած, օգտվողն ինքը կարող է գրել գործառույթ և օգտագործել այն ապագայում, օրինակ, երբ անհրաժեշտ է ստանալ արժեքներ, որոնք պահանջում են բարդ հաշվարկներ կամ բարդ: տվյալների ընտրություն: Երբեմն պարզապես կոդը կրճատելու համար, երբ ֆունկցիայի կանչը կփոխարինի հաճախակի անհրաժեշտ արժեքները տարբեր հարցումներում և հավելվածներում:

    Ստեղծագործություն

    ՍՏԵՂԾԵԼ ՖՈՒՆԿՑԻԱ test_function (@par1 bigint, @par2 float) ՎԵՐԱԴԱՐՁՈՒՄ է varchar(300) ՈՐՊԵՍ ՍԿՍՈՒՄ Է ՀԱՅՏԱՐԱՐԵԼ @rezult varchar(300) SELECT @rezult=comment FROM test_table ՈՐՏԵՂ id = @par1 AND summa > @par2 RETURN @rezult END
    • CREATE FUNCTION – ֆունկցիայի օբյեկտ ստեղծելու հրաման;
    • test_function – նոր ֆունկցիայի անվանումը;
    • @par1 և @par2 - մուտքային պարամետրեր;
    • RETURNS varchar(300) – վերադարձի տեսակ;
    • ՀԱՅՏԱՐԱՐԵԼ @rezult varchar(300) – փոփոխականի հայտարարում varchar(300) տիպով;
    • Ընտրել հայտարարությունը մեր դեպքում ֆունկցիայի գործողություններն են.
    • RETURN @rezult – վերադարձնել արդյունքը;
    • BEGIN-ը և END-ը համապատասխանաբար ֆունկցիայի կոդի սկիզբն ու վերջն են:

    Հարցման մեջ օգտագործելու օրինակ:

    SELECT test_function(1, 20)

    Փոփոխություն

    ALTER FUNCTION test_function (@par1 bigint, @par2 float) ՎԵՐԱԴԱՐՁՈՒՄ է varchar(300) ՈՐՊԵՍ ՍԿՍՈՒՄ Է ՀԱՅՏԱՐԱՐԵԼ @rezult varchar(300) SELECT @rezult=comment FROM test_table_new WHERE id = @par1 AND summa >= @parult END @rez

    Հեռացում

    DROP FUNCTION test_function

    Ներկառուցված գործառույթներ

    Բացի այն, որ SQL սերվերը թույլ է տալիս ստեղծել հատուկ գործառույթներ, այն նաև հնարավորություն է տալիս օգտագործել ներկառուցված գործառույթներ, որոնք DBMS մշակողները արդեն գրել են ձեզ համար: Դրանք շատ են, ուստի ես ամենատարածվածները բաժանեցի խմբերի և փորձեցի համառոտ նկարագրել դրանք:

    Համակարգի գործառույթները

    Այստեղ ես կտամ գործառույթների մի քանի օրինակ, որոնք վերադարձնում են համակարգի տարբեր տվյալներ

    • @@VERSION – վերադարձնում է SQL սերվերի տարբերակը;
    • @@SERVERNAME – վերադարձնում է սերվերի անունը;
    • SUSER_NAME() – օգտվողի մուտքի անուն սերվերում, այլ կերպ ասած՝ ինչ լոգինով է աշխատում այս կամ այն ​​օգտատերը;
    • user_name() – տվյալների բազայի օգտվողի անուն;
    • @@SERVICENAME – DBMS ծառայության անվանումը;
    • @@IDENTITY - աղյուսակում տեղադրված վերջին նույնացուցիչը;
    • db_name() - ընթացիկ տվյալների բազայի անվանումը;
    • db_id () - տվյալների բազայի նույնացուցիչ:

    Համախառն գործառույթներ

    Գործառույթներ, որոնք հաշվարկում են արժեքը՝ հիմնված արժեքների բազմության (խմբի) վրա: Եթե ​​այս ֆունկցիաները կանչելիս արդյունքը ցուցադրելու համար պետք է նշել սյունակ, ապա պետք է խմբավորել տվյալները (խմբավորվել ըստ) ըստ այս դաշտի: Մենք մանրամասնորեն քննարկել ենք այս շինարարությունը Transact-SQL-ի տվյալների խմբավորման հոդվածում

    • avg - վերադարձնում է միջին արժեքը;
    • count - արժեքների քանակը;
    • max - առավելագույն արժեքը;
    • min - նվազագույն արժեքը;
    • գումար - արժեքների գումար:

    Օգտագործման օրինակ:

    SELECT COUNT(*) որպես հաշվարկ, SUM(summa) որպես գումար, MAX(id) որպես առավելագույն, MIN(id) որպես րոպե, AVG(summa) որպես միջին FROM test_table

    Լարային գործառույթներ

    Այս տեսակի ֆունկցիան համապատասխանաբար աշխատում է տողերի հետ։

    Ձախ (լարային արտահայտություն, Անձնավորություններ) – վերադարձնում է ձախից սկսած տողի նշված թվով նիշերը:

    Օրինակ

    SELECT LEFT («Մնացած գործառույթի օրինակ», 10) - «Example of»-ի արդյունքը

    Ճիշտ (լարային արտահայտություն, Անձնավորություններ) – վերադարձնում է աջից սկսած տողի նշված թվով նիշերը

    Օրինակ

    SELECT Right («Աջ ֆունկցիայի օրինակ», 10) - «Right ֆունկցիայի» արդյունքը

    Լեն (տող) – վերադարձնում է տողի երկարությունը:

    Օրինակ

    SELECT len («Օրինակ, թե ինչպես է աշխատում ոսպնյակի ֆունկցիան») --Արդյունք 28

    Ավելի ցածր (տող) – վերադարձնում է տող, որտեղ բոլոր նիշերը վերածվում են փոքրատառերի:

    Օրինակ

    SELECT ստորին («Ստորին ֆունկցիայի օրինակ») -- «Ստորին ֆունկցիայի օրինակի» արդյունքը

    Վերին (տող) - վերադարձնում է տող, որտեղ բոլոր նիշերը վերածվում են մեծատառերի:

    Օրինակ

    SELECT Upper («Վերին ֆունկցիայի օրինակ») - «ՎԵՐԻՆ ՖՈՒՆԿՑԻԱՅԻ ՕՐԻՆԱԿ» արդյունքը

    Լտրիմ (տող) – վերադարձնում է տողը, որտեղ բոլոր առաջատար բացերը հանված են:

    Օրինակ

    SELECT ltrim ("Ltrim ֆունկցիայի գործողության օրինակ") - "Ltrim ֆունկցիայի գործողության օրինակ" արդյունքը:

    Rtrim (տող) – վերադարձնում է տողը հանված աջ կողմի բոլոր բացատներով

    Օրինակ

    SELECT Rtrim («Rtrim ֆունկցիայի գործողության օրինակ») - «Rtrim ֆունկցիայի գործողության օրինակ» արդյունքը:

    Փոխարինել (տող, ինչ ենք փնտրում, ինչո՞վ ենք այն փոխարինում) – տողային արտահայտության մեջ փոխարինում է երկրորդ պարամետրում նշված բոլոր երևույթները երրորդ պարամետրում նշված նիշերով:

    Օրինակ

    SELECT Replace («Փոխարինի ֆունկցիայի օրինակ», «աշխատանք», «ՓՈԽԱՐԻՆԵԼ») - «Փոխարինել ֆունկցիայի REPLACE ֆունկցիայի օրինակ» արդյունքը:

    Կրկնօրինակել (տող, կրկնությունների քանակը) – կրկնում է տողը (առաջին պարամետրը) այնքան անգամ, որքան նշված է երկրորդ պարամետրում:

    Օրինակ

    SELECT Replicate ("Replicate Example", 3) -- Արդյունք "Replicate Example Replicate Example Replicate Example"

    Հակադարձ (տող) – վերադարձնում է ամեն ինչ հակառակ հերթականությամբ:

    Օրինակ

    SELECT Reverse («Հակադարձ գործառույթի օրինակ») - «esreveR iitsknuf etobar op remirP» արդյունքը

    Տիեզերք (բացատների քանակը) – վերադարձնում է տողը որպես որոշակի քանակությամբ բացատներ:

    Օրինակ

    SELECT Space(10) -- Արդյունք " "

    Ենթատող (տող, մեկնարկային դիրքը, քանի նիշ) – վերադարձնում է երրորդ պարամետրում նշված թվին հավասար երկարություն ունեցող տողը` սկսած երկրորդ պարամետրում նշված նիշից:

    Օրինակ

    SELECT Substring («Substring ֆունկցիայի գործողության օրինակ», 11, 14) -- «Function Operation» արդյունքը

    Մաթեմատիկական ֆունկցիաներ

    Կլոր (թիվ, կլորացման ճշգրտությունը) – թվային արտահայտությունը կլորացնում է երկրորդ պարամետրում նշված թվանշանների քանակով

    Օրինակ

    SELECT Round (10.4569, 2) -- Արդյունք «10.4600»

    Հատակ (թիվ) – վերադարձնում է ներքև կլորացված ամբողջ թիվը:

    Օրինակ

    SELECT Floor(10.4569) - Արդյունք «10»

    Առաստաղ (թիվ) – վերադարձնում է կլորացված ամբողջ թիվը:

    Օրինակ

    SELECT առաստաղ (10.4569) -- Արդյունք «11»

    Ուժ (թիվ, աստիճան) — վերադարձնում է երկրորդ պարամետրում նշված հզորության բարձրացված թիվը:

    Օրինակ

    SELECT Power (5,2) - Արդյունք «25»

    Քառակուսի (թիվ) – վերադարձնում է քառակուսի թվային արժեք

    Օրինակ

    SELECT Square(5) - Արդյունք «25»

    Աբս (թիվ) – վերադարձնում է բացարձակ դրական արժեք

    Օրինակ

    SELECT Abs(-5) - Արդյունք «5»

    Մատյան(թիվ) – բնական լոգարիթմ՝ լողացող կետով:

    Օրինակ

    SELECT Log(5) - Արդյունք «1.6094379124341»

    Պի- Փի.

    Օրինակ

    SELECT Pi() - Արդյունք «3.14159265358979»

    ռանդ- վերադարձնում է պատահական լողացող կետի թիվը 0-ի և 1-ի միջև

    Օրինակ

    SELECT rand() - Արդյունք "0.713273187517105"

    Ամսաթվի և ժամի գործառույթները

    Ստանալ ամսաթիվ ()- վերադարձնում է ընթացիկ ամսաթիվը և ժամը

    Օրինակ

    SELECT Getdate() -- Արդյունք «2014-10-24 16:36:23.683»

    Օր(ամսաթիվը) – վերադարձնում է օրը օրվանից:

    Օրինակ

    SELECT Day (Getdate()) - Արդյունք «24»

    Ամիս(ամսաթիվ) – վերադարձնում է ամսվա համարը ամսաթվից:

    Օրինակ

    SELECT ամիս (Getdate()) - Արդյունք «10»

    Տարի (ամսաթիվը) – վերադարձնում է տարին ամսաթվից

    Օրինակ

    SELECT year(Getdate()) - Արդյունք «2014»

    DATEPART(ամսաթվի բաժինը, ամսաթիվը) – վերադարձնում է նշված բաժինը ամսաթվից (ՕՕ, ՄՄ, ՏՏՏՏ և այլն)

    Օրինակ

    SELECT DATEPART(MM,GETDATE()) - Արդյունք «10»

    Իսդատե (ամսաթիվը) – ստուգում է մուտքագրված արտահայտությունը՝ տեսնելու, թե արդյոք այն ամսաթիվ է

    Օրինակ

    SELECT Isdate(GETDATE()) - Արդյունք «1»

    Փոխակերպման գործառույթներ

    Դերերում (արտահայտությունը որպես տվյալների տեսակ) – մի ​​տեսակը մյուսին փոխարկելու ֆունկցիա: Օրինակում մենք փոխակերպում ենք float տեսակը int

    Օրինակ

    SELECT CAST (10.54 as int) - արդյունք 10

    Փոխակերպել – (տվյալների տեսակը, արտահայտությունը, ամսաթվի ձևաչափը) տվյալների մի տեսակը մյուսին փոխարկելու գործառույթ է: Շատ հաճախ այն օգտագործվում է ամսաթիվը փոխարկելու համար՝ օգտագործելով երրորդ կամընտիր պարամետրը՝ ամսաթվի ձևաչափը:

    Օրինակ

    SELECT GETDATE(), CONVERT(DATE, GETDATE(), 104) --Արդյունք --2014-10-24 15:20:45.270 – առանց փոխակերպման; --2014-10-24 փոխակերպումից հետո.

    Սեղանի գործառույթներ

    Դրանք ստեղծվում են դրանցից տվյալներ ստանալու համար, ինչպես աղյուսակներից, բայց տարբեր տեսակի հաշվարկներից հետո: Մենք մանրամասն խոսեցինք սեղանի գործառույթների մասին Transact-sql - Աղյուսակի գործառույթներ և ժամանակավոր աղյուսակներ նյութում

    Ստեղծագործություն

    --մեր ֆունկցիայի անունը CREATE FUNCTION fun_test_tabl (--մուտքային պարամետրերը և դրանց տեսակը @id INT) --վերադարձի արժեքը, այսինքն. Աղյուսակը ՎԵՐԱԴԱՐՁՆՈՒՄ Է ԱՂՅՈՒՍԱԿԸ ՈՐՊԵՍ -- անմիջապես վերադարձրեք արդյունքը RETURN (-- հարցումն ինքնին կամ որոշ հաշվարկներ SELECT * FROM test_table, որտեղ id = @id) ԳՆԱԼ

    Փոփոխություն

    --մեր ֆունկցիայի անունը ALTER FUNCTION fun_test_tabl (--մուտքային պարամետրերը և դրանց տեսակը @id INT) --վերադարձի արժեքը, այսինքն. Աղյուսակը RETURNS TABLE AS -- անմիջապես վերադարձրեք արդյունքը RETURN (-- հարցումն ինքնին կամ որոշ հաշվարկներ SELECT * FROM test_table where id = @id and summa > 100) ԳՆԱԼ

    Հեռացում

    DROP FUNCTION fun_test_tabl

    Ինչպես տեսնում եք, նման գործառույթներ ստեղծելու, փոխելու կամ ջնջելու համար օգտագործվում են նույն օպերատորները, ինչ սովորական ֆունկցիաների դեպքում, միակ տարբերությունն այն է, թե ֆունկցիան ինչ տեսակ է վերադարձնում։

    Այս ֆունկցիան կանչելու օրինակ

    SELECT * FROM fun_test_tabl(1)

    Ընթացակարգեր

    Ընթացակարգեր SQL հրահանգների մի շարք է, որը կազմվում է մեկ անգամ և, ինչպես գործառույթները, կարող է ընդունել տարբեր պարամետրեր։ Օգտագործվում է հաշվարկները պարզեցնելու և խմբային գործողություններ կատարելու համար:

    Ստեղծագործություն

    CREATE PROCEDURE sp_test_procedure (@id INT) AS --հայտարարել փոփոխականները ՀԱՅՏԱՐԱՐԵԼ @sum FLOAT --SQL հայտարարություններ SET @sum = 100 UPDATE test_table SET summa = summa + @sum WHERE id = @id GO

    Փոփոխություն

    ՓՈԽԵԼ ԿԱՐԳԸ sp_test_procedure (@id int) AS --հայտարարել փոփոխականները ՀԱՅՏԱՐԱՐԵԼ @sum float --SQL հայտարարություններ SET @sum = 500 UPDATE test_table SET summa = summa + @sum ՈՐՏԵՂ id = @id GO

    Հեռացում

    ԲԱՑԵԼ ԸՆԹԱՑՔԸ sp_test_procedure

    Ընթացակարգ կանչելը

    Դուք կարող եք այն անվանել տարբեր ձևերով, օրինակ.

    ԿԱՏԱՐԵԼ sp_test_procedure 1 --կամ EXEC sp_test_procedure 1

    Որտեղ EXECUTE-ը և EXEC-ը պրոցեդուրա կանչ են, sp_test_procedure, համապատասխանաբար, մեր ընթացակարգի անվանումը, 1 պարամետրի արժեքը

    Համակարգային ընթացակարգեր

    Համակարգային ընթացակարգեր– սրանք տարբեր վարչական գործողություններ կատարելու ընթացակարգեր են ինչպես սերվերի օբյեկտների, այնպես էլ հենց սերվերի կազմաձևման վրա: Դրանք կոչվում են այնպես, ինչպես սովորական ընթացակարգերը, բայց ցանկացած տվյալների բազայի համատեքստում:

    Դրանց թիվը հսկայական է, ուստի ես ընդամենը մի քանի օրինակ կբերեմ:

    sp_configure– DBMS միջուկի կազմաձևում ցուցադրելու և փոփոխություններ կատարելու ընթացակարգ: Առաջին պարամետրը կազմաձևման պարամետրի անունն է, երկրորդ պարամետրը արժեքն է:

    Օրինակ

    Փոխեք EXEC sp_configure պարամետրի արժեքը «Ad Hoc Distributed Queries», 1 reconfigure -կիրառեք EXEC sp_configure -պարզապես դիտեք բոլոր պարամետրերի արժեքները

    որտեղ «Հատուկ բաշխված հարցումներ» պարամետրի անունն է, 1-ը համապատասխանում է այն արժեքին, որին ցանկանում ենք փոխել, վերակազմակերպումը կկիրառի մուտքագրված արժեքը:

    Գործնականում մենք օգտագործել ենք այս ընթացակարգը Transact-SQL-ի Interdatabase Query նյութում

    sp_executesql– իրականացնում է Transact-SQL հայտարարություն կամ հայտարարությունների մի շարք, որոնք կարող են ստեղծվել դինամիկ կերպով: Մենք օգտագործել ենք այս պրոցեդուրան Transact-SQL-ի միջոցով նյութի գրանցման տվյալների փոփոխությունների աղյուսակում

    Օրինակ

    EXECUTE sp_executesql N"SELECT * FROM test_table WHERE id = @id", N"@id int", @id = 1

    Որտեղ առաջին պարամետրը sql հրահանգն է (տող Unicode-ում), երկրորդը՝ sql հրահանգում ներկառուցված բոլոր պարամետրերի սահմանումը, երրորդը՝ պարամետրերի արժեքն է։

    sp_help– վերադարձնում է մանրամասն տեղեկատվություն տվյալների բազայի ցանկացած օբյեկտի մասին:

    Օրինակ

    EXECUTE sp_help «test_table»

    sp_rename– վերանվանում է տվյալների բազայում գտնվող օբյեկտը: Կարող է օգտագործվել աղյուսակներում աղյուսակների, ինդեքսների, սյունակների անունները վերանվանելու համար: Խորհուրդ չի տրվում օգտագործել այս ընթացակարգը օգտվողի ընթացակարգերը, գործարկիչները, գործառույթները վերանվանելու համար:

    Աղյուսակ վերանվանելու օրինակ

    EXEC sp_rename «test_table», «test_table_new»

    որտեղ առաջին պարամետրը հին անունով օբյեկտ է, իսկ երկրորդ պարամետրը օբյեկտի նոր անունն է:

    Աղյուսակում սյունակի անվանափոխության օրինակ

    EXEC sp_rename "test_table.summa", "summa_new", "COLUMN"

    Երրորդ պարամետրը ցույց է տալիս, որ սյունակը վերանվանվում է:

    Գործարկիչներ

    ձգաննորմալ պրոցեդուրա է, բայց այն կանչվում է ոչ թե օգտագործողի, այլ իրադարձության միջոցով: Իրադարձությունը, օրինակ, կարող է լինել նոր տող աղյուսակի մեջ (ներդիր), աղյուսակի տվյալների թարմացում (թարմացում) կամ աղյուսակից տվյալների ջնջում (ջնջում):

    Ստեղծագործություն

    ՍՏԵՂԾԵԼ TRIGGER trg_test_table_update ON test_table for UPDATE - կարող եք նաև ջնջել, տեղադրել ԻՆՉՊԵՍ ՍԿԶԲՈՒՄ --sql հրահանգները UPDATE END GO-ի դեպքում

    Փոփոխություն

    ALTER TRIGGER trg_test_table_update ON test_table insert-ի համար --կարող եք նաև ջնջել, թարմացնել ԻՆՉՊԵՍ ՍԿԶԲՈՒՄ --sql հրահանգները տեղադրելու դեպքում END GO

    Հեռացում

    DROP TRIGGER trg_test_table_update-ը

    Միացնել անջատել

    --անջատել DISABLE TRIGGER trg_test_table_update ON test_table; -- միացնել ENABLE TRIGGER trg_test_table_update ON test_table;

    Գործարկիչների մասին խոսեցինք հոդվածում՝ Ինչպես ստեղծել տրիգեր Transact-SQL-ում։

    Ցուցանիշներ

    Սա տվյալների բազայի օբյեկտ է, որը բարելավում է տվյալների որոնման աշխատանքը՝ տվյալների տեսակավորելով ըստ որոշակի դաշտի: Եթե ​​անալոգիա անենք, օրինակ, գրքում որոշակի տեղեկատվության որոնումը շատ ավելի հեշտ և արագ է լինում՝ հիմնվելով դրա բովանդակության աղյուսակի վրա, քան եթե այս բովանդակության աղյուսակը գոյություն չունենար: MS SQL Server DBMS-ում կան ինդեքսների հետևյալ տեսակները.

    Կլաստերային ինդեքս— նման ցուցանիշով աղյուսակի տողերը դասավորված են տրված բանալիով, այսինքն. նշված դաշտը: MS SQL սերվերի յուրաքանչյուր աղյուսակի այս տեսակի ինդեքսը կարող է լինել միայն մեկը և, սկսած MS SQL 2000-ից, այն ավտոմատ կերպով ստեղծվում է, երբ աղյուսակում նշվում է առաջնային բանալին (PRIMARY KEY):

    Ոչ կլաստերային ինդեքս– այս տեսակի ինդեքս օգտագործելիս ինդեքսը պարունակում է տողերի ցուցիչներ՝ դասավորված ըստ նշված դաշտի, և ոչ թե իրենք՝ տողերը, ինչի պատճառով անհրաժեշտ տողի արագ որոնում է տեղի ունենում: Աղյուսակը կարող է ունենալ մի քանի նման ինդեքսներ։

    Columnstore ինդեքս– ինդեքսի այս տեսակը հիմնված է աղյուսակի տվյալները ոչ թե տողերի, այլ սյունակների պահպանման տեխնոլոգիայի վրա (այստեղից էլ՝ անվանումը), աղյուսակը կարող է ունենալ մեկ սյունակային ինդեքս:

    Այս տեսակի ինդեքս օգտագործելիս աղյուսակը անմիջապես դառնում է միայն կարդալու, այլ կերպ ասած՝ աղյուսակում այլևս հնարավոր չի լինի ավելացնել կամ փոխել տվյալներ, դա անելու համար պետք է անջատել ինդեքսը, ավելացնել/փոխել տվյալները։ , ապա միացրեք ինդեքսը հետ:

    Նման ինդեքսները հարմար են պահեստներում օգտագործվող տվյալների շատ մեծ հավաքածուների համար:

    Գործողությունները, որոնք օգտագործում են ագրեգատ ֆունկցիաներ՝ օգտագործելով խմբավորումը, նման ցուցանիշով կատարվում են շատ ավելի արագ (մի քանի անգամ):

    Columnstore ինդեքսը հասանելի է SQL Server-ի 2012 թվականի տարբերակից Enterprise, Developer և Evaluation հրատարակություններում:

    Ստեղծագործություն

    Կլաստերային ինդեքս

    ՍՏԵՂԾԵԼ ԿԼՅՈՒՍՏԵՐ ԻՆԴԵՔՍ idx_clus_one ON test_table(id) GO

    Որտեղ CREATE CLUSTERED INDEX-ը կլաստերային ինդեքս ստեղծելու հրահանգ է, idx_clus_one-ը ինդեքսի անունն է, test_table(id)՝ համապատասխանաբար տեսակավորման աղյուսակը և հիմնական դաշտը:

    Ոչ կլաստերային ինդեքս

    ՍՏԵՂԾԵԼ INDEX idx_no_clus ON test_table(summa) GO

    Columnstore ինդեքս

    CREATE columnstore INDEX idx_columnstore ON test_table(date_create) GO

    Անջատել

    --անջատել ALTER INDEX idx_no_clus ON test_table DISABLE --միացնել, վերակառուցել ALTER INDEX idx_no_clus ON test_table REBUILD

    Հեռացում

    DROP INDEX idx_no_clus ON test_table GO

    Կուրսորներ

    Կուրսորը -դա տվյալների մի տեսակ է, որն օգտագործվում է հիմնականում պրոցեդուրաներում և գործարկիչներում: Այն ներկայացնում է սովորական տվյալների հավաքածու, այսինքն. խնդրանքի արդյունքը.

    Օրինակ (այս ամենը ընթացակարգի կոդով)

    Հայտարարել փոփոխականներ ՀԱՅՏԱՐԱՐԵԼ @id ՄԵԾ ՀԱՅՏԱՐԱՐԵԼ @fio VARCHAR(100) ՀԱՅՏԱՐԱՐԵԼ @summa FLOAT --հայտարարել կուրսորը ՀԱՅՏԱՐԱՐԵԼ test_cur ԿՈՒՐՍՈՐԸ ՀԱՄԱՐ SELECT id, fio, summa FROM test_table -- բացել կուրսորը ԲԱՑ test_cur -- կարդալ առաջին տողի տվյալները կուրսորում --և գրեք դրանք FETCH NEXT FROM test_cur INTO @id, @fio, @summa փոփոխականների վրա -- գործարկեք օղակը մինչև կուրսորի տողերը վերջանան Մինչ @@FETCH_STATUS = 0 BEGIN -- մենք կարող ենք գործարկել sql հրահանգներ օղակի յուրաքանչյուր կրկնության համար -- ...................SQL հրահանգներ................... - -կարդացեք կուրսորի հաջորդ տողը FETCH NEXT FROM test_cur INTO @id , @fio, @summa END - փակել կուրսորը CLOSE test_cur DEALLOCATE test_cur

    Մենք մանրամասնորեն խոսեցինք կուրսորների մասին «Using Cursors and Loops in Transact-SQL» նյութում:

    DML հարցումներ

    DML (Տվյալների մանիպուլյացիայի լեզու) SQL հայտարարություններ են, որոնք շահարկում են տվյալները: Դրանք ներառում են ընտրել, թարմացնել, տեղադրել, ջնջել:

    ԸՆՏՐԵԼ

    Օրինակ

    SELECT * FROM test_table-ից

    ԹԱՐՄԱՑՆԵԼ

    Օգտագործվում է տվյալների թարմացման համար

    Օրինակ

    Աղյուսակի բոլոր տողերը կթարմացվեն UPDATE test_table SET summa=500 -- միայն 10-ից մեծ ID ունեցող տողերը կթարմացվեն UPDATE test_table SET summa=100 WHERE id > 10

    ՆԵՐԴՐԵԼ

    Տվյալների ավելացման օպերատոր

    Մեկ տողի ավելացում INSERT INTO test_table (fio, summa, date_create, comment) VALUES ("Full name",100, "10/26/2014", "test record") -- զանգվածային հավելում հարցման հիման վրա INSERT INTO test_table SELECT fio , ամփոփում, ամսաթիվ_ստեղծում , մեկնաբանություն FROM test_table-ից

    ՋՆՋԵԼ

    Տվյալները ջնջելու համար կարող եք օգտագործել այս օպերատորը:

    Օրինակ

    Ամբողջ աղյուսակը ջնջվում է DELETE test_table - ջնջվում են միայն այն տողերը, որոնք համապատասխանում են DELETE test_table պայմանին WHERE summa > 100

    Վերջ, ուղեցույցն ավարտվեց: Հուսով եմ, որ դա ինչ-որ կերպ օգնեց ձեզ: Հաջողություն!