13 հիմնական SQL հրամաններ և հարցումներ, որոնք ծրագրավորողները պետք է իմանան


Յուրաքանչյուր մեծ կամ դինամիկ կայք ինչ-որ կերպ օգտագործում է տվյալների բազա, և երբ զուգակցվում է Structured Query Language (SQL) հետ, տվյալների մանիպուլյացիայի հնարավորություններն իսկապես անսահման են:

Տվյալների բազաները կազմում են ժամանակակից վեբի հիմքը: Յուրաքանչյուր մեծ կամ դինամիկ կայք ինչ-որ կերպ օգտագործում է տվյալների բազա, և երբ զուգակցվում է SQL հրամանների հետ (Structured Query Language), տվյալների մանիպուլյացիայի հնարավորություններն իսկապես անսահման են:

Տվյալների բազայի աղյուսակից վերադարձված տվյալների շատ անուններ կան: Տվյալները սովորաբար կոչվում են Տողեր, գրառումներ, կամ բազմակներ: Այս տերմիններից յուրաքանչյուրը այս հոդվածում օգտագործվում է որպես փոխարինող:

Նախաբան

Բոլոր օրինակները հիմնված են չորս գեղարվեստական աղյուսակների վրա: հաճախորդների աղյուսակը պարունակում է հաճախորդների անունը և տարիքը.

Name

Տարիքը

Joe

99

James

78

Ryan

101

բարձրություններ աղյուսակը պարունակում է ցանկացած անձի անունը և հասակը.

Name

Բարձրություն

Joe

101

James

102

Ryan

103

Աշխատակազմ աղյուսակը պարունակում է անձնակազմի անդամների անունը և տարիքը, ճիշտ նույնը, ինչ հաճախորդների աղյուսակը.

Name

Տարիքը

Joe

17

James

24

Ryan

18

Վերջնական աղյուսակը մարդիկ պարունակում է մարդկանց անունն ու տարիքը, ինչպես հաճախորդների և անձնակազմի աղյուսակները.

Name

Տարիքը

Joe

98

James

99

Ryan

100

1. Ընտրեք

select հրամանը SQL-ում ամենապարզն է, բայց ամենակարևոր SQL հարցումներից մեկը SQL հրամանների փաթեթում:

Լավագույն պրակտիկա է համարվում ձեր վերապահված SQL շարահյուսությունը մեծատառերով գրելը, քանի որ այն հեշտացնում է ընտրելու հրամանը ընթեռնելի և հասկանալի:

Ինչպես ենթադրում է իր անունից, select-ն օգտագործվում է տվյալների բազայից տվյալների ընտրելու համար: Ահա ամենապարզ օգտագործումը.

SELECT * FROM table;

Այս հրամանի տողում կա երկու մաս. Առաջին մասը (SELECT *) նշում է, թե որ սյունակները կցանկանայիք ընտրել:

Աստղանիշը ցույց է տալիս, որ դուք ցանկանում եք ընտրել բոլոր սյունակները սահմանված աղյուսակից: Երկրորդ մասը (FROM աղյուսակից) պատմում է ձեր տվյալների բազայի շարժիչին, թե որտեղից եք ցանկանում առբերել այս տվյալները:

Փոխարինեք աղյուսակը ձեր տվյալների բազայի աղյուսակի անունով:

Ընտրելու այս հայտարարությունը հայտնի է որպես ընտրել աստղ: Աստղանիշը լավ միջոց է պարզելու, թե ինչ տվյալներ կան աղյուսակում, բայց միշտ չէ, որ խորհուրդ է տրվում արտադրության կոդերի համար:

Շատ ժամանակ դուք կաշխատեիք կոդի տոննա տողերի հետ, ինչը նշանակում է, որ ձեր ընտրած * հայտարարությունը ձեր համակարգը կդնի անորոշ ռեժիմի: Դա պայմանավորված է նրանով, որ այն փորձում է բեռնել տվյալների բոլոր տողերը սահմանված աղյուսակից:

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

Դուք կարող եք հստակորեն նշել, թե որ սյունակները կցանկանայիք առբերել, այսպես.

SELECT age, name FROM people;

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

Եթե ցանկանում եք ընտրել լրացուցիչ տվյալներ, բայց այն չի պահվում ձեր աղյուսակներից որևէ մեկում, կարող եք դա անել այսպես.

SELECT age, '1234' FROM people;

Մեկ չակերտների մեջ գտնվող ցանկացած տող կվերադարձվի սյունակի անվանը համապատասխանելու փոխարեն:

2. Որտեղ

Ընտրել հրամանը հիանալի է տվյալների առբերման համար, բայց ի՞նչ, եթե ցանկանում եք զտել արդյունքները որոշակի չափանիշների հիման վրա:

Ինչ վերաբերում է միայն այն մարդկանց, ովքեր կապույտ աչքեր ունեն: Ինչ վերաբերում է հունվարին ծնված մարդկանց, ովքեր աշխատում են որպես մեխանիկ:

Այստեղ գալիս է where հրամանը: Այս SQL հրամանի օգտագործումը թույլ է տալիս Ձեզ կիրառել պայմաններ ընտրված հայտարարության հետ, և դուք պարզապես այն կցում եք հայտարարության վերջում.

SELECT age, name FROM people WHERE age < 100

Այս հարցումն այժմ սահմանափակվում է 100 տարեկանից ցածր մարդկանց համար:

Դուք կարող եք համատեղել բազմաթիվ պայմաններ՝ օգտագործելով AND օպերատորը.

SELECT * FROM customer WHERE age > 80 AND age < 100;

AND հրամանն աշխատում է ճիշտ այնպես, ինչպես գործում է անգլերենում. այն կիրառում է մեկ այլ պայման հայտարարության համար:

Մեկ այլ հրաման, որը կարող է օգտագործվել դրա հետ միասին, ORն է: Ահա մի օրինակ.

SELECT * FROM customer WHERE age > 10 OR name = 'Joe';

Այս հարցումը վերադարձնում է գրառումներ, որտեղ տարիքը 90-ից մեծ է, կամ անունը հավասար է Ջո-ին:

3. Պատվիրեք

order հրամանն օգտագործվում է արդյունքները աճման/նվազման կարգով դասավորելու համար։ Պարզապես ավելացրեք այն ձեր հայտարարության վերջում, որտեղ հայտարարությունից հետո, եթե օգտագործում եք մեկը.

SELECT * FROM customer ORDER BY age DESC;

Դուք պետք է նշեք սյունակը և կարգը, որը կարող է լինել ASC աճման համար կամ DESC նվազման համար: Եթե ASC կամ DESC սահմանված չէ, ապա տեսակավորման կարգը լռելյայնորեն աճող կլինի:

Դուք կարող եք պատվիրել հետևյալ սյունակներով.

ընտրեք * անձնակազմի կարգից ըստ տարիքի, անունի;

ՊԱՏՎԻՐԵԼ ԸՍՏ-ը ամենաօգտակար հրամաններից մեկն է, երբ համակցվում է այլ հրամանների հետ: Ոչ բոլոր հարցումները կվերադարձնեն տվյալները տրամաբանական կամ պատվիրված եղանակով. այս հրամանը թույլ է տալիս փոխել դա:

4. Միացեք

Միանալու հրամանը sql-ում օգտագործվում է մեկ կամ մի քանի աղյուսակներում պահվող առնչվող տվյալների միանալու համար: Համակցված արդյունքներ ստանալու համար կարող եք միացնել մեկ աղյուսակը մյուսին:

Ահա հիմնական օրինակը.

SELECT age, name, height FROM people 
LEFT JOIN heights 
USING (name);

Դուք պետք է սկսեք LEFT JOIN շարահյուսությամբ, որը սահմանում է, որ ցանկանում եք միանալ աղյուսակին՝ օգտագործելով ձախ տիպի միացում:

Հաջորդը, նշեք աղյուսակը, որին ցանկանում եք միանալ (բարձրությունները): USING (անուն) շարահյուսությունը նշում է, որ name սյունակը կարելի է գտնել երկու աղյուսակներում, և սա պետք է օգտագործվի որպես հիմնական բանալի՝ աղյուսակները միմյանց միացնելու համար:

Մի անհանգստացեք, եթե ձեր սյունակներն ունեն տարբեր անուններ յուրաքանչյուր աղյուսակում: Դուք կարող եք ՕԳՏԱԳՈՐԾԵԼ-ի փոխարեն օգտագործել ՄԻԱՑՎԱԾ՝

SELECT a.age, a.name,b.Height FROM people a LEFT JOIN heights as b ON a.name = b.name;

On հայտարարության մեջ հստակ նշվում է, թե որ սյունակները պետք է ստեղնվեն: Կան բազմաթիվ տեսակի միացումներ; ահա դրանց օգտագործման արագ ամփոփումը.

  • (INNER) JOIN վերադարձնում է երկու աղյուսակների համընկնող տողերը:
  • ՁԱԽ (ԴՈՒՐՍԻ) ՄԻԱՑՈՒՄԸ վերադարձնում է ձախ աղյուսակի բոլոր տողերը՝ աջ աղյուսակի ցանկացած համընկնումով: Եթե համընկնումներ չկան, ձախ աղյուսակի գրառումները դեռ վերադարձվում են:
  • ԱՋ (ԱՐՏԱՔԻՆ) ՄԻԱՑՈՒՄ-ը ձախ միացման հակառակն է. աջ աղյուսակի բոլոր տողերը վերադարձվում են ձախ աղյուսակի բոլոր համընկնումների հետ միասին:
  • ԼԻՐԱԿԱՆ (ԱՐՏԱՔԻՆ) ՄԻԱՑՈՒՄԸ վերադարձնում է ցանկացած աղյուսակում համընկնող ցանկացած գրառում:
  • ԱՆՀԱՎԱՍԱՐ ՄԻԱՑՈՒՄ. Երկու աղյուսակներից չհամընկնող գրառումները արդյունք են:

5. Այլանուն

Alias հրամանն օգտագործվում է աղյուսակը ժամանակավորապես վերանվանելու համար: Դա մականուն է, որը գոյություն ունի ձեր կողմից իրականացվող անհատական գործարքի ներսում:

Ահա թե ինչպես եք այն օգտագործում.

SELECT A.age FROM people as A;

Դուք կարող եք օգտագործել ցանկացած վավեր անուն, որը ցանկանում եք, բայց միշտ ավելի լավ է օգտագործել այբուբենի տառերը: Յուրաքանչյուր սյունակի անունից առաջ կեղծանունը դրվում է նախածանցով:

Այս կեղծանունը նշանակվում է աղյուսակին այն հայտարարելուց անմիջապես հետո: Դա նույնն է, ինչ անել սա.

SELECT people.age FROM people;

Սեղանի երկար անուն մուտքագրելու փոխարեն, դուք կարող եք մուտքագրել պարզ և հեշտ հիշվող տառ:

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

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

SELECT staff.age, staff.name, customers.age, customers.name FROM staff, customers;

Ահա նույն հարցումը կեղծանուններով.

SELECT A.age, A.name, B.age, B.name FROM staff A, customers B;

Անձնակազմի սեղանին տրվում է A, իսկ հաճախորդների սեղանին` B: Աղյուսակների փոխանունն օգնում է ձեր կոդը ավելի հասկանալի դարձնել և նվազեցնել մուտքագրման քանակը, որը դուք պետք է անեք:

Դուք կարող եք նաև վերանվանել կեղծանունով սյունակը՝ օգտագործելով AS հրամանը՝

SELECT age AS person_age FROM people;

Երբ այս հարցումը կատարվի, սյունակն այժմ կկոչվի անձի_տարիքը, ոչ թե տարիքը:

6. Միություն

Union-ը հիանալի հրաման է, քանի որ այն թույլ է տալիս միմյանց տողեր ավելացնել: Ի տարբերություն միացումների, որոնք ավելացնում են համապատասխան սյունակներ, միությունը կարող է ավելացնել անկապ տողեր՝ պայմանով, որ դրանք ունենան սյունակների նույն թիվը և անվանումը:

SELECT age, name FROM customer
UNION 
SELECT age, name FROM staff;

Դուք կարող եք մտածել միության մասին որպես երկու հարցումների արդյունքները համադրելու միջոց: Միությունը կվերադարձնի արդյունքներ միայն այն դեպքում, երբ երկու հարցումների միջև կա եզակի տող:

Դուք կարող եք օգտագործել UNION ALL շարահյուսությունը՝ վերադարձնելու բոլոր տվյալները՝ անկախ կրկնօրինակներից.

SELECT age, name FROM customer
UNION ALL
SELECT age, name FROM staff;

Ուշադրություն դարձրեք, թե ինչպես է փոխվում տողերի հերթականությունը: Միությունը գործում է ամենաարդյունավետ ձևով, ուստի վերադարձված տվյալները կարող են տարբերվել ըստ հերթականության:

Միավորման համար հնարավոր օգտագործման դեպքը ենթագումարն է. դուք կարող եք միավորել ընդհանուր գումարի հարցումը առանձին ընդհանուրների հարցմանը որոշակի սցենարի համար:

7. Ներդիր

Երբեմն ցանկանում եք նոր տվյալներ ավելացնել գոյություն ունեցող տվյալների բազայում/աղյուսակում: Այստեղ գալիս է insert հրամանը SQL-ում:

VALUES շարահյուսությունն օգտագործվում է մուտքագրվող արժեքները տրամադրելու համար:

INSERT INTO people(name, age) 
VALUES('Joe', 102);

Դուք պետք է նշեք աղյուսակի անունը (մարդիկ) և այն սյունակները, որոնք ցանկանում եք օգտագործել (անուն և տարիք): VALUES շարահյուսությունն օգտագործվում է մուտքագրվող արժեքները տրամադրելու համար: Դրանք պետք է լինեն նույն հաջորդականությամբ, ինչ նախկինում նշված սյունակները:

Դուք չեք կարող նշել ներդիրների համար կետ, և դուք պետք է համոզվեք, որ հետևում եք աղյուսակի ցանկացած անհրաժեշտ սահմանափակումներին, որոնք առկա են:

8. Թարմացնել

Որոշ տվյալներ տեղադրելուց հետո բնական է, որ պետք է որոշակի տողեր փոխել: Ահա թարմացնել հրամանի շարահյուսությունը.

UPDATE people SET name = 'Joe', age = 101;

Դուք պետք է նշեք աղյուսակը, որը ցանկանում եք փոխել, այնուհետև օգտագործեք SET շարահյուսությունը՝ նշելու սյունակները և դրանց նոր արժեքները:

Ավելի կոնկրետ լինելու համար կարող եք օգտագործել WHERE կետերը ճիշտ այնպես, ինչպես ընտրված հայտարարություն անելիս.

UPDATE people SET name = 'Joe', age = 101 WHERE name = 'James';

Դուք նույնիսկ կարող եք նշել մի քանի պայմաններ՝ օգտագործելով AND/OR:

UPDATE people SET name = 'Joe', age = 101 WHERE (name = 'James' AND age = 100) OR name = 'Ryan';

Ուշադրություն դարձրեք, թե ինչպես են փակագծերը օգտագործվում պայմանները սահմանափակելու համար:

9. Վերև

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

Եթե փորձեիք տեղադրել Joe-ի մի քանի արժեքներ, ձեր տվյալների բազայի շարժիչը սխալ կթողնի և կհրաժարվի դա անել (միանգամայն ճիշտ):

UPSERT-ը թույլ է տալիս թարմացնել գրառումը, եթե այն արդեն գոյություն ունի: Սա աներևակայելի օգտակար է: Առանց այս հրամանի, դուք ստիպված կլինեք գրել բազմաթիվ տրամաբանական հայտարարություններ, որպեսզի նախ ստուգեք, թե արդյոք կա գրառում, տեղադրեք, եթե այն չկա, այլապես առբերեք ճիշտ հիմնական բանալին և այնուհետև թարմացրեք:

Ցավոք սրտի, վերնագրերը տարբեր կերպ են իրականացվում տվյալների բազայի տարբեր շարժիչներում: PostgreSQL-ը միայն վերջերս է ձեռք բերել այս հնարավորությունը, մինչդեռ MySQL-ն այն ուներ բավականին երկար ժամանակ: Ահա MySQL շարահյուսությունը հղման համար.

INSERT INTO people(name, age)
VALUES('Joe', 101)
ON DUPLICATE KEY UPDATE age = 101;

Ուշադրություն դարձրեք, թե սա ըստ էության թարմացում և ներդիր հայտարարություն է, որը կարող է ամփոփվել որպես թարմացում, եթե զետեղումը ձախողվեց:

10. Ջնջել

Ջնջել օգտագործվում է գրառումներն ամբողջությամբ հեռացնելու համար. այն կարող է բավականին վնասակար լինել, եթե այն օգտագործվի սխալ ձևով:

Հիմնական շարահյուսությունը շատ հեշտ է օգտագործել.

DELETE FROM people;

Ինչպես մյուս հրամանների մեծ մասը, սա կջնջի ամեն ինչ: Դուք պետք է օգտագործեք այն վայրը, որտեղ այն սահմանափակվում է մի փոքր ավելի խելամիտ թվով տողերով, իդեալական՝ մեկը.

DELETE FROM people WHERE name = 'Joe';

Եթե դուք համակարգ եք մշակում, հաճախ խելամիտ է իրականացնել փափուկ ջնջում: Դուք իրականում երբեք չեք գործարկում delete հրամանը. ավելի շուտ, դուք ստեղծում եք ջնջված սյունակ, այնուհետև ստուգեք այդ սյունակը ձեր ընտրածներում: Սա կարող է խուսափել շատ հնարավոր խայտառակություններից, եթե կարողանաք արագ և հեշտությամբ առբերել ենթադրաբար ջնջված գրառումները: Այնուամենայնիվ, սա չի կարող փոխարինել պատշաճ կրկնօրինակումներին:

11. Ստեղծել աղյուսակ

Աղյուսակներ ստեղծելու համար օգտագործվում է ստեղծել աղյուսակ հրամանը: Սա ևս մեկ պարզ և հիմնական հարցման գործընթաց է.

CREATE TABLE people (
  name TEXT,
  age, INTEGER,
  PRIMARY KEY(name)
);

Ուշադրություն դարձրեք, թե ինչպես են սյունակների անվանումները և սահմանափակումները փակագծերում, և սյունակներին տրվում է համապատասխան տվյալների տեսակ:

Նշված է առաջնային բանալին, ինչպես պահանջվում է տվյալների բազայի ցանկացած լավ ձևավորման մեջ:

12. Alter Table

alter հրամանը SQL-ում օգտագործվում է աղյուսակի կառուցվածքը փոփոխելու համար: Սա մի փոքր սահմանափակ է, քանի որ ձեր տվյալների բազան թույլ չի տա ձեզ փոփոխել աղյուսակը, եթե առկա տվյալները կառաջացնեն կոնֆլիկտ, օրինակ՝ տողը փոխելով ամբողջ թվի: Այդ դեպքերում նախ շտկեք տվյալները, ապա փոփոխեք աղյուսակը: Ահա մի օրինակ.

ALTER TABLE people ADD height integer;

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

13. Կաթիլ սեղան

Վերջնական հրամանն է թողնել աղյուսակը: Մտածեք սա որպես ջնջում, բայց ոչ թե մեկ գրառում ջնջելու փոխարեն, այն վերացնում է յուրաքանչյուր գրառում աղյուսակի հետ միասին: Ահա թե ինչպես կարող եք օգտագործել այն.

DROP TABLE people;

Դա բավականին կտրուկ հրաման է, և պատճառ չկա, որ այն ծրագրավորվի ձեր համակարգում: Այն պետք է կատարվի միայն ձեռքով դեպքերի ճնշող մեծամասնությունում, քանի որ այն կարող է բավականին կործանարար լինել:

SQL հրամաններ այնտեղ գտնվող յուրաքանչյուր ծրագրավորողի համար

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