Методические указания к практическим работам



бет11/17
Дата17.06.2018
өлшемі1,52 Mb.
#42841
түріМетодические указания
1   ...   7   8   9   10   11   12   13   14   ...   17

Жазуларды сұрыптау.

Жаңағы мысал нақты түрде NAKLS МТ-ні қайталанатындай болуы үшін, NaklID өрісі бойынша жазуларды теруіміз керек. ORDER BY арнайы сөзден басталатын секциясы қолданылады:

SELECT

NaklID, NDate, FName, TName, NSum, NPayedSum,



NRetSum, NCoeff, NRetDate FROM

Nakls, Firms, TypeNakl WHERE

FirmID=NFirm AND TypeID=NType ORDER BY NaklID

Кестелер арасынан байланысты орнатқандай сұрыптауды кезкелген өрістерінен құрастыруға болды.

Қиын тандау критерийлері.

WHERE секциясы арқылы кестелері байланыстырумен бірге, қиын тандау критерийлерді құрастыруымызға болаы. Бұл үшін секцияда NOT, AND, OR түрдегі логикалық операцияларымен байланысқан, оперыторлар саны белгіленеді, мұндағы тильда(~) бегісі қатынастың белгісі:

SELECT

NaklID, NDate, FName, TName, NSum, NPayedSum,



NRetSum, NCoeff, NRetDate FROM

Nakls, Firms, TypeNakl WHERE



FirmID=NFirm AND TypeID=NType AND (NSum>100000 OR NRetSum>0) ORDER BY NaklID

19 сурет. жазулардың қиын тандау критерийдің қорытындысы.

Қатынас опеациясының оң жағынан мәні белгіленеді. Егер ол – мәтінің немесе ауқыт-дата типті болса, ол апострофқа немесе екілік ковычкаға алынуы тиіс. Одан басқа LIKE операциясын қолдана аламыз, ол LIKE операциясынан оң жағындағы мән бүкіл өрісті емес, тек бір бөлігін құрастырса болады.

SELECT BName FROM Books WHERE BName LIKE "Я%" ORDER BY BName


Бұл сұраныс кестеден кітаптің тек «я» әрпінен басталатын

мәндерін алады(20 сурет).



21 сурет. LIKE операцияны қолдануың нәтижесі.

(%) Белгісі оның орнында кезектелген символдар бола алтыны көрсетеді. Келесі сұраныс атында бір рет болса да «Я» әрпі кезесетін кітаптарды тандайды:

SELECT BName FROM Books WHERE BName LIKE "%я%" ORDER BY BName


IN арнайы сөзі арқылы өрістің бола алатын мәндерін тере аламыз. Келесі сұраныс кестенің 1,3,7-ші кітантаптардың аттарын тереді(22 сутер):

SELECT BName FROM Books WHERE BookID IN (. 1, 3, 7)



22 сурет. IN операциясын қолданудың нәтижесі.



23 сурет. SELECT операторымен салынған тізімнің құрастырудың нәтижесі.

IN Операциясынан кейінгі жай жақшада бола алатын міндерін жазудың орнына, SELECT операторын орналастыра аламыз. Егер оларға әкелінген кітаптарды төленбеген барлық сатып алушыларың тізімін көру керек болса, келесі сұранысты құрастыра аламыз(23 сурет).

SELECT FName FROM Firms WHERE FirmID IN

(SELECT NFirm FROM Nakls WHERE NPayedSum=O AND NType IN (1, 7)) ORDER BY Fname

Кестелердің псевдонимері және коментарийлер.

Біздің кестелерде өрістердің сәйкес келетін аттары жоқ, бұл кестенің кез келген өрістің аты кесте аттарының бас әріптерінен басталатындықтан. Ал екі не одан да көп кестелердің өрістер аттары сәйкес келгенде нені істеуіміз керек? Егер біз біздің ережені қолданбасақ, яғни префикстарды қоймасақ, онда екі аты пайда болушы едіжәне келесі фрагмент біркелкілікеместікке әәкелуші еді:

SELECT


NaklID, Date, Name, Name, Sum, PayedSum,...

Біркелкілікеместікті жою үшін өрістер аттары, олардың кестелер аттарымен толтырылады.

SELECT

NaklID, Date, Firms. Name, TypeNakl. Name, Sum, PayedSum,...



Қайталанатын кестелер аттары сұраныстың басқа да секцияларыда кездесетіндіктен оларды атауды қысқарту үшін SQL –де кестелерің аттарының орнына оның псевдонимін қолдануға:

SELECT


NaklID, Date, F. Name, T. Name, Sum, PayedSum,... FROM Nakls, Firms F, TypeNakl T..

Псевдоним секциясында кестенің атынан кейін белгіленеді. Сұраныстың кез-келген комментарий болуы мүмкін:

SELECT

/* өрістерінің қайталанатын аттары кестенің псевдонимдерімен толтырылады*/



NaklID, Date, F. Name, T. Name, Sum, PayedSum,... /* псевдонимдер кестенің атынан кейін символдарымен беріледі*/ FROM Nakls, Firms F, TypeNakl T...

Агрегатты функциялар және жазуларды топтау.

Өрістердің аттарының орнына және/немесе олармен бірге SELECT секциясында келесі агрегатты функцияларының бірін қолдануға болады:

AVG —аргументтің ортаңғы мәнін қайтарады;

COUNT —МТ барлық жазуларына аргументтердің кіру санын есептейді;

MAX —аргументтің максимальді мәнін қайтарады;

MIN —аргументтің минимаьді мәнін қайтарады;

SUM —аргуметтің мәнерін қосады.

Агригатты функцияға келгенде аргуметтің орнына МТ өрістерінен құрастырылған керекті мән болуы ммкін. Мысалы, келесі сұраныс сатып алушылардың қарыздарының орташа мәнін шығарады(24сурет):

SELECT AVG(NSum-NPayedSum-NRetSum)

FROM Nakls

WHERE NType in (1, 7)



24сурет. Сатып алушылар қарыздарының орнташа .

Әкелінген барлық кітаптардың бағасымен барлық әкелушілердің тізімін келесі сұраныс береді ( 25 сурет):

SELECT SUM(NSum), FName FROM Nakls, Firms



WHERE FirmID=NFirm AND NType in (0, 6) • GROUP BY FName

Рис. 25. әкелушілер тізімі.

Толықтай түрдегі агрегатты функцияларымен бірге кестелердің өрістері де бар сұраныстар үшін топты секциялар қажет етеді, онда міндетті түрде барлық секциясында берілген өрістер жазылады.

Агрегатты функцияларды қолданғанда тізімнен қайталанатын өрістер аттарын алып тасталынуы тиіс. Бұл үшін DISTINCT арнайы сөзі қолданылады. Мысалы , төмендегі сұраныс кітаптарды әкелумен байланысқан салымар тізімін қайтарады(26 сурет):



SELECT COUNT(NFirm) FROM Nakls WHERE NType IN (0, 6)

Рис. 26. әкелу туралы салымдардың саны.

Келесі сұраныс әкелушілер санын қайтарады (27сурет):

SELECT COUNT(DISTINCT NFirm) FROM Nakls WHERE NType IN (0, 6)



27сурет. әкелушілер саны




Достарыңызбен бөлісу:
1   ...   7   8   9   10   11   12   13   14   ...   17




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет