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



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

37 

 

4200 | 11600 



4500 | 16100 

4800 | 25700 

4800 | 25700 

5000 | 30700 

5200 | 41100 

5200 | 41100 

6000 | 47100 

(10 rows) 

Осында  алғашқыдан  (ең  төменгі)  ағымдағыдан  сомада  жалақы 

жиналады;  ол  қайталанатын  ағымдағы  мәндерді  қосқандағы  нәтиже  (бірдей 

жалақылы қатарға назар). 

 Терезелік функцияларды сұраныста тек SELECT тізбегі мен ORDER BY 

сөйлемінде  қолдануға  рұқсат.  GROUP  BY,  HAVING  және  WHERE 

сөйлемдерін  қосқанға,  қалған  барлық  сөйлемдерде  тыйым  салынған.  Бұл 

логикалық  олар  агрегаттық  функциялардан  кейін  орындалады,  демек 

агрегаттық  функцияны  терезеліктен  шақыруға,  бірақ  керісінше  емес, 

болатынымен  түсіндіріледі.  Терезе  жақтауларын  басқа  тәсілдермен  де 

анықтауға болады. 

Егер  қатарларды  терезелік  функцияларды  есептегеннен  кейін 

фильтрациялау  немесе  топтау  керек  болса,  онда  салынған  сұранысты 

қолдануға болады. Мысалы: 

SELECT depname, empno, salary, enroll_date 

FROM 

(SELECT depname, empno, salary, enroll_date, 



rank()  OVER  (PARTITION  BY  depname  ORDER  BY  salary  DESC,  empno)  AS 

pos 


FROM empsalary 

) AS ss 


WHERE pos < 3; 

Көрсетілген  сұраныс  тек  ішкі  сұраныстағы  rank  (реттік  нөмір)  үштен 

кіші  қатарларды  көрсетеді.    Сұраныста  бірдей  анықталған  терезелер  үшін 

бірнеше терезелік функциялар есептелініп жатыр, әрине, әрқайсысы үшін жеке 

OVER  сөйлемін  жазуға  болады,  бірақ  сонымен  қатар  ол  көшіріліп  отырады, 

демек  осы  амал  сөзсіз  қателіктерге  итермелейді.  Сондықтан  терезенің 

анықтамасын WINDOW сөйлемінде айырып қойған дұрыс, одан кейін OVER 

сөйлемінде оған сілтемелеу керек. Мысалы: 

SELECT sum(salary) OVER w, avg(salary) OVER w 

FROM empsalary 

WINDOW w AS (PARTITION BY depname ORDER BY salary DESC); 

 

4.5 Мұрагерлік  



 

 


38 

 

Мұрагерлік 



  бұл  объектілі

бағытталғын  деректер  қорынан  алынған 



түсінік.  Ол  деректер  қорын  жобалауда  көптеген  қызықты  мүмкіншіліктерді 

ашады.  Мысалыға  екі  кесте  құрылады:  :  cities  (қалалар)  және  capitals  (штат 

астаналары).  Әрине,  штат  астаналары  қала  болып  табылады,  сондықтан 

барлық  қалаларды  көру  керек  болса,  онда  оларды  анық  түрде  нәтижеге  қосу 

керек. Егер тапқырлық танытылса келесі шешімді ұсынуға болады: 

CREATE TABLE capitals ( 

name text, 

population real, 

altitude int, -- (высота в футах) 

state char(2) 

); 

CREATE TABLE non_capitals ( 



name text, 

population real, 

altitude int -- (высота в футах) 

); 


CREATE VIEW cities AS 

SELECT name, population, altitude FROM capitals 

UNION 

SELECT name, population, altitude FROM non_capitals; 



Ол  мәліметтерді  алғанша  қанағаттандыруы  мүмкін,  алайда  бірнеше 

қатарларды өзгерту керек болса, онда ол әдемі көрінбейді.  

Сондықтан жақсырақ шешім бар: 

CREATE TABLE cities ( 

name text, 

population real, 

altitude int -- (фут өлшеміндегі биіктік) 

); 


CREATE TABLE capitals ( 

state char(2) 

) INHERITS (cities);  

Көрсетілген  жағдайда  capitals  кесте  қатары  cities  ата-ана  кестесінен  

барлық бағандарды (name, population және altitude) мұрагер етеді. name бағаны 

text  типті;  ол  айнымалы  ұзындықты  мәтіндік  қатарға  арналған  PostgreSQL 

жеке  типі.  Ал  астаналар  кестесіне  штат  көрсетілетін  қосымша  state  бағаны 

қосылған.    PostgreSQL

де  кесте  басынан  бастап  немесе  бірнеше  басқа 



кестелерден мұрагерлік ете алады.  

Мысалы,  келесі  сұраныс  теңіз  деңгейнінен  жоғары  500  фут  биіктікте 

орналасқан астаналарды қосып барлық қалаларды шығарады: 

SELECT name, altitude 

FROM cities 

WHERE altitude > 500; 

Оның орындалу нәтижесі: 



39 

 

name | altitude 



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

Las Vegas | 2174 

Mariposa | 1953 

Madison | 845 

(3 rows)  

Ал  келесі  сұраныс  500  футтан  жоғары  орналасқан  штат  астанасы  болып 

табылмайтын қалаларды табады:  

SELECT name, altitude 

FROM ONLY cities 

WHERE altitude > 500; 

name | altitude 

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

Las Vegas | 2174 

Mariposa | 1953 

(2 rows) 

Бұл  жерде  cities  кестесінің  атының  алдындағы  ONLY  сөзі  сұранысты,  

cities  кестесінен  мұрагер  еткен  кестелерді  қоспай,  тек  cities  кестесінің 

қатарлары  үшін  орындалатынана  көрсетіп  отыр.  Айтылған  көптеген 

операторлар 

  SELECT,  UPDATE  және  DELETE 



  ONLY  нұсқауларын 

қолдайды.  

 

Мұрагерлік жиі пайдалы болғанымен, ол шектелген бірегейлер мен ішкі 



кілттермен кіріктірілмеген, сол себептен оның қолдануын шектейді.  

 

 



 


40 

 

5 SQL синтаксисі 



 

 

5.1  Лексикалық құрылым 



 

 

SQL


бағдарлама командалар жүйелігінен тұрады. Команда, өз алдында, 

нүкте  үтірмен  аяқталатын  («;»)  компоненттер  жүйелігін  білдіреді.  Кіріс 

ағынның  соңы  сондай

ақ  команда  соңы  ретінде  саналады.  Дәл  қандай 



компоненттер  арнайы  команда  үшін  мүмкін  болатын  оның  синтаксисіне 

байланысты.  Команда  компоненті  ретінде  кілттік  сөз,  идентификатор, 



бағымдағы  идентификатор,  қатар  (немесе  константа)  немесе  арнайы  таңба 

болуы мүмкін. Әдетте компоненттер бос орын (табуляция, бос орын, қатарды 

ауыстыру)  таңбаларымен  бөлінеді,  бірақ  белгісіздік  (мысалы,  арнайы  таңба 

басқа типті компонент жанында болған жағдайда) болмаса, оның қажеті жоқ.  

Мысалы,  келесі  мәтін  дұрыс  SQL

бағдарлама  болып  табылады 



(синтаксис жағынан): 

SELECT * FROM MY_TABLE; 

UPDATE MY_TABLE SET A = 5; 

INSERT INTO MY_TABLE VALUES (3, 'hi there'); 

Бұл бір



бір қатарда тұратын (алайда оларды бір қатарға қосуға болады 



немесе,  керісінше,  команданы  бірнеше  қатарда)  үш  командадан  тұратын 

жүйелік.  Бұдан  басқа,  SQL

бағдарлама  түсіндірмелер  болуы  мүмкін.  Олар 



командалар компоненттері емес, ал негізінде бос орын таңбаларына тепе

тең.  



SQL  синтаксисі  қандай  компоненттер  командаларды  сәйкестендіретінін,  ал 

қандай 


 олардың операндтары мен параметрдерін қатты қатал анықтамайды. 

Алғашқы  бірнеше  компоненттерде  әдетте  команда  аты  тұрады,  сол  себепті 

келесі  мысалда  «SELECT»,  «UPDATE»  және  «INSERT»  командалары 

айтылады.  Бірақ  та,  мысалыға,  UPDATE  командасы  әрдайым    белгілі  бір 

орында  SET  компоненті  тұруын  талап  етеді,  ал  INSERT  келтірілген  түрде 

VALUES компонентінің болуын талап етеді.  

 

5.1.1 Идентификаторлар мен кілттік сөздер  

 

 

Жоғарыда көрсетілген командаларда SELECT,  UPDATE және VALUES 



компоненттері болды;олар кілттік сөздер мысалы болып табылады, яғни SQL 

тілінде бекітілген мағынасы бар сөздер.  

MY_TABLE  және  А  компоненттері  идентификатор  мысалы  болып 

табылады. Олар қайда қолданылатына байланысты кесте, баған және деректер 

қорының басқа объектілерінің аттарына идентификация жасайды. Сондықтан 

оларды 


кейде 

жәй 


«аттар» 

деп 


атайды. 

Кілттік 


сөздер 

мен 


идентификаторлардың  лексикалық  құрылымдары  бірдей,  яғни  тілді  білмей 

кейбір  компоненттерді  кілттік  сөз  немесе  идектификатор  ретінде  анықтау 

мүмкін емес.  

 



жүктеу 0,72 Mb.

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




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

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