Э. В. Фуфаев, Д. Э. Фуфаев



жүктеу 10,13 Mb.
Pdf просмотр
бет54/93
Дата19.11.2018
өлшемі10,13 Mb.
#21568
түріОқулық
1   ...   50   51   52   53   54   55   56   57   ...   93

SELECT  кіріктірілген  операторы  бағдарламалаудың  негізгі  тілдерімен 
келісілетін деректердің қҧрылымдарын жасау керек.  
Кіріктірілген SQL-де сҧраныстар екі тҥрге бөлінеді: 
•  кҥтілетін  нəтижелер  деректердің  бір  жолына  сəйкес  келетін  бір 
жолдық сҧраныстар. Осы жол бірнеше бағанның мəнін қҧрауы мҥмкін; 
•  нəтижесі  біртҧтас  жолдар  жинағын  алу  болып  табылатын  көп 
жолды  сҧраныстар.  Бҧл  ретте  қосымша  барлық  алынған жолды  өңдеу 
мҥмкіндігіне ие болу керек. Яғни, алынған жолдар жинағын қарайтын 
жəне өңдейтін механизм болу керек.  
Сҧраныстың  бірінші  тҥрі  -  кіріктірілген  SQL  бар  бір  жолды 
сҧраныс 
— 
төмендегідей 
болатын 
SQL 
операторының 
модификациясын шақырды: 
SELECT [{ALL | DISTINCT}] <қайтарылатын бағандар тізімі> 
INTO <негізгі тілдің ауыспалылар тізімі> 
FROM <бастапқы кестелер тізімі> 
[WHERE <қосу жəне іздеу шарттары>] 
Кіріктірілген  SELECT  операторына  негізгі  тілдің  ауыспалылар 
тізімін  қҧрайтын  жаңа  INTO  операторы  қосылды.  Дəл  осы 
ауыспалыларға  бір  жолдық  сҧратудың  нəтижелері  орналастырылады, 
сондықтан  негізгі  тілдің  ауыспалылар  тізімі  тəртібі  бойынша,  тҥрі 
бойынша  жəне  деректер  көлемі  бойынша  қайтарылатын  бағандар 
тізімімен  келісілу  керек.  Бағдарламалаудың  кез-келген  тілі  ережелері 
бойынша  барлық  негізгі  ауыспалылар  алдын  ала  қолданбалы 
бағдарламада сипатталған. Мысалы, егер ―Кітапхана‖ ДҚ-да READERS 
(«Оқырмандар»)  кестесі  болса,  онда  біз  нақты  бір  оқырман  туралы 
мəлімет ала аламыз. 
CREATE TABLE READERS 
(READER_JD Smallint (4) PRIMARY KEY. 
FIRST_NAME char (30) NOT NULL. 
LAST_NAME char (30) NOT NULL. 
ADRES char (50). 
HOME_PHON char (12). 
WORK_PHON char (12). 
BIRTH_DAY 
date 
C HE C K 
(DateDiff 
(year. 
GetDate 
() 
DIRTH_DAY)>= 17 
): 
Ол  ҥшін  негізгі  ауыспалыларды  сипаттаймыз.  Transact  SQL  тілін 
пайдалана отырып, MS SQL SERVER 7.0 ҥшін мысалды қарастырайық. 
Жергілікті  ауыспалыларды  сипаттау  кезінде  Transact  SQL  тілінде 
арнайы 
«@» 
символы 
пайдаланылады. 
Transact 
SQL-дегі 
комментарийлер/* комментарий */ жҧп символдарға алынған. 


DECLARE @reader_id INT 
DECLARE  @FIRS_NAME  Char  (30),  @LAST_NAME  Char  (50). 
@ADRES Char (50) 
DECLARE  @HOME_PHON  Char(12).l3WORK_PHON  Char(12)  /* 
оқырман билетінің бірегей нөмірін белгілейік */ 
SET @READER_ID = 4 
/*  енді  сҧратуды  орындап,  алынған  мəліметтерді  бҧдан  бҧрын 
белгіленген ауыспалыларға орналастырамыз */ 
SELECT 
READERS.FIRST_NAME. 
READERS.IAST_NAME. 
READERS.ADRES. 
READERS.HOME_PHON. READERS.WORK_PHON 
INTO @FIRS_NAME. @LAST_NAME. @ADRES. @HOME_PHON. 
@WORK_PHON 
FROM READERS 
WHERE READERS.READER_ID = @READER_ID 
Осы  қарапайым  мысалда  біз  ауыспалылардың  аттарын  READERS 
кестесінің баған аттарындай жасадық, бірақ бҧл міндетті емес. Алайда 
транслятор осы объекттерді ерекшелей алады, сондықтан Transact SQL 
диалектісінде  жергілікті  ауыспалыларды  арнайы  «@»  символына  алу 
қабылданған.  Мысалда  біз  өрістердің  білікті  аттарын,  кесте  атына 
алынған  өрістер  аттарын  пайдаландық.  Алайда  бҧл  міндетті  емес, 
себебі сҧраныс тек бір кестенің деректерін таңдайды.  
Осы  мысалда  негізгі  ауыспалылар  əртҥрлі  рөлді  атқарады. 
@READER_ID  жергілікті  ауыспалы  сҧранысқа  қатысты  кіреберіс 
болып  табылады.  Оған  4  мəні  тағайындалған.  Сҧраныста  бҧл  мəн 
деректерді  сҥзу  ҥшін  пайдаланылады,  сондықтан  осы  ауыспалы 
WHERE шартында пайдаланылады. 
Қалған  негізгі  ауыспалылар  шығаберіс  ауыспалылар  рөлін 
атқарады.  Онда  ДҚБЖ-ге  ДҚ-дан  алынған  READERS  қатынасының 
тиісті  өрістерінің  мəндерін  орналастыра  отырып,  сҧранысты  орындау 
нəтижелерін орналастырады. 
9.2. 
Кӛп жолды сҧраныстарды ӛңдеу меңзерлері - 
операторлары  
Одан  кҥрделірек  -  көп  жолды  сҧраныстарды  қарастырамыз.  Көп 
жолды  сҧраныстарды  іске  асыру  ҥшін  меңзер  немесе  жазбалар 
жинағын көрсеткіш ҧғымы енгізіледі.  
Меңзермен  жҧмыс  істеу  ҥшін  бірнеше  жаңа  SQL  операторы 
қосылады: 
DECLARE  CURSOR  орындалатын сҧранысты айқындайды,  меңзер 
атын  белгілейді  жəне  сҧраныс  нəтижелерін  белгіленген  меңзермен 
байланыстырады.  Бҧл  оператор  сҧраныс  ҥшін  орындаушы  болып 
табылмайды,  ол  тек  келешек  көптеген  жазбалар  қҧрылымын 
айқындайды жəне оны меңзердің бірегей атымен байланыстырады. 


Бҧл  оператор  бағдарламалау  тілдеріндегі  деректерді  сипаттау 
операторына ҧқсас; 
OPEN  ДҚБЖ-ге  сипатталған  сҧранысты  орындау,  белгіленген 
сҧранысқа  сəйкес  келетін  виртуалды  жолдар  жинағын  жасау 
командасын  береді.  OPEN  операторы  нəтижелер  жолының  виртуалды 
жинағының  бірінші  жолының  алтына  жазбаларға  нҧсқаушыны 
(меңзерді) орнатады; 
FETCH  жазбаға  нҧсқаушыны  келесі  позицияға  жылжытады. 
Көптеген  ДҚБЖ-де  бҧл  оператор  орын  ауыстырудың  аса  кең 
қызметтерін  іске  асырады.  Ол  нҧсқаушыны  туынды  жазбаға,  ілгері 
жəне  кейін  жылжыту  мҥмкіндігін  береді,  абсолютті  жəне 
салыстырмалы  адресаттауға  жол  береді,  меңзерді  динамикалық 
кестенің бірінші немесе соңғы жазбасына орнату мҥмкіндігін береді; 
CLOSE  меңзерді  жабады  жəне  динамикалық  кесте  жазбаларына 
қолжетімдікті  тоқтатады.  Ол  меңзер  мен  негізгі  сҧранысты  орындау 
нəтижесі  арасындағы  байланысты  іс-жҥзінде  жояды.  Алайда 
коммерциялық  ДҚБЖ-да  CLOSE  операторы  виртуалды  жазбалар 
жинағын жоюды білдіре бермейді.  
Стандарт  меңзерді  айқындау  операторының  келесі  синтаксисін 
айқындайды: 
DECLARE <меңзер_аты>CURSOR FOR 
<меңгер_сипаттізімі>Меңзердің 
сипаттізімі>::= 
сҧраныстың_тіркесі> 
Меңзердің  аты  —  бҧл  бағдарламалаудың  негізгі  тіліндегі  қол 
жетімді сəйкестендіргіш.  
Меңзерді  жариялауда  негізгі  ауыспалылар  пайдаланылуы  мҥмкін. 
Алайда  OPEN  операторын  орындау  кезінде  негізгі  сҧраныстағы 
мəндерді сҥзу шарттарына байланысты, кіреберіс ауыспалылар ретінде 
пайдаланылатын  барлық  негізгі  ауыспалылардың  мəндері  белгілену 
керек екенін есте сақтаған жөн.  
Кітапхананың  барлық  қарызға  алушылардың  тізімін  қҧрайтын 
меңзерді айқындаймыз. Қарыз алушылар деп қолында тапсыру мерзімі 
өтіп кеткен, кемінде бір кітап бар оқырмандарды атайық. 
DECLARE Debtor_reader_cursor CURSOR FOR 
SELECT  READERS.  FIRST_NAME.  READERS.  LAST_NAME, 
READERS.ADRES. 
READERS.HOME_PHON. 
READERS.WORK_PHON. 
BOOKS. 
TITLE 
FROM READERS. BOOKS.EXEMPLAR 
WHERE READERS.READER_ID = EXEMPLAR. READER_ID AND 
BOOKS.ISBN = EXEMPLARE. ISBN AND 
EXEMPLAR. DATA_JUT > Getdate() 
ORDER BY READERS. FIRST NAME 


жүктеу 10,13 Mb.

Достарыңызбен бөлісу:
1   ...   50   51   52   53   54   55   56   57   ...   93




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

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