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-ի վրա: Լեզուն տիրապետելու համար դուք պետք է իմանաք, թե ինչպես ճիշտ օգտագործել որոշ հրամաններ՝ լավագույն օգտագործման դեպքերի համար: