Дипломного проекта  разработка серверной части веб 



жүктеу 0,72 Mb.
Pdf просмотр
бет6/22
Дата22.05.2018
өлшемі0,72 Mb.
#16329
түріДиплом
1   2   3   4   5   6   7   8   9   ...   22

25 

 

Hayward | 37 | 54 | | 1994-11-29 



(3 rows) 

Таңдамада қатарларға сілтемеден басқа айнымалыларды жазуға болады. 

Мысалы: 

SELECT city, (temp_hi+temp_lo)/2 AS temp_avg, date 

 FROM weather; 

 Нәтижесі: 

city | temp_avg | date 

---------------+----------+------------ 

San Francisco | 48 | 1994-11-27 

San Francisco | 50 | 1994-11-29 

Hayward | 45 | 1994-11-29 

(3 rows) 

AS  сөйлемінің  шығыс  қатарының  атын  өзгертуге  болатынына  назар 

аудару керек. (AS сөзін жазу мақсат емес.) 

Қайтаратын  қатар  санын  шектейтін    WHERE  сөйлемін  қосу  арқылы 

сұранысты  «шартпен»  толықтыруға  болады.  WHERE  сөйлемінде  қатар 

фильтрі  ретінде  жұмыс  атқаратын    логикалық  өрнек  (шындыққа  тексеріс) 

көрсетіледі:  нәтижесіде  өрнегі  шындық  болған  қатарлар  ғана  қалады.  Бұл 

өрнекте әдеттегі логикалық операторлар (AND, OR және NOT) болуы мүмкін. 

Мысалы, келесі сұраныс Сан-Фрасциско қаласында жауын күндері қандай ауа-

райы болғанын көрсетеді:  

SELECT * FROM weather  

WHERE city = 'San Francisco' AND prcp > 0.0; 

Нәтижесі: 

city | temp_lo | temp_hi | prcp | date 

---------------+---------+---------+------+------------ 

San Francisco | 46 | 50 | 0.25 | 1994-11-27 

(1 row)  

SELECT  *  жиі  дайындалусыз,  тосын  жазады,  алайда  өндірістік  кодта 

жаман  стиль  ретінде  қабылданады,  өйткені  осындай  сұраныстар  нәтижесі 

жаңа қатар қосқанда ауысатын болады. 

Сұранысты белгілі ретпен алуға болады: 

SELECT * FROM weather  

ORDER BY city; 

Нәтижесінде көрсетіледі: 

city | temp_lo | temp_hi | prcp | date 

---------------+---------+---------+------+------------ 

Hayward | 37 | 54 | | 1994-11-29 

San Francisco | 43 | 57 | 0 | 1994-11-29 

San Francisco | 46 | 50 | 0.25 | 1994-11-27 

Бұл мысалда сорттау реті толық анықталмаған, сондықтан пайдаланушы 

Сан-Франциско  қатарын  кез  келген  ретпен  алуы  мүмкін.  Бірақ  жоғарыдағы 

нәтижені нақты алу үшін келесі команданы теру керек: 



26 

 

SELECT * FROM weather 



ORDER BY city, temp_lo; 

Қажет болса көшірме қатарларды сұраныстан алып тастауға болады: 

SELECT DISTINCT city  

FROM weather; 

 

Алынған нәтиже: 



city 

--------------- 

Hayward 

San Francisco 

(2 rows) 

Осы  жерде  де  қатарлар  реті  өзгертіле  алады.  Өзгеріссіз  нәтижелер  алу 

үшін DISTINCT және ORDER BY сөйлемдерін қосу керек: 

SELECT DISTINCT city 

FROM weather 

ORDER BY city; 

 

3.6 

 Кестелерді қосу 

 

Осыған  дейін  барлық  тапсырыстар  тек  бір  кестеге  қатынасты.  Алайда 



сұраныстар бір уақытта бірнеше кестелерге қатынай алады немесе сол кестеге 

әртүрлі қатарлар жиынтығын өңдейтіндей етіп қатынауға болады. Бір кестенің 

әртүрлі  қатар  жиынына  немесе  бірнеше  кестелерге  бір  уақытта  қатынайтын 

сұраныс  қосылым  (JOIN)  деп  аталады.  Мысалы,  пайдаланушы  барлық 

қалалардың ауа-рай жағдайы мен координаталарын шығарғысы келді. Ол үшін 

weather  кестесінің  әр  қатарындағы  city  бағанын  cities  кестесінің  барлық 

қатарындағы    салыстыру  name  бағанымен  салыстыру  керек  және  осы 

мағыналар сәйкескен қатарларды таңдау керек.  

Айта  кететін  жайт,  бұл  нақты  модель  емес.  Әдетте  қосылымдар 

тиімдірек  орындалады  (мүмкін  жұп  қатарлардың  бәрі  салыстырылмайды), 

бірақ бұның бәрі пайдаланушыдан жасарын түрде өтеді. Оны келесі сұраныс 

арқылы жүзеге асырса болады: 

 SELECT * 

FROM weather, cities 

WHERE city = name; 

Алынған нәтиже: 

city |temp_lo|temp_hi| prcp| date | name | location 

--------------+-------+-------+-----+-----------+--------------+---------- 

San Francisco| 46| 50| 0.25| 1994-11-27| San Francisco| (-194,53) 

San Francisco| 43| 57| 0| 1994-11-29| San Francisco| (-194,53) 

(2 rows) 

Мәліметтерді  алудың  екі  ерекшелігіне  назау  аудару  керек.  PostgreSQL 

ескі нұсқаларын қосқанда кейбір ДҚБЖ-де DISTINCT қосымшасын іске асыру 



27 

 

қатарларды  автоматты  түрде  реттейді,  сондықтан  ORDER  BY  қосу  маңызды 



емес.  Бірақ  SQL  стандарты  оны  талап  етпейді  және  PostgreSQL  ағымдағы 

нұсқасы DISTINCT кейін қатарлардың анық ретіне кепілдік бермейді.  

Нәтижесінде  Хейуорд  (Hayward)  қаласымен  қатар  жоқ.  Оның  себебі 

cities  кестесінде  бұл  қалаға  мәліметтер  қатары  жоқ,  ал  қосылым  кезінде 

weather кестесінің сәйкесін таппаған барлық қатарлары түсіріледі. 

Қала  атауы  екі  бағанда  болып  қалды.  Бұл  дұрыс  және  түсіндірілуі: 

weather  және  cities  кестелерінің  қатарлары  қосылғанын  көрсетеді.  Алайда 

практикада  жағымсыз,  сондықтан    *  қолданғаннан,    ең  жақсысы  керек 

қатарларды айқын тізіп жазған дұрыс: 

SELECT city, temp_lo, temp_hi, prcp, date, location 

FROM weather, cities 

WHERE city = name;  

Негізі  жағымды  стиль  ретінде  қосылым  сұранысында  бағандардың 

толық атын жазған саналады, өйткені кейінірек кестеге қайталанатын қатарлар 

қосылуы мүмкін жағдайда сұраныс сынбас үшін жазады.  

 

3.7 



 Агрегаттық функциялар   

 

Көптеген  реляционды  деректер  қоры  серверлері  сияқты  PostgreSQL 



агрегаттық  фунцияларды  қолдайды.  Агрегаттық  функциялар  көптеген 

қатарларды  өңдей  отырып,  тек  бір  мағынаны  есептейді.  Мысалы,  есептейтін 

агрегаттық  функциялар  бар:  count  (мөлшері),  sum  (суммасы),  avg 

(арифметикалық орта), max (максимум) және min (минимум) қатар жиынығы 

үшін. Мысалыға, барлық көріністер ішінде ең жоғарғы температураны табуға 

болады: 


SELECT max(temp_lo) FROM weather; 

max 


----- 

46 


(1 row) 

Егер кай қалада (немесе қалаларда) осы температура бақыланғанын білу 

керек болса, оны шығаруға болады: 

SELECT city FROM weather  

WHERE temp_lo = max(temp_lo); НЕВЕРНО 

Алайда бұл амал іске аспайды, өйткені max агрегаттық функциясын  

WHERE  сөйлемінде  қолдануға  болмайды.  (Бұл  шектеу  WHERE  сөйлемі  қай 

қатар үшін агрегаттық фунцияны есептеу керектігін анықтайды, сол себептен 

ол,  демек,  агрегаттық  фунцияға  дейін  есептелуі  керек.)  Бірақ,  әдеттегідей, 

сұранысты  қайта  іске  қосуға  керек  және  керекті  нәтиже  алу  үшін  сұраныс 

ішіндегі сұранысты қолдану керек: 

SELECT city FROM weather 

WHERE temp_lo = (SELECT max(temp_lo) FROM weather); 

city 



жүктеу 0,72 Mb.

Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   ...   22




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

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау