Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 8 лет назад пользователемИрина Арбузова
1 Ենթահարցումներ (Subqueries)
2 Ենթահարցումը SQL հարցում է օգտագործված մեկ այլ հարցման մեջ : Ենթահարցումները կարող են օգտագործվել Select- ի ցուցակում,from- ի մեջ և wher- ի մեջ : Ենթահարցումը օգտագործվում է երբ անհրաժեշտ է հարցումում օգտագործել տվյալ, որը ստացվում է մեկ այլ հարցման արդյունքում :
3 Դիտարկենք Ships աղյուսակը : Գտնենք ամենաերիտասարդ նավերը, այսինք նավերը որոնք ամենաուշն են ջուր իջեցվել : Select * From Ships Where launched = (Select max(launched) From Ships) From Ships)
4 Կորրելացված հարցումներ (Correlated Subqueries) Ենթահարցումները, որոնք օգտագործում են արտաքին աղյուսակի սյուները կոչվում են կորրելացված հարցումներ : Այս հարցումները աշխատեցվում են արտաքին հարցումի յուրաքանչյուր տողի համար : կոչվում են կորրելացված հարցումներ : Այս հարցումները աշխատեցվում են արտաքին հարցումի յուրաքանչյուր տողի համար : Գտնենք այն նավերը Ships աղյուսակից, որոնք ամենաերտասարդը չեն տվյալ դասում : Select * From Ships sh1 Where launched < (Select max(launched) From Ships sh2 From Ships sh2 Where sh2.class = sh1.class) Where sh2.class = sh1.class)
5 Wher- ում օգտագործվող ենթահարցումների գործողություններ են համեմատման գործողություններ (=,<>, >,like, …) համեմատման գործողություններ (=,<>, >,like, …) in in between between exists exists not exists not exists any, some, or all
6 Exsist օգտագործվում է ենթահարցման գոնե մեկ տողի առկայությունը ստուգելու համար : Իսկ not exsist – ը ենթահարցուման դատարկ աղյուսակ վերադարձնելը : Օրինակ ` Ships աղյուսակից գտնենք այն նավերը, որոնք մասնակցել են գոնե մեկ մարտի : Select * From Ships Where exists (Select ship From Outcomes Where name = ship) Օրինակ ` Ships աղյուսակից գտնենք այն նավերը, որոնք չեն մասնակցել ոչ մի մարտի : Select * From Ships Where not exists (Select ship From Outcomes Where name = ship)
7 From- ում օգտագործվող ենթահարցումներ : Ենթահարցմանը, որը օգտագործվում է From- ում պետք է պարտադիր անուն տրվի : Նորից դիրկենք հետևյալ խնդիրը ` Գտնենք ամենաերիտասարդ նավերը, այսինք նավերը որոնք ամենաուշն են ջուր իջեցվել Select sh1.* From Ships sh1 join (Select max(launched) as maxlaunched From Ships ) sh2 on launched = maxlaunched
8 Select- ում օգտագործվող ենթահարցումներ : Դիտարկենք հետևյալ խնդիրը. Classes աղյուսակի յուրաքանչյուր class- ի համար գտնել ջուր իջեցման առաջին տարին : Select *, mixlaunched = (Select min(launched) From Ships sh Where sh.class = c.class) From Classes c Կամ Select *, (Select min(launched) From Ships sh Where sh.class = c.class) as mixlaunched From Classes c
9 Համեմատման գործողություններ ANY, SOME, or ALL օպերատորներով Դիտարկենք հետևյալ խնդիրը. Գտնենք մարտանավերը, որոնցից ավելի ուշ ջուր իջեցված նավեր կան : Select * from Ships s where launched < any (select launched from Ships s1 from Ships s1 where s1.name <> s.name) where s1.name <> s.name) SOME- ը համարժեք է ANY- ին (Some SQL-92 ստանդարտից է ) Այժմ դիտարկենք հետևյալ խնդիրը. Գտնենք մարտանավերը, որոնք ջուր են իջեցված առաջին տարում : Select * from Ships s where launched <= all (select launched from Ships s1 from Ships s1 where s1.name <> s.name) where s1.name <> s.name)
10 Case…when օպերատոր Դիտարկենք հետևյալ խնդիրը. Յուրաքանչյուր class- ի Classes աղյուսակից համապագասխանեցնել նոր գնահատական A,B կամ C կախված գլխավոր զենքերի քանակից (numGuns)` A եթե 12 հատ են գլխավոր զենքերի քանակը, B` եթե 9 h ատ է, C մնացած դեպքերում : Select *, R = case numGuns when 12 then 'A' when 12 then 'A' when 9 then 'B' when 9 then 'B' else 'C' else 'C' end end from Classes
11 Դիտարկենք նախորդ խնդիրը, բայց գնահատականը որոշենք սանդղակով կախված զենքի տրամաչափից ` C B 18 և ավելի - A Select *, R = case when bore >= 18 then 'A' when bore >= 18 then 'A' when bore >= 15 then 'B' when bore >= 15 then 'B' else 'C' else 'C' end end From Classes order by bore
12 Խնդիրներ 1. Գտնել մատակարաներին, որոնք մատակարարում են և գունավոր տպիչ և PC: 2. Գտնել մատակարաներին, որոնք մատակարարում են 500 և ավելի արագուտյուն ունեցող laptop- ներ, բայց չեն արտադրում տպիչներ :
13 3. Առանց join օգտագործելու գտնել ջրասուզ եղած նավի ջրասուզման ամսաթիվը : 4. Գտնել այն նավերը, որոնք իրենց առաջին ծովամարտին ջրասույզ են եղել : 5. Գտնել դասերը, որոնց նավերը ունեն ամենամեծ տրամաչափի գլխավոր զենք : 6. Գտնել առաջին ծովամարտի անունը : 7. Գտնել ավիաընկերությունները ( նաև անուները ), որոնք մինիմալ թվով չվերթներ ունեն :
14 Ինքնուրույն կատարման համար 1. Գտնել ընդունման կետը ( երը ), օրը ( երը ) և կոդը ( երը ), որտեղ և երբ կատարվել է ամենամեծ գումարի հումքի ընդունումը : 2. Գտնել մատակարարներին, որոնք մատակարարում են գունավոր տպիչ, բայց չեն մատակարարում անգույն տպիչ :
15 3. Գտնել մատակարարներին, որորնք մատակարարում են ամենաթանկ PC- ները : 4. Գտնել քաղաքները, ուր կարելի է հասնել մաքսիմալ թվով ավիաընկերությունների չվերթների միջոցով : 5. Գտնել ավիաընկերությունները ( նաև անունները ), որոնք սպասարկել են մաքսիմալ թվով ուղևորներ ( եթե մի ուղևորը նույն ավիաընկերության ծառայությունից օգտվել է մեկից ավելի անգամ, հաշվել մեկ ուղևոր ):
16 6. Գտնել ամենաշատ նավեր ունեցող երկրները : 7. Գտնել ամնամեծ ծովամարտերը ( որոնվում մաքսիմալ թվով նավեր են մասնակցել ): 8. Գտնել քաղաքները, ուր վայրէջք կատարել են մաքսիմալ թվով ուղևորներ : 9. Գտնել ամենաքիչ չվերթներ ունեցող ուղղությունները (town_from, town_to զույգերը ): Առաջադրանքները ուղարկել հասցեով մինչև հաջորդ դասը նախորդող օրվա 18:00 կամ դասին տետրի մեջ :
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.